#![no_std]
#![allow(unused_imports)]
#![cfg_attr(feature = "nightly", allow(internal_features))]
#![cfg_attr(feature = "nightly", feature(core_intrinsics))]
#[cfg(doc)]
extern crate std;
use cfg_if::cfg_if;
use core::arch::asm;
use core::hint::unreachable_unchecked;
#[cold]
#[inline(never)]
pub fn trap() -> ! {
cfg_if! {
if #[cfg(feature = "nightly")] {
core::intrinsics::abort();
} else if #[cfg(target_arch = "aarch64")] {
unsafe {
asm!("brk #1");
unreachable_unchecked();
}
} else if #[cfg(target_arch = "arm")] {
unsafe {
asm!(".inst 0xE7FFDEFE");
unreachable_unchecked();
}
} else if #[cfg(target_arch = "riscv32")] {
unsafe {
asm!("unimp");
unreachable_unchecked();
}
} else if #[cfg(target_arch = "riscv64")] {
unsafe {
asm!("unimp");
unreachable_unchecked();
}
} else if #[cfg(target_arch = "x86")] {
unsafe {
asm!("ud2");
unreachable_unchecked();
}
} else if #[cfg(target_arch = "x86_64")] {
unsafe {
asm!("ud2");
unreachable_unchecked();
}
} else {
loop {}
}
}
}