用于ARMv7处理器仿真系统内的中断嵌套的实现系统及方法

文档序号:26587050发布日期:2021-09-10 19:39阅读:211来源:国知局
用于ARMv7处理器仿真系统内的中断嵌套的实现系统及方法
用于armv7处理器仿真系统内的中断嵌套的实现系统及方法
技术领域
1.本发明属于armv7处理器仿真系统领域,尤其涉及一种用于armv7处理器仿真系统内的中断嵌套的实现系统及方法。


背景技术:

2.在计算机系统中,中断是可以用于向处理器报告需要特殊处理的事件,可以实现改变处理器中的正常指令流的效果。中断包括中断请求、中断响应、中断服务、中断返回等过程。
3.armv7处理器可以处理多重嵌套的中断,即给不同的中断服务历程分配不同的优先级。例如,当还在处理低优先级别的中断时,可以接收高优先级别的中断,这时就会暂停低优先级别的中断处理的服务程序的执行,转而去处理高优先级别的中断,当高优先级别的中断执行完成之后,再次返回到被中断的低优先级别的中断对应的中断服务继续执行。
4.armv7仿真系统是通过软件层面实现对armv7处理器指令执行过程的模拟和仿真,通过对armv7的仿真,可以达到可视化学习armv7处理器指令执行过程的目的。
5.在现有的技术中,对在armv7处理器仿真系统中对中断过程的实现尚不完全,实现效果较差,实现过程可以移植性较差。中断优先级、中断触发类型无法灵活配置,不支持对中断嵌套的实现。
6.专利号为200510108397的中国专利,题目为:用于仿真数据处理系统内的中断体系结构的方法和系统。该专利通过中断仿真代码对外部中断先进行一次接收响应,再将中断映射到硬件层次,由中断硬件实现对所需资源的访问,在仿真数据处理系统上解决了在普通数据仿真处理系统中的中断的实现和控制。但它对armv7仿真系统的适用性很差,对中断优先级、中断触发类型不能灵活配置,并且仅支持一种中断的发生和控制,不支持对中断嵌套的实现。
7.专利号为201110208554的中国专利,题目为:基于中断嵌套的中断处理方法及系统。该专利对中断优先级动态可配置,可以对中断过程进行优先级比较,支持中断的嵌套。但它的实现主要基于系统级芯片soc的层面上,实现过程十分复杂,无法移植到armv7仿真系统上。


技术实现要素:

