From a3572979cb88b0ca5760b4a672f652250dadf3bb Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sat, 29 Aug 2020 02:17:35 +0200 Subject: [PATCH 1/6] Merge asm implementations --- asm/inline.rs | 345 ++++++++++++++++++++++++++++ asm/lib.rs | 133 +++++++++++ bin/thumbv6m-none-eabi-lto.a | Bin 12016 -> 13596 bytes bin/thumbv6m-none-eabi.a | Bin 16188 -> 18284 bytes bin/thumbv7em-none-eabi-lto.a | Bin 16704 -> 19224 bytes bin/thumbv7em-none-eabi.a | Bin 20056 -> 23360 bytes bin/thumbv7em-none-eabihf-lto.a | Bin 17504 -> 20176 bytes bin/thumbv7em-none-eabihf.a | Bin 21112 -> 24684 bytes bin/thumbv7m-none-eabi-lto.a | Bin 15436 -> 17628 bytes bin/thumbv7m-none-eabi.a | Bin 19044 -> 22020 bytes bin/thumbv8m.base-none-eabi-lto.a | Bin 13392 -> 15496 bytes bin/thumbv8m.base-none-eabi.a | Bin 17976 -> 20936 bytes bin/thumbv8m.main-none-eabi-lto.a | Bin 18040 -> 21228 bytes bin/thumbv8m.main-none-eabi.a | Bin 22776 -> 27220 bytes bin/thumbv8m.main-none-eabihf-lto.a | Bin 18776 -> 22168 bytes bin/thumbv8m.main-none-eabihf.a | Bin 23764 -> 28488 bytes src/asm.rs | 295 +++--------------------- src/call_asm.rs | 24 ++ src/interrupt.rs | 38 +-- src/lib.rs | 7 +- src/register/apsr.rs | 15 +- src/register/basepri.rs | 64 +----- src/register/basepri_max.rs | 45 +--- src/register/control.rs | 55 +---- src/register/faultmask.rs | 36 +-- src/register/fpscr.rs | 46 +--- src/register/lr.rs | 22 +- src/register/mod.rs | 6 +- src/register/msp.rs | 40 +--- src/register/msplim.rs | 40 +--- src/register/pc.rs | 22 +- src/register/primask.rs | 37 +-- src/register/psp.rs | 40 +--- src/register/psplim.rs | 40 +--- xtask/src/lib.rs | 7 +- 35 files changed, 603 insertions(+), 754 deletions(-) create mode 100644 asm/inline.rs create mode 100644 asm/lib.rs create mode 100644 src/call_asm.rs diff --git a/asm/inline.rs b/asm/inline.rs new file mode 100644 index 00000000..67e4925f --- /dev/null +++ b/asm/inline.rs @@ -0,0 +1,345 @@ +//! Inline assembly implementing the routines exposed in `cortex_m::asm`. +//! +//! If the `inline-asm` feature is enabled, these functions will be directly called by the +//! `cortex-m` wrappers. Otherwise, `cortex-m` links against them via prebuilt archives. +//! +//! All of these functions should be blanket-`unsafe`. `cortex-m` provides safe wrappers where +//! applicable. + +#[inline(always)] +pub unsafe fn __bkpt() { + asm!("bkpt"); +} + +#[inline(always)] +pub unsafe fn __control_r() -> u32 { + let r; + asm!("mrs {}, CONTROL", out(reg) r); + r +} + +#[inline(always)] +pub unsafe fn __control_w(w: u32) { + asm!("msr CONTROL, {}", in(reg) w); +} + +#[inline(always)] +pub unsafe fn __cpsid() { + asm!("cpsid i"); +} + +#[inline(always)] +pub unsafe fn __cpsie() { + asm!("cpsie i"); +} + +#[inline(always)] +pub unsafe fn __delay(cyc: u32) { + asm!(" + 1: + nop + subs {}, #1 + bne 1b + // Branch to 1 instead of delay does not generate R_ARM_THM_JUMP8 relocation, which breaks + // linking on the thumbv6m-none-eabi target + ", in(reg) cyc); +} + +// FIXME do we need compiler fences here or should we expect them in the caller? +#[inline(always)] +pub unsafe fn __dmb() { + asm!("dmb 0xF"); +} + +#[inline(always)] +pub unsafe fn __dsb() { + asm!("dsb 0xF"); +} + +#[inline(always)] +pub unsafe fn __isb() { + asm!("isb 0xF"); +} + +#[inline(always)] +pub unsafe fn __msp_r() -> u32 { + let r; + asm!("mrs {}, MSP", out(reg) r); + r +} + +#[inline(always)] +pub unsafe fn __msp_w(val: u32) { + asm!("msr MSP, {}", in(reg) val); +} + +// NOTE: No FFI shim, this requires inline asm. +#[inline(always)] +pub unsafe fn __apsr_r() -> u32 { + let r; + asm!("mrs {}, APSR", out(reg) r); + r +} + +#[inline(always)] +pub unsafe fn __nop() { + // NOTE: This is a `pure` asm block, but applying that option allows the compiler to eliminate + // the nop entirely (or to collapse multiple subsequent ones). Since the user probably wants N + // nops when they call `nop` N times, let's not add that option. + asm!("nop"); +} + +// NOTE: No FFI shim, this requires inline asm. +#[inline(always)] +pub unsafe fn __pc_r() -> u32 { + let r; + asm!("mov {}, R15", out(reg) r); + r +} + +// NOTE: No FFI shim, this requires inline asm. +#[inline(always)] +pub unsafe fn __pc_w(val: u32) { + asm!("mov R15, {}", in(reg) val); +} + +// NOTE: No FFI shim, this requires inline asm. +#[inline(always)] +pub unsafe fn __lr_r() -> u32 { + let r; + asm!("mov {}, R14", out(reg) r); + r +} + +// NOTE: No FFI shim, this requires inline asm. +#[inline(always)] +pub unsafe fn __lr_w(val: u32) { + asm!("mov R14, {}", in(reg) val); +} + +#[inline(always)] +pub unsafe fn __primask_r() -> u32 { + let r; + asm!("mrs {}, PRIMASK", out(reg) r); + r +} + +#[inline(always)] +pub unsafe fn __psp_r() -> u32 { + let r; + asm!("mrs {}, PSP", out(reg) r); + r +} + +#[inline(always)] +pub unsafe fn __psp_w(val: u32) { + asm!("msr PSP, {}", in(reg) val); +} + +#[inline(always)] +pub unsafe fn __sev() { + asm!("sev"); +} + +#[inline(always)] +pub unsafe fn __udf() -> ! { + asm!("udf #0", options(noreturn)); +} + +#[inline(always)] +pub unsafe fn __wfe() { + asm!("wfe"); +} + +#[inline(always)] +pub unsafe fn __wfi() { + asm!("wfi"); +} + +// v7m *AND* v8m.main, but *NOT* v8m.base +#[cfg(any(armv7m, armv8m_main))] +pub use self::v7m::*; +#[cfg(any(armv7m, armv8m_main))] +mod v7m { + #[inline(always)] + pub unsafe fn __basepri_max(val: u8) { + asm!("msr BASEPRI_MAX, {}", in(reg) val); + } + + #[inline(always)] + pub unsafe fn __basepri_r() -> u8 { + let r; + asm!("mrs {}, BASEPRI", out(reg) r); + r + } + + #[inline(always)] + pub unsafe fn __basepri_w(val: u8) { + asm!("msr BASEPRI, {}", in(reg) val); + } + + #[inline(always)] + pub unsafe fn __faultmask_r() -> u32 { + let r; + asm!("mrs {}, FAULTMASK", out(reg) r); + r + } + + // FIXME: compiler_fences necessary? + #[inline(always)] + pub unsafe fn __enable_icache() { + asm!( + " + ldr r0, =0xE000ED14 @ CCR + mrs r2, PRIMASK @ save critical nesting info + cpsid i @ mask interrupts + ldr r1, [r0] @ read CCR + orr.w r1, r1, #(1 << 17) @ Set bit 17, IC + str r1, [r0] @ write it back + dsb @ ensure store completes + isb @ synchronize pipeline + msr PRIMASK, r2 @ unnest critical section + ", + out("r0") _, + out("r1") _, + out("r2") _, + ); + } + + #[inline(always)] + pub unsafe fn __enable_dcache() { + asm!( + " + ldr r0, =0xE000ED14 @ CCR + mrs r2, PRIMASK @ save critical nesting info + cpsid i @ mask interrupts + ldr r1, [r0] @ read CCR + orr.w r1, r1, #(1 << 16) @ Set bit 16, DC + str r1, [r0] @ write it back + dsb @ ensure store completes + isb @ synchronize pipeline + msr PRIMASK, r2 @ unnest critical section + ", + out("r0") _, + out("r1") _, + out("r2") _, + ); + } +} + +#[cfg(armv7em)] +pub use self::v7em::*; +#[cfg(armv7em)] +mod v7em { + #[inline(always)] + pub unsafe fn __basepri_max_cm7_r0p1(val: u8) { + asm!( + " + mrs r1, PRIMASK + cpsid i + tst.w r1, #1 + msr BASEPRI_MAX, {} + it ne + bxne lr + cpsie i + ", + in(reg) val, + out("r1") _, + ); + } + + #[inline(always)] + pub unsafe fn __basepri_w_cm7_r0p1(val: u8) { + asm!( + " + mrs r1, PRIMASK + cpsid i + tst.w r1, #1 + msr BASEPRI, {} + it ne + bxne lr + cpsie i + ", + in(reg) val, + out("r1") _, + ); + } +} + +#[cfg(armv8m)] +pub use self::v8m::*; +/// Baseline and Mainline. +#[cfg(armv8m)] +mod v8m { + #[inline(always)] + pub unsafe fn __tt(mut target: u32) -> u32 { + asm!("tt {target}, {target}", target = inout(reg) target); + target + } + + #[inline(always)] + pub unsafe fn __ttt(mut target: u32) -> u32 { + asm!("ttt {target}, {target}", target = inout(reg) target); + target + } + + #[inline(always)] + pub unsafe fn __tta(mut target: u32) -> u32 { + asm!("tta {target}, {target}", target = inout(reg) target); + target + } + + #[inline(always)] + pub unsafe fn __ttat(mut target: u32) -> u32 { + asm!("ttat {target}, {target}", target = inout(reg) target); + target + } +} + +#[cfg(armv8m_main)] +pub use self::v8m_main::*; +/// Mainline only. +#[cfg(armv8m_main)] +mod v8m_main { + #[inline(always)] + pub unsafe fn __msplim_r() -> u32 { + let r; + asm!("mrs {}, MSPLIM", out(reg) r); + r + } + + #[inline(always)] + pub unsafe fn __msplim_w(val: u32) { + asm!("msr MSPLIM, {}", in(reg) val); + } + + #[inline(always)] + pub unsafe fn __psplim_r() -> u32 { + let r; + asm!("mrs {}, PSPLIM", out(reg) r); + r + } + + #[inline(always)] + pub unsafe fn __psplim_w(val: u32) { + asm!("msr PSPLIM, {}", in(reg) val); + } +} + +#[cfg(has_fpu)] +pub use self::fpu::*; +/// All targets with FPU. +#[cfg(has_fpu)] +mod fpu { + #[inline(always)] + pub unsafe fn __fpscr_r() -> u32 { + let r; + asm!("vmrs {}, fpscr", out(reg) r); + r + } + + #[inline(always)] + pub unsafe fn __fpscr_w(val: u32) { + asm!("vmsr fpscr, {}", in(reg) val); + } +} diff --git a/asm/lib.rs b/asm/lib.rs new file mode 100644 index 00000000..95e05a2f --- /dev/null +++ b/asm/lib.rs @@ -0,0 +1,133 @@ +//! FFI shim around the inline assembly in `inline.rs`. +//! +//! We use this file to precompile some assembly stubs into the static libraries you can find in +//! `bin`. Apps using the `cortex-m` crate then link against those static libraries and don't need +//! to build this file themselves. +//! +//! Nowadays the assembly stubs are no longer actual assembly files, but actually just this small +//! Rust crate that uses unstable inline assembly, coupled with the `xtask` tool to invoke rustc +//! and build the files. +//! +//! Precompiling this to a static lib allows users to call assembly routines from stable Rust, but +//! also perform [linker plugin LTO] with the precompiled artifacts to completely inline the +//! assembly routines into their code, which brings the "outline assembly" on par with "real" inline +//! assembly. +//! +//! For developers and contributors to `cortex-m`, this setup means that they don't have to install +//! any binutils, assembler, or C compiler to hack on the crate. All they need is to run `cargo +//! xtask assemble` to rebuild the archives from this file. +//! +//! Cool, right? +//! +//! # Rust version management +//! +//! Since inline assembly is still unstable, and we want to ensure that the created blobs are +//! up-to-date in CI, we have to pin the nightly version we use for this. The nightly toolchain is +//! stored in `asm-toolchain`. +//! +//! The `cargo xtask` automation will automatically install the `asm-toolchain` as well as all +//! Cortex-M targets needed to generate the blobs. +//! +//! [linker plugin LTO]: https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html + +#![feature(asm)] +#![no_std] +#![crate_type = "staticlib"] +#![deny(warnings)] + +mod inline; + +macro_rules! shims { + ( + $( fn $name:ident( $($arg:ident: $argty:ty),* ) $(-> $ret:ty)?; )+ + ) => { + $( + #[no_mangle] + pub unsafe extern "C" fn $name( + $($arg: $argty),* + ) $(-> $ret)? { + crate::inline::$name($($arg)*) + } + )+ + }; +} + +shims! { + fn __bkpt(); + fn __control_r() -> u32; + fn __control_w(w: u32); + fn __cpsid(); + fn __cpsie(); + fn __delay(cyc: u32); + fn __dmb(); + fn __isb(); + fn __msp_r() -> u32; + fn __msp_w(val: u32); + fn __nop(); + fn __primask_r() -> u32; + fn __psp_r() -> u32; + fn __psp_w(val: u32); + fn __sev(); + fn __udf(); + fn __wfe(); + fn __wfi(); +} + +#[cfg(armv7m)] +shims! { + fn __basepri_max(val: u8); + fn __basepri_r() -> u8; + fn __basepri_w(val: u8); + fn __faultmask_r() -> u32; + fn __enable_icache(); + fn __enable_dcache(); +} + +#[cfg(armv7em)] +shims! { + fn __basepri_max_cm7_r0p1(val: u8); + fn __basepri_w_cm7_r0p1(val: u8); +} + +// Baseline and Mainline. +#[cfg(armv8m)] +shims! { + fn __tt(target: u32) -> u32; + fn __ttt(target: u32) -> u32; + fn __tta(target: u32) -> u32; + fn __ttat(target: u32) -> u32; +} + +// Mainline only. +#[cfg(armv8m_main)] +shims! { + fn __msplim_r() -> u32; + fn __msplim_w(val: u32); + fn __psplim_r() -> u32; + fn __psplim_w(val: u32); +} + +// All targets with FPU. +#[cfg(has_fpu)] +shims! { + fn __fpscr_r() -> u32; + fn __fpscr_w(val: u32); +} + +/// We *must* define a panic handler here, even though nothing here should ever be able to panic. +/// +/// We prove that nothing will ever panic by calling a function that doesn't exist. If the panic +/// handler gets linked in, this causes a linker error. We always build this file with optimizations +/// enabled, but even without them the panic handler should never be linked in. +#[panic_handler] +fn panic(_: &core::panic::PanicInfo) -> ! { + extern "C" { + #[link_name = "cortex-m internal error: panic handler not optimized out, please file an \ + issue at https://github.com/rust-embedded/cortex-m"] + fn __cortex_m_should_not_panic() -> !; + } + + unsafe { + __cortex_m_should_not_panic(); + } +} diff --git a/bin/thumbv6m-none-eabi-lto.a b/bin/thumbv6m-none-eabi-lto.a index 4d2f02cf832058902d768da0346e25e743cc8c64..517c2a896861fef21fd115460b9d439675703f1e 100644 GIT binary patch literal 13596 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 diff --git a/bin/thumbv6m-none-eabi.a b/bin/thumbv6m-none-eabi.a index beedd73ba3afa74f8fddcddd740e61b9f6ba413a..05a27d7fc3ed7cbb4eaf400f3573cd6ce24b8ea8 100644 GIT binary patch literal 18284 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 literal 16188 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 diff --git a/bin/thumbv7em-none-eabi-lto.a b/bin/thumbv7em-none-eabi-lto.a index 7b8a4f87f21a49ca1a935d498c351a01e02bd035..f4b608790bc9a129ead641d90f7bf8ac478c87f4 100644 GIT binary patch literal 19224 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 Ys_?Hzzze$g#q!!x=hoIG6z=E$4|k&UHUIzs literal 16704 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 AH2?qr literal 20056 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 E0Qg5-EC2ui diff --git a/bin/thumbv7em-none-eabihf-lto.a b/bin/thumbv7em-none-eabihf-lto.a index 4efadd8043a3aa47bce94e7bad634fec023c1ad1..c3bcb56c079a3dcc21528dabea3a1cc63c499b2d 100644 GIT binary patch literal 20176 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 DK=s~A literal 17504 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 literal 21112 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 S-r}lRZQtFp210P*^M3#t^V@&` literal 15436 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 mPX0yCGy5fF%9^ diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a index 4559ad4a432f5f4363f29e3d8d870814487bcc63..644a375b5bed51f5c78de0572e8160530ae7d67f 100644 GIT binary patch literal 22020 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 literal 19044 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 Ha{T@ugIB%k diff --git a/bin/thumbv8m.base-none-eabi-lto.a b/bin/thumbv8m.base-none-eabi-lto.a index ee467925240319c90870b28859f22d2b2529a0a9..2ad27c3610dce32268d827dbb536418020ca0437 100644 GIT binary patch literal 15496 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

$JWGrV1u6e#W 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 Dpdjqb diff --git a/bin/thumbv8m.main-none-eabi-lto.a b/bin/thumbv8m.main-none-eabi-lto.a index e3aa0cf1359251644d7f8e4869ab7a36e3d09927..bf17ac474eceb150abb17ea530a8bb3872bbde44 100644 GIT binary patch literal 21228 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 DaJQZ@ diff --git a/bin/thumbv8m.main-none-eabi.a b/bin/thumbv8m.main-none-eabi.a index 10bbf53fff755fc7aef5945f8d7273b7c55db720..7272d7cb1998642e853d50948f85667223111539 100644 GIT binary patch literal 27220 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 Q_!f_`ML#bZJ9MS|AGL^f1^@s6 diff --git a/bin/thumbv8m.main-none-eabihf-lto.a b/bin/thumbv8m.main-none-eabihf-lto.a index 1c25494b66dbfa9e8608f6cd7788a1b1303c54e5..9c22c5ad73bd5b45f0acde4dcfedf45e7c65f109 100644 GIT binary patch literal 22168 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 literal 18776 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 diff --git a/bin/thumbv8m.main-none-eabihf.a b/bin/thumbv8m.main-none-eabihf.a index 06517880e51a1ad92d71151e638ca01678ef7d7d..3a0a6327bba584856db6459ea95a9b3168d03163 100644 GIT binary patch literal 28488 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 PaYKcExc6e*arpcXfk-l; literal 23764 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 diff --git a/src/asm.rs b/src/asm.rs index 39cd8efd..3165acab 100644 --- a/src/asm.rs +++ b/src/asm.rs @@ -1,27 +1,18 @@ //! Miscellaneous assembly instructions +// When inline assembly is enabled, pull in the assembly routines here. `call_asm!` will invoke +// these routines. +#[cfg(feature = "inline-asm")] +#[path = "../asm/inline.rs"] +pub(crate) mod inline; + /// Puts the processor in Debug state. Debuggers can pick this up as a "breakpoint". /// /// **NOTE** calling `bkpt` when the processor is not connected to a debugger will cause an /// exception. #[inline(always)] pub fn bkpt() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("bkpt" :::: "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __bkpt(); - } - - __bkpt(); - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__bkpt()); } /// Blocks the program for *at least* `n` instruction cycles @@ -29,151 +20,47 @@ pub fn bkpt() { /// This is implemented in assembly so its execution time is independent of the optimization /// level, however it is dependent on the specific architecture and core configuration. /// -/// NOTE that the delay can take much longer if interrupts are serviced during its execution +/// NOTE that the delay can take much longer if interrupts are serviced during its execution /// and the execution time may vary with other factors. This delay is mainly useful for simple /// timer-less initialization of peripherals if and only if accurate timing is not essential. In /// any other case please use a more accurate method to produce a delay. #[inline] -pub fn delay(_n: u32) { +pub fn delay(n: u32) { // NOTE(divide by 4) is easier to compute than `/ 3` because it's just a shift (`>> 2`). - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { - llvm_asm!("1: - nop - subs $0, $$1 - bne.n 1b" - : "+r"(_n / 4 + 1) - : - : "cpsr" - : "volatile"); - }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __delay(n: u32); - } - - __delay(_n / 4 + 1); - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let real_cyc = n / 4 + 1; + call_asm!(__delay(real_cyc: u32)); } /// A no-operation. Useful to prevent delay loops from being optimized away. #[inline] pub fn nop() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("nop" :::: "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __nop(); - } - - __nop() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__nop()); } - /// Generate an Undefined Instruction exception. /// /// Can be used as a stable alternative to `core::intrinsics::abort`. #[inline] pub fn udf() -> ! { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { - llvm_asm!("udf" :::: "volatile"); - core::hint::unreachable_unchecked(); - }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __udf(); - } - - __udf(); - - core::hint::unreachable_unchecked(); - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__udf() -> !) } /// Wait For Event #[inline] pub fn wfe() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("wfe" :::: "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __wfe(); - } - - __wfe() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__wfe()) } /// Wait For Interrupt #[inline] pub fn wfi() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("wfi" :::: "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __wfi(); - } - - __wfi() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__wfi()) } /// Send Event #[inline] pub fn sev() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("sev" :::: "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __sev(); - } - - __sev() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__sev()) } /// Instruction Synchronization Barrier @@ -182,23 +69,7 @@ pub fn sev() { /// from cache or memory, after the instruction has been completed. #[inline] pub fn isb() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("isb 0xF" ::: "memory" : "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __isb(); - } - - __isb() - // XXX do we need a explicit compiler barrier here? - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__isb()) } /// Data Synchronization Barrier @@ -210,23 +81,7 @@ pub fn isb() { /// * all cache and branch predictor maintenance operations before this instruction complete #[inline] pub fn dsb() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("dsb 0xF" ::: "memory" : "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __dsb(); - } - - __dsb() - // XXX do we need a explicit compiler barrier here? - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__dsb()) } /// Data Memory Barrier @@ -236,23 +91,7 @@ pub fn dsb() { /// after the `DMB` instruction. #[inline] pub fn dmb() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { llvm_asm!("dmb 0xF" ::: "memory" : "volatile") }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __dmb(); - } - - __dmb() - // XXX do we need a explicit compiler barrier here? - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__dmb()) } /// Test Target @@ -265,28 +104,8 @@ pub fn dmb() { // The __tt function does not dereference the pointer received. #[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn tt(addr: *mut u32) -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let tt_resp: u32; - unsafe { - llvm_asm!("tt $0, $1" : "=r"(tt_resp) : "r"(addr) :: "volatile"); - } - tt_resp - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __tt(_: *mut u32) -> u32; - } - - __tt(addr) - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let addr = addr as u32; + call_asm!(__tt(addr: u32) -> u32) } /// Test Target Unprivileged @@ -300,28 +119,8 @@ pub fn tt(addr: *mut u32) -> u32 { // The __ttt function does not dereference the pointer received. #[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn ttt(addr: *mut u32) -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let tt_resp: u32; - unsafe { - llvm_asm!("ttt $0, $1" : "=r"(tt_resp) : "r"(addr) :: "volatile"); - } - tt_resp - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __ttt(_: *mut u32) -> u32; - } - - __ttt(addr) - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let addr = addr as u32; + call_asm!(__ttt(addr: u32) -> u32) } /// Test Target Alternate Domain @@ -336,28 +135,8 @@ pub fn ttt(addr: *mut u32) -> u32 { // The __tta function does not dereference the pointer received. #[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn tta(addr: *mut u32) -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let tt_resp: u32; - unsafe { - llvm_asm!("tta $0, $1" : "=r"(tt_resp) : "r"(addr) :: "volatile"); - } - tt_resp - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __tta(_: *mut u32) -> u32; - } - - __tta(addr) - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let addr = addr as u32; + call_asm!(__tta(addr: u32) -> u32) } /// Test Target Alternate Domain Unprivileged @@ -372,26 +151,6 @@ pub fn tta(addr: *mut u32) -> u32 { // The __ttat function does not dereference the pointer received. #[allow(clippy::not_unsafe_ptr_arg_deref)] pub fn ttat(addr: *mut u32) -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let tt_resp: u32; - unsafe { - llvm_asm!("ttat $0, $1" : "=r"(tt_resp) : "r"(addr) :: "volatile"); - } - tt_resp - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __ttat(_: *mut u32) -> u32; - } - - __ttat(addr) - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let addr = addr as u32; + call_asm!(__ttat(addr: u32) -> u32) } diff --git a/src/call_asm.rs b/src/call_asm.rs new file mode 100644 index 00000000..295277f3 --- /dev/null +++ b/src/call_asm.rs @@ -0,0 +1,24 @@ +/// An internal macro to invoke an assembly routine. +/// +/// Depending on whether the unstable `inline-asm` feature is enabled, this will either call into +/// the inline assembly implementation directly, or through the FFI shim (see `asm/lib.rs`). +macro_rules! call_asm { + ( $func:ident ( $($args:ident: $tys:ty),* ) $(-> $ret:ty)? ) => {{ + #[allow(unused_unsafe)] + unsafe { + match () { + #[cfg(feature = "inline-asm")] + () => crate::asm::inline::$func($($args),*), + + #[cfg(not(feature = "inline-asm"))] + () => { + extern "C" { + fn $func($($args: $tys),*) $(-> $ret)?; + } + + $func($($args),*) + }, + } + } + }}; +} diff --git a/src/interrupt.rs b/src/interrupt.rs index c5da48dd..68719ecf 100644 --- a/src/interrupt.rs +++ b/src/interrupt.rs @@ -26,25 +26,7 @@ pub unsafe trait InterruptNumber: Copy { /// Disables all interrupts #[inline] pub fn disable() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { - llvm_asm!("cpsid i" ::: "memory" : "volatile"); - }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __cpsid(); - } - - // XXX do we need a explicit compiler barrier here? - __cpsid(); - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__cpsid()); } /// Enables all the interrupts @@ -54,23 +36,7 @@ pub fn disable() { /// - Do not call this function inside an `interrupt::free` critical section #[inline] pub unsafe fn enable() { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => llvm_asm!("cpsie i" ::: "memory" : "volatile"), - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => { - extern "C" { - fn __cpsie(); - } - - // XXX do we need a explicit compiler barrier here? - __cpsie(); - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__cpsie()); } /// Execute closure `f` in an interrupt-free context. diff --git a/src/lib.rs b/src/lib.rs index 723816aa..f0de721c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,7 +12,7 @@ //! ## `inline-asm` //! //! When this feature is enabled the implementation of all the functions inside the `asm` and -//! `register` modules use inline assembly (`llvm_asm!`) instead of external assembly (FFI into separate +//! `register` modules use inline assembly (`asm!`) instead of external assembly (FFI into separate //! assembly files pre-compiled using `arm-none-eabi-gcc`). The advantages of enabling `inline-asm` //! are: //! @@ -55,14 +55,13 @@ //! This crate is guaranteed to compile on stable Rust 1.31 and up. It *might* //! compile with older versions but that may change in any new patch release. -#![cfg_attr(feature = "inline-asm", feature(llvm_asm))] +#![cfg_attr(feature = "inline-asm", feature(asm))] #![deny(missing_docs)] #![no_std] #![allow(clippy::identity_op)] #![allow(clippy::missing_safety_doc)] // Prevent clippy from complaining about empty match expression that are used for cfg gating. #![allow(clippy::match_single_binding)] - // This makes clippy warn about public functions which are not #[inline]. // // Almost all functions in this crate result in trivial or even no assembly. @@ -81,6 +80,8 @@ extern crate bare_metal; extern crate volatile_register; +#[macro_use] +mod call_asm; #[macro_use] mod macros; diff --git a/src/register/apsr.rs b/src/register/apsr.rs index 3db8aebe..b81d8925 100644 --- a/src/register/apsr.rs +++ b/src/register/apsr.rs @@ -50,17 +50,6 @@ impl Apsr { /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] pub fn read() -> Apsr { - match () { - #[cfg(cortex_m)] - () => { - let r: u32; - unsafe { - llvm_asm!("mrs $0, APSR" : "=r"(r) ::: "volatile"); - } - Apsr { bits: r } - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let bits: u32 = call_asm!(__apsr_r() -> u32); + Apsr { bits } } diff --git a/src/register/basepri.rs b/src/register/basepri.rs index 6caf9386..07084cd2 100644 --- a/src/register/basepri.rs +++ b/src/register/basepri.rs @@ -3,28 +3,7 @@ /// Reads the CPU register #[inline] pub fn read() -> u8 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let r: u32; - unsafe { - llvm_asm!("mrs $0, BASEPRI" : "=r"(r) ::: "volatile"); - } - r as u8 - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __basepri_r() -> u8; - } - - __basepri_r() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__basepri_r() -> u8) } /// Writes to the CPU register @@ -32,39 +11,14 @@ pub fn read() -> u8 { /// **IMPORTANT** If you are using a Cortex-M7 device with revision r0p1 you MUST enable the /// `cm7-r0p1` Cargo feature or this function WILL misbehave. #[inline] -pub unsafe fn write(_basepri: u8) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => match () { - #[cfg(not(feature = "cm7-r0p1"))] - () => llvm_asm!("msr BASEPRI, $0" :: "r"(_basepri) : "memory" : "volatile"), - #[cfg(feature = "cm7-r0p1")] - () => crate::interrupt::free( - |_| llvm_asm!("msr BASEPRI, $0" :: "r"(_basepri) : "memory" : "volatile"), - ), - }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => match () { - #[cfg(not(feature = "cm7-r0p1"))] - () => { - extern "C" { - fn __basepri_w(_: u8); - } - - __basepri_w(_basepri); - } - #[cfg(feature = "cm7-r0p1")] - () => { - extern "C" { - fn __basepri_w_cm7_r0p1(_: u8); - } - - __basepri_w_cm7_r0p1(_basepri); - } - }, +pub unsafe fn write(basepri: u8) { + #[cfg(feature = "cm7-r0p1")] + { + call_asm!(__basepri_w_cm7_r0p1(basepri: u8)); + } - #[cfg(not(cortex_m))] - () => unimplemented!(), + #[cfg(not(feature = "cm7-r0p1"))] + { + call_asm!(__basepri_w(basepri: u8)); } } diff --git a/src/register/basepri_max.rs b/src/register/basepri_max.rs index 0e66f691..cea38383 100644 --- a/src/register/basepri_max.rs +++ b/src/register/basepri_max.rs @@ -8,43 +8,14 @@ /// **IMPORTANT** If you are using a Cortex-M7 device with revision r0p1 you MUST enable the /// `cm7-r0p1` Cargo feature or this function WILL misbehave. #[inline] -pub fn write(_basepri: u8) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => unsafe { - match () { - #[cfg(not(feature = "cm7-r0p1"))] - () => llvm_asm!("msr BASEPRI_MAX, $0" :: "r"(_basepri) : "memory" : "volatile"), - #[cfg(feature = "cm7-r0p1")] - () => crate::interrupt::free( - |_| llvm_asm!("msr BASEPRI_MAX, $0" :: "r"(_basepri) : "memory" : "volatile"), - ), - } - }, - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - match () { - #[cfg(not(feature = "cm7-r0p1"))] - () => { - extern "C" { - fn __basepri_max(_: u8); - } - - __basepri_max(_basepri) - } - #[cfg(feature = "cm7-r0p1")] - () => { - extern "C" { - fn __basepri_max_cm7_r0p1(_: u8); - } - - __basepri_max_cm7_r0p1(_basepri) - } - } - }, +pub fn write(basepri: u8) { + #[cfg(feature = "cm7-r0p1")] + { + call_asm!(__basepri_max_cm7_r0p1(basepri: u8)); + } - #[cfg(not(cortex_m))] - () => unimplemented!(), + #[cfg(not(feature = "cm7-r0p1"))] + { + call_asm!(__basepri_max(basepri: u8)); } } diff --git a/src/register/control.rs b/src/register/control.rs index 211b5327..938b10ff 100644 --- a/src/register/control.rs +++ b/src/register/control.rs @@ -156,58 +156,13 @@ impl Fpca { /// Reads the CPU register #[inline] pub fn read() -> Control { - match () { - #[cfg(cortex_m)] - () => { - let r = match () { - #[cfg(feature = "inline-asm")] - () => { - let r: u32; - unsafe { llvm_asm!("mrs $0, CONTROL" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(not(feature = "inline-asm"))] - () => unsafe { - extern "C" { - fn __control_r() -> u32; - } - - __control_r() - }, - }; - - Control { bits: r } - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let bits: u32 = call_asm!(__control_r() -> u32); + Control { bits } } /// Writes to the CPU register. #[inline] -pub unsafe fn write(_control: Control) { - match () { - #[cfg(cortex_m)] - () => match () { - #[cfg(feature = "inline-asm")] - () => { - let control = _control.bits(); - llvm_asm!("msr CONTROL, $0" :: "r"(control) : "memory" : "volatile"); - } - - #[cfg(not(feature = "inline-asm"))] - () => { - extern "C" { - fn __control_w(bits: u32); - } - - __control_w(_control.bits()); - } - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(control: Control) { + let control = control.bits(); + call_asm!(__control_w(control: u32)); } diff --git a/src/register/faultmask.rs b/src/register/faultmask.rs index 06f60fe7..1f19d97c 100644 --- a/src/register/faultmask.rs +++ b/src/register/faultmask.rs @@ -27,36 +27,10 @@ impl Faultmask { /// Reads the CPU register #[inline] pub fn read() -> Faultmask { - match () { - #[cfg(cortex_m)] - () => { - let r = match () { - #[cfg(feature = "inline-asm")] - () => { - let r: u32; - unsafe { llvm_asm!("mrs $0, FAULTMASK" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(not(feature = "inline-asm"))] - () => unsafe { - extern "C" { - fn __faultmask() -> u32; - - } - - __faultmask() - }, - }; - - if r & (1 << 0) == (1 << 0) { - Faultmask::Inactive - } else { - Faultmask::Active - } - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), + let r: u32 = call_asm!(__faultmask_r() -> u32); + if r & (1 << 0) == (1 << 0) { + Faultmask::Inactive + } else { + Faultmask::Active } } diff --git a/src/register/fpscr.rs b/src/register/fpscr.rs index 2ca00e1a..dd538e96 100644 --- a/src/register/fpscr.rs +++ b/src/register/fpscr.rs @@ -295,49 +295,13 @@ impl RMode { /// Read the FPSCR register #[inline] pub fn read() -> Fpscr { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let r: u32; - unsafe { - llvm_asm!("vmrs $0, fpscr" : "=r"(r) ::: "volatile"); - } - Fpscr::from_bits(r) - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __get_FPSCR() -> u32; - } - Fpscr::from_bits(__get_FPSCR()) - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + let r: u32 = call_asm!(__fpscr_r() -> u32); + Fpscr::from_bits(r) } /// Set the value of the FPSCR register #[inline] -pub unsafe fn write(_fspcr: Fpscr) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let bits = _fspcr.bits(); - llvm_asm!("vmsr fpscr, $0" :: "r"(bits) :: "volatile"); - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => { - extern "C" { - fn __set_FPSCR(bits: u32); - } - - __set_FPSCR(_fspcr.bits()); - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(fpscr: Fpscr) { + let fpscr = fpscr.bits(); + call_asm!(__fpscr_w(fpscr: u32)); } diff --git a/src/register/lr.rs b/src/register/lr.rs index 6919e107..1aa546c8 100644 --- a/src/register/lr.rs +++ b/src/register/lr.rs @@ -5,29 +5,13 @@ /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] pub fn read() -> u32 { - match () { - #[cfg(cortex_m)] - () => { - let r: u32; - unsafe { llvm_asm!("mov $0,R14" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__lr_r() -> u32) } /// Writes `bits` to the CPU register /// /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] -pub unsafe fn write(_bits: u32) { - match () { - #[cfg(cortex_m)] - () => llvm_asm!("mov R14,$0" :: "r"(_bits) :: "volatile"), - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(bits: u32) { + call_asm!(__lr_w(bits: u32)); } diff --git a/src/register/mod.rs b/src/register/mod.rs index efbe6ef5..48d157a5 100644 --- a/src/register/mod.rs +++ b/src/register/mod.rs @@ -58,11 +58,11 @@ pub mod psplim; // Accessing these registers requires inline assembly because their contents are tied to the current // stack frame -#[cfg(any(feature = "inline-asm", target_arch = "x86_64"))] +#[cfg(feature = "inline-asm")] pub mod apsr; -#[cfg(any(feature = "inline-asm", target_arch = "x86_64"))] +#[cfg(feature = "inline-asm")] pub mod lr; -#[cfg(any(feature = "inline-asm", target_arch = "x86_64"))] +#[cfg(feature = "inline-asm")] pub mod pc; diff --git a/src/register/msp.rs b/src/register/msp.rs index b5460ed0..275023d3 100644 --- a/src/register/msp.rs +++ b/src/register/msp.rs @@ -3,45 +3,11 @@ /// Reads the CPU register #[inline] pub fn read() -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let r; - unsafe { llvm_asm!("mrs $0,MSP" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __msp_r() -> u32; - } - - __msp_r() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__msp_r() -> u32) } /// Writes `bits` to the CPU register #[inline] -pub unsafe fn write(_bits: u32) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => llvm_asm!("msr MSP,$0" :: "r"(_bits) :: "volatile"), - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => { - extern "C" { - fn __msp_w(_: u32); - } - - __msp_w(_bits); - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(bits: u32) { + call_asm!(__msp_w(bits: u32)); } diff --git a/src/register/msplim.rs b/src/register/msplim.rs index 68915c4a..ac6f9ed6 100644 --- a/src/register/msplim.rs +++ b/src/register/msplim.rs @@ -3,45 +3,11 @@ /// Reads the CPU register #[inline] pub fn read() -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let r; - unsafe { llvm_asm!("mrs $0,MSPLIM" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __msplim_r() -> u32; - } - - __msplim_r() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__msplim_r() -> u32) } /// Writes `bits` to the CPU register #[inline] -pub unsafe fn write(_bits: u32) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => llvm_asm!("msr MSPLIM,$0" :: "r"(_bits) :: "volatile"), - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => { - extern "C" { - fn __msplim_w(_: u32); - } - - __msplim_w(_bits); - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(bits: u32) { + call_asm!(__msplim_w(bits: u32)) } diff --git a/src/register/pc.rs b/src/register/pc.rs index f4486c49..0b33629a 100644 --- a/src/register/pc.rs +++ b/src/register/pc.rs @@ -5,29 +5,13 @@ /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] pub fn read() -> u32 { - match () { - #[cfg(cortex_m)] - () => { - let r; - unsafe { llvm_asm!("mov $0,R15" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__pc_r() -> u32) } /// Writes `bits` to the CPU register /// /// **NOTE** This function is available if `cortex-m` is built with the `"inline-asm"` feature. #[inline] -pub unsafe fn write(_bits: u32) { - match () { - #[cfg(cortex_m)] - () => llvm_asm!("mov R15,$0" :: "r"(_bits) :: "volatile"), - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(bits: u32) { + call_asm!(__pc_w(bits: u32)); } diff --git a/src/register/primask.rs b/src/register/primask.rs index 4b6df3c8..20692a2f 100644 --- a/src/register/primask.rs +++ b/src/register/primask.rs @@ -27,35 +27,14 @@ impl Primask { /// Reads the CPU register #[inline] pub fn read() -> Primask { - match () { - #[cfg(cortex_m)] - () => { - let r = match () { - #[cfg(feature = "inline-asm")] - () => { - let r: u32; - unsafe { llvm_asm!("mrs $0, PRIMASK" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(not(feature = "inline-asm"))] - () => { - extern "C" { - fn __primask() -> u32; - } - - unsafe { __primask() } - } - }; - - if r & (1 << 0) == (1 << 0) { - Primask::Inactive - } else { - Primask::Active - } - } + fn read_raw() -> u32 { + call_asm!(__primask_r() -> u32) + } - #[cfg(not(cortex_m))] - () => unimplemented!(), + let r = read_raw(); + if r & (1 << 0) == (1 << 0) { + Primask::Inactive + } else { + Primask::Active } } diff --git a/src/register/psp.rs b/src/register/psp.rs index c020e4f9..0bca22c3 100644 --- a/src/register/psp.rs +++ b/src/register/psp.rs @@ -3,45 +3,11 @@ /// Reads the CPU register #[inline] pub fn read() -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let r; - unsafe { llvm_asm!("mrs $0,PSP" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __psp_r() -> u32; - } - - __psp_r() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__psp_r() -> u32) } /// Writes `bits` to the CPU register #[inline] -pub unsafe fn write(_bits: u32) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => llvm_asm!("msr PSP,$0" :: "r"(_bits) :: "volatile"), - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => { - extern "C" { - fn __psp_w(_: u32); - } - - __psp_w(_bits); - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(bits: u32) { + call_asm!(__psp_w(bits: u32)) } diff --git a/src/register/psplim.rs b/src/register/psplim.rs index 8cb8f1c7..8ee1e945 100644 --- a/src/register/psplim.rs +++ b/src/register/psplim.rs @@ -3,45 +3,11 @@ /// Reads the CPU register #[inline] pub fn read() -> u32 { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => { - let r; - unsafe { llvm_asm!("mrs $0,PSPLIM" : "=r"(r) ::: "volatile") } - r - } - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => unsafe { - extern "C" { - fn __psplim_r() -> u32; - } - - __psplim_r() - }, - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } + call_asm!(__psplim_r() -> u32) } /// Writes `bits` to the CPU register #[inline] -pub unsafe fn write(_bits: u32) { - match () { - #[cfg(all(cortex_m, feature = "inline-asm"))] - () => llvm_asm!("msr PSPLIM,$0" :: "r"(_bits) :: "volatile"), - - #[cfg(all(cortex_m, not(feature = "inline-asm")))] - () => { - extern "C" { - fn __psplim_w(_: u32); - } - - __psplim_w(_bits); - } - - #[cfg(not(cortex_m))] - () => unimplemented!(), - } +pub unsafe fn write(bits: u32) { + call_asm!(__psplim_w(bits: u32)) } diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs index 4575f65e..e6248d17 100644 --- a/xtask/src/lib.rs +++ b/xtask/src/lib.rs @@ -68,7 +68,7 @@ fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) { // Pass output and input file. cmd.arg("-o").arg(&obj_file); - cmd.arg("asm.rs"); + cmd.arg("asm/lib.rs"); println!("{:?}", cmd); let status = cmd.status().unwrap(); @@ -198,7 +198,10 @@ pub fn check_blobs() { for ((file, before), (_, after)) in files_before.iter().zip(files_after.iter()) { if before != after { - panic!("{} differs between rebuilds", file); + panic!( + "{} is not up-to-date, please run `cargo xtask assemble`", + file + ); } } From 0e54aaf142c8ff8eb7e7181bd54f0ab2abdb33ae Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sat, 29 Aug 2020 18:17:22 +0200 Subject: [PATCH 2/6] Fix shims for v8m.main --- asm/lib.rs | 3 ++- bin/thumbv6m-none-eabi-lto.a | Bin 13596 -> 13592 bytes bin/thumbv6m-none-eabi.a | Bin 18284 -> 18284 bytes bin/thumbv7em-none-eabi-lto.a | Bin 19224 -> 19224 bytes bin/thumbv7em-none-eabi.a | Bin 23360 -> 23360 bytes bin/thumbv7em-none-eabihf-lto.a | Bin 20176 -> 20180 bytes bin/thumbv7em-none-eabihf.a | Bin 24684 -> 24684 bytes bin/thumbv7m-none-eabi-lto.a | Bin 17628 -> 17628 bytes bin/thumbv7m-none-eabi.a | Bin 22020 -> 22020 bytes bin/thumbv8m.base-none-eabi-lto.a | Bin 15496 -> 15496 bytes bin/thumbv8m.base-none-eabi.a | Bin 20936 -> 20936 bytes bin/thumbv8m.main-none-eabi-lto.a | Bin 21228 -> 21228 bytes bin/thumbv8m.main-none-eabi.a | Bin 27220 -> 27220 bytes bin/thumbv8m.main-none-eabihf-lto.a | Bin 22168 -> 22168 bytes bin/thumbv8m.main-none-eabihf.a | Bin 28488 -> 28488 bytes 15 files changed, 2 insertions(+), 1 deletion(-) diff --git a/asm/lib.rs b/asm/lib.rs index 95e05a2f..50e1db68 100644 --- a/asm/lib.rs +++ b/asm/lib.rs @@ -73,7 +73,8 @@ shims! { fn __wfi(); } -#[cfg(armv7m)] +// v7m *AND* v8m.main, but *NOT* v8m.base +#[cfg(any(armv7m, armv8m_main))] shims! { fn __basepri_max(val: u8); fn __basepri_r() -> u8; diff --git a/bin/thumbv6m-none-eabi-lto.a b/bin/thumbv6m-none-eabi-lto.a index 517c2a896861fef21fd115460b9d439675703f1e..32667b183cb8b2a6a40c1bc136cce80f903d1a07 100644 GIT binary patch delta 179 zcmV;k08Ia!YM5$}JOMP3J!=6bv8gTuKgCZ}sz#-MRH#V>t5nEKCB0PWO9jYOs7z(d zRE$o=?o^&pWja;TRAp&Zj$UPrR<>%TzgD1aW$ISWZ>0=JvlazX10XXtFk?6|IAJn5 zGBIT{Wn*PHW@I!lHf1w8IW{n5W-zme2;B(;_~A|XvuP5h2Lc0rlMxy^0g$sy8r~Ke hyw>>^4d|5>bA=vbdjCk5mrp*(QC($a0kcOj)dNsvM!o<5 delta 183 zcmV;o07(CsYMg42JOMb7J!=6cv8gTuKP5<1utf!URIW&6n^ew9g{@TXN@ciIu1m$d zRFX|4-&CYf#VS?UQ^i?TlwHMrR=jBixK^fY#oAWXZUy~DvlazX10Xm#IAbC216#huO|abshi!0JB3e)dRJ!NrM0Y diff --git a/bin/thumbv6m-none-eabi.a b/bin/thumbv6m-none-eabi.a index 05a27d7fc3ed7cbb4eaf400f3573cd6ce24b8ea8..072dd15eda70832bfba537c723017ca208e21afd 100644 GIT binary patch delta 30 kcmaFU$M~j?alGO0=)^`wH-{;QvY* zFra_~1Bz8Jpi~C~ij***NDBi>5;34y5d(@aF`yI`14>^pptu(USW1~Oplllhiq0#+IRlEBGl0M{7y&4OBC{F>N&_G>HZWs2F*so|IWjS2Gi76CIA&xt zFg9f~IXN~kWo9t5gbDNs1o)v&__KTyrw0LmlO!8A0YS4|8=ig>^G6&!Ar=f|ey W_c0cOR%Q8md2u(^#R0PmMhyk`se*j~ delta 324 zcmV-K0lWT~mI0WS0kA^_e@c+3V2cXys9cfCHmRJI3R|h%mCA6bT$hS@sU(|9zNtu| zidCwxr;4+xD7%XLta#H3aIH+)inXn%-3t1xH0R2+u0ZcfHLo1`3YD(_`^wO-?EMP+ zuZ#f$N;WW{U=3XvY|)gH!~rAIl~ W*;_yHL4;@dO?;UxNqMsiMhyk+GJnee diff --git a/bin/thumbv7em-none-eabi.a b/bin/thumbv7em-none-eabi.a index a33e9d1c9f7cab21a6d7fa4110b0d6a92913aa79..d7a2c8832481299d35fc7e2d0e8e7f2c1f15087e 100644 GIT binary patch delta 30 lcmX@Gjq$)X#tkPpIBEnKfPk@P^92q`X~y51Unz%~0|2P-3Wxvz delta 30 lcmX@Gjq$)X#tkPpII0C0fPk@j^92q`X~tihUnz%~0|2PW3WWdw diff --git a/bin/thumbv7em-none-eabihf-lto.a b/bin/thumbv7em-none-eabihf-lto.a index c3bcb56c079a3dcc21528dabea3a1cc63c499b2d..bd5ad837da53642f238caba3bbfaa0a7f5c802d8 100644 GIT binary patch delta 345 zcmV-f0jB=YodMLH0gyWaF*1=oZvi#2ts(_~il3-djY|KhP?HK)sgRdSda2Nt3XrK# znaY@{7@dmUsXU{~bgHDO%F?PFy~-M`Y}HDCtw7t#)UBM~N*S&w=?c`YH1Ud5uMqo6 zw6FC03h=Ms|4JG#pnwAdid8V6R0ji!lrW%33j<0LF`!rx1Bx&)pcEAYN?$RcxEBLo zN|`aBY#RfL)-j-59|Ou2GN6Dd14^4Rpd>2;O1Cng*ee5y)iR)&1ByN~ zpd2*=%2+d?+%*FVbTgo^Hv@`)GoVO01B#h5pqy(1iug8wz%m#CD1jogtp-m6ATu^F zV>mH5VKO-~F=aDlV`VsIWHc}~WivTBHZWyoFtZ#A5DEnN;ZFFoFchZ;0f3X(8#e(# rvk)9rEggy-t>17D)K}KuHP~O(KKr4qVfPdR)D+e64FCYMeo0aVcGrq{ delta 341 zcmV-b0jmDgodM9D0gyWaFgTGtZviy1ts(_~N|2~viwf|lT#?E)shpJxTdCZY%5bS% zmx_6*B%4aUsYs!URjRP3inFRHyNdg)c+(1StxVa9wXLY#3i_=y=gPFMK<`R5uN?Ub zm9GH%%FwUu{R;c9i~$2mHZY)I1p`WTFrZWk0}AsnpkxmNN)a)jAQJ-$P%)sy6$1)i zdNH7Q83RhUF`#H21B&)Bpo}L23Vbr4Few8Hm@=T`DFaHjGN7z01IoWLpiC_TN*^GXu(0GoZXR14?i+pj0;lN_sP(sA&UA**1W{G8h3Ufg%92tp-m6AUHWV zV>V)AVKz5qW-(+rFf=zXW;Zf1GB9OjGdE&2II|oI5DEnL;ZF9mFchZ;0brBZ8#e(l nvk)9rEg1?^A4PY7U;SJQF~9lV587FL?@&@~ delta 30 kcmaEJfbq=%#tpWd9Mu90K)_hN*_CsH4CAlO-&D)20H`$zrT_o{ diff --git a/bin/thumbv7m-none-eabi-lto.a b/bin/thumbv7m-none-eabi-lto.a index cf9c68d27b66e3d7dcca4a6d304f46f39a06abe1..a95b0699b24de2393b2fde9f3a6ec5314b81fac3 100644 GIT binary patch delta 262 zcmV+h0r~#ii2>Y+0k9VZe~O=|REGO0=)^`wH-{;QvY* zFra_~1Bz8Jpi~C~ij***NDBi>5;34y5d(@aF`yI`14>^pptu(U8A_QkplllhiqY+0k9VZe@c+3V2cXys9cfCHmRJI3R|h%mCA6bT$hS@sU(|9zNtu| zidCwxr;4+xD7%XLta#H3aIH+)inXn%-3t1xH0R2+u0ZcfHLo1`3YD(_`^wO-?EMP+ zuZ#f$N;WW{U&12R+evJn$bL|6344 M+LsXkvnN2c1pH!ayZ`_I diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a index 644a375b5bed51f5c78de0572e8160530ae7d67f..a97ae6ab2f0dbbcc7287f79be2c90fc494db8f4c 100644 GIT binary patch delta 30 kcmZo!!`QNhaYG9SM~wgj5HQwk?&0v1WcD^$V(-?ROm|u$W*9IWz1BJPQ~t2o>65w zRnk;tX;qG1WsO$0YNfwcplxO9R?csw3|G3K0mUyGP{5@DWr(wa1yTbbGd3_|I59Y3 zGC49aWiw@CWjJPJG%z-0GdVdnFlA;iv-Ak{2?Y3oPWZF!5~l|NfRmLPH39`mv&#eG)1X$81erfkL9R@80<{Z_!A0VOCJP{yPI#dx!V1yTbbI5{|DHezF8 zHaBHvF=RO~G&eA2H!?9YFlA*kH)1t7v-Ak{2?X|mPWH3y5~l|NV3U;^H3G#*v&iad diff --git a/bin/thumbv8m.base-none-eabi.a b/bin/thumbv8m.base-none-eabi.a index 42523f6fa66e24869827f9df7c9e513ede8d6527..4c689902bae3d8fe73582be4557506f72a87c1e0 100644 GIT binary patch delta 30 lcmX@HnDNA7#tr8=IBEnKfPk@P^L36x;*7sH&r;Ac1OThU3Zwu4 delta 30 lcmX@HnDNA7#tr8=II0C0fPk@j^L36x;*7sG&r;Ac1OTg?3ZVc1 diff --git a/bin/thumbv8m.main-none-eabi-lto.a b/bin/thumbv8m.main-none-eabi-lto.a index bf17ac474eceb150abb17ea530a8bb3872bbde44..1f5b29dd2708439bfa3967f193bde004ca59c847 100644 GIT binary patch delta 289 zcmV++0p9-Xr2*`v0kFRXe~O=|REGO0=)^`wH-{;QvY* zFra_~1Bz8Jpi~C~ij***NDBi>5;34y5d(@aF`yI`14>^pptu(UHA1IiFJph#H*iqkcqJYfUMQZ|6ZG8h3Ufg-bW22BGXGd3_| zI59Y3GC49aWiw@CWjJPJG%z-0GdVdnFlA;iv)~CZ3IzB;Px!MG6sHFPfRnr%I02Be n^&2HI8Z?(_vLDno7kN8~Ww8gxA=TG={DaoCMfe@FG)=e#b*p#x delta 289 zcmV++0p9-Xr2*`v0kFRXe@c+3V2cXys9cfCHmRJI3R|h%mCA6bT$hS@sU(|9zNtu| zidCwxr;4+xD7%XLta#H3aIH+)inXn%-3t1xH0R2+u0ZcfHLo1`3YD(_`^wO-?EMP+ zuZ#f$N;WW{UXdpo~cait#j{R96E^v^AheUjvFWHh{!37y&4OA^@{<22BGXI5{|D zHezF8HaBHvF=RO~G&eA2H!?9YFlA*kH)1t7v)~CZ3Iz5+PxiAE6sHFPV3WKXI01~a n^&2HI8a8dscMQ}Xt;bvVNwkgW!AxO1R|R_}!&Mx!G)=e#09GO0=)^`wH-{;QvY* zFra_~1Bz8Jpi~C~ij***NDBi>5;34y5d(@aF`yI`14>^pptu(UJW81{plllhiq1IiFJph#H*iqkcqJYfUMQZ}HRYXge-Hh{!37y&4OBC`?) zQUf3}HZWs2F*so|IWjS2Gi76CIA&xtFg9f~IXN~kWo9t5gbFkY1o(kZ__Mqerw0Lm tlVlt?0g$tu9O*L|7k_aNeP3BD*1V_5RR~dZ)_&SNO>_VN0JEP^`2}n*crpM0 delta 295 zcmV+?0oeYStpS*=0kBsFe@c+3V2cXys9cfCHmRJI3R|h%mCA6bT$hS@sU(|9zNtu| zidCwxr;4+xD7%XLta#H3aIH+)inXn%-3t1xH0R2+u0ZcfHLo1`3YD(_`^wO-?EMP+ zuZ#f$N;WW{UXdpo~cait#j{R96E^v^AheUjvFWHlV0!14`L8fW$Hw0VshY0J9PY zQUf43IXGiBVq;-8H)UoqWH~T2H!x;5GBGkRWo0urVl_CkgbFkY1onYX_OrYcrw0LG tlVlt?0gSVq9O*L|8@}bdt6kdV^?@HjosWnA9d{o4+y2+z0kfY_`2`s0H%5hOaK4? delta 30 kcmX?ckMYDk#tm6q9Mu90K)_hNxrj?xk@45&Htj>s0H#w4NdN!< From 6714e7f4d6ba505feaf0af5bbc9eb7444eb7f614 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sat, 29 Aug 2020 18:19:32 +0200 Subject: [PATCH 3/6] Delete old asm.rs --- asm.rs | 346 --------------------------------------------------------- 1 file changed, 346 deletions(-) delete mode 100644 asm.rs diff --git a/asm.rs b/asm.rs deleted file mode 100644 index f5b0179b..00000000 --- a/asm.rs +++ /dev/null @@ -1,346 +0,0 @@ -//! Assembly stubs for the `cortex-m` crate. -//! -//! We use this file to precompile some assembly stubs into the static libraries you can find in -//! `bin`. Apps using the `cortex-m` crate then link against those static libraries and don't need -//! to build this file themselves. -//! -//! Nowadays the assembly stubs are no longer actual assembly files, but actually just this Rust -//! file `asm.rs` that uses unstable inline assembly, coupled with the `xtask` tool to invoke rustc -//! and build the files. -//! -//! Precompiling this to a static lib allows users to call assembly routines from stable Rust, but -//! also perform [linker plugin LTO] with the precompiled artifacts to completely inline the -//! assembly routines into their code, which brings the "outline assembly" on par with "real" inline -//! assembly. -//! -//! For developers and contributors to `cortex-m`, this setup means that they don't have to install -//! any binutils, assembler, or C compiler to hack on the crate. All they need is to run `cargo -//! xtask assemble` to rebuild the archives from this file. -//! -//! Cool, right? -//! -//! # Rust version management -//! -//! Since inline assembly is still unstable, and we want to ensure that the created blobs are -//! up-to-date in CI, we have to pin the nightly version we use for this. The nightly toolchain is -//! stored in `asm-toolchain`. -//! -//! The `cargo xtask` automation will automatically install the `asm-toolchain` as well as all -//! Cortex-M targets needed to generate the blobs. -//! -//! [linker plugin LTO]: https://doc.rust-lang.org/stable/rustc/linker-plugin-lto.html - -#![feature(asm)] -#![no_std] -#![crate_type = "staticlib"] -#![deny(warnings)] - -#[no_mangle] -pub unsafe extern "C" fn __bkpt() { - asm!("bkpt"); -} - -#[no_mangle] -pub unsafe extern "C" fn __control_r() -> u32 { - let r; - asm!("mrs {}, CONTROL", out(reg) r); - r -} - -#[no_mangle] -pub unsafe extern "C" fn __control_w(w: u32) { - asm!("msr CONTROL, {}", in(reg) w); -} - -#[no_mangle] -pub unsafe extern "C" fn __cpsid() { - asm!("cpsid i"); -} - -#[no_mangle] -pub unsafe extern "C" fn __cpsie() { - asm!("cpsie i"); -} - -#[no_mangle] -pub unsafe extern "C" fn __delay(cyc: u32) { - asm!(" - 1: - nop - subs {}, #1 - bne 1b - // Branch to 1 instead of __delay does not generate R_ARM_THM_JUMP8 relocation, which breaks - // linking on the thumbv6m-none-eabi target - ", in(reg) cyc); -} - -// FIXME do we need compiler fences here or should we expect them in the caller? -#[no_mangle] -pub unsafe extern "C" fn __dmb() { - asm!("dmb 0xF"); -} - -#[no_mangle] -pub unsafe extern "C" fn __dsb() { - asm!("dsb 0xF"); -} - -#[no_mangle] -pub unsafe extern "C" fn __isb() { - asm!("isb 0xF"); -} - -#[no_mangle] -pub unsafe extern "C" fn __msp_r() -> u32 { - let r; - asm!("mrs {}, MSP", out(reg) r); - r -} - -#[no_mangle] -pub unsafe extern "C" fn __msp_w(val: u32) { - asm!("msr MSP, {}", in(reg) val); -} - -#[no_mangle] -pub unsafe extern "C" fn __nop() { - // NOTE: This is a `pure` asm block, but applying that option allows the compiler to eliminate - // the nop entirely (or to collapse multiple subsequent ones). Since the user probably wants N - // nops when they call `nop` N times, let's not add that option. - asm!("nop"); -} - -#[no_mangle] -pub unsafe extern "C" fn __primask() -> u32 { - // FIXME: rename to __primask_r - let r; - asm!("mrs {}, PRIMASK", out(reg) r); - r -} - -#[no_mangle] -pub unsafe extern "C" fn __psp_r() -> u32 { - let r; - asm!("mrs {}, PSP", out(reg) r); - r -} - -#[no_mangle] -pub unsafe extern "C" fn __psp_w(val: u32) { - asm!("msr PSP, {}", in(reg) val); -} - -#[no_mangle] -pub unsafe extern "C" fn __sev() { - asm!("sev"); -} - -#[no_mangle] -pub unsafe extern "C" fn __udf() { - asm!("udf #0"); -} - -#[no_mangle] -pub unsafe extern "C" fn __wfe() { - asm!("wfe"); -} - -#[no_mangle] -pub unsafe extern "C" fn __wfi() { - asm!("wfi"); -} - -#[cfg(armv7m)] -pub mod v7m { - #[no_mangle] - pub unsafe extern "C" fn __basepri_max(val: u8) { - asm!("msr BASEPRI_MAX, {}", in(reg) val); - } - - #[no_mangle] - pub unsafe extern "C" fn __basepri_r() -> u8 { - let r; - asm!("mrs {}, BASEPRI", out(reg) r); - r - } - - #[no_mangle] - pub unsafe extern "C" fn __basepri_w(val: u8) { - asm!("msr BASEPRI, {}", in(reg) val); - } - - #[no_mangle] - pub unsafe extern "C" fn __faultmask() -> u32 { - let r; - asm!("mrs {}, FAULTMASK", out(reg) r); - r - } - - // FIXME: compiler_fences necessary? - #[no_mangle] - pub unsafe extern "C" fn __enable_icache() { - asm!( - " - ldr r0, =0xE000ED14 @ CCR - mrs r2, PRIMASK @ save critical nesting info - cpsid i @ mask interrupts - ldr r1, [r0] @ read CCR - orr.w r1, r1, #(1 << 17) @ Set bit 17, IC - str r1, [r0] @ write it back - dsb @ ensure store completes - isb @ synchronize pipeline - msr PRIMASK, r2 @ unnest critical section - ", - out("r0") _, - out("r1") _, - out("r2") _, - ); - } - - #[no_mangle] - pub unsafe extern "C" fn __enable_dcache() { - asm!( - " - ldr r0, =0xE000ED14 @ CCR - mrs r2, PRIMASK @ save critical nesting info - cpsid i @ mask interrupts - ldr r1, [r0] @ read CCR - orr.w r1, r1, #(1 << 16) @ Set bit 16, DC - str r1, [r0] @ write it back - dsb @ ensure store completes - isb @ synchronize pipeline - msr PRIMASK, r2 @ unnest critical section - ", - out("r0") _, - out("r1") _, - out("r2") _, - ); - } -} - -#[cfg(armv7em)] -mod v7em { - #[no_mangle] - pub unsafe extern "C" fn __basepri_max_cm7_r0p1(val: u8) { - asm!( - " - mrs r1, PRIMASK - cpsid i - tst.w r1, #1 - msr BASEPRI_MAX, {} - it ne - bxne lr - cpsie i - ", - in(reg) val, - out("r1") _, - ); - } - - #[no_mangle] - pub unsafe extern "C" fn __basepri_w_cm7_r0p1(val: u8) { - asm!( - " - mrs r1, PRIMASK - cpsid i - tst.w r1, #1 - msr BASEPRI, {} - it ne - bxne lr - cpsie i - ", - in(reg) val, - out("r1") _, - ); - } -} - -/// Baseline and Mainline. -#[cfg(armv8m)] -pub mod v8m { - #[no_mangle] - pub unsafe extern "C" fn __tt(mut target: u32) -> u32 { - asm!("tt {target}, {target}", target = inout(reg) target); - target - } - - #[no_mangle] - pub unsafe extern "C" fn __ttt(mut target: u32) -> u32 { - asm!("ttt {target}, {target}", target = inout(reg) target); - target - } - - #[no_mangle] - pub unsafe extern "C" fn __tta(mut target: u32) -> u32 { - asm!("tta {target}, {target}", target = inout(reg) target); - target - } - - #[no_mangle] - pub unsafe extern "C" fn __ttat(mut target: u32) -> u32 { - asm!("ttat {target}, {target}", target = inout(reg) target); - target - } -} - -/// Mainline only. -#[cfg(armv8m_main)] -pub mod v8m_main { - #[no_mangle] - pub unsafe extern "C" fn __msplim_r() -> u32 { - let r; - asm!("mrs {}, MSPLIM", out(reg) r); - r - } - - #[no_mangle] - pub unsafe extern "C" fn __msplim_w(val: u32) { - asm!("msr MSPLIM, {}", in(reg) val); - } - - #[no_mangle] - pub unsafe extern "C" fn __psplim_r() -> u32 { - let r; - asm!("mrs {}, PSPLIM", out(reg) r); - r - } - - #[no_mangle] - pub unsafe extern "C" fn __psplim_w(val: u32) { - asm!("msr PSPLIM, {}", in(reg) val); - } -} - -/// All targets with FPU. -#[cfg(has_fpu)] -pub mod fpu { - #[no_mangle] - pub unsafe extern "C" fn __get_FPSCR() -> u32 { - let r; - asm!("vmrs {}, fpscr", out(reg) r); - r - } - - #[no_mangle] - pub unsafe extern "C" fn __set_FPSCR(val: u32) { - asm!("vmsr fpscr, {}", in(reg) val); - } -} - -/// We *must* define a panic handler here, even though nothing here should ever be able to panic. -/// -/// We prove that nothing will ever panic by calling a function that doesn't exist. If the panic -/// handler gets linked in, this causes a linker error. We always build this file with optimizations -/// enabled, but even without them the panic handler should never be linked in. -#[panic_handler] -fn panic(_: &core::panic::PanicInfo) -> ! { - extern "C" { - #[link_name = "cortex-m internal error: panic handler not optimized out, please file an \ - issue at https://github.com/rust-embedded/cortex-m"] - fn __cortex_m_should_not_panic() -> !; - } - - unsafe { - __cortex_m_should_not_panic(); - } -} From 0f23877e4638183b3c819184e552507c94185383 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sun, 30 Aug 2020 18:35:49 +0200 Subject: [PATCH 4/6] Patch out the asm shim panic handler --- bin/thumbv6m-none-eabi.a | Bin 18284 -> 16124 bytes bin/thumbv7em-none-eabi.a | Bin 23360 -> 20436 bytes bin/thumbv7em-none-eabihf.a | Bin 24684 -> 21552 bytes bin/thumbv7m-none-eabi.a | Bin 22020 -> 19276 bytes bin/thumbv8m.base-none-eabi.a | Bin 20936 -> 18352 bytes bin/thumbv8m.main-none-eabi.a | Bin 27220 -> 23652 bytes bin/thumbv8m.main-none-eabihf.a | Bin 28488 -> 24704 bytes xtask/Cargo.toml | 4 ++ xtask/src/lib.rs | 95 +++++++++++++++++++++++++++++++- 9 files changed, 97 insertions(+), 2 deletions(-) diff --git a/bin/thumbv6m-none-eabi.a b/bin/thumbv6m-none-eabi.a index 072dd15eda70832bfba537c723017ca208e21afd..5c8c75879e79ff9fbdcfebdfad7270c919468eab 100644 GIT binary patch delta 4863 zcmZvge{2**6vyA)LVKk@XzxcWSW1Ojij<=QwY_T_et1|^gkVsih(}AWQ2Og~ccp;n zqJm1&2)aU01F1?A5tYXBBN63S4ABIG5Ci`-#0U|BkP>SGe?alQ-JQLi7dGkae7^6^ zn>RZ%yK}wyf#cpAI|9m6W#u1M&sKL=fPT%?%MzFhrSRa+@PpyYhCb>z-j7FX2Zy|y zqqUodyzfVAV@IO34fqEq9F_OZM{7?Eg|}1Lf#u+kOZRi3ADkf0MjjkW)73OoXQK+2 zhc6f6y-dME>v8PV7EPJlU+#P{y?@=5SgQ73W}kL_`abQm%%1-48KsW?OIdeZsgQ!X zIKS#Yo99$qMjhb$M?;SOUuKp$`a}7xPVH{_C#sRTRVogviWS8UNDADQl#voCFcNM_ z3iX@36wK+bBw{TUr2Z8YE=dk9i4<_bSxHHgNP#psB`KpMQeYGuk(6|)e;i*r9FQC` zBvK#)dL$)NA_X$xzNBPHq(Bz@D=F$|2^AO(*CZudA_cNxKvHrfQXmJ;ONv_}1>A7P zt~7whj`##Ta703KT%9wB8DJo@03# zynyi{#!DD4WxQOl3P!-!gmhl|Mr3TYtHxih^90H7|G5*`y$wvFrY=q~Te=qaDsN40;W(2s)8jNQRvKf0B zx3UB_G2SX>z#OnfY;1NTfo|roopButxI9%j80}Xw`*)0sn12K?#(0piI>dy0r#zwwjGt$`nDHjYTNoddS%ssr z0LK_#WqgD2SnEV!OhGZ@#f+CpjO%}kBmi_XKFs(S?chi-UW3gCeziM^1J*as^m&IJgE8zZgt8}J^DN5frsZ!_g+*TiN2~)kjBZ_5LQ!|#GjZIjtipHBGx)y<0XFL&Z zh^%gI4|leAHMcjKcDgsm8?bC_Yk;DJKS0HkmD&@*WplAs2H;Ob)+hWTbwS1e1R28+ zBvR}G%~SDMy4jw_qphf@n`JUZh*{AoLXt#;q>>z}R$ZB&?{Du&MEtc2Uz!?E)URr> z!qE7&jDUZf*@^KCL}Fb{5%9+%t=b!bG1|$%xH8j=o`CS7=ira8i6>%-da8;0hBjpF z^Wa3SFPP%{2iFBH4ROt+isqQ-alE443Qlrvb!fR&#XkB>+1;wq%cVK0JdPFG;i^eF z^lOytw4~{puhmrN<%pdm)PfsoJnmYQ`hS1?<`7GSI04R9jQ*IL)%qToO7EQH|tGKGxc3vrQcQdB)hfyvkJ1TXYvu6 zjnM>IcDpP~C$rG2!f4}Xmc5qcplLxtzrMh7CrzR60JBsgm(Z*Qo<$!7>spC$&L)T| zeX2yAoTq8uhVp`0Og)qV5Vc;pn6Vj`#$|6^RAvhzx;$$7;eOYzP@cATUT)3XrfjNkssLc4t+}Ya$^5Dd&2?VW&MYCc z;7?cU5)sy-BI;xeO*A9;3Q)FN7NAAnYHHm>EFqh#7#tlQZ8GdAdiXILTaO*z0#VYK=E4`yk}c>n+a literal 18284 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 W8;QJEqG!Jq{7yVX^onN$?e~AOPw8R+ literal 23360 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 AH~;_u diff --git a/bin/thumbv7em-none-eabihf.a b/bin/thumbv7em-none-eabihf.a index 88ac78ec32890d3aed8e005328f6c7a5af0e47d5..75a7e5dc4894fd99a440e993ecca2158c9aa2e1d 100644 GIT binary patch delta 6415 zcmZvge{2-T702J*8FMx^_TBl;_QhZ)7?)7R!YLs@V+lfq9dP_3auIEUFK6F580_=u z?i`Z_Wep;2LP-K1DT!zlmHcQeRZT4H&{m-(jj9&)S0HVoMyW_>Em9&HC$TH|137(f zXJ&8biIHx1Kkxf~%+Bo2?e3MgJd+ciqZgvK* z3m2rl_|9{%t&>Cnn?e{MW<2$x+*`jMvmD5r z3ViMR89bnl{pe_e6OGj(VyI!&*f^oj1)%RA(_INOgr z&LJN7+<@eRvxdHi>5JfpQXdb6Eg$yadxraB=DrvP4BgLkKkPJgI;(v1K@qeVdU0L^ zu&}qqu+DH;;&woN39K~q5~i0xg`t-+y%at$^rbG{qTyQ#ZyOF}E(g-f;BiAQXL>p0 z3_ZZ~0Q4DpFt1~MED(hI42MwO!PY~t+0ZMPUIA+iJ}{{ znDk2co1s@Ry$VhndNtFl!7}uy*6sROAPRnTsMBV+2~tMDO^!kbKGgqW_}9QL!@q|4 z*Fc-0FH^d#j|rE-Hw}m7EWvVEZRoX3uZ3zuuVXsro29PmV+U5SfO^KO;NM1p)i!T- zyd<|V?qJ-_*xJbq_cMN!ah!2K<3Yw*#><@L!|t#Jzjf9dc?N%E95e&qJkvj9e39`d zj7yAsIR1r(0pJT3aEov+jCyTkK&0KXN;u{%giFjNfDY0pljt zfz2+q=%RX@&5>Yygz+O7ap{0)q|i0%4n1ir%@4lzE$_zlKyGM-`l zDdSLquCF>!jRx6dkMCyO%D9d3LB>ZJ|Bmsw0(JiS8YplcRb>at8E<9W&G-o87a0GY z@ysGQ{&>=|;AQ4;D?O6iP3oH%KgL)veva{3#_w9p;A87Rklh8V*~++q`S&tzW!%o# zdV{TezhVwgGd{ui=Zq&9KgakUb7i!k!8E}8EMS~xnIHtO8C(JX zG&l?s21oGi&wT=w@T_8af>jnY8xGa5-{2^mR!k4%L45B2v%xiRRE-e5(**G`{-*{n zhaJjaj#w?e%D6jZ)d9p}iR57X5#0C2v&nR3AT|`=ht!|W_GMzDc$Chj?fsD2_YJ3V znc+d(renx2n|zqE>`mvK@QezlJ%!U=hvTso>yM8N=7!?gy|#qaonxJuLQ=zN+>Z7S z;C3X@Pf60*fh6vesd(>TGB(f`@7wL-gyzxyBxFXixma)Vp@CFvBsDsaN~rh*6vtu% z*&}dM7Oq$2vn{`pDq+ryOo2b7V^*^nSNuW}MKi#N0wa4&49}^E1h}U*SHqtjzxA_`g+mp_t z1Aw6JE&7GAco@4@N$HpW0Q}%Ofd9}m zG}G&$YkZ*fPJm9lrS8B!{{w&2C0fpM=;X=_&u;~o5uTpVsy$5EkIUd`S4w>%{|90K BI@JIG literal 24684 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 diff --git a/bin/thumbv7m-none-eabi.a b/bin/thumbv7m-none-eabi.a index a97ae6ab2f0dbbcc7287f79be2c90fc494db8f4c..ae9db60997cf07d157d3f02686003912ff9833e9 100644 GIT binary patch delta 5686 zcmZXYe{5UT6~~Y5q;Y<<^^Z6|nv|xHrEF`X&`w$^HESChr)5>Plysu3s^ugO4b2Z@ zyFVC1&bp3mS~N0lR812?tYe5j*v7~T740a~02OtEAPSWbgdie~p|#l*1lt7d&Ux=% z``z!J?04Vie9yV(-t*qOetsvO^!??eZ>qiYmdzX6+JDxuHUIBUa<;EH`FQ0jP({n*p8k$$rTP~^k(Co~?j!ECl>2O(P87Ya2aL5M%FE9n@h^3c;UP>uTm$bz#z(eY@^fI#Y z2dIp0wH$)QXg&&1kTzO+Iq2oI*3v6Lub_~nS6cZwK_!)14pq=W75&$;EVn2?%jtVo z{0h)lP}ag?(=n-1))$_y z4HPQ|u+~Ulwfq~wA9*$CYdp;P170r0!P7nYg)dH}D1 z!<)btfsYr~CwGPiKp!nLC2{rb;GZee^Eanp8UoG&KMDL4a1aJi2mAvw9z9`I$gd5P z;P4>uCxs>7ozbT-qt8IU4F>Q6_~$Q!;T7Olf!_cwfdpN^dw@^b@p;+@4%?xmTY=-i zj{qNliv0q3!Kx6~{}FKbHSlY|ZvihWtQGDlsR6D7E-rTLpJ%c7o9uS*EeI(7qPhBy zLH`5rIpDtmFM2pHE8UXEAl&FTQ*;yF2>f;6Uf}Nnp8)<{k@L>d`fSnQ@LAvm;E#Y; z6&{q_0k;760`Dtu-VHcWFt|Jkd>Z&H@B;8hz|j)BqVo&tUm zcow)s-vxaAyE6`1w*^rgxDR*|_+j8nz!A8{eD0&8tbcj{unuenUIY9E;7NO7p()T) zz{ebR)?a-MfI}X547dpvp3g!54e&4waJR6NUsoUx9UcRI5BMeEc~1g!xk($K^3GYH_*Kxg?M=MW}+VYTfOx zl0I}f@BB@QP!-AJk_5O8%V~|pE9j@1-GnRYh^2=}9>U^&ES+Tt3L3%1x{EgjeF&ajUEu6p%)I%x4KdP4IJ+(!7J_l&Tdf7ifIt%<~7 zY9x6txBba%DxDclj3$pUrL*b8QEo?dJ1{<$%Z!gWHsdLJHg!Z|52bTDD5HaMb zlsr6=8%<^pCGvut$pJYw{mJpzc$)V|hlY87cyNgK1L^E=irds!vVSC%7#>It9Q5#@ z;iE$-${fz-68)*WhQ|_z$Bqt<4eEGlhqL{>9~|vh&vs4kXwJ2^5w+%0$8xQv28PUd zq!PyF*29on74`o1sPcD4)Qz1@mAWUXggVrDXG*igWeUAWT#<_9G5r>cRP-uV%6OUa zWk^ll+Su4SHl9nhcK7Vvkj*6r4i%C~5!L=3tvmEk+(Md8>~ext7u8s~v}%3V4eE}r z)or>nsiu*+rqr4}n9XH!NjWm@y`#+Po_K?rh*wn-4e(E>T+O8Z7_U|D>OT)ZXrAJ!aMTzK2U-=KQGH|qPoy1#o}xJ2t_joYcN#B0Om9y8V+vBqLLm9fg5 zUZVaLkH%)87x|0iDw12iCPtQ{pu~i~2E7eBnKy#}m;r2}U*HWcUz59&oHTfpyZ!I{?;)nB93j0DYeL}{c zu8{APlW`09$YSHxtCx>hEL8F-XWa6T>a{*2*2tg0dXCgwZ%yPfnCBgHc%8X~xOdq~ z)L-}1#%==ZEC;vCl@lIkAIWL9pjv%FYv>wBUxXTjB8(mYm2G%F*E$s@iuCdcnIW}TRepzPqc8B?lvZ?xlG zt?JnDi%Kv+TQGL|2-LuBx@SM`Mp^52L)(qVKVY`ROsrLW}xsUrlTZ z0v5ig17h+<#yf$3utG9{$m9Q~sGhwwu~T54`m&x^>?9~n8;CZj-}gmh4}tPcp85r; zU&nqv=lm&bb+-`xlV8noLof4J&W+r1ee6_tGG-3)f-xzzxcN3vrneCddb;G)&h|fg CN~^s9 literal 22020 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 diff --git a/bin/thumbv8m.base-none-eabi.a b/bin/thumbv8m.base-none-eabi.a index 4c689902bae3d8fe73582be4557506f72a87c1e0..e8bb7a6a0717a3554fbfdedbe0b975a954a3e373 100644 GIT binary patch delta 5616 zcmZvgeQXp(6u{rzQu+n$-O(>76pFQg%F!Z$N=hg#NlPFgS`k4xuJj5Ar9JPiwA8|t zq##BVWQ_^@K@`|?f4`@0=`N)n1orkBikWlm-6&|DB@hNve)F%-ewzlQD(^&0Y&%h;X^RSpbh zw1+C&2QzktD#Is3l{I)lx1;3FccIGeLEmnw8?hc3OcHiUXb0WIF64p1WFbvPX&FkP zcc^y)wne#Em0gEFs4f$AyQt4&t@k*K^(D@kcwN-j6ffw^*Zv&gfX?H^tx3AabwMwf z{keYCb*8g#cF56r&^?r#1TY-ab#`?g$aQMN&Hlx_9gfc0QnXn<;Wwv#dCn)xjJa9$ z!w##99nB6%8cbC52~3{=ZbPs4xH4lJrJ&d+GW$fhrARPqThSm1`fUu5tdNHMvm!~c zQw-Bh0s7J6B{kl~o(8G#l_D9TkOm{*oFW;ikOm`RsxrYen?6PX(qOD&kZv;|eLAEn zdKc5X;9o`JR!9Rk3@8#$oG?BH@IYT&guPJ;X~?ivrXu%b-aiP#b6&x;3#v@rVfC2n7)VcZN}Fa z-%uFWzk((3IOFZ+40{< z#yyO`XFMDyX_T0;MDf$h;2g`q;3~$|jF&Oq#`p!sCnU$r8K02?ldmxzU_8iptW(a& zNO&USg^ZV)jQigh(8dfp7{AB(6ywv3`xy5#9%H<=(D`R1P-wl!7`&A6Q;a(p?_&HB zYbJg;>NlSD=F#e8Bh=<37gyjC0ss<6(QI z6wd`CzL~&6HXzD)1>@C>zhLLY*G&I9 z`9yR6auaqj2c3+^FbBXm*LKv(-9xPg57-g;A)x1mgW^*Rk5hx0B*2S)Mh_$ay^IhG zJ=XM673V~tQ!s9y1X~qO7CO>XP9A*Ae%sU={!-xxGChCH03%?LVlWclTkQeUpx$I7 z!E{)y=v^>hVYm1ai2L`z{mS@J&_eq!K7$O{p%`RBSm7-E+OsE=4G$`u10O0p8s;dB z@0dPcZJ^%28QV}KCO^VQgtA zwQ?x+L*d{?e`JG@H#CM&(p(qBx~aB~EJKlCK*$0RZi+;G`89#H!3JMbLvyg9)-<3t z7^%U!c4H0bTg$hV7eu{90N!YzCF+%PkYvn6k}(}gGP7pT)92<-Gsn}!q=l_3CK;Fe zqxxHOSH#RQ#+;?rn7JewC2V<(uY$CpweW@m_1@Y*P19Omu%WIIybX=ffVXn-6H_Bm z|C$ZfXj(BjPG2>zFvrZnSUss}t_$eB^YZkR@^Pi60j-);)7p6>>mt!`)K5LxZr&)^ zS_;3OUol=Usz^!B#YYtFM$n(F$W9hLgeUc2#U$r3hrYL>aLQqnN(EV#;$_|P*q0}8 zR4<-C$?Y_)>4u|HrN2>;?Y3`Pk}ej~Pnm7CK5u@u`$Z;QPSQsx1G=Q&r?GF(LOyEy z+2~pksh3ID3+YYfGbE(+*=3KkNk|Kshc=OG29vf6+pEmO4k4v4Y`foGB-Qs+C8k)D z+AEx{VoqNZ(tS+2Uq~Ng(gQ*oWT6gHDCaYvw^kOqUFJ_NSMptv-8MGl1WEmuO!uf1 zr3-8EQ<#iuQF@r&P2?(5M~&Pg3$QQ8ki1m?WpQ?FCL3LX=C^ErnaB~-nOzYsX^U+W z$S9Ph979o#;-~!u>X=39P9kI9dLBXxe&e5)R@h31-x!9LrUV~L=Pil{qyKEAb5j3} zb|ITU`uoAO!}ARb#$Siu{?)db&=|Uom@PJdD&?iP`75)QVF2iG)!GW=T&8#s#>B`E#`LnGUQ!J~K{mdI#m TBfGb;W4GIh59at6OWf{%^o}TT literal 20936 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 literal 27220 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 literal 28488 zcmd6Q3!GJDz4m|449sv9804Z58)Og=hJBlvJ&438AQ%cE8j3jV>&)ofn%ToeNx{5O zQfi&Nq$fS6JgIfc%E~W2$?4bW_?^_yOsUMk)X*%ku`=V>d7k&O_FC`kjrRL>e&6@X z-p_j8|Lwi6cdfP8ICDv=FVntsbp`M-3z;Wx^oM2sdPtszP?AUT(M?lC=?Q#LNZs1OynOfRFYu{1#{&pNdNk$ zcmDd$^V&k`ez*5bG9JG^IB}O|n(rE%xW~`?zE#vs`;O(2Q1a-LMcE^RtvC4X9vSQj z@Ye@xoH#XsIPyr**Xx7h0=lmcjtKBwgChdA%Y3%-ysjzh7WU;we8;;6Cj{(Y9~{4H z-`9)rcMXnr=UE#lKrChQ^2L#?}t296N6EiDMr) zed_qod6PvdnnRUiMJlU8t82TaR*oGtYES4mw8~tm96JpM!)hTnnZw5*b9F5glA}bb zo{HHyW)Z9ycG=Y2t) z)wR@`F+CL23Xf9FATl$7nnw|L7Mfs6u}UYAGJiIkrkG!MoNCiJ=E9s1x>MxjnaG(n zrU|jXb+{9>s!B_zX=y^0LrE7y8k(XGH`7KdJVcusm8%ZNY4e(@>i>kK zMrq0j?f=iz#c&KM_0gypS%qRVG_%$!PZiCSr^Z*>Dj5k+Qp4J)s!Y+sZxpNY6SRsc z)~T$5S1jc?U#!(-JTx(8Yd5;gN>No`=c?+5Rc;I|Y@DmZaVqyaticpp0d%RzhgE^p z;T5XMOmCIxBO_H+8mFUfU_Er}Z7){o3oP_#9m*&^U#z<-zwQ!sINI;Grs|j_Q?aY6 zs;@?{VCQ{Nl|)9Xx<06hETWwvRm4-Ii%#TLaXr0kB@#Hx=O zf!Y?Gn}NVgIQL{$yLu_CgC$REe`eVAJKj0ShIrQ_Z;U5{f+|FH2t~)D$S;;Pw3$at zp`GJ2Wa&?7jb{c^#mLYEeT3uV*e9XdiApezMC5o+Iw>?s2_`8)(Zh+M;&C`s)UPx8 zb&h__r@zD(y~Q8>bT|4c<877W?L41{9exj&X%EHP?ea@^YiY5x*BSrUDM7JDdqX(s z=~Qu(ujDuTj&IjZUvzf2adx*_@QOvakK8u!mz2=gz+W>~UvsR!Rs3#3!xuOEocrtLQ(fb!tyg;bV%4oamJ< z8R8imW=Sn7TAmiLTsp*ZxwTwwL~2+U?binE*A1~h-`byVMEW$wWm`|2Q2q4pqqCUk zIuso*?;|Nrtx!FicE*0ArA(va!&Kt&%z5}aq=o7f>9?E}Qd`{6BIV+DK^G^5*1fHA zlv$ui!^x0rk%nqaD5arxx@tWL)dxer�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 PaYKcExc6e*arpcXj?Xfr diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 06c51435..e23d1a71 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -11,3 +11,7 @@ harness = false [dependencies] ar = "0.8.0" + +[dependencies.object] +version = "0.21.1" +features = ["write"] diff --git a/xtask/src/lib.rs b/xtask/src/lib.rs index e6248d17..3ff66e8f 100644 --- a/xtask/src/lib.rs +++ b/xtask/src/lib.rs @@ -4,12 +4,16 @@ //! //! Also see the docs in `asm.rs`. -use process::Stdio; +use object::{ + read::{Object as _, ObjectSection as _}, + write::{Object, Symbol, SymbolSection}, + SymbolFlags, +}; use std::env::current_dir; use std::{ collections::BTreeMap, fs::{self, File}, - process::{self, Command}, + process::{Command, Stdio}, }; fn toolchain() -> String { @@ -25,6 +29,88 @@ fn rustc() -> Command { cmd } +/// Patches an object file so that it doesn't contain a panic handler. +/// +/// The panic handler defined in `asm/lib.rs` should never get linked to the final program. +/// Unfortunately, Rust uses the same symbol for all panic handlers, and doesn't really like it if +/// that ends up with multiple ones. It also demands that we define a panic handler for the inline +/// assembly shim, even though none of that code should ever be able to panic. The result of this is +/// that the supposedly unreachable panic handler does end up getting linked into the final program, +/// unless it is built with optimizations enabled. +/// +/// To fix that, we put the never-to-be-used panic handler into its own section via +/// `#[link_section]`, and then use this function to delete that section. +fn trim_panic_handler(obj_file: &str) { + let objdata = fs::read(&obj_file).unwrap(); + let obj = object::File::parse(&objdata).unwrap(); + + let mut writer = Object::new(obj.format(), obj.architecture(), obj.endianness()); + for (sec_index, section) in obj.sections().enumerate() { + assert_eq!(section.index().0, sec_index); + + let name = section.name().unwrap(); + if name.starts_with(".ARM") + || name.starts_with(".rel.ARM") + || name.contains("cortex_m_asm_panic") + || name == ".strtab" + || name == ".symtab" + { + // We drop the ARM exception handling tables since they refer back to the panic handler + // symbol. They aren't used either way. We also drop `.strtab` and `.symtab` since they + // otherwise end up having the wrong section type. The object crate should rebuild any + // index tables when writing the file. + continue; + } + + let segment = section + .segment_name() + .unwrap() + .map(|s| s.as_bytes()) + .unwrap_or(&[]); + let sec_id = writer.add_section(segment.to_vec(), name.as_bytes().to_vec(), section.kind()); + + let align = if section.align() == 0 { + // Not sure why but `section.align()` can return 0. + 1 + } else { + section.align() + }; + writer.append_section_data(sec_id, section.data().unwrap(), align); + + // Import all symbols from the section. + for (_sym_idx, symbol) in obj.symbols() { + if symbol.section_index() == Some(section.index()) { + writer.add_symbol(Symbol { + name: symbol.name().unwrap_or("").as_bytes().to_vec(), + value: symbol.address(), + size: symbol.size(), + kind: symbol.kind(), + scope: symbol.scope(), + weak: symbol.is_weak(), + section: match symbol.section() { + object::SymbolSection::Unknown => unimplemented!(), + object::SymbolSection::None => SymbolSection::None, + object::SymbolSection::Undefined => SymbolSection::Undefined, + object::SymbolSection::Absolute => SymbolSection::Absolute, + object::SymbolSection::Common => SymbolSection::Common, + object::SymbolSection::Section(_) => SymbolSection::Section(sec_id), + }, + flags: match symbol.flags() { + SymbolFlags::None => SymbolFlags::None, + SymbolFlags::Elf { st_info, st_other } => { + SymbolFlags::Elf { st_info, st_other } + } + _ => unimplemented!(), + }, + }); + } + } + } + + let obj = writer.write().unwrap(); + fs::write(&obj_file, obj).unwrap(); +} + fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) { let mut cmd = rustc(); @@ -74,6 +160,11 @@ fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) { let status = cmd.status().unwrap(); assert!(status.success()); + if !plugin_lto { + // Post-process the object file. + trim_panic_handler(&obj_file); + } + // Archive `target.o` -> `bin/target.a`. let mut builder = ar::Builder::new(File::create(format!("bin/{}.a", file_stub)).unwrap()); From b715d1ba36a61ae58734fee9631dc794270f411e Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sun, 30 Aug 2020 21:06:27 +0200 Subject: [PATCH 5/6] Bump MSRV to 1.38.0 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 14e5602c..5547b782 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ branches: - trying rust: - - 1.35.0 + - 1.38.0 - stable - nightly From c27c8e5b063bd7058ba05dc3a9fa7886a1b1545c Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 31 Aug 2020 22:45:27 +0200 Subject: [PATCH 6/6] Update documented MSRV --- README.md | 2 +- src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a098d987..6bd8aedd 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This project is developed and maintained by the [Cortex-M team][team]. ## Minimum Supported Rust Version (MSRV) -This crate is guaranteed to compile on stable Rust 1.31 and up. It might compile with older versions but that may change in any new patch release. +This crate is guaranteed to compile on stable Rust 1.38 and up. It might compile with older versions but that may change in any new patch release. ## License diff --git a/src/lib.rs b/src/lib.rs index f0de721c..f30408e1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -52,7 +52,7 @@ //! //! # Minimum Supported Rust Version (MSRV) //! -//! This crate is guaranteed to compile on stable Rust 1.31 and up. It *might* +//! This crate is guaranteed to compile on stable Rust 1.38 and up. It *might* //! compile with older versions but that may change in any new patch release. #![cfg_attr(feature = "inline-asm", feature(asm))]