ARM7 割り込みハンドラ:
stmdb sp!, {r0-r3, r12, lr}
mov r0, #0x04000000
add lr, pc, #0x0
ldr pc, [r0, #-0x4]
ldmia sp!, {r0-r3, r12, lr}
subs pc, lr, #0x4
ARM7 割り込みベクタは 0x03FFFFFC から始まります。
(ARM7 ワークRAM にミラーがあります)
ARM9 割り込みハンドラ:
stmdb sp!, {r0-r3, r12, lr}
mrc p15, 0, r0, c9, c1 @ r0 = DTCM_BaseAddress + 0x4000
mov r0, r0, lsr #12
mov r0, r0, lsl #12
add r0, r0, #0x4000
add lr, pc, #0x0
ldr pc, [r0, #-0x4] @ bl [DTCM_BaseAddress + 0x3FFC]
ldmia sp!, {r0-r3, r12, lr}
subs pc, lr, #0x4
ARM9 割り込みベクタは DTCM+0x3FFC から始まります。
どちらの場合も、swi 0x4 と 0x5 で使われる BIOS フラグは、割り込みベクタの4バイト前です。
最終更新:2007年12月09日 22:13