diff options
| author | Ryan Levick <ryan.levick@gmail.com> | 2020-08-28 11:22:16 +0200 |
|---|---|---|
| committer | Ryan Levick <ryan.levick@gmail.com> | 2020-08-28 11:22:21 +0200 |
| commit | 8bcc4d617869f190c9f7fc0c301e8328f719d85a (patch) | |
| tree | 50c158ee96ea3ff471bf321ba3b461d09c4e23ed | |
| parent | 970e7793bfefd3d93034869ef8672affa02fff24 (diff) | |
| download | rust-8bcc4d617869f190c9f7fc0c301e8328f719d85a.tar.gz rust-8bcc4d617869f190c9f7fc0c301e8328f719d85a.zip | |
Switch to asm! macro and use brk instruction on ARM
| -rw-r--r-- | library/panic_abort/src/lib.rs | 8 | ||||
| -rw-r--r-- | library/std/src/sys/windows/mod.rs | 6 |
2 files changed, 7 insertions, 7 deletions
diff --git a/library/panic_abort/src/lib.rs b/library/panic_abort/src/lib.rs index 7eece6768e9..a09234e09ff 100644 --- a/library/panic_abort/src/lib.rs +++ b/library/panic_abort/src/lib.rs @@ -17,7 +17,7 @@ #![feature(panic_runtime)] #![feature(staged_api)] #![feature(rustc_attrs)] -#![feature(llvm_asm)] +#![feature(asm)] use core::any::Any; @@ -62,11 +62,11 @@ pub unsafe extern "C" fn __rust_start_panic(_payload: usize) -> u32 { const FAST_FAIL_FATAL_APP_EXIT: usize = 7; cfg_if::cfg_if! { if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] { - llvm_asm!("int $$0x29" :: "{ecx}"(FAST_FAIL_FATAL_APP_EXIT) ::: volatile); + asm!("int $$0x29", in("ecx") FAST_FAIL_FATAL_APP_EXIT); } else if #[cfg(target_arch = "arm")] { - llvm_asm!(".inst 0xDEFB" :: "{r0}"(FAST_FAIL_FATAL_APP_EXIT) ::: volatile); + asm!("brk 0xDEFB", in("r0") FAST_FAIL_FATAL_APP_EXIT); } else if #[cfg(target_arch = "aarch64")] { - llvm_asm!(".inst 0xF003" :: "{x0}"(FAST_FAIL_FATAL_APP_EXIT) ::: volatile); + asm!("brk 0xF003", in("x0") FAST_FAIL_FATAL_APP_EXIT); } else { core::intrinsics::abort(); } diff --git a/library/std/src/sys/windows/mod.rs b/library/std/src/sys/windows/mod.rs index 8fbd43ad5a5..03ddc3e6461 100644 --- a/library/std/src/sys/windows/mod.rs +++ b/library/std/src/sys/windows/mod.rs @@ -310,13 +310,13 @@ pub fn abort_internal() -> ! { unsafe { cfg_if::cfg_if! { if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] { - llvm_asm!("int $$0x29" :: "{ecx}"(FAST_FAIL_FATAL_APP_EXIT) ::: volatile); + asm!("int $$0x29", in("ecx") FAST_FAIL_FATAL_APP_EXIT); crate::intrinsics::unreachable(); } else if #[cfg(target_arch = "arm")] { - llvm_asm!(".inst 0xDEFB" :: "{r0}"(FAST_FAIL_FATAL_APP_EXIT) ::: volatile); + asm!("brk 0xDEFB", in("r0") FAST_FAIL_FATAL_APP_EXIT); crate::intrinsics::unreachable(); } else if #[cfg(target_arch = "aarch64")] { - llvm_asm!(".inst 0xF003" :: "{x0}"(FAST_FAIL_FATAL_APP_EXIT) ::: volatile); + asm!("brk 0xF003", in("x0") FAST_FAIL_FATAL_APP_EXIT); crate::intrinsics::unreachable(); } } |
