本文共 2722 字,大约阅读时间需要 9 分钟。
arch/arm/kernel/entry-armv.S 1183 .L__vectors_start: ... 1185 W(b) vector_und 1120 /* 1121 * Undef instr entry dispatcher 1122 * Enter in UND mode, spsr = SVC/USR CPSR, lr = SVC/USR PC 1123 */ 1124 vector_stub und, UND_MODE 1125 1126 .long __und_usr @ 0 (USR_26 / USR_32) 1127 .long __und_invalid @ 1 (FIQ_26 / FIQ_32) 1128 .long __und_invalid @ 2 (IRQ_26 / IRQ_32) 1129 .long __und_svc @ 3 (SVC_26 / SVC_32) 1130 .long __und_invalid @ 4 1131 .long __und_invalid @ 5 1132 .long __und_invalid @ 6 1133 .long __und_invalid @ 7 1134 .long __und_invalid @ 8 1135 .long __und_invalid @ 9 1136 .long __und_invalid @ a 1137 .long __und_invalid @ b 1138 .long __und_invalid @ c 1139 .long __und_invalid @ d 1140 .long __und_invalid @ e 1141 .long __und_invalid @ f 1142
246 __und_svc:...260 bl __und_fault232 __und_fault:...242 b do_undefinstr
arch/arm/kernel/traps.cdo_undefinstr instr = __mem_to_opcode_arm(*(u32 *) pc); call_undef_hook(regs, instr) list_for_each_entry(hook, &undef_hook, node) fn = hook->fn; fn(regs, instr)arm_mrc_hook_init register_undef_hook(&arm_mrc_hook);ptrace_break_init register_undef_hook(&arm_break_hook); register_undef_hook(&thumb_break_hook); register_undef_hook(&thumb2_break_hook);tcm_init register_undef_hook(&tcm_hook);
440 __und_usr: ... 474 b call_fpe ... 528 ENDPROC(__und_usr) 579 call_fpe: ... 618 W(b) do_fpe @ CP#1 (FPE) 675 do_fpe: ... 678 ldr pc, [r4] @ Call FP module USR entry point
转载地址:http://hjigi.baihongyu.com/