天天看点

[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异常处理