libcortex_a9: add interrupt exit support for interrupt_handler macro #107

Merged
sb10q merged 4 commits from morgan/zynq-rs:interrupt into master 2023-11-20 12:30:29 +08:00
Showing only changes of commit c91c8cc6c3 - Show all commits

View File

@ -56,8 +56,8 @@ macro_rules! interrupt_handler {
asm!( asm!(
// setup SP, depending on CPU 0 or 1 // setup SP, depending on CPU 0 or 1
// and preserve registers // and preserve registers
"SUB lr, lr, #4", "sub lr, lr, #4",
"STMFD sp!, {{r0-r12, lr}}", "stmfd sp!, {{r0-r12, lr}}",
morgan marked this conversation as resolved Outdated
Outdated
Review

Nitpicking but the other instructions are lower-case.

Nitpicking but the other instructions are lower-case.
"mrc p15, #0, r0, c0, c0, #5", "mrc p15, #0, r0, c0, c0, #5",
concat!("movw r1, :lower16:", stringify!($stack0)), concat!("movw r1, :lower16:", stringify!($stack0)),
concat!("movt r1, :upper16:", stringify!($stack0)), concat!("movt r1, :upper16:", stringify!($stack0)),
@ -70,7 +70,7 @@ macro_rules! interrupt_handler {
concat!("bl ", stringify!($name2)), concat!("bl ", stringify!($name2)),
"pop {{r0, r1}}", "pop {{r0, r1}}",
"mov sp, r0", "mov sp, r0",
"LDMFD sp!, {{r0-r12, pc}}^", // caret ^ : copy SPSR to the CPSR "ldmfd sp!, {{r0-r12, pc}}^", // caret ^ : copy SPSR to the CPSR
options(noreturn) options(noreturn)
); );
} }