Subversion Repositories freemyipod

Rev

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

Rev 701 Rev 702
Line 183... Line 183...
183
.size reset, .-reset
183
.size reset, .-reset
184
.size hang, .-hang
184
.size hang, .-hang
185
 
185
 
186
.type reset_handler, %function
186
.type reset_handler, %function
187
reset_handler:
187
reset_handler:
-
 
188
	stmfd	sp, {r10-r12}
-
 
189
	mov	r10, sp
-
 
190
	mov	r11, lr
-
 
191
	mrs	r12, cpsr
-
 
192
	msr	cpsr_c, #0xd7
-
 
193
	sub	sp, sp, #0x44
-
 
194
	stmia	sp!, {r0-r9}
-
 
195
	sub	r0, r10, #0xc
-
 
196
	ldmia	r0, {r0-r2}
-
 
197
	mov	r3, r10
-
 
198
	mov	r4, r11
-
 
199
	mov	r5, r11
-
 
200
	mov	r6, r12
-
 
201
	stmia	sp!, {r0-r6}
-
 
202
	sub	sp, sp, #0x44
188
	mov	r0, #0
203
	mov	r0, #0
189
	adr	r1, reset_text
204
	adr	r1, reset_text
-
 
205
	mov	r2, r11
190
	b	panic
206
	b	panic
191
reset_text:
-
 
192
	.ascii	"Hit reset vector!\0"
-
 
193
.size reset_handler, .-reset_handler
207
.size reset_handler, .-reset_handler
194
 
208
 
195
.type undef_instr_handler, %function
209
.type undef_instr_handler, %function
196
undef_instr_handler:
210
undef_instr_handler:
-
 
211
	sub	sp, sp, #0x44
-
 
212
	stmia	sp!, {r0-r12}
-
 
213
	sub	r2, lr, #4
-
 
214
	mrs	r3, spsr
-
 
215
	mrs	r4, cpsr
-
 
216
	orr	r0, r3, #0xc0
-
 
217
	msr	cpsr_c, r0
-
 
218
	mov	r0, sp
-
 
219
	mov	r1, lr
-
 
220
	msr	cpsr_c, r4
-
 
221
	stmia	sp!, {r0-r3}
-
 
222
	sub	sp, sp, #0x44
197
	mov	r0, #0
223
	mov	r0, #0
198
	adr	r1, undef_instr_text
224
	adr	r1, undef_instr_text
199
	sub	r2, lr, #4
225
	ldr	r3, [r2]
200
	b	panicf
226
	b	panicf
201
.size undef_instr_handler, .-undef_instr_handler
227
.size undef_instr_handler, .-undef_instr_handler
202
 
228
 
203
.type prefetch_abort_handler, %function
229
.type prefetch_abort_handler, %function
204
prefetch_abort_handler:
230
prefetch_abort_handler:
-
 
231
	sub	sp, sp, #0x44
-
 
232
	stmia	sp!, {r0-r12}
-
 
233
	sub	r2, lr, #4
-
 
234
	mrs	r3, spsr
-
 
235
	mrs	r4, cpsr
-
 
236
	orr	r0, r3, #0xc0
-
 
237
	msr	cpsr_c, r0
-
 
238
	mov	r0, sp
-
 
239
	mov	r1, lr
-
 
240
	msr	cpsr_c, r4
-
 
241
	stmia	sp!, {r0-r3}
-
 
242
	sub	sp, sp, #0x44
205
	mov	r0, #0
243
	mov	r0, #0
206
	adr	r1, prefetch_abort_text
244
	adr	r1, prefetch_abort_text
-
 
245
	mrc	p15, 0, r3,c5,c0
-
 
246
	mov	r4, r3,lsr#4
-
 
247
	and	r4, r4, #0xf
207
	sub	r2, lr, #4
248
	and	r5, r3, #0xf
-
 
249
	stmfd	sp!, {r4-r5}
208
	b	panicf
250
	b	panicf
209
.size prefetch_abort_handler, .-prefetch_abort_handler
251
.size prefetch_abort_handler, .-prefetch_abort_handler
210
 
252
 
211
.type data_abort_handler, %function
253
.type data_abort_handler, %function
212
data_abort_handler:
254
data_abort_handler:
-
 
255
	sub	sp, sp, #0x44
-
 
256
	stmia	sp!, {r0-r12}
-
 
257
	sub	r2, lr, #8
-
 
