- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PowerPC体系结构之中断异常.doc
PowerPC 体系结构之中断异常取 BOOKE 之精要。1. 异常类型00?? ??? ??? Critical Interrupt???? 来自于外部中断控制器,具有较高的优先级01?? ??? ??? Machine Check??? 严重的内部状态错误,如 Cache 数据的校验失败02?? ??? ??? Data Storage??? 数据读写异常,如:用户态读一个非用户态的页 (UR=0)03?? ??? ??? Instruction Storage??? 读指令异常,如:用户态时取一个用户态不可执行的页 (UX=0)04?? ??? ??? External Interrupt??? 来自于外部中断控制器05?? ??? ??? Alignment??? 非对齐访问异常06?? ??? ??? Program??? 程序异常,如:执行非法指令,用户态执行特权指令07?? ??? ??? Floating-Point unavailable ?? 在无浮点部件的 CPU 上执行浮点指令即会触发此异常08?? ??? ??? System call??? 系统调用09?? ??? ??? Auxiliary Processor Unavailable ?? 在无协处理器的 CPU 上执行协处理器指令即触发此异常? 10 ??? ????? Decrementer??? DEC 寄存器归零异常,DEC 是一个内部时钟计数器,Linux 用之实现时钟中断11 ??? ????? Fixed-interval timer interrupt??? 12 ??? ?? ?? Watchdog timer interrupt??? 13 ??? ? ? ? Data TLB error??? 数据 TLB Miss 异常14 ?? ?? ??? Instruction TLB error??? 指令 TLB Miss 异常15 ??? ?? ?? Debug??? 调试异常,用于支持调试16 - 31?? Reserved for future use ? 保留给将来体系结构升级用32 - 63?? Allocated for implementation-dependent use ? 具体实现相关其中 0,1,12,15 为 Critical Exception,当其发生时,使用 CSRR0 CSRR1 保存当前 PC 或 (PC + 4) 和 MSR;其他异常发生时,则使用 SRR0 SRR1 保存当前 PC 或 (PC + 4) 和 MSR可以看到 BOOKE 体系结构层面规定的异常即为前 16 个,这其中的有些异常是个笼统的抽象(比如 Data Storage 就需要区分是读还是写导致的),为了更细地描述发生异常的原因,PowerPC 引入了一个 ESR (Exception Syndrome Register),让硬件在异常发生时,在其中指出更具体的原因。比如 若 ESR[40] 被置位,则说明异常是由写操作引起的。2. 异常入口(向量)BOOKE 使用可读写的内部寄存器 IVPR 和 IVOR 来指定异常的入口。其中 IVPR (Interrupt Vector Prefix Register) 为 64 bit,指定所有异常入口基地址的高 48 bit,即 IVPR[48:63] 始终为 0IVOR (Interrupt Vector Offset Register) 为 32 bit,指定具体异常入口相对异常基地址的偏移,每个异常一个,只使用其低 16 位。则其 IVOR[32:40] 为 0;又因所有入口 16 字节对齐,实际上 IVOR[60:63] 亦始终 0:IVOR00?????????? Critical Interrupt???? IVOR01?????????? Machine Check??? IVOR02?????????? Data Storage?? IVOR03?????????? Instruction Storage??? IVOR04?????????? External Interrupt??? IVOR05?????????? Alignment??? IVOR06?????????? Program??? IVOR07?????????? Floating-Point unavailable??? IVOR08?????????? System call??? IVOR09?????????? Auxiliary Processor Unavailable??? IVOR
文档评论(0)