From 112928594ce3065c428d081e9b0297e5b8c55f2b Mon Sep 17 00:00:00 2001 From: Anup Patel Date: Sat, 9 Jul 2011 10:43:27 +0530 Subject: [PATCH] Updated archLongJump make is more stable. All test cases from testsuite work properly. --- ports/armv7a/atomport-asm.S | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ports/armv7a/atomport-asm.S b/ports/armv7a/atomport-asm.S index 9208fc4..6dd6160 100644 --- a/ports/armv7a/atomport-asm.S +++ b/ports/armv7a/atomport-asm.S @@ -59,19 +59,15 @@ archSetJump: .globl archLongJump archLongJump: mrs r1, cpsr_all - SET_CURRENT_MODE CPSR_MODE_UNDEFINED - mov sp, r0 - SET_CURRENT_MODE CPSR_MODE_ABORT - mov sp, r0 SET_CURRENT_MODE CPSR_MODE_IRQ mov sp, r0 SET_CURRENT_MODE CPSR_MODE_FIQ mov sp, r0 msr cpsr_all, r1 ldr r1, [r0], #4 /* Get CPSR from stack */ + orr r2, r1, #(CPSR_IRQ_DISABLED | CPSR_FIQ_DISABLED) + msr cpsr_all, r2 msr spsr_all, r1 - orr r1, r1, #(CPSR_IRQ_DISABLED | CPSR_FIQ_DISABLED) - msr cpsr_all, r1 ldm r0, {r0-r15}^ mov r0, r0 /* NOP */