在ARMv8-A中,EL1/2/3除了可以自身的堆栈寄存器SP_ELn以外,还可以使用SP_EL0。
与此同时EL0也可以使用SP_EL0。
我想在EL0的应用程序应该可以通过SP_EL0,访问到EL1/2/3的数据,这岂不是不安全?
希望帮忙解答,谢谢!
是吗? 我在想是不是这样的:
在EL1中,kernel OS会使用SP_EL1和SP_EL0。 但SP_EL0指向的是内核栈而不是thread stack。 因此,在通过ERET指令从EL1回到EL0后,SP_EL0会重新指向thread stack。
这样,位于EL0的application就不能通过SP_EL0来访问内核栈了。
不知道想的对不对,还望高手指教~ 谢谢