您的位置:首页 > 其它

HVM的常用虚拟指令与详解

2015-10-30 13:02 387 查看
概述

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)

异常类型:

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

标注:

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

编码方式:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: