Prefer asm! in std - all in sgx module
This commit is contained in:
parent
4e3eb52493
commit
d4772014d9
2 changed files with 24 additions and 16 deletions
|
@ -21,8 +21,15 @@ extern "C" {
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[unstable(feature = "sgx_platform", issue = "56975")]
|
#[unstable(feature = "sgx_platform", issue = "56975")]
|
||||||
pub fn image_base() -> u64 {
|
pub fn image_base() -> u64 {
|
||||||
let base;
|
let base: u64;
|
||||||
unsafe { llvm_asm!("lea IMAGE_BASE(%rip),$0":"=r"(base)) };
|
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
|
base
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,13 +31,13 @@ pub fn egetkey(request: &Align512<[u8; 512]>) -> Result<Align16<[u8; 16]>, u32>
|
||||||
let mut out = MaybeUninit::uninit();
|
let mut out = MaybeUninit::uninit();
|
||||||
let error;
|
let error;
|
||||||
|
|
||||||
llvm_asm!(
|
asm!(
|
||||||
"enclu"
|
"enclu",
|
||||||
: "={eax}"(error)
|
inlateout("eax") ENCLU_EGETKEY => error,
|
||||||
: "{eax}"(ENCLU_EGETKEY),
|
in("rbx") request,
|
||||||
"{rbx}"(request),
|
in("rcx") out.as_mut_ptr(),
|
||||||
"{rcx}"(out.as_mut_ptr())
|
// NOTE(#76738): ATT syntax is used to support LLVM 8 and 9.
|
||||||
: "flags"
|
options(att_syntax, nostack),
|
||||||
);
|
);
|
||||||
|
|
||||||
match error {
|
match error {
|
||||||
|
@ -60,13 +60,14 @@ pub fn ereport(
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut report = MaybeUninit::uninit();
|
let mut report = MaybeUninit::uninit();
|
||||||
|
|
||||||
llvm_asm!(
|
asm!(
|
||||||
"enclu"
|
"enclu",
|
||||||
: /* no output registers */
|
in("eax") ENCLU_EREPORT,
|
||||||
: "{eax}"(ENCLU_EREPORT),
|
in("rbx") targetinfo,
|
||||||
"{rbx}"(targetinfo),
|
in("rcx") reportdata,
|
||||||
"{rcx}"(reportdata),
|
in("rdx") report.as_mut_ptr(),
|
||||||
"{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()
|
report.assume_init()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue