*参照元 [#ef349aea] #backlinks *説明 [#k35506fc] -パス: [[linux-2.6.33/]] -パス: [[linux-2.6.33/arch/arm/kernel/entry-armv.S]] -FIXME: これは何? --説明 **引数 [#b3a2b849] -なし **返り値 [#z29f2667] -なし **参考 [#k1516bbe] *実装 [#dea800bb] .align 5 -2^5 = 32バイト境界に配置する __pabt_svc: svc_entry - --[[linux-2.6.33/svc_entry()]] @ @ re-enable interrupts if appropriate @ mrs r9, cpsr tst r3, #PSR_I_BIT biceq r9, r9, #PSR_I_BIT - --[[linux-2.6.33/PSR_I_BIT]] mov r0, r2 @ pass address of aborted instruction. #ifdef MULTI_PABORT - --[[linux-2.6.33/MULTI_PABORT]] ldr r4, .LCprocfns - --[[linux-2.6.33/.LCprocfns()]] mov lr, pc ldr pc, [r4, #PROCESSOR_PABT_FUNC] - --[[linux-2.6.33/PROCESSOR_PABT_FUNC]] #else bl CPU_PABORT_HANDLER - --[[linux-2.6.33/CPU_PABORT_HANDLER()]] #endif msr cpsr_c, r9 @ Maybe enable interrupts mov r2, sp @ regs bl do_PrefetchAbort @ call abort handler - --[[linux-2.6.33/do_PrefetchAbort()]] @ @ IRQs off again before pulling preserved data off the stack @ disable_irq - --[[linux-2.6.33/disable_irq()]] @ @ restore SPSR and restart the instruction @ ldr r2, [sp, #S_PSR] svc_exit r2 @ return from exception - --[[linux-2.6.33/svc_exit()]] UNWIND(.fnend ) - --[[linux-2.6.33/UNWIND()]] ENDPROC(__pabt_svc) - --[[linux-2.6.33/ENDPROC()]] *コメント [#beef510b]