Subversion Repositories freemyipod

Rev

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

Rev 593 Rev 702
Line 142... Line 142...
142
.size reset, .-reset
142
.size reset, .-reset
143
.size hang, .-hang
143
.size hang, .-hang
144
 
144
 
145
.type reset_handler, %function
145
.type reset_handler, %function
146
reset_handler:
146
reset_handler:
-
 
147
	stmfd	sp, {r10-r12}
-
 
148
	mov	r10, sp
-
 
149
	mov	r11, lr
-
 
150
	mrs	r12, cpsr
-
 
151
	msr	cpsr_c, #0xd7
-
 
152
	sub	sp, sp, #0x44
-
 
153
	stmia	sp!, {r0-r9}
-
 
154
	sub	r0, r10, #0xc
-
 
155
	ldmia	r0, {r0-r2}
-
 
156
	mov	r3, r10
-
 
157
	mov	r4, r11
-
 
158
	mov	r5, r11
-
 
159
	mov	r6, r12
-
 
160
	stmia	sp!, {r0-r6}
-
 
161
	sub	sp, sp, #0x44
147
	mov	r0, #0
162
	mov	r0, #0
148
	adr	r1, reset_text
163
	adr	r1, reset_text
-
 
164
	mov	r2, r11
149
	b	panic
165
	b	panic
150
reset_text:
-
 
151
	.ascii	"Hit reset vector!\0"
-
 
152
.size reset_handler, .-reset_handler
166
.size reset_handler, .-reset_handler
153
 
167
 
154
.type undef_instr_handler, %function
168
.type undef_instr_handler, %function
155
undef_instr_handler:
169
undef_instr_handler:
-
 
170
	sub	sp, sp, #0x44
-
 
171
	stmia	sp!, {r0-r12}
-
 
172
	sub	r2, lr, #4
-
 
173
	mrs	r3, spsr
-
 
174
	mrs	r4, cpsr
-
 
175
	orr	r0, r3, #0xc0
-
 
176
	msr	cpsr_c, r0
-
 
177
	mov	r0, sp
-
 
178
	mov	r1, lr
-
 
179
	msr	cpsr_c, r4
-
 
180
	stmia	sp!, {r0-r3}
-
 
181
	sub	sp, sp, #0x44
156
	mov	r0, #0
182
	mov	r0, #0
157
	adr	r1, undef_instr_text
183
	adr	r1, undef_instr_text
158
	sub	r2, lr, #4
184
	ldr	r3, [r2]
159
	b	panicf
185
	b	panicf
160
.size undef_instr_handler, .-undef_instr_handler
186
.size undef_instr_handler, .-undef_instr_handler
161
 
187
 
162
.type prefetch_abort_handler, %function
188
.type prefetch_abort_handler, %function
163
prefetch_abort_handler:
189
prefetch_abort_handler:
-
 
190
	sub	sp, sp, #0x44
-
 
191
	stmia	sp!, {r0-r12}
-
 
192
	sub	r2, lr, #4
-
 
193
	mrs	r3, spsr
-
 
194
	mrs	r4, cpsr
-
 
195
	orr	r0, r3, #0xc0
-
 
196
	msr	cpsr_c, r0
-
 
197
	mov	r0, sp
-
 
198
	mov	r1, lr
-
 
199
	msr	cpsr_c, r4
-
 
200
	stmia	sp!, {r0-r3}
-
 
201
	sub	sp, sp, #0x44
164
	mov	r0, #0
202
	mov	r0, #0
165
	adr	r1, prefetch_abort_text
203
	adr	r1, prefetch_abort_text
-
 
204
	mrc	p15, 0, r3,c5,c0
-
 
205
	mov	r4, r3,lsr#4
-
 
206
	and	r4, r4, #0xf
166
	sub	r2, lr, #4
207
	and	r5, r3, #0xf
-
 
208
	stmfd	sp!, {r4-r5}
167
	b	panicf
209
	b	panicf
168
.size prefetch_abort_handler, .-prefetch_abort_handler
210
.size prefetch_abort_handler, .-prefetch_abort_handler
169
 
211
 
170
.type data_abort_handler, %function
212
.type data_abort_handler, %function
171
data_abort_handler:
213
data_abort_handler:
-
 
214
	sub	sp, sp, #0x44
-
 
215
	stmia	sp!, {r0-r12}
-
 
216
	sub	r2, lr, #8
-
 
