文章目錄
-
-
-
- 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異常處理