Subversion Repositories freemyipod

Rev

Rev 14 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14 Rev 85
Line 34... Line 34...
34
 
34
 
35
 
35
 
36
.section .initcode,"ax",%progbits
36
.section .initcode,"ax",%progbits
37
.global _start
37
.global _start
38
_start:
38
_start:
-
 
39
	ldr	r0, =0x00450878
-
 
40
	mcr	p15, 0, r0,c1,c0,0
39
	ldr	r0, =_sramsource
41
	ldr	r0, =_sramsource
40
	ldr	r1, =_sramstart
42
	ldr	r1, =_sramstart
41
	ldr	r2, =_sramend
43
	ldr	r2, =_sramend
42
.copysram:
44
.copysram:
43
	cmp	r2, r1
45
	cmp	r2, r1
Line 76... Line 78...
76
	orr	r0, r0, #1
78
	orr	r0, r0, #1
77
	bic	r0, r0, #0x10000
79
	bic	r0, r0, #0x10000
78
	str	r0, [r1]
80
	str	r0, [r1]
79
	mov	r0, #0
81
	mov	r0, #0
80
	mcr	p15, 0, r0,c7,c5,0
82
	mcr	p15, 0, r0,c7,c5,0
-
 
83
	add	r1, r1, #0x00c00000
-
 
84
	add	r2, r1, #0x00001000
-
 
85
	add	r3, r1, #0x00002000
-
 
86
	sub	r4, r0, #1
-
 
