AMRV7和ARMV8中的一些细微差异
程序员文章站
2022-03-14 18:08:02
文章目录1、svc和swi的区别1、svc和swi的区别svc和swi都是supervisor call指令,都是系统调用.再armv7之前,用的都是swi,触发异步异常,进入vector_swi异常向量表;在armv8-arch64架构下,抛弃了swi,改用了svc,触发的是同步异常,进入同步异常向量表sync_exception_aarch64......
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异常处理
本文地址:https://blog.csdn.net/weixin_42135087/article/details/107318870