Subversion Repositories freemyipod

Rev

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

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