OK6410A 开发板 (八) 59 linux-5.11 OK6410A Undefined instructions 异常


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_fault

232 __und_fault:
...
242     b   do_undefinstr



arch/arm/kernel/traps.c
do_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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值