我正在开发一个项目,我有一个带有ARMv7处理器(Cortex A15)和OpenWRT OS的路由器。我在路由器上有一个shell,可以使用insmod加载内核模块。
我的目标是在C中编写内核模块,更改HVBAR寄存器,然后执行hvc指令以使处理器处于hyp模式。 这是一个科学项目,我想检查一下我是否可以将自己的虚拟机管理程序放在正在运行的系统上。但在我开始编写自己的虚拟机管理程序之前,我想检查是否以及如何将处理器置于hyp模式。
根据这张图片来自armv7-a手册B.9.3.4,系统必须处于非安全模式,而不是用户模式,SCR.HCE位必须为1.
我的问题是如何使用C内核模块和内联汇编来准备处理器,然后执行hvc指令。我想用内核模块做这个,因为我从PL1开始。这个伪代码描述了我想要实现的目标: