-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Tracking Issue for the extern "cmse-nonsecure-call" ABI #81391
Copy link
Copy link
Open
Labels
A-ABIArea: Concerning the application binary interface (ABI)Area: Concerning the application binary interface (ABI)A-codegenArea: Code generationArea: Code generationC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCF-abi_cmse_nonsecure_call`#![feature(abi_cmse_nonsecure_call)]``#![feature(abi_cmse_nonsecure_call)]`O-ArmTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language teamWG-embeddedWorking group: Embedded systemsWorking group: Embedded systems
Metadata
Metadata
Assignees
Labels
A-ABIArea: Concerning the application binary interface (ABI)Area: Concerning the application binary interface (ABI)A-codegenArea: Code generationArea: Code generationC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCF-abi_cmse_nonsecure_call`#![feature(abi_cmse_nonsecure_call)]``#![feature(abi_cmse_nonsecure_call)]`O-ArmTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language teamWG-embeddedWorking group: Embedded systemsWorking group: Embedded systems
Type
Fields
Give feedbackNo fields configured for issues without a type.
Projects
Status
Tracking
This is a tracking issue for the PR #81346.
The feature gate for the issue is
#![feature(abi_cmse_nonsecure_call)].Description
The TrustZone-M feature is available for targets with the Armv8-M architecture profile (
thumbv8min 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
extern "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 "cmse-nonsecure-call"ABI is otherwise equivalent to the unmodifiedextern "C"ABI.Example
Steps
Implementation history
C-cmse-nonsecure-call: improved error messages #127814extern "C-cmse-nonsecure-*"always matchesextern "C"#142146