about summary refs log tree commit diff
path: root/tests/ui/cmse-nonsecure
diff options
context:
space:
mode:
authorFolkert <folkert@folkertdev.nl>2024-07-16 14:24:49 +0200
committerFolkert de Vries <folkert@folkertdev.nl>2024-09-21 13:05:23 +0200
commita33dcb3607ee763616f374eeaa84ddaf41d41ef4 (patch)
tree277feb89bcf04273df6f4e1910e0acceba3fff7e /tests/ui/cmse-nonsecure
parent5722a8078225cff7d420cc6b246706963e707258 (diff)
downloadrust-a33dcb3607ee763616f374eeaa84ddaf41d41ef4.tar.gz
rust-a33dcb3607ee763616f374eeaa84ddaf41d41ef4.zip
add test that accepts a `C-cmse-nonsecure-call` function pointer
Diffstat (limited to 'tests/ui/cmse-nonsecure')
-rw-r--r--tests/ui/cmse-nonsecure/cmse-nonsecure-call/callback-as-argument.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/ui/cmse-nonsecure/cmse-nonsecure-call/callback-as-argument.rs b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/callback-as-argument.rs
new file mode 100644
index 00000000000..37c8319d98d
--- /dev/null
+++ b/tests/ui/cmse-nonsecure/cmse-nonsecure-call/callback-as-argument.rs
@@ -0,0 +1,20 @@
+//@ build-pass
+//@ compile-flags: --target thumbv8m.main-none-eabi --crate-type lib
+//@ needs-llvm-components: arm
+#![feature(abi_c_cmse_nonsecure_call, cmse_nonsecure_entry, no_core, lang_items, intrinsics)]
+#![no_core]
+#[lang = "sized"]
+pub trait Sized {}
+#[lang = "copy"]
+pub trait Copy {}
+impl Copy for u32 {}
+
+#[no_mangle]
+pub extern "C-cmse-nonsecure-entry" fn test(
+    f: extern "C-cmse-nonsecure-call" fn(u32, u32, u32, u32) -> u32,
+    a: u32,
+    b: u32,
+    c: u32,
+) -> u32 {
+    f(a, b, c, 42)
+}