标签:运行 笔记 体系 pac arch 基于 tran lsp int
是操作系统或系统软件的一部分,它会处理debug exception或修改debug system register,debugger运行在EL0,提供了用户debugger接口;
Debugger异常是在程序正常运行过程中由debugger编程PE来产生,满足如下两个条件,PE可以产生某个特定的异常:
(1)当前的异常级别和安全状态下使能了debug异常;
(2)Debugger使能了某个特定的debug异常
(1)Break-point instruction异常:在程序流的特定点可以引起异常的指令,不能被mask,A64下为BRK#<immediate>;
(2)breakpoint异常:提供2-16个breakpoint异常,可以基于特定的指令地址或特定的PE上下文通过编程产生的异常;
(3)watchpoint异常:提供2-16个watchpoint异常,可以基于访问特定的数据地址或访问一个地址范围的数据;
(4)vector catch异常:只能在AArch32 translation regime???下产生;
(5)software step异常:运行在高异常级别的软件可以debug低异常级别的软件,被debug的软件每单步执行一条指令,PE会捕获software step异常;
breakpoint instruction异常 |
总是使能的; |
breakpoint异常 |
MDSCR_EL1.MDE, plus an enable control for each breakpoint, DBGBCR<n>_EL1.E |
watchpoint异常 |
MDSCR_EL1.MDE, plus an enable control for each watchpoint, DBGWCR<n>_EL1.E |
vector catch异常 |
MDSCR_EL1.MDE |
software step异常 |
MDSCR_EL1.SS |
当前异常级别和安全状态下满足如下4个条件则debug异常使能:
(1) 如下两种情况debug异常被禁用:
a. 当前异常级别 > (EL1 or EL2)
breakpoint instruction异常之外的debug异常被禁用;
b. 当前异常级别 == (EL1 or EL2):
local debug enable bit(即MDSCR_EL1.KDE==0,breakpoint instruction异常之外的debug异常被禁用;
debug exception mask bit(PSTATE.D)==1,breakpoint instruction异常之外的debug异常被禁用
(2)其它情况debug异常均使能
(1)如果MDCR_EL3.SDD==1,则debug异常被禁用;
(2)其它情况下,debug异常均使能
[1] DDI0487A_k_armv8_arm_iss10775.pdf
ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(5)- Self-hosted debug
标签:运行 笔记 体系 pac arch 基于 tran lsp int
原文地址:http://www.cnblogs.com/smartjourneys/p/6847613.html