87
	str	r4, [r1,#0x14]
-
 
88
	str	r4, [r2,#0x14]
-
 
89
	str	r4, [r1,#0xf00]
-
 
90
	str	r4, [r2,#0xf00]
-
 
91
	str	r4, [r3,#0x08]
-
 
92
	str	r4, [r3,#0x0c]
-
 
93
	str	r0, [r1,#0x14]
-
 
94
	str	r0, [r2,#0x14]
-
 
95
	mov	r0, #0
-
 
96
	ldr	r1, =0x3c500000
-
 
97
	str	r0, [r1,#0x48]
-
 
98
	str	r0, [r1,#0x4c]
81
	msr	cpsr_c, #0xd2
99
	msr	cpsr_c, #0xd2
82
	ldr	sp, =_irqstackend
100
	ldr	sp, =_irqstackend
83
	msr	cpsr_c, #0xd7
101
	msr	cpsr_c, #0xd7
84
	ldr	sp, =_abortstackend
102
	ldr	sp, =_abortstackend
85
	msr	cpsr_c, #0xdb
103
	msr	cpsr_c, #0xdb
86
	ldr	sp, =_abortstackend
104
	ldr	sp, =_abortstackend
87
	msr	cpsr_c, #0xd3
105
	msr	cpsr_c, #0x1f
88
	ldr	sp, =_initstackend
106
	ldr	sp, =_initstackend
89
	bl	init
107
	bl	init
-
 
108
	bl	context_switch
90
	mov	r0, #0
109
	mov	r0, #0
91
idleloop:
110
idleloop:
92
	mcr	p15, 0, r0,c7,c0,4
111
	mcr	p15, 0, r0,c7,c0,4
93
	b	idleloop
112
	b	idleloop
94
.ltorg
113
.ltorg
Line 104... Line 123...
104
	msr	cpsr_c, #0xd3
123
	msr	cpsr_c, #0xd3
105
	mov	r0, #0x100000
124
	mov	r0, #0x100000
106
	mov	r1, #0x3c800000
125
	mov	r1, #0x3c800000
107
	str	r0, [r1]
126
	str	r0, [r1]
108
hang:
127
hang:
-
 
128
	msr	cpsr_c, #0xd3
-
 
129
	mcr	p15, 0, r0,c7,c0,4
109
	b	hang
130
	b	hang
110
.size reset, .-reset
131
.size reset, .-reset
111
.size hang, .-hang
132
.size hang, .-hang
112
 
133
 
113
.type reset_handler, %function
134
.type reset_handler, %function
114
reset_handler:
135
reset_handler:
-
 
136
	mov	r0, #0
115
	adr	r0, reset_text
137
	adr	r1, reset_text
116
	b	panic
138
	b	panic
117
reset_text:
139
reset_text:
118
	.ascii	"Hit reset vector!\0"
140
	.ascii	"Hit reset vector!\0"
119
.size reset_handler, .-reset_handler
141
.size reset_handler, .-reset_handler
120
 
142
 
121
.type undef_instr_handler, %function
143
.type undef_instr_handler, %function
122
undef_instr_handler:
144
undef_instr_handler:
-
 
145
	mov	r0, #0
123
	adr	r0, undef_instr_text
146
	adr	r1, undef_instr_text
124
	sub	r0, lr, #4
147
	sub	r2, lr, #4
125
	b	panicf
148
	b	panicf
126
.size undef_instr_handler, .-undef_instr_handler
149
.size undef_instr_handler, .-undef_instr_handler
127
 
150
 
128
.type prefetch_abort_handler, %function
151
.type prefetch_abort_handler, %function
129
prefetch_abort_handler:
152
prefetch_abort_handler:
-
 
153
	mov	r0, #0
130
	adr	r0, prefetch_abort_text
154
	adr	r1, prefetch_abort_text
131
	sub	r0, lr, #4
155
	sub	r2, lr, #4
132
	b	panicf
156
	b	panicf
133
.size prefetch_abort_handler, .-prefetch_abort_handler
157
.size prefetch_abort_handler, .-prefetch_abort_handler
134
 
158
 
135
.type data_abort_handler, %function
159
.type data_abort_handler, %function
136
data_abort_handler:
160
data_abort_handler:
-
 
161
	mov	r0, #0
137
	adr	r0, data_abort_text
162
	adr	r1, data_abort_text
138
	sub	r0, lr, #4
163
	sub	r2, lr, #4
139
	b	panicf
164
	b	panicf
140
.size data_abort_handler, .-data_abort_handler
165
.size data_abort_handler, .-data_abort_handler
141
 
166
 
142
.type reserved_handler, %function
167
.type reserved_handler, %function
143
reserved_handler:
168
reserved_handler:
-
 
169
	mov	r0, #0
144
	adr	r0, reserved_text
170
	adr	r1, reserved_text
145
	b	panic
171
	b	panic
146
.size reserved_handler, .-reserved_handler
172
.size reserved_handler, .-reserved_handler
147
 
173
 
148
.type fiq_handler, %function
174
.type fiq_handler, %function
149
fiq_handler:
175
fiq_handler:
-
 
176
	mov	r0, #2
150
	adr	r0, fiq_text
177
	adr	r1, fiq_text
151
	b	panic
178
	b	panic
152
.size fiq_handler, .-fiq_handler
179
.size fiq_handler, .-fiq_handler
153
 
180
 
154
.type syscall_handler, %function
-
 
155
syscall_handler:
-
 
156
	adr	r0, syscall_text
-
 
157
	b	panic
-
 
158
.size syscall_handler, .-syscall_handler
-
 
159
 
-
 
160
undef_instr_text:
181
undef_instr_text:
161
	.ascii	"Undefined instruction at %08X!\0"
182
	.ascii	"Undefined instruction at %08X!\0"
162
 
183
 
163
prefetch_abort_text:
184
prefetch_abort_text:
164
	.ascii	"Prefetch abort at %08X!\0"
185
	.ascii	"Prefetch abort at %08X!\0"
Line 172... Line 193...
172
fiq_text:
193
fiq_text:
173
	.ascii	"Unhandled FIQ!\0"
194
	.ascii	"Unhandled FIQ!\0"
174
 
195
 
175
syscall_text:
196
syscall_text:
176
	.ascii	"Unhandled syscall!\0"
197
	.ascii	"Unhandled syscall!\0"
-
 
198
 
-
 
199
 
-
 
200
.section .icode.usec_timer, "ax", %progbits
-
 
201
.align 2
-
 
202
.global read_42nsec_timer
-
 
203
.type read_42nsec_timer, %function
-
 
204
read_42nsec_timer:
-
 
205
	ldr	r0, val_3c700000
-
 
206
	ldr	r1, [r0,#0x80]
-
 
207
	ldr	r0, [r0,#0x84]
-
 
208
	bx	lr
-
 
209
.size read_42nsec_timer, .-read_42nsec_timer
-
 
210
 
-
 
211
.global read_usec_timer
-
 
212
.type read_usec_timer, %function
-
 
213
read_usec_timer:
-
 
214
	ldr	r0, val_3c700000
-
 
215
	ldr	r1, [r0,#0x80]
-
 
216
	ldr	r0, [r0,#0x84]
-
 
217
	mov	r0, r0,lsr#5
-
 
218
	orr	r0, r0, r1,lsl#27
-
 
219
	add	r0, r0, r0,asr#2
-
 
220
	add	r0, r0, r0,asr#6
-
 
221
	bx	lr
-
 
222
.size read_usec_timer, .-read_usec_timer
-
 
223
 
-
 
224
val_3c700000:
-
 
225
	.word	0x3c700000