ARMv8架構學習---Privilege, Security, Modes and Exception Levels


1、執行64位寬的寄存器,又兼容ARMv7架構的軟件,即既支持32bit,又支持64bit,AArch64 & AArch32

2、分離了privilege和mode,ARMv7是一體的

      在ARMv8中,安全狀態下,有PL3、PL1、PL0,沒有PL2,可以訪問安全內存空間

                        非安全狀態下,有PL2、PL1、PL0,沒有PL3,不可訪問安全內存空間

      每一個PL級別, 決定一套指令和寄存器集。

 3、Exception Levels(EL)

      EL也有4級,EL0、EL1、EL2(僅在非安全狀態下存在)、EL3(僅在安全狀態下存在)

      在AArch64下,EL決定PL,當前執行在ELx,PL也就為PLx。

      EL的切換:發生一個異常or從一個異常返回

                     發生一個異常:EL >= 當前EL

                     從一個異常返回:EL <= 當前EL

       EL的決定性:決定當前執行狀態,如哪種寄存器,PL,寄存器位寬等

       EL的級別:數字越大,級別越高,相當於權限越大。

                     一般應用程序使用EL0,OS內核使用EL1,Hypervisor使用EL2,Security Monitoe使用EL3

 4、寄存器位寬

      EL級別變大,寄存器位寬變大或者不變;EL級別變小,寄存器位寬變小或者不變。

      EL0的寄存器位寬,由EL1中的HCR/SCR寄存器中某bit決定,只能通過從異常返回來設置

      EL1的寄存器位寬,由EL2中的HCR寄存器或者EL3中的SCR寄存器中某bit決定,根據安全非安全狀態決定是EL3還是EL2。

      EL2、EL3的寄存器位寬, 由復位時的配置管腳設置

 5、指令集

      A32: 兼容ARMv7架構中的32bit ARM指令集

      T32: 兼容ARMv7架構中的16bit & 32bit Thumb指令集    

      T32EE:兼容ARMv7架構中的16bit & 32bit ThumbEE指令集

      A63:ARMv8新定義的64bit指令集     

6、AArch32

      如果最高級別的EL如EL2orEL3使用AArch32,則整個系統必須使用AArch32;

      AArch32下,ARMv8下的執行就跟ARMv7一樣,只是虛擬化擴展和大物理地址擴(LPAE)展有點改變

 7、異常返回狀態

     AArch64下,異常返回狀態由ELR(Exception Link Register)和SPSR(Saved Processor State Register)寄存器決定。

     ELR中保存異常返回地址,SPSR保存處理器狀態。

8、堆棧指針選擇

     EL0下,堆棧指針為SP_EL0,其他為SP_ELx。

 9、安全模型

      在ARMv7下,安全擴展引入了Monitor模式,該模式來實現安全和非安全狀態的切換。

      ARMv8下,當EL3使用AArch32,為了兼容ARMv7,在安全模式下不區分EL,只有一個EL3

                                   Non-secure state             Secure State

                     EL0         Application

                     EL1         OS

                     EL2         Hypervisor

                     EL3                                               Secure Monitor ->Secure OS ->Secure Application

       ARMv8下,當EL3使用AArch64,EL和安全是分離的

                                    Non-secure state             Secure State

                     EL0         Application                       Secure Application

                     EL1         OS                                  Secure OS

                     EL2         Hypervisor

                     EL3                                               Secure Monitor    

10、執行模式

       ARMv7中的模式包括user、FIQ、IRQ、Supervisor、Monitor、Abort、Hyp、Undefined、System,混合了各種概念。

       ARMv8在AArch64中的模式EL0t、EL1t & EL1h、EL2t & EL2h、EL3t & EL3h,后綴t表示SP_EL0堆棧指針,h表示SP_ELx堆棧指針

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM