「割り込み」の編集履歴(バックアップ)一覧はこちら
割り込み - (2007/06/27 (水) 23:35:21) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
Todo: talk about what interrupts are, how to use them, etc...
* Registers
ARM7 Interrupt handler:
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
The user ARM7 interrupt vector is thus 0x03FFFFFC (mirrors down into ARM7 work RAM)
ARM9 Interrupt handler:
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
The user ARM9 interrupt vector is thus at DTCM+0x3FFC
In both cases, the BIOS flag word used in swi 0x4 and 0x5 is 4 bytes before the interrupt vector.
----
-[[割り込み - レジスタ]]を参照してください。
ARM7 Interrupt handler:
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
The user ARM7 interrupt vector is thus 0x03FFFFFC (mirrors down into ARM7 work RAM)
ARM9 Interrupt handler:
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
The user ARM9 interrupt vector is thus at DTCM+0x3FFC
In both cases, the BIOS flag word used in swi 0x4 and 0x5 is 4 bytes before the interrupt vector.
----