当上下文切换在访客上运行的用户进程时,ARM模式



是我的理解(从本文中(,在ARM上,Hypervisor/VMM以用新为hast模式,访客操作系统以SVC模式运行,并且在USR中运行的用户进程在USR中运行模式。

当访客操作系统中有上下文开关时,例如从一个用户进程切换到另一个用户过程,这是否会一直捕获到hyp模式下的VMM?如果是这样,从USR到SVC再到HYP模式,在过程的每个阶段会发生什么?

简短答案:取决于管理程序,体系结构允许这两种方法。

手臂上的上下文开关将切换页面表并使TLB无效。

要切换页面表,您需要修改寄存器ttbr0(用户空间零件(或ttbr1(内核空间。通常,对于Linux,它永远不会更改,但某些异国情调的OS可能会有所不同(,这是通过"共同访问的(处理器"说明。

要设置TTBR0,您将指令" MRC"与CRN = 2。

这样的协处理器访问可以被催眠困住,但不一定是。这取决于您是否要求它们被困。这是在" Hypervisor系统陷阱寄存器"(Aarch64上的HSTR_EL2(中设置的。

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0488d/cihjfiha.html

TLB无效指令和缓存维护操作也被用作ARMV7上的协处理器访问说明(从技术上讲也是在ARMV8上,但架构参考手册建议改用人类可读的mnemonics(。例如," tlbiall"是协处理器CRN8,因此您需要在HSTR_EL2中设置BIT T8。

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0438i/cihechcd.html

最新更新