8.本发明目的在于提供一种用于armv7处理器仿真系统内的中断嵌套的实现系统及方法,以解决现有技术中对在armv7处理器仿真系统中对中断过程的实现尚不完全,实现效果较差,实现过程可以移植性较差等问题,以及中断优先级、中断触发类型无法灵活配置,不支持对中断嵌套的实现的问题。
9.为解决上述技术问题,本发明的用于armv7处理器仿真系统内的中断嵌套的实现系统及方法的具体技术方案如下:一种用于armv7处理器仿真系统内的中断嵌套的实现系统,包括中断信号获取解
析模块、程序状态寄存器获取分割模块、中断信号判断设置模块、寄存器信息保护模块、处理器模式更新模块、中断服务程序执行模块和中断返回模块,所述中断信号获取解析模块是连接前端系统的接口,前端系统可以通过中断信号获取解析模块发送中断控制信号,向armv7处理器仿真系统发起外部中断,并且可以对其发送的中断请求信号进行解析,将中断请求信号分别设置为高优先级中断和低优先级两种中断的请求标志;所述程序状态寄存器获取分割模块可以获取预先设置的寄存器堆结构中的程序状态寄存器的数据,并进行数据的转换及各字段的分割,从而获得irq中断禁止位、fiq中断禁止位和工作模式位三种标志;所述中断信号判断设置模块对高优先级中断和低优先级两种中断的请求标志的有效性进行判断,并进行对应的当前中断请求的中断类型的设置;所述寄存器信息保护模块是根据当前中断请求的中断类型,进行不同中断模式下当前中断现场的断点地址的保存以及各个寄存器信息的保存,并将对应中断服务程序的入口地址置入指令计数器;所述处理器模式更新模块根据中断未发生前的工作,将堆栈指针保存到对应的不同的寄存器中;并且根据当前的中断类型进行对应的工作模式的更新,并根据更新后的工作模式,将主堆栈指针保存到对应的不同模式下的寄存器中;所述中断服务程序执行模块执行对应的中断的中断服务程序,并且包含中断返回指令,以便结束中断的执行后可以恢复中断;所述中断返回模块用于中断结束后,根据所发生的中断类型,进行对应的中断现场的恢复,包括中断现场的断点地址的恢复和各个寄存器信息的恢复。
10.本发明还公开了一种用于armv7处理器仿真系统内的中断嵌套的实现方法,包括如下步骤:步骤101:进入中断信号获取解析模块进行处理;步骤102:进入程序状态寄存器获取分割模块进行处理;步骤103:进入中断信号判断设置模块进行处理;步骤104:进入寄存器信息保护模块进行处理;步骤105:进入处理器模式更新模块进行处理;步骤106:进入中断服务程序执行模块进行处理;步骤107:判断当前的执行的指令是否为中断返回指令,即中断服务程序是否执行到最后结束部分,若是,则进入步骤109进行处理,反之,则进入步骤108进行处理;步骤108:判断当前是否有新的中断信号,若有新的中断信号产生,则将该中断信号与当前的中断模式的优先级进行比较,若当前的中断模式的优先级更高,则进入步骤101进行处理,反之,进入步骤106进行处理;步骤109:进入中断返回模块进行处理;步骤110:中断处理结束。
11.进一步地,步骤101包括如下具体步骤:步骤201,激活传输中断信号的传输接口,使其能够进行中断信号的传输;步骤202,从传输接口接收从前端系统发送而来的中断请求的全部有关内容;
步骤203,只用一个变量结构保存中断请求的主体内容部分,而不保存其余的请求头部的数据部分;步骤204,将请求主体内容部分的第一字段划分出来作为高优先级中断的请求标志,即fiq中断的请求标志;步骤205,将请求主体内容部分的第二字段划分出来作为低优先级中断的请求标志,级riq中断的请求标志;进一步地,步骤102包括如下具体步骤:步骤301,获取预先设置的寄存器堆结构中的第五字段,将其作为程序状态寄存器来使用;步骤302,将程序状态寄存器中的数据由十进制数据转换成为二进制数据;步骤303,将转换得到的二进制数据进行位数的补齐,即将不满32位的数据在头部补0,使其补足32位的长度;步骤304,取步骤303中已补足32位长度的二进制数据从头部开始的第24位作为低优先级中断的中断禁止标志,即irq中断的中断禁止标志i;步骤305,取步骤303中已补足32位长度的二进制数据从头部开始的第25位作为高优先级中断的中断禁止标志,即fiq中断的中断禁止标志f;步骤306,取步骤303中已补足32位长度的二进制数据从头部开始的第27位到第31位作为当前的工作模式标志m。
12.进一步地,步骤103包括如下具体步骤:步骤401,获取高优先级中断的请求标志,即获取fiq中断的请求标志;步骤402,获取低优先级中断的请求标志,即获取riq中断的请求标志;步骤403,判断当前高优先级中断的请求标志是否有效,若有效,则进入步骤404处理,反之则进入步骤405进行处理;步骤404,将本次中断的中断请求的类型设置为fiq中断请求模式;步骤405,判断当前低优先级中断的请求标志是否有效,若有效,则进入步骤406处理,反之则进入步骤407进行处理;步骤406,将本次中断的中断请求的类型设置为irq中断请求模式;步骤407,高优先级中断和低优先级中断的请求标志都为无效状态,无需进行中断模式的设置。
13.进一步地,步骤104包括如下具体步骤:步骤501,判断当前是否处于fiq中断模式或者irq中断模式两种中断处理模式中的任意一种,若是,则进入步骤502进行处理,反之,则进入步骤512进行处理;步骤502,将预先设置的指令计数器当前状态下的数据保存的预先设置的寄存器堆结构的第四字段,即保存到暂存器f中;步骤503,判断当前是否处理fiq中断模式,若是,则进入步骤504进行处理,反之,则进入步骤508进行处理;步骤504,当前是fiq中断模式,将预先设置的寄存器堆结构的第四字段的数据保存到当前fiq中断模式下的寄存器堆结构中的第七字段,即保存到fiq中断模式的连接寄存器lr中;
步骤505,保存预先设置的程序状态寄存器的数值到预先设置的寄存器堆结构的第十字段,即保存到fiq中断模式的程序状态保存寄存器中;步骤506,根据当前的fiq中断模式的状态寄存器更新要求,更新预先设置的程序状态寄存器中数值的尾部的八位二进制数值,其他各位不做改变;步骤507,根据当前的fiq中断模式,将对应的fiq中断模式的中断服务程序的入口地址置入预先设置的指令计数器中;步骤508,当前是irq中断模式,将预先设置的寄存器堆结构的第四字段的数据保存到当前fiq中断模式下的寄存器堆结构中的第二字段,即保存到irq中断模式的连接寄存器lr中;步骤509,保存预先设置的程序状态寄存器的数值到预先设置的寄存器堆结构的第九字段,即保存到irq中断模式的程序状态保存寄存器中;步骤510,根据当前的irq中断模式的状态寄存器更新要求,更新预先设置的程序状态寄存器中数值的尾部的八位二进制数值,其他各位不做改变;步骤511,根据当前的irq中断模式,将对应的irq中断模式的中断服务程序的入口地址置入预先设置的指令计数器中;步骤512,当前不为中断模式,对预先设置的寄存器堆各字段不作处理。
14.进一步地,步骤105包括如下具体步骤:步骤601,获取原始的处理器的工作模式位m;步骤602,根据工作模式位m判断原始工作模式是否处于用户工作模式,若是,则进入步骤604进行处理,反之,则进入步骤611进行处理;步骤603,根据工作模式位m判断原始工作模式是否处于用户工作模式,若是,则进入步骤604进行处理,反之,则进入步骤603进行处理;步骤604,原始模式是用户模式,保存预先设置的堆栈指针sp的数值到预先设置的寄存器堆结构第八字段,即保存到进程堆栈指针psp中;步骤605,原始模式是irq中断模式,保存预先设置的堆栈指针sp的数值到预先设置的寄存器堆结构第七字段,即保存到主堆栈指针msp中;步骤606,根据当前程序状态寄存器的第27位到第31位的数值来更新当前的工作模式标志m;步骤607,获取预先设置的寄存器堆结构的第七字段作为主堆栈指针的值;步骤608,根据更新后的处理器的工作模式为m进行判断,判断当前工作模式是否处于irq中断模式,若是,则进入步骤609进行处理,反之,则进入步骤610进行处理;步骤609,更新后的模式后是irq中断模式,保存主堆栈指针到irq中断模式下的寄存器堆结构的第六字段,即保存到irq中断模式下的堆栈指针中;步骤610,更新后的模式后是fiq中断模式,保存主堆栈指针到fiq中断模式下的寄存器堆结构的第二字段,即保存到fiq中断模式下的堆栈指针中;步骤611,原始模式不为中断模式,对预先设置的寄存器堆各字段不作处理。
15.进一步地,步骤106包括如下具体步骤:步骤701,根据当前的中断入口地址分配进入不同的中断服务程序进行执行,若为fiq中断,则进入步骤702进行处理,反之进入步骤706处理;
步骤702,当前执行的是fiq中断服务程序,保存预先设置的寄存器堆结构的0号寄存器和1号寄存器进入系统堆栈中;步骤703,将预先设置的寄存器堆结构的0号寄存器的内容置入预先设置的寄存器堆结构的1号寄存器中;步骤704,预先设置的寄存器堆结构的0号寄存器的内容与预先设置的寄存器堆结构的1号寄存器的内容相减,将相减的结果保存到0号寄存器中;步骤705,将系统堆栈中对应的数据重新赋给预先设置的寄存器堆结构的0号寄存器和与预先设置的寄存器堆结构的1号寄存器中,中断服务程序执行完毕,可以进行中断返回;步骤706,当前执行的是fiq中断服务程序,将预先设置的寄存器堆结构的0号寄存器的内容置入预先设置的寄存器堆结构的3号寄存器中;步骤707,将预先设置的指令寄存器中的内容置入寄存器堆结构的连接寄存器中,中断服务程序执行完毕,可以进行中断返回。
16.进一步地,步骤109包括如下具体步骤:步骤801,判断当前的中断返回指令是否为fiq中断返回指令,若是,则进入步骤802进行处理,反之,则进入步骤806进行处理;步骤802,当前中断返回指令为fiq中断返回指令,获取fiq中断模式下的寄存器堆结构的第六字段作为主堆栈指针的值,即将fiq中断模式下的堆栈指针的值作为主堆栈指针的值;步骤803,获取fiq中断模式下的寄存器堆结构的第七字段作为指令计数器的值,即将fiq中断模式下连接寄存器的值作为指令计数器的值;步骤804,获取预先设置的寄存器堆结构的第十字段作为程序状态寄存器的值,即将fiq中断模式下的程序状态保存寄存器的值作为程序状态寄存器的值;步骤805,获取预先设置的寄存器堆结构的第八字段作为原堆栈指针的值,即将进程堆栈指针的值作为原堆栈指针的值;步骤806,当前中断返回指令为irq中断返回指令,获取irq中断模式下的寄存器堆结构的第一字段作为主堆栈指针的值,即将irq中断模式下的堆栈指针的值作为主堆栈指针的值;步骤807,获取irq中断模式下的寄存器堆结构的第二字段作为指令计数器的值,即将irq中断模式下连接寄存器的值作为指令计数器的值;步骤808,获取预先设置的寄存器堆结构的第九字段作为程序状态寄存器的值,即将irq中断模式下的程序状态保存寄存器的值作为程序状态寄存器的值;步骤809,获取预先设置的寄存器堆结构的第八字段作为原堆栈指针的值,即将进程堆栈指针的值作为原堆栈指针的值。
17.本发明的用于armv7处理器仿真系统内的中断嵌套的实现系统及方法具有以下优点:本发明可以支持armv7处理器仿真系统中对外部中断的处理,在中断处理过程中多重中断的嵌套,即支持高优先级的中断打断当前低优先级中断的执行,当高优先级中断执行完成之后,能够返回低优先级的中断服务程序继续执行,在中断处理过程中,能够正确
地保护中断发生前的中断现场的各个寄存器信息,在中断完成之后,能够正确地恢复中断发生前中断现场的各个寄存器信息,并且继续按指令的顺序执行原有的armv7指令的仿真程序。
附图说明
18.图1为本发明的用于armv7处理器仿真系统内的中断嵌套的实现方法总体流程图;图2为本发明的中断信号获取解析模块处理流程图;图3为本发明的程序状态寄存器获取分割模块处理流程图;图4为本发明的中断信号判断设置模块处理流程图;图5为本发明的寄存器信息保护模块处理流程图;图6为本发明的处理器模式更新模块处理流程图;图7为本发明的中断服务程序执行模块处理流程图;图8为本发明的中断返回模块处理流程图。
具体实施方式
19.为了更好地了解本发明的目的、结构及功能,下面结合附图,对本发明一种用于armv7处理器仿真系统内的中断嵌套的实现系统及方法做进一步详细的描述。
20.本发明的一种用于armv7处理器仿真系统内的中断嵌套的实现系统,包括中断信号获取解析模块、程序状态寄存器获取分割模块、中断信号判断设置模块、寄存器信息保护模块、处理器模式更新模块、中断服务程序执行模块和中断返回模块。
21.中断信号获取解析模块是连接前端系统的接口,前端系统可以通过中断信号获取解析模块发送中断控制信号,向armv7处理器仿真系统发起外部中断,并且可以对其发送的中断请求信号进行解析,将中断请求信号分别设置为高优先级中断和低优先级两种中断的请求标志。
22.程序状态寄存器获取分割模块可以获取预先设置的寄存器堆结构中的程序状态寄存器的数据,并进行数据的转换及各字段的分割,从而获得irq中断禁止位、fiq中断禁止位和工作模式位三种标志。
23.中断信号判断设置模块对高优先级中断和低优先级两种中断的请求标志的有效性进行判断,并进行对应的当前中断请求的中断类型的设置。
24.寄存器信息保护模块是根据当前中断请求的中断类型,进行不同中断模式下当前中断现场的断点地址的保存以及各个寄存器信息的保存,并将对应中断服务程序的入口地址置入指令计数器。
25.处理器模式更新模块根据中断未发生前的工作,将堆栈指针保存到对应的不同的寄存器中;并且根据当前的中断类型进行对应的工作模式的更新,并根据更新后的工作模式,将主堆栈指针保存到对应的不同模式下的寄存器中。
26.中断服务程序执行模块执行对应的中断的中断服务程序,并且包含中断返回指令,以便结束中断的执行后可以恢复中断。
27.中断返回模块用于中断结束后,根据所发生的中断类型,进行对应的中断现场的恢复,包括中断现场的断点地址的恢复和各个寄存器信息的恢复。
28.如图1所示,本发明的一种用于armv7处理器仿真系统内的中断嵌套的实现方法,包括如下步骤:当需要开始处理中断时,首先进入步骤101的中断信号获取解析模块进行处理,处理过程如图2所示:步骤201,激活传输中断信号的传输接口,使其能够进行中断信号的传输。
29.步骤202,从传输接口接收从前端系统发送而来的中断请求的全部有关内容。
30.步骤203,只用一个变量结构保存中断请求的主体内容部分,而不保存其余的请求头部的数据部分。
31.步骤204,将请求主体内容部分的第一字段划分出来作为高优先级中断的请求标志,即fiq中断的请求标志。
32.步骤205,将请求主体内容部分的第二字段划分出来作为低优先级中断的请求标志,级riq中断的请求标志。
33.然后进入步骤102的程序状态寄存器获取分割模块进行处理,处理过程如图3所示:步骤301,获取预先设置的寄存器堆结构中的第五字段,将其作为程序状态寄存器来使用。
34.步骤302,将程序状态寄存器中的数据由十进制数据转换成为二进制数据。
35.步骤303,将转换得到的二进制数据进行位数的补齐,即将不满32位的数据在头部补0,使其补足32位的长度。
36.步骤304,取步骤303中已补足32位长度的二进制数据从头部开始的第24位作为低优先级中断的中断禁止标志,即irq中断的中断禁止标志i。
37.步骤305,取步骤303中已补足32位长度的二进制数据从头部开始的第25位作为高优先级中断的中断禁止标志,即fiq中断的中断禁止标志f。
38.步骤306,取步骤303中已补足32位长度的二进制数据从头部开始的第27位到第31位作为当前的工作模式标志m。
39.然后进入步骤103的中断信号判断设置模块进行处理,处理过程如图4所示:步骤401,获取高优先级中断的请求标志,即获取fiq中断的请求标志。
40.步骤402,获取低优先级中断的请求标志,即获取riq中断的请求标志。
41.步骤403,判断当前高优先级中断的请求标志是否有效,若有效,则进入步骤404处理,反之则进入步骤405进行处理。
42.步骤404,将本次中断的中断请求的类型设置为fiq中断请求模式。
43.步骤405,判断当前低优先级中断的请求标志是否有效,若有效,则进入步骤406处理,反之则进入步骤407进行处理。
44.步骤406,将本次中断的中断请求的类型设置为irq中断请求模式。
45.步骤407,高优先级中断和低优先级中断的请求标志都为无效状态,无需进行中断模式的设置。
46.然后进入步骤104的寄存器信息保护模块进行处理,处理过程如图5所示:步骤501,判断当前是否处于fiq中断模式或者irq中断模式两种中断处理模式中的任意一种,若是,则进入步骤502进行处理,反之,则进入步骤512进行处理。
47.步骤502,将预先设置的指令计数器当前状态下的数据保存的预先设置的寄存器堆结构的第四字段,即保存到暂存器f中。
48.步骤503,判断当前是否处理fiq中断模式,若是,则进入步骤504进行处理,反之,则进入步骤508进行处理。
49.步骤504,当前是fiq中断模式,将预先设置的寄存器堆结构的第四字段的数据保存到当前fiq中断模式下的寄存器堆结构中的第七字段,即保存到fiq中断模式的连接寄存器lr中。
50.步骤505,保存预先设置的程序状态寄存器的数值到预先设置的寄存器堆结构的第十字段,即保存到fiq中断模式的程序状态保存寄存器中。
51.步骤506,根据当前的fiq中断模式的状态寄存器更新要求,更新预先设置的程序状态寄存器中数值的尾部的八位二进制数值,其他各位不做改变。
52.步骤507,根据当前的fiq中断模式,将对应的fiq中断模式的中断服务程序的入口地址置入预先设置的指令计数器中。
53.步骤508,当前是irq中断模式,将预先设置的寄存器堆结构的第四字段的数据保存到当前fiq中断模式下的寄存器堆结构中的第二字段,即保存到irq中断模式的连接寄存器lr中。
54.步骤509,保存预先设置的程序状态寄存器的数值到预先设置的寄存器堆结构的第九字段,即保存到irq中断模式的程序状态保存寄存器中。
55.步骤510,根据当前的irq中断模式的状态寄存器更新要求,更新预先设置的程序状态寄存器中数值的尾部的八位二进制数值,其他各位不做改变。
56.步骤511,根据当前的irq中断模式,将对应的irq中断模式的中断服务程序的入口地址置入预先设置的指令计数器中。
57.步骤512,当前不为中断模式,对预先设置的寄存器堆各字段不作处理。
58.然后进入步骤105的处理器模式更新模块进行处理,处理过程如图6所示: 步骤601,获取原始的处理器的工作模式位m。
59.步骤602,根据工作模式位m判断原始工作模式是否处于用户工作模式,若是,则进入步骤604进行处理,反之,则进入步骤611进行处理。
60.步骤603,根据工作模式位m判断原始工作模式是否处于用户工作模式,若是,则进入步骤604进行处理,反之,则进入步骤603进行处理。
61.步骤604,原始模式是用户模式,保存预先设置的堆栈指针sp的数值到预先设置的寄存器堆结构第八字段,即保存到进程堆栈指针psp中。
62.步骤605,原始模式是irq中断模式,保存预先设置的堆栈指针sp的数值到预先设置的寄存器堆结构第七字段,即保存到主堆栈指针msp中。
63.步骤606,根据当前程序状态寄存器的第27位到第31位的数值来更新当前的工作模式标志m。
64.步骤607,获取预先设置的寄存器堆结构的第七字段作为主堆栈指针的值。
65.步骤608,根据更新后的处理器的工作模式为m进行判断,判断当前工作模式是否处于irq中断模式,若是,则进入步骤609进行处理,反之,则进入步骤610进行处理。
66.步骤609,更新后的模式后是irq中断模式,保存主堆栈指针到irq中断模式下的寄
存器堆结构的第六字段,即保存到irq中断模式下的堆栈指针中。
67.步骤610,更新后的模式后是fiq中断模式,保存主堆栈指针到fiq中断模式下的寄存器堆结构的第二字段,即保存到fiq中断模式下的堆栈指针中。
68.步骤611,原始模式不为中断模式,对预先设置的寄存器堆各字段不作处理。
69.然后进入步骤106的中断服务程序执行模块进行处理,处理过程如图7所示:步骤701,根据当前的中断入口地址分配进入不同的中断服务程序进行执行,若为fiq中断,则进入步骤702进行处理,反之进入步骤706处理。
70.步骤702,当前执行的是fiq中断服务程序,保存预先设置的寄存器堆结构的0号寄存器和1号寄存器进入系统堆栈中。
71.步骤703,将预先设置的寄存器堆结构的0号寄存器的内容置入预先设置的寄存器堆结构的1号寄存器中。
72.步骤704,预先设置的寄存器堆结构的0号寄存器的内容与预先设置的寄存器堆结构的1号寄存器的内容相减,将相减的结果保存到0号寄存器中。
73.步骤705,将系统堆栈中对应的数据重新赋给预先设置的寄存器堆结构的0号寄存器和与预先设置的寄存器堆结构的1号寄存器中,中断服务程序执行完毕,可以进行中断返回。
74.步骤706,当前执行的是fiq中断服务程序,将预先设置的寄存器堆结构的0号寄存器的内容置入预先设置的寄存器堆结构的3号寄存器中。
75.步骤707,将预先设置的指令寄存器中的内容置入寄存器堆结构的连接寄存器中,中断服务程序执行完毕,可以进行中断返回。 步骤107,判断当前的执行的指令是否为中断返回指令,即中断服务程序是否执行到最后结束部分,若是,则进入步骤109进行处理,反之,则进入步骤108进行处理。
76.步骤108,判断当前是否有新的中断信号,若有新的中断信号产生,则将该中断信号与当前的中断模式的优先级进行比较,若当前的中断模式的优先级更高,则进入步骤101进行处理,反之,进入步骤106进行处理。
77.然后进入步骤109的中断返回模块进行处理,处理过程如图8所示:步骤801,判断当前的中断返回指令是否为fiq中断返回指令,若是,则进入步骤802进行处理,反之,则进入步骤806进行处理。
78.步骤802,当前中断返回指令为fiq中断返回指令,获取fiq中断模式下的寄存器堆结构的第六字段作为主堆栈指针的值,即将fiq中断模式下的堆栈指针的值作为主堆栈指针的值。
79.步骤803,获取fiq中断模式下的寄存器堆结构的第七字段作为指令计数器的值,即将fiq中断模式下连接寄存器的值作为指令计数器的值。
80.步骤804,获取预先设置的寄存器堆结构的第十字段作为程序状态寄存器的值,即将fiq中断模式下的程序状态保存寄存器的值作为程序状态寄存器的值。
81.步骤805,获取预先设置的寄存器堆结构的第八字段作为原堆栈指针的值,即将进程堆栈指针的值作为原堆栈指针的值。
82.步骤806,当前中断返回指令为irq中断返回指令,获取irq中断模式下的寄存器堆结构的第一字段作为主堆栈指针的值,即将irq中断模式下的堆栈指针的值作为主堆栈指
针的值。
83.步骤807,获取irq中断模式下的寄存器堆结构的第二字段作为指令计数器的值,即将irq中断模式下连接寄存器的值作为指令计数器的值。
84.步骤808,获取预先设置的寄存器堆结构的第九字段作为程序状态寄存器的值,即将irq中断模式下的程序状态保存寄存器的值作为程序状态寄存器的值。
85.步骤809,获取预先设置的寄存器堆结构的第八字段作为原堆栈指针的值,即将进程堆栈指针的值作为原堆栈指针的值。
86.中断处理结束。
87.可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本技术的权利要求范围内的实施例都属于本发明所保护的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1