From 6f4aef761685d83309156fadc50267d92958318b Mon Sep 17 00:00:00 2001 From: Anders429 Date: Mon, 16 Sep 2024 14:26:49 -0600 Subject: [PATCH] Push and pop registers in system mode. --- src/asm_runtime.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/asm_runtime.rs b/src/asm_runtime.rs index e384ae2..35ec964 100644 --- a/src/asm_runtime.rs +++ b/src/asm_runtime.rs @@ -149,11 +149,11 @@ core::arch::global_asm! { "ldr r12, [r12]", bracer::when!(("r12" != "#0")[1] { bracer::a32_read_spsr_to!("r3"), - "push {{r3, lr}}", bracer::a32_set_cpu_control!(System, irq_masked = true, fiq_masked = true), + "push {{r3, lr}}", bracer::a32_fake_blx!("r12"), - bracer::a32_set_cpu_control!(IRQ, irq_masked = true, fiq_masked = true), "pop {{r3, lr}}", + bracer::a32_set_cpu_control!(IRQ, irq_masked = true, fiq_masked = true), bracer::a32_write_spsr_from!("r3"), }),