Index: lib/libc/arch/arm/genassym.cf =================================================================== RCS file: /cvsroot/src/lib/libc/arch/arm/genassym.cf,v retrieving revision 1.1 diff -u -p -u -r1.1 genassym.cf --- lib/libc/arch/arm/genassym.cf 27 Sep 2012 11:20:20 -0000 1.1 +++ lib/libc/arch/arm/genassym.cf 30 Apr 2013 10:42:15 -0000 @@ -32,5 +32,6 @@ include include +define _UC_REGS_R0 offsetof(ucontext_t, uc_mcontext.__gregs[_REG_R0]) define _UC_REGS_SP offsetof(ucontext_t, uc_mcontext.__gregs[_REG_SP]) define _UC_REGS_PC offsetof(ucontext_t, uc_mcontext.__gregs[_REG_PC]) Index: lib/libc/arch/arm/gen/swapcontext.S =================================================================== RCS file: /cvsroot/src/lib/libc/arch/arm/gen/swapcontext.S,v retrieving revision 1.9 diff -u -p -u -r1.9 swapcontext.S --- lib/libc/arch/arm/gen/swapcontext.S 28 Nov 2012 02:18:24 -0000 1.9 +++ lib/libc/arch/arm/gen/swapcontext.S 30 Apr 2013 10:42:15 -0000 @@ -44,6 +44,8 @@ ENTRY(swapcontext) add sp, sp, #4 ldmfd sp!, {r0-r1, lr} RETc(ne) + mov ip, #0 + str ip, [r0, #_UC_REGS_R0] str sp, [r0, #_UC_REGS_SP] /* Adjust saved SP. */ str lr, [r0, #_UC_REGS_PC] /* Adjust saved PC. */ #ifdef SOFTFLOAT