217
	mrs	r3, spsr
-
 
218
	mrs	r4, cpsr
-
 
219
	orr	r0, r3, #0xc0
-
 
220
	msr	cpsr_c, r0
-
 
221
	mov	r0, sp
-
 
222
	mov	r1, lr
-
 
223
	msr	cpsr_c, r4
-
 
224
	stmia	sp!, {r0-r3}
-
 
225
	sub	sp, sp, #0x44
172
	mov	r0, #0
226
	mov	r0, #0
173
	adr	r1, data_abort_text
227
	adr	r1, data_abort_text
-
 
228
	mrc	p15, 0, r3,c5,c0
-
 
229
	mov	r4, r3,lsr#4
-
 
230
	and	r4, r4, #0xf
174
	sub	r2, lr, #4
231
	and	r5, r3, #0xf
-
 
232
	mrc	p15, 0, r6,c6,c0
-
 
233
	stmfd	sp!, {r4-r6}
175
	b	panicf
234
	b	panicf
176
.size data_abort_handler, .-data_abort_handler
235
.size data_abort_handler, .-data_abort_handler
177
 
236
 
178
.type reserved_handler, %function
237
.type reserved_handler, %function
179
reserved_handler:
238
reserved_handler:
-
 
239
	stmfd	sp, {r10-r12}
-
 
240
	mov	r10, sp
-
 
241
	mov	r11, lr
-
 
242
	mrs	r12, cpsr
-
 
243
	msr	cpsr_c, #0xd7
-
 
244
	sub	sp, sp, #0x44
-
 
245
	stmia	sp!, {r0-r9}
-
 
246
	sub	r0, r10, #0xc
-
 
247
	ldmia	r0, {r0-r2}
-
 
248
	mov	r3, r10
-
 
249
	mov	r4, r11
-
 
250
	mov	r5, r11
-
 
251
	mov	r6, r12
-
 
252
	stmia	sp!, {r0-r6}
-
 
253
	sub	sp, sp, #0x44
180
	mov	r0, #0
254
	mov	r0, #0
181
	adr	r1, reserved_text
255
	adr	r1, reserved_text
-
 
256
	mov	r2, r11
182
	b	panic
257
	b	panic
183
.size reserved_handler, .-reserved_handler
258
.size reserved_handler, .-reserved_handler
184
 
259
 
185
.type fiq_handler, %function
260
.type fiq_handler, %function
186
fiq_handler:
261
fiq_handler:
187
	mov	r0, #2
262
	mov	r0, #2
188
	adr	r1, fiq_text
263
	adr	r1, fiq_text
189
	b	panic
264
	b	panic
190
.size fiq_handler, .-fiq_handler
265
.size fiq_handler, .-fiq_handler
191
 
266
 
192
undef_instr_text:
-
 
193
	.ascii	"Undefined instruction at %08X!\0"
-
 
194
 
-
 
195
prefetch_abort_text:
267
prefetch_abort_text:
196
	.ascii	"Prefetch abort at %08X!\0"
268
	.ascii	"Prefetch abort at %08X!\nFSR: %08X (domain %d, fault %d)\0"
197
 
269
 
198
data_abort_text:
270
reset_text:
199
	.ascii	"Data abort at %08X!\0"
271
	.ascii	"Hit reset vector!\n(Last known PC: %08X)\0"
200
 
272
 
201
reserved_text:
273
undef_instr_text:
202
	.ascii	"Hit reserved exception handler!\0"
274
	.ascii	"Undefined instruction at %08X!\n(Opcode: %08X)\0"
-
 
275
 
-
 
276
data_abort_text:
-
 
277
	.ascii	"Data abort at %08X!\nFSR: %08X (domain %d, fault %d)\nAddress: %08X\0"
203
 
278
 
204
fiq_text:
279
fiq_text:
205
	.ascii	"Unhandled FIQ!\0"
280
	.ascii	"Unhandled FIQ!\0"
206
 
281
 
-
 
282
reserved_text:
-
 
283
	.ascii	"Hit reserved exception handler!\n(Last known PC: %08X)\0"
-
 
284
 
207
syscall_text:
285
syscall_text:
208
	.ascii	"Unhandled syscall!\0"
286
	.ascii	"Unhandled syscall!\0"
209
 
287
 
210
 
288
 
211
.section .icode.usec_timer, "ax", %progbits
289
.section .icode.usec_timer, "ax", %progbits