-[[割り込み/レジスタ]] 


***ARM7 割り込みハンドラ: [#c6e1a170]
 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 割り込みハンドラ: [#m40cdb45]
 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バイト前です。

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS