about summary refs log tree commit diff
path: root/library/std/src
diff options
context:
space:
mode:
authorLzu Tao <taolzu@gmail.com>2020-09-15 15:26:16 +0000
committerLzu Tao <taolzu@gmail.com>2020-09-28 13:08:34 +0000
commitd4772014d97d9d1e1da4a8228fee2dd969f56e0f (patch)
tree7f2c483d012f58a6dfdd46183d7725f3ff5f89a1 /library/std/src
parent4e3eb5249340898e4380ffe37e7ed8c6b2afdbf9 (diff)
downloadrust-d4772014d97d9d1e1da4a8228fee2dd969f56e0f.tar.gz
rust-d4772014d97d9d1e1da4a8228fee2dd969f56e0f.zip
Prefer asm! in std - all in sgx module
Diffstat (limited to 'library/std/src')
-rw-r--r--library/std/src/sys/sgx/abi/mem.rs11
-rw-r--r--library/std/src/sys/sgx/ext/arch.rs29
2 files changed, 24 insertions, 16 deletions
diff --git a/library/std/src/sys/sgx/abi/mem.rs b/library/std/src/sys/sgx/abi/mem.rs
index 57fd7efdd49..ffa234fccfe 100644
--- a/library/std/src/sys/sgx/abi/mem.rs
+++ b/library/std/src/sys/sgx/abi/mem.rs
@@ -21,8 +21,15 @@ extern "C" {
 #[inline(always)]
 #[unstable(feature = "sgx_platform", issue = "56975")]
 pub fn image_base() -> u64 {
-    let base;
-    unsafe { llvm_asm!("lea IMAGE_BASE(%rip),$0":"=r"(base)) };
+    let base: u64;
+    unsafe {
+        asm!(
+            "lea IMAGE_BASE(%rip), {}",
+            lateout(reg) base,
+            // NOTE(#76738): ATT syntax is used to support LLVM 8 and 9.
+            options(att_syntax, nostack, preserves_flags, nomem, pure),
+        )
+    };
     base
 }
 
diff --git a/library/std/src/sys/sgx/ext/arch.rs b/library/std/src/sys/sgx/ext/arch.rs
index 0c97a87e2e4..7488e7e5dc9 100644
--- a/library/std/src/sys/sgx/ext/arch.rs
+++ b/library/std/src/sys/sgx/ext/arch.rs
@@ -31,13 +31,13 @@ pub fn egetkey(request: &Align512<[u8; 512]>) -> Result<Align16<[u8; 16]>, u32>
         let mut out = MaybeUninit::uninit();
         let error;
 
-        llvm_asm!(
-            "enclu"
-            : "={eax}"(error)
-            : "{eax}"(ENCLU_EGETKEY),
-              "{rbx}"(request),
-              "{rcx}"(out.as_mut_ptr())
-            : "flags"
+        asm!(
+            "enclu",
+            inlateout("eax") ENCLU_EGETKEY => error,
+            in("rbx") request,
+            in("rcx") out.as_mut_ptr(),
+            // NOTE(#76738): ATT syntax is used to support LLVM 8 and 9.
+            options(att_syntax, nostack),
         );
 
         match error {
@@ -60,13 +60,14 @@ pub fn ereport(
     unsafe {
         let mut report = MaybeUninit::uninit();
 
-        llvm_asm!(
-            "enclu"
-            : /* no output registers */
-            : "{eax}"(ENCLU_EREPORT),
-              "{rbx}"(targetinfo),
-              "{rcx}"(reportdata),
-              "{rdx}"(report.as_mut_ptr())
+        asm!(
+            "enclu",
+            in("eax") ENCLU_EREPORT,
+            in("rbx") targetinfo,
+            in("rcx") reportdata,
+            in("rdx") report.as_mut_ptr(),
+            // NOTE(#76738): ATT syntax is used to support LLVM 8 and 9.
+            options(att_syntax, preserves_flags, nostack),
         );
 
         report.assume_init()