Skip to content

Commit 6a46b61

Browse files
committed
Fixed the assembly to work on ARMv6-M too.
Turns out we don't check the assembly inside inline(asm) functions until the function is actually called (or referenced).
1 parent 521ebcb commit 6a46b61

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

cortex-m/src/asm.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,14 @@ pub unsafe fn semihosting_syscall(nr: u32, arg: u32) -> u32 {
197197
pub unsafe fn enter_unprivileged_psp(psp: *const u32, entry: extern "C" fn() -> !) -> ! {
198198
unsafe {
199199
core::arch::asm!(
200-
"mrs {tmp}, CONTROL",
201-
"orr {tmp}, #3",
202-
"msr PSP, {psp}",
203-
"msr CONTROL, {tmp}",
200+
"mrs {tmp}, CONTROL",
201+
"orrs {tmp}, {flags}",
202+
"msr CONTROL, {tmp}",
203+
"msr PSP, {psp}",
204204
"isb",
205-
"bx {ent}",
205+
"bx {ent}",
206206
tmp = in(reg) 0,
207+
flags = in(reg) 3,
207208
psp = in(reg) psp,
208209
ent = in(reg) entry,
209210
options(noreturn, nostack)

0 commit comments

Comments
 (0)