aboutsummaryrefslogtreecommitdiff
path: root/src/bits64/vmx.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bits64/vmx.rs')
-rw-r--r--src/bits64/vmx.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/bits64/vmx.rs b/src/bits64/vmx.rs
index 5330951..f64ece7 100644
--- a/src/bits64/vmx.rs
+++ b/src/bits64/vmx.rs
@@ -27,13 +27,13 @@ fn vmx_capture_status() -> Result<()> {
/// `addr` specifies a 4KB-aligned physical address of VMXON region initialized
/// in accordance with Intel SDM, Volume 3C, Section 24.11.5.
pub unsafe fn vmxon(addr: u64) -> Result<()> {
- asm!("vmxon $0" : /* no outputs */ : "m"(addr));
+ llvm_asm!("vmxon $0" : /* no outputs */ : "m"(addr));
vmx_capture_status()
}
/// Disable VMX operation.
pub unsafe fn vmxoff() -> Result<()> {
- asm!("vmxoff");
+ llvm_asm!("vmxoff");
vmx_capture_status()
}
@@ -42,7 +42,7 @@ pub unsafe fn vmxoff() -> Result<()> {
/// Ensures that VMCS data maintained on the processor is copied to the VMCS region
/// located at 4KB-aligned physical address `addr` and initializes some parts of it.
pub unsafe fn vmclear(addr: u64) -> Result<()> {
- asm!("vmclear $0" : /* no outputs */ : "m"(addr));
+ llvm_asm!("vmclear $0" : /* no outputs */ : "m"(addr));
vmx_capture_status()
}
@@ -50,14 +50,14 @@ pub unsafe fn vmclear(addr: u64) -> Result<()> {
///
/// Marks the current-VMCS pointer valid and loads it with the physical address `addr`.
pub unsafe fn vmptrld(addr: u64) -> Result<()> {
- asm!("vmptrld $0" : /* no outputs */ : "m"(addr));
+ llvm_asm!("vmptrld $0" : /* no outputs */ : "m"(addr));
vmx_capture_status()
}
/// Return current VMCS pointer.
pub unsafe fn vmptrst() -> Result<u64> {
let value: u64 = 0;
- asm!("vmptrst ($0)" : /* no outputs */ : "r"(&value) : "memory");
+ llvm_asm!("vmptrst ($0)" : /* no outputs */ : "r"(&value) : "memory");
vmx_capture_status().and(Ok(value))
}
@@ -65,27 +65,27 @@ pub unsafe fn vmptrst() -> Result<u64> {
pub unsafe fn vmread(field: u32) -> Result<u64> {
let field: u64 = field.into();
let value: u64;
- asm!("vmread $1, $0" : "=r"(value) : "r"(field));
+ llvm_asm!("vmread $1, $0" : "=r"(value) : "r"(field));
vmx_capture_status().and(Ok(value))
}
/// Write to a specified field in a VMCS.
pub unsafe fn vmwrite(field: u32, value: u64) -> Result<()> {
let field: u64 = field.into();
- asm!("vmwrite $1, $0" : /* no outputs */ : "r"(field), "r"(value));
+ llvm_asm!("vmwrite $1, $0" : /* no outputs */ : "r"(field), "r"(value));
vmx_capture_status()
}
/// Launch virtual machine.
#[inline(always)]
pub unsafe fn vmlaunch() -> Result<()> {
- asm!("vmlaunch");
+ llvm_asm!("vmlaunch");
vmx_capture_status()
}
/// Resume virtual machine.
#[inline(always)]
pub unsafe fn vmresume() -> Result<()> {
- asm!("vmresume");
+ llvm_asm!("vmresume");
vmx_capture_status()
}