PowerPC的外部中断处理.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PowerPC的外部中断处理

PowerPC的外部中断处理 异常 异常是e500mc核产生的,它是同步产生的(可以预知的),如非法指令,或访问存储器时出现TLB Miss等情况。 中断 中断是e500mc核外部引脚产生的中断,由PIC送进来的,它是异步产生的(无法预知的),主要有:int#, cint#, mcp# 。 ? 2011 虹信通信 2 中断与异常 MSR(Machine State Register)寄存器。用于设置e500mc的当前使用状态,初始化CPU时第一个设置的寄存器。CE(Critical Enable,第46位),ME(Machine Check Enable,第51位),DE(Debug Interrupt Enable,第54位)。用于使能和关闭Critical异常,Machine check异常和Debug异常。EE(External Enable,第48位)。为1时使能外部中断,为0时屏蔽外部中断。PR(第49位)。为0表示处理器在内核模式,为1表示处理器在用户模式。IS,DS(第58,59位)。e500mc支持两个地址空间——0和1。IS为0表示当前程序使用指令空间0,为1表示当前程序使用指令空间1;DS为0表示当前程序使用数据空间0,为1表示当前程序使用数据空间1。 ? 2011 虹信通信 3 寄存器 中断向量是指中断或者异常程序的入口地址。一系列的中断向量号构成中断向量表。对于e500mc内核,中断处理程序的入口地址为虚拟地址。Linux PowerPC使用e500mc内核的地址空间0保存这些虚拟地址。这也是为什么要清除PR,IS,DS位的原因。 在e500mc内核中,使用IVPR和IVORx寄存器共同确定中断和异常程序的入口地址。 中断入口地址的计算方法: IVPR[32-47] || IVPORn[48-59] || 0b0000 ? 2011 虹信通信 4 寄存器 e500mc内核的中断向量表 ? 2011 虹信通信 5 寄存器 中断向量表中4号中断是外部中断,对应的中断处理函数是ExternalInput。 IVORs Interrupt type IVOR0 Critical interrupt IVOR1 Machine check … … IVOR4 External input … … IVOR15 Debug … … MSK: 若置1,此中断源的中断被无视. A: 若置1,此中断源有中断发生 P: 若置1, active-high; 若置0, active-low. S: 若置1,此中断是水平触发。若置0,此中断是边界触发 PRIORITY: 优先级0-15。15是最高优先级,0时相当于无视此中断。 VECTOR: 硬件中断号。中断发生后处于pengding时,此字段被写在IACK中。 ? 2011 虹信通信 6 寄存器 CTPR(Processor Current Task Priority Register)寄存器。该寄存器存放当前CPU中运行任务的级别。 ? 2011 虹信通信 7 寄存器 M位为0,表示当前中断控制器PIC被旁路,此时IRQ0引脚监测到的中断信息将直接送入到CPU。 ? 2011 虹信通信 8 寄存器 该寄存器用来存放当前中断源的硬件中断号,是e500mc内核外部中断处理的一个重要寄存器。当处理器对此寄存器进行读操作时,将启动外部中断响应周期。 ? 2011 虹信通信 9 寄存器 SRR0 (Save/Restore Register 0) 64 bit,用于异常发生时保存引起异常指令的地址(异常)或其下一条指令的地址(中断)。保存过程硬件自动做执行 rfi 从异常返回时,处理器会跳转到 SRR0 保存的地址处继续执行。 SRR1(Save/Restore Register 1) 32 bit,用于异常发生时硬件自动保存 MSR (Machine Status Register)。 执行 rfi 从异常返回时,处理器会将 SRR1 值恢复入 MSR。 EOI(End of Interrupt Register) 该寄存器只有“EOI CODE”字段有效,对此字段写入0b0000将结束当前中断的处理。 ? 2011 虹信通信 10 寄存器 捕捉到外部中断信号#cint,#int。 保存被中断程序的返回地址到SRR0寄存器中。 保存MSR寄存器到SRR1中,如果是地址异常还会保存错误地址到DEAR寄存器中。 保留MSR寄存器中的CE,DE,ME位,其余全部清除。因此,e500mc在处理外部中断时,还可以被Critical中断,调试中断和Machine Check中断重入。 清除PR,IS,DS位。此时,处理器运行在内核模式。 根据IVPR和IVO

文档评论(0)

2232文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档