libcortex_a9: add interrupt exit support for interrupt_handler macro #107
@ -56,8 +56,8 @@ macro_rules! interrupt_handler {
|
||||
asm!(
|
||||
// setup SP, depending on CPU 0 or 1
|
||||
// and preserve registers
|
||||
"SUB lr, lr, #4",
|
||||
"STMFD sp!, {{r0-r12, lr}}",
|
||||
"sub lr, lr, #4",
|
||||
"stmfd sp!, {{r0-r12, lr}}",
|
||||
"mrc p15, #0, r0, c0, c0, #5",
|
||||
concat!("movw r1, :lower16:", stringify!($stack0)),
|
||||
concat!("movt r1, :upper16:", stringify!($stack0)),
|
||||
@ -70,7 +70,7 @@ macro_rules! interrupt_handler {
|
||||
concat!("bl ", stringify!($name2)),
|
||||
"pop {{r0, r1}}",
|
||||
"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)
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user