Tracking Issue for the C-cmse-nonsecure-call ABI #81391
Labels
C-tracking-issue
Category: A tracking issue for an RFC or an unstable feature.
F-abi_c_cmse_nonsecure_call
`#![feature(abi_c_cmse_nonsecure_call)]`
O-Arm
Target: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state
WG-embedded
Working group: Embedded systems
This is a tracking issue for the PR #81346.
The feature gate for the issue is
#![feature(abi_c_cmse_nonsecure_call)]
.Description
The TrustZone-M feature is available for targets with the Armv8-M architecture profile (
thumbv8m
in their target name).LLVM, the Rust compiler and the linker are providing support for the TrustZone-M feature.
One of the things provided, with this unstable feature, is the
C-cmse-nonsecure-call
function ABI. This ABI is used on function pointers to non-secure code to mark a non-secure function call (see section 5.5 for details).With this ABI, the compiler will do the following to perform the call:
To avoid using the non-secure stack, the compiler will constrain the number and type of parameters/return value.
The
extern "C-cmse-nonsecure-call"
ABI is otherwise equivalent to theextern "C"
ABI.Example
Steps
The text was updated successfully, but these errors were encountered: