2018-12-30 22:45:46 +00:00
|
|
|
/*
|
|
|
|
ARM System Developer's Guide, Chapter 9 Section 1 (y. 2004-2008) (page 323)
|
|
|
|
*/
|
2018-12-30 21:44:14 +00:00
|
|
|
.data
|
2018-12-30 22:07:00 +00:00
|
|
|
und_msg:
|
|
|
|
.string "Undefined Instruction"
|
|
|
|
swi_msg:
|
|
|
|
.string "Hello. I am the sample SWI handler! =)"
|
|
|
|
prefetch_abt_msg:
|
|
|
|
.string "Prefetch Abort"
|
|
|
|
data_abt_msg:
|
|
|
|
.string "Data Abort"
|
|
|
|
irq_msg:
|
|
|
|
.string "IRQ"
|
|
|
|
fiq_msg:
|
|
|
|
.string "FIQ"
|
2018-12-30 21:44:14 +00:00
|
|
|
|
|
|
|
.text
|
|
|
|
.align 4
|
|
|
|
.global vectab
|
|
|
|
vectab:
|
2018-12-30 22:45:46 +00:00
|
|
|
ldr pc, =panic
|
2018-12-30 22:07:00 +00:00
|
|
|
ldr pc, =und_handler
|
2018-12-30 21:44:14 +00:00
|
|
|
ldr pc, =swi_handler
|
2018-12-30 22:07:00 +00:00
|
|
|
ldr pc, =prefetch_abt_handler
|
|
|
|
ldr pc, =data_abt_handler
|
|
|
|
nop
|
|
|
|
ldr pc, =irq_handler
|
|
|
|
ldr pc, =fiq_handler
|
|
|
|
|
|
|
|
und_handler:
|
|
|
|
stmfd sp!, {lr}
|
|
|
|
|
|
|
|
ldr r0, =und_msg
|
2018-12-30 22:45:46 +00:00
|
|
|
bl printkl
|
2018-12-30 22:07:00 +00:00
|
|
|
|
|
|
|
ldmfd sp!, {pc}^
|
2018-12-30 21:44:14 +00:00
|
|
|
|
|
|
|
swi_handler:
|
|
|
|
stmfd sp!, {lr}
|
|
|
|
|
2018-12-30 22:07:00 +00:00
|
|
|
ldr r0, =swi_msg
|
|
|
|
bl printkl
|
|
|
|
|
|
|
|
ldmfd sp!, {pc}^
|
|
|
|
|
|
|
|
// TODO: untested
|
|
|
|
prefetch_abt_handler:
|
2018-12-30 22:45:46 +00:00
|
|
|
sub lr, #4
|
2018-12-30 22:07:00 +00:00
|
|
|
stmfd sp!, {lr}
|
|
|
|
|
|
|
|
ldr r0, =prefetch_abt_msg
|
2018-12-30 21:44:14 +00:00
|
|
|
bl printkl
|
|
|
|
|
|
|
|
ldmfd sp!, {pc}^
|
|
|
|
|
2018-12-30 22:07:00 +00:00
|
|
|
data_abt_handler:
|
2018-12-30 22:45:46 +00:00
|
|
|
sub lr, #8
|
2018-12-30 22:07:00 +00:00
|
|
|
stmfd sp!, {lr}
|
|
|
|
|
|
|
|
ldr r0, =data_abt_msg
|
|
|
|
bl printkl
|
|
|
|
|
2018-12-30 22:45:46 +00:00
|
|
|
b panic
|
|
|
|
|
2018-12-30 22:07:00 +00:00
|
|
|
ldmfd sp!, {pc}^
|
|
|
|
|
|
|
|
// TODO: untested
|
|
|
|
irq_handler:
|
|
|
|
stmfd sp!, {lr}
|
|
|
|
|
|
|
|
ldr r0, =irq_msg
|
|
|
|
bl printkl
|
|
|
|
|
|
|
|
ldmfd sp!, {pc}^
|
|
|
|
|
|
|
|
// TODO: untested
|
|
|
|
fiq_handler:
|
|
|
|
stmfd sp!, {lr}
|
|
|
|
|
|
|
|
ldr r0, =fiq_msg
|
|
|
|
bl printkl
|
|
|
|
|
|
|
|
ldmfd sp!, {pc}^
|
2018-12-30 21:44:14 +00:00
|
|
|
|