From a85c91d6f0f5845a2269b2431f70d55c9d7e98b6 Mon Sep 17 00:00:00 2001 From: "Ithamar R. Adema" Date: Mon, 18 Oct 2010 00:50:59 +0000 Subject: [PATCH] * Fix setjmp/jmpbuf_t size so we can finally get to the KDL prompt git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38993 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/posix/arch/arm/arch_setjmp.h | 3 +-- src/system/libroot/posix/arch/arm/sigsetjmp.S | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/headers/posix/arch/arm/arch_setjmp.h b/headers/posix/arch/arm/arch_setjmp.h index 2a86ea60ac..a2ce56e36b 100644 --- a/headers/posix/arch/arm/arch_setjmp.h +++ b/headers/posix/arch/arm/arch_setjmp.h @@ -5,8 +5,7 @@ #ifndef _ARCH_SETJMP_H_ #define _ARCH_SETJMP_H_ -#define _SETJMP_BUF_SZ (7+6+2+8*((96/8)/4)) +#define _SETJMP_BUF_SZ ((15+2)*4) typedef int __jmp_buf[_SETJMP_BUF_SZ]; -#warning ARM: fix jmpbuf size #endif /* _ARCH_SETJMP_H_ */ diff --git a/src/system/libroot/posix/arch/arm/sigsetjmp.S b/src/system/libroot/posix/arch/arm/sigsetjmp.S index 14bab2ef88..a0f59ad758 100644 --- a/src/system/libroot/posix/arch/arm/sigsetjmp.S +++ b/src/system/libroot/posix/arch/arm/sigsetjmp.S @@ -10,6 +10,7 @@ /* 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 @@ -18,19 +19,21 @@ FUNCTION(sigsetjmp): mov r0, #0 bl __setjmp_save_sigs + ldmia sp!, {r4, pc} FUNCTION_END(__sigsetjmp) FUNCTION_END(sigsetjmp) /* int setjmp(jmp_buf buffer) */ FUNCTION(setjmp): + 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 __sigsetjmp + ldmia sp!, {r4, pc} FUNCTION_END(setjmp) #pragma weak _setjmp=setjmp