From febee0a7a2cabdc39ae9be1c90d08661708e6a9a Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 14 May 2015 21:52:45 +0000 Subject: [PATCH] [CRT] setjmp is a macro expanding to _setjmp or _setjmpex. In soviet russia and on ARM builds, the compiler will convert invocation of _setjmp back into a call to setjmp. The compiler handles _setjmp and _setjmpex in the same way, generating code where r0 points to the jump_buf and r1 points to the current functions stack frame (sp on function entry). So make setjmp and _setjmp aliases to _setjmpex and make the latter use r1. svn path=/trunk/; revision=67729 --- reactos/lib/sdk/crt/setjmp/arm/setjmp.s | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/reactos/lib/sdk/crt/setjmp/arm/setjmp.s b/reactos/lib/sdk/crt/setjmp/arm/setjmp.s index cb1ddbb8960..47155afe09a 100644 --- a/reactos/lib/sdk/crt/setjmp/arm/setjmp.s +++ b/reactos/lib/sdk/crt/setjmp/arm/setjmp.s @@ -12,14 +12,13 @@ /* CODE **********************************************************************/ TEXTAREA - LEAF_ENTRY _setjmp - - mov r1, sp + LEAF_ENTRY _setjmpex /* Store r1 (->Frame) and r4 - r11 */ stmia r0!, {r1,r4-r11} - /* Store r1 (->Sp), lr (->Pc), fp (->Fpscr) */ + /* Store sp (->Sp), lr (->Pc), fp (->Fpscr) */ + mov r1, sp stmia r0!, {r1,lr,fp} /* Store NEON registers */ @@ -35,7 +34,10 @@ /* Return 0 */ mov r0, #0 bx lr - LEAF_END _setjmp + LEAF_END _setjmpex + + IMPORT _setjmp, WEAK _setjmpex + IMPORT setjmp, WEAK _setjmpex LEAF_ENTRY longjmp