天天看點

[architecture]-AMRV7和ARMV8中的一些細微差異

文章目錄

        • 1、svc和swi的差別
        • 2、swi、SGI、softirq的差別?
        • 3、SError和data abort、prefetch abort、undefined instruction的差別
思考
- 什麼是協處理器?ARMV8-aarch64下有沒有協處理器?
- MRS/MSR是什麼指令,在aarch64架構下沒有MCR/MRC指令?
- 什麼是SError? 什麼是prefetch abort,undefined instruction?
- LR和ELR的差別?
- 在aarch32中, R15是PC,那麼在aarch64中X30為什麼不是PC?
- MV PC ,#3 這樣的指令是否可以
- 在aarch32中, R13是SP,那麼在aarch64為什麼沒有通用寄存器作為SP?
- armv7和armv8的ARM NEON的差別?
- PSTATE和CPSR的差別?
- ARMv8上是否能接gicv2,armv7上是否能接gicv3?
           

★★★ 友情連結 : 個人部落格導讀首頁—點選此處 ★★★

1、svc和swi的差別

svc和swi都是supervisor call指令,都是系統調用.

  • 再armv7之前,用的都是swi,觸發異步異常,進入vector_swi異常向量表;
  • 在armv8-arch64架構下,抛棄了swi,改用了svc,觸發的是同步異常,進入同步異常向量表el1_sync

2、swi、SGI、softirq的差別?

【問題】swi叫軟中斷、SGI也叫軟中斷、linux kernel中還有一個softirq也叫軟中斷,他們三個有什麼差別呢?

【回答】:

  • swi :software irq,是ARM的一個軟體中斷指令,産生swi異常;
  • SGI:software generate interrupt,軟體産生的中斷,是cpu寫gic寄存器,gic發出的一個irq給到cpu
  • softirq: linux kernel自己造的軟中斷,和硬體無關

3、SError和data abort、prefetch abort、undefined instruction的差別

在armv7下使用的是data abort、prefetch abort、undefined instruction,在armv8下使用的是SError.

注:在linux kernel中,armv7體系下均已實作data abort、prefetch abort、undefined instruction異常處理函數,在linux kernel的armv8體系下,沒有實作SError異常處理