diff --git a/kernel/exception_table.S b/kernel/exception_table.S index 6638a6d..c205beb 100644 --- a/kernel/exception_table.S +++ b/kernel/exception_table.S @@ -46,11 +46,11 @@ ldp x28, x29, [sp, 16 * 14] ldp x30, lr, [sp, 16 * 15] - mrs x0, spsr_el1 - mrs x1, elr_el1 - mrs x2, esr_el1 ldp x0, x1, [sp, 16 * 16] ldr x2, [sp, 16 * 17] + msr spsr_el1, x0 + msr elr_el1, x1 + msr esr_el1, x2 add sp, sp, 36 * 8 .endm diff --git a/kernel/lib/interrupt.c b/kernel/lib/interrupt.c index 6d17a50..c174e6e 100644 --- a/kernel/lib/interrupt.c +++ b/kernel/lib/interrupt.c @@ -105,7 +105,8 @@ void irq_handler(void) void wfe(void) { if (!global_interrupt_pool) { - asm volatile("wfe"); + // asm volatile("wfe"); + asm volatile("nop"); return; }