diff --git a/src/system/libroot/posix/arch/arm/siglongjmp.S b/src/system/libroot/posix/arch/arm/siglongjmp.S index 07fe6fd06a..9101e23bb8 100644 --- a/src/system/libroot/posix/arch/arm/siglongjmp.S +++ b/src/system/libroot/posix/arch/arm/siglongjmp.S @@ -5,16 +5,13 @@ #include -//#include "setjmp_internal.h" - /* int __siglongjmp(jmp_buf buffer, int value) */ FUNCTION(siglongjmp): FUNCTION(longjmp): FUNCTION(_longjmp): - str r1,[r0] - ldmia r0,{r0-r14} - bx lr -// bl __longjmp_return + str r1, [r0, #4] + ldmia r0, {r0-r14} + b __longjmp_return FUNCTION_END(siglongjmp) FUNCTION_END(longjmp) FUNCTION_END(_longjmp) diff --git a/src/system/libroot/posix/arch/arm/sigsetjmp.S b/src/system/libroot/posix/arch/arm/sigsetjmp.S index bf77eadf4e..74e046d87e 100644 --- a/src/system/libroot/posix/arch/arm/sigsetjmp.S +++ b/src/system/libroot/posix/arch/arm/sigsetjmp.S @@ -5,33 +5,25 @@ #include -//#include "setjmp_internal.h" - /* int sigsetjmp(jmp_buf buffer, int saveMask) */ FUNCTION(__sigsetjmp): FUNCTION(sigsetjmp): - stmdb sp!, {r4, lr} - stmia r0, {r0-r14} - str lr,[r0, #60] - mrs r1,cpsr - str r1,[r0,#64] - ldr r1,[r0,#4] - mov r0, #0 - - bl __setjmp_save_sigs - ldmia sp!, {r4, pc} -FUNCTION_END(__sigsetjmp) + stmia r0, {r0-r14} + mrs r1, cpsr + str r1, [r0, #64] + ldr r1, [r0, #4] + b __setjmp_save_sigs FUNCTION_END(sigsetjmp) +FUNCTION_END(__sigsetjmp) /* int setjmp(jmp_buf buffer) */ FUNCTION(setjmp): - stmia r0, {r0-r14} - str lr,[r0, #60] - mrs r1,cpsr - str r1,[r0,#64] - ldr r1,[r0,#4] - mov r0, #0 + stmia r0, {r0-r14} + mrs r1, cpsr + str r1, [r0, #64] + ldr r1, [r0, #4] + mov r0, #0 bx lr FUNCTION_END(setjmp)