HVM的常用虚拟指令与详解

概述
HVM为开发者提供了全套的虚拟指令以及事件,用于控制用户模式与访客模式下的转换,并提供了HVM上保护、多用户、多任务操作系统的实现支持

虚拟指令是Hexagon指令集的延伸版本,虚拟指令可调用HVM操作,这些操作无法通过一般的Hexagon指令来实现

本文中,主要讲述了HVM下的详细的HVM虚拟指令,下面所有的指令都按照字母表进行排序
这里写图片描述
呵呵

HVM中所有指令的汇总
所有指令的属性
HVM下的虚拟指令有如下的属性:
 指令是需要授权的,只可在访客模式软件中执行。如果在用户模式下执行这些指令,那么将会生成一个权限违反异常
 一般情况下,指令从Hexagon 处理器的寄存器R0-R4中取得输入参数,并将输出参数输出到R0以及R1
 指令都是单独的指令(Hexagon程序手册中对此有明确定义),因此这些指令不能被汇总至指令包中
 指令通常作为Hexagon traps进行实现,从而将处理器切换至监控模式

VMCACHE指令
该指令实现缓存平衡操作,这些操作如果单纯通过本地缓存管理指令可能无法或者有效的实现管理

语法格式:
Vmcache
寄存器定义:
这里写图片描述

指令类型:JR(slot2)

异常类型:
 如果虚拟地址范围中包含了没有写权限的页,将发生store保护异常
 如果在用户模式下执行,将产生权限违规异常

标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中

指令的编码方式:
这里写图片描述

VMCLRMAP指令
清除可能的脏虚拟映射

语法:
Vmclrmap
寄存器定义
这里写图片描述

类型: JR(slot2)

异常类型:
如果在用户模式下进行指令,将导致权限违规异常

标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中

编码方式:
这里写图片描述

VMGETIE
获取虚拟处理器中断使能值
语法:
vmgetie
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述
VMINTOP
该指令在虚拟中断控制器上进行操作
语法:
vmintop
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述

VMGETTIME
该指令获取64位的虚拟处理器时戳
语法:
vmgettime
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述

VMNEWMAP
该指令创建新的逻辑-虚拟内存映射

在vmnewmap指令前,虚拟设备的MMU被重新编程,从而撤销旧的虚拟-物理映射,并使用页表L1table中以R0寄存器表示的地址映射。如果转换映射到虚拟设备合法逻辑地址空间外,特殊的功能将会决定是否使能、返回一个零错误代码、或者产生一个设备检测事件。VMM的实现可能不会将所有的转换表实现。不受支持的转换将导致错误,而转换也不会被改变

语法:
vmnewmap
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
如果运行时探测到非法页表,那么将会由虚拟设备实现产生一个设备检查事件
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
vmnewmap操作伴随的虚拟设备指令位于vmnewmap地址源映射的伴随位置。在放置vmnewmap指令的页中必须注意关注放置访客模式操作系统页的映射
编码方式:
这里写图片描述

VMRTE
从事件服务中返回
 PC = G0 (GELR)
 Interrupt Enable State = G1[30] (GSR.IE)
 User Mode = G1[31] (GSR.UM)
 if (User Mode) swap(R29,G2) (GOSP)
语法:
vmrte
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述

VMSETIE
设置虚拟处理器中断使能值
语法:
Vmsetie
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述

VMSETTIME
设置虚拟处理器时间戳的值
语法:
vmsettime
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述

VMSETVEC
语法:
为每个事件设置事件句柄向量
寄存器定义:
这里写图片描述
类型:
JR(slot2)
异常类型:
如果在用户模式下进行指令,将导致权限违规异常
标注:
指令是单独的指令,无法与其他指令一起汇总到指令包中
编码方式:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值