diff options
| -rw-r--r-- | tests/assembly/cmse.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/assembly/cmse.rs b/tests/assembly/cmse.rs new file mode 100644 index 00000000000..acad77b2513 --- /dev/null +++ b/tests/assembly/cmse.rs @@ -0,0 +1,26 @@ +//@ assembly-output: emit-asm +//@ compile-flags: --target thumbv8m.main-none-eabi --crate-type lib -Copt-level=1 +//@ needs-llvm-components: arm +#![crate_type = "lib"] +#![feature(abi_c_cmse_nonsecure_call, cmse_nonsecure_entry, no_core, lang_items)] +#![no_core] +#[lang = "sized"] +pub trait Sized {} +#[lang = "copy"] +pub trait Copy {} + +// CHECK-LABEL: __acle_se_entry_point +// CHECK: bxns +#[no_mangle] +pub extern "C-cmse-nonsecure-entry" fn entry_point() -> i64 { + 0 +} + +// CHECK-LABEL: call_nonsecure +// CHECK: blxns +#[no_mangle] +pub fn call_nonsecure( + f: unsafe extern "C-cmse-nonsecure-call" fn(u32, u32, u32, u32) -> u64, +) -> u64 { + unsafe { f(0, 1, 2, 3) } +} |