258
	mrs	r3, spsr
-
 
259
	mrs	r4, cpsr
-
 
260
	orr	r0, r3, #0xc0
-
 
261
	msr	cpsr_c, r0
-
 
262
	mov	r0, sp
-
 
263
	mov	r1, lr
-
 
264
	msr	cpsr_c, r4
-
 
265
	stmia	sp!, {r0-r3}
-
 
266
	sub	sp, sp, #0x44
213
	mov	r0, #0
267
	mov	r0, #0
214
	adr	r1, data_abort_text
268
	adr	r1, data_abort_text
-
 
269
	mrc	p15, 0, r3,c5,c0
-
 
270
	mov	r4, r3,lsr#4
-
 
271
	and	r4, r4, #0xf
215
	sub	r2, lr, #4
272
	and	r5, r3, #0xf
-
 
273
	mrc	p15, 0, r6,c6,c0
-
 
274
	stmfd	sp!, {r4-r6}
216
	b	panicf
275
	b	panicf
217
.size data_abort_handler, .-data_abort_handler
276
.size data_abort_handler, .-data_abort_handler
218
 
277
 
219
.type reserved_handler, %function
278
.type reserved_handler, %function
220
reserved_handler:
279
reserved_handler:
-
 
280
	stmfd	sp, {r10-r12}
-
 
281
	mov	r10, sp
-
 
282
	mov	r11, lr
-
 
283
	mrs	r12, cpsr
-
 
284
	msr	cpsr_c, #0xd7
-
 
285
	sub	sp, sp, #0x44
-
 
286
	stmia	sp!, {r0-r9}
-
 
287
	sub	r0, r10, #0xc
-
 
288
	ldmia	r0, {r0-r2}
-
 
289
	mov	r3, r10
-
 
290
	mov	r4, r11
-
 
291
	mov	r5, r11
-
 
292
	mov	r6, r12
-
 
293
	stmia	sp!, {r0-r6}
-
 
294
	sub	sp, sp, #0x44
221
	mov	r0, #0
295
	mov	r0, #0
222
	adr	r1, reserved_text
296
	adr	r1, reserved_text
-
 
297
	mov	r2, r11
223
	b	panic
298
	b	panic
224
.size reserved_handler, .-reserved_handler
299
.size reserved_handler, .-reserved_handler
225
 
300
 
226
.type fiq_handler, %function
301
.type fiq_handler, %function
227
fiq_handler:
302
fiq_handler:
228
	mov	r0, #2
303
	mov	r0, #2
229
	adr	r1, fiq_text
304
	adr	r1, fiq_text
230
	b	panic
305
	b	panic
231
.size fiq_handler, .-fiq_handler
306
.size fiq_handler, .-fiq_handler
232
 
307
 
233
undef_instr_text:
-
 
234
	.ascii	"Undefined instruction at %08X!\0"
-
 
235
 
-
 
236
prefetch_abort_text:
308
prefetch_abort_text:
237
	.ascii	"Prefetch abort at %08X!\0"
309
	.ascii	"Prefetch abort at %08X!\nFSR: %08X (domain %d, fault %d)\0"
238
 
310
 
239
data_abort_text:
311
reset_text:
240
	.ascii	"Data abort at %08X!\0"
312
	.ascii	"Hit reset vector!\n(Last known PC: %08X)\0"
241
 
313
 
242
reserved_text:
314
undef_instr_text:
243
	.ascii	"Hit reserved exception handler!\0"
315
	.ascii	"Undefined instruction at %08X!\n(Opcode: %08X)\0"
-
 
316
 
-
 
317
data_abort_text:
-
 
318
	.ascii	"Data abort at %08X!\nFSR: %08X (domain %d, fault %d)\nAddress: %08X\0"
244
 
319
 
245
fiq_text:
320
fiq_text:
246
	.ascii	"Unhandled FIQ!\0"
321
	.ascii	"Unhandled FIQ!\0"
247
 
322
 
-
 
323
reserved_text:
-
 
324
	.ascii	"Hit reserved exception handler!\n(Last known PC: %08X)\0"
-
 
325
 
248
syscall_text:
326
syscall_text:
249
	.ascii	"Unhandled syscall!\0"
327
	.ascii	"Unhandled syscall!\0"
250
 
328
 
251
 
329
 
252
.section .icode.usec_timer, "ax", %progbits
330
.section .icode.usec_timer, "ax", %progbits