riscv64: fix setjmp so we're actually using the right cookie!

Test: setjmp.setjmp_smoke
Change-Id: Ia0a160656b9e83cdec611ac196b1ae62f082ab6c
diff --git a/libc/arch-riscv64/bionic/setjmp.S b/libc/arch-riscv64/bionic/setjmp.S
index 812cfd1..2811bbe 100644
--- a/libc/arch-riscv64/bionic/setjmp.S
+++ b/libc/arch-riscv64/bionic/setjmp.S
@@ -141,16 +141,14 @@
   addi a2, a0, _JB_SIGMASK // old_mask.
   call PIC_PLT(sigprocmask)
 
-  ld a1, 8(sp)
-
 1:
-  // Restore original a0/a1/ra.
+  // Restore original a0/ra.
   ld a0, 0(sp)
-  ld a1, 8(sp)
   ld ra, 16(sp)
   addi sp, sp, 24
 
-  // Mask off the signal flag bit.
+  // Get the cookie.
+  ld a1, _JB_SIGFLAG(a0)
   andi a1, a1, -2
 
   // Save core registers.
@@ -169,7 +167,7 @@
   sd s9,  _JB_S9(a0)
   sd s10, _JB_S10(a0)
   sd s11, _JB_S11(a0)
-  sd sp,  _JB_SP(a0)
+  sd a2,  _JB_SP(a0)
   m_unmangle_registers a1, sp_reg=a2
 
   // Save floating point registers.