[architecture]-AMRV7和ARMV8中的一些细微差异
生活随笔
收集整理的這篇文章主要介紹了
[architecture]-AMRV7和ARMV8中的一些细微差异
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1、svc和swi的區別
- 2、swi、SGI、softirq的區別?
- 3、SError和data abort、prefetch abort、undefined instruction的區別
★★★ 友情鏈接 : 個人博客導讀首頁—點擊此處 ★★★
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異常處理
總結
以上是生活随笔為你收集整理的[architecture]-AMRV7和ARMV8中的一些细微差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARM架构中MMU/TLB/Cache的
- 下一篇: ARM Trustzone的安全扩展介绍