小编Cod*_*der的帖子

通过内核模块在ARMv7上进入管理程序模式

我正在开发一个项目,我有一个带有ARMv7处理器(Cortex A15)和OpenWRT OS的路由器.我在路由器上有一个shell,可以使用insmod加载内核模块.

我的目标是在C中编写一个内核模块,它更改HVBAR寄存器,然后执行hvc指令以使处理器处于hyp模式.这是一个科学项目,我想检查一下我是否可以将自己的虚拟机管理程序放在正在运行的系统上.但在我开始编写自己的虚拟机管理程序之前,我想检查是否以及如何将处理器置于hyp模式.

根据这张图片来自armv7-a手册B.9.3.4,系统必须处于非安全模式,而不是用户模式,SCR.HCE位必须为1.

在此输入图像描述

我的问题是如何使用C内核模块和内联汇编来准备处理器,然后执行hvc指令.我想用内核模块做这个,因为我从PL1开始.这个伪代码描述了我想要实现的目标:

  1. 调用smc //进入监控模式
  2. 将SRC.HCE设置为1 //以启用hvc指令
  3. 将SRC.NS设置为1 //以将系统设置为不安全
  4. call hvc#0 //调用hvc指令产生一个hypervisor异常

c virtualization arm openwrt hypervisor

10
推荐指数
1
解决办法
446
查看次数

标签 统计

arm ×1

c ×1

hypervisor ×1

openwrt ×1

virtualization ×1