summaryrefslogtreecommitdiff
path: root/bootloader.s
blob: e92e9165d4a68ada0c9508a6530829c3aada50e9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
.cpu arm7tdmi

.arm
b reset

.arm
b undefined_instruction

.arm
b software_interrupt

.arm
b prefetch_abort

.arm
b data_abort

.arm
b interrupt_request

.arm
b fast_interrupt_request

.func
reset:
	ldr lr, .image_entry_point
	bx  lr

.endfunc

.align
.image_entry_point:
	.word 0x08000000

.func
undefined_instruction:
	b undefined_instruction
.endfunc

.func
software_interrupt:
	ldr  r0, =.software_interrupt_impl
	mov  r1, pc
	bx   r0
	movs pc, lr
.endfunc

.thumb

.func
.thumb_func
.software_interrupt_impl:
	mov r0, lr
	sub r0, #0x4
	ldr r0, [r0]
	bx  r1

.endfunc

.arm

.func
prefetch_abort:
	b prefetch_abort
.endfunc

.func
data_abort:
	b data_abort
.endfunc

.func
interrupt_request:
	b interrupt_request
.endfunc

.func
fast_interrupt_request:
	b fast_interrupt_request
.endfunc