add C-cmse-nonsecure-entry
ABI
This commit is contained in:
parent
74fd001cda
commit
1ddd67a79a
17 changed files with 43 additions and 11 deletions
|
@ -779,6 +779,7 @@ pub enum Conv {
|
|||
// Target-specific calling conventions.
|
||||
ArmAapcs,
|
||||
CCmseNonSecureCall,
|
||||
CCmseNonSecureEntry,
|
||||
|
||||
Msp430Intr,
|
||||
|
||||
|
@ -972,6 +973,7 @@ impl FromStr for Conv {
|
|||
"RustCold" => Ok(Conv::Rust),
|
||||
"ArmAapcs" => Ok(Conv::ArmAapcs),
|
||||
"CCmseNonSecureCall" => Ok(Conv::CCmseNonSecureCall),
|
||||
"CCmseNonSecureEntry" => Ok(Conv::CCmseNonSecureEntry),
|
||||
"Msp430Intr" => Ok(Conv::Msp430Intr),
|
||||
"PtxKernel" => Ok(Conv::PtxKernel),
|
||||
"X86Fastcall" => Ok(Conv::X86Fastcall),
|
||||
|
|
|
@ -103,6 +103,7 @@ impl ToJson for crate::abi::call::Conv {
|
|||
Self::PreserveAll => "PreserveAll",
|
||||
Self::ArmAapcs => "ArmAapcs",
|
||||
Self::CCmseNonSecureCall => "CCmseNonSecureCall",
|
||||
Self::CCmseNonSecureEntry => "CCmseNonSecureEntry",
|
||||
Self::Msp430Intr => "Msp430Intr",
|
||||
Self::PtxKernel => "PtxKernel",
|
||||
Self::X86Fastcall => "X86Fastcall",
|
||||
|
|
|
@ -48,6 +48,7 @@ pub enum Abi {
|
|||
AvrInterrupt,
|
||||
AvrNonBlockingInterrupt,
|
||||
CCmseNonSecureCall,
|
||||
CCmseNonSecureEntry,
|
||||
System {
|
||||
unwind: bool,
|
||||
},
|
||||
|
@ -124,6 +125,7 @@ const AbiDatas: &[AbiData] = &[
|
|||
AbiData { abi: Abi::AvrInterrupt, name: "avr-interrupt" },
|
||||
AbiData { abi: Abi::AvrNonBlockingInterrupt, name: "avr-non-blocking-interrupt" },
|
||||
AbiData { abi: Abi::CCmseNonSecureCall, name: "C-cmse-nonsecure-call" },
|
||||
AbiData { abi: Abi::CCmseNonSecureEntry, name: "C-cmse-nonsecure-entry" },
|
||||
AbiData { abi: Abi::System { unwind: false }, name: "system" },
|
||||
AbiData { abi: Abi::System { unwind: true }, name: "system-unwind" },
|
||||
AbiData { abi: Abi::RustIntrinsic, name: "rust-intrinsic" },
|
||||
|
@ -244,6 +246,10 @@ pub fn is_stable(name: &str) -> Result<(), AbiDisabled> {
|
|||
feature: sym::abi_c_cmse_nonsecure_call,
|
||||
explain: "C-cmse-nonsecure-call ABI is experimental and subject to change",
|
||||
}),
|
||||
"C-cmse-nonsecure-entry" => Err(AbiDisabled::Unstable {
|
||||
feature: sym::cmse_nonsecure_entry,
|
||||
explain: "C-cmse-nonsecure-entry ABI is experimental and subject to change",
|
||||
}),
|
||||
_ => Err(AbiDisabled::Unrecognized),
|
||||
}
|
||||
}
|
||||
|
@ -286,15 +292,16 @@ impl Abi {
|
|||
AvrInterrupt => 23,
|
||||
AvrNonBlockingInterrupt => 24,
|
||||
CCmseNonSecureCall => 25,
|
||||
CCmseNonSecureEntry => 26,
|
||||
// Cross-platform ABIs
|
||||
System { unwind: false } => 26,
|
||||
System { unwind: true } => 27,
|
||||
RustIntrinsic => 28,
|
||||
RustCall => 29,
|
||||
Unadjusted => 30,
|
||||
RustCold => 31,
|
||||
RiscvInterruptM => 32,
|
||||
RiscvInterruptS => 33,
|
||||
System { unwind: false } => 27,
|
||||
System { unwind: true } => 28,
|
||||
RustIntrinsic => 29,
|
||||
RustCall => 30,
|
||||
Unadjusted => 31,
|
||||
RustCold => 32,
|
||||
RiscvInterruptM => 33,
|
||||
RiscvInterruptS => 34,
|
||||
};
|
||||
debug_assert!(
|
||||
AbiDatas
|
||||
|
|
|
@ -2725,6 +2725,7 @@ impl Target {
|
|||
X86Interrupt => ["x86", "x86_64"].contains(&&self.arch[..]),
|
||||
Aapcs { .. } => "arm" == self.arch,
|
||||
CCmseNonSecureCall => ["arm", "aarch64"].contains(&&self.arch[..]),
|
||||
CCmseNonSecureEntry => ["arm", "aarch64"].contains(&&self.arch[..]),
|
||||
Win64 { .. } | SysV64 { .. } => self.arch == "x86_64",
|
||||
PtxKernel => self.arch == "nvptx64",
|
||||
Msp430Interrupt => self.arch == "msp430",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue