Index: lib/libc/arch/aarch64/gen/swapcontext.S =================================================================== RCS file: /cvsroot/src/lib/libc/arch/aarch64/gen/swapcontext.S,v retrieving revision 1.1 diff -u -p -r1.1 swapcontext.S --- lib/libc/arch/aarch64/gen/swapcontext.S 10 Aug 2014 05:47:36 -0000 1.1 +++ lib/libc/arch/aarch64/gen/swapcontext.S 21 Nov 2018 20:01:21 -0000 @@ -40,14 +40,14 @@ ENTRY(swapcontext) sub sp, sp, #32 /* allocate stack frame */ - stp x29, x30, [sp, #16] /* save FP & RA */ + stp x29, x30, [sp, #16] /* save FP & LR */ add x29, sp, #16 /* new FP */ - stp x0, x1, [sp, #0] /* save oucp & ucp */ + stp x0, x1, [sp, #0] /* save oucp (x0) & ucp (x1) */ bl _C_LABEL(_getcontext) /* getcontext(oucp) */ - mov x3, x0 /* save return value */ + mov x19, x0 /* save return value */ - ldp x2, x0, [sp, #0] /* restore oucp & ucp */ + ldp x2, x0, [sp, #0] /* load oucp (x2) & ucp (x1) */ ldp x29, x30, [sp, #16] /* restore FP & RA */ add sp, sp, #32 /* free stack frame */ @@ -58,7 +58,7 @@ ENTRY(swapcontext) str x4, [x2, #_UC_REGS_SP] /* Adjust saved SP. */ str x30, [x2, #_UC_REGS_PC] /* Adjust saved LR. */ - cbz x3, _C_LABEL(setcontext)/* setcontext if getcontext succeeded */ - mov x0, x3 /* restore getcontext return value */ + cbz x19, _C_LABEL(setcontext)/* setcontext if getcontext succeeded */ + mov x0, x19 /* restore getcontext return value */ ret /* return on error from getcontext */ END(swapcontext)