- st8 [r10] = r3, J_LC-J_PREDS\r
- st8 [r11] = r2, J_R4-J_BSP\r
- ;;\r
- st8 [r10] = r16, J_R5-J_LC\r
- st8 [r32] = r14, J_NATS // Note: Unat at the \r
- // beginning of the save area\r
- mov r15 = ar.pfs\r
- ;;\r
- //\r
- // save preserved general registers & NaT's\r
- //\r
- st8.spill [r11] = r4, J_R6-J_R4\r
- ;;\r
- st8.spill [r10] = r5, J_R7-J_R5 \r
- ;;\r
- st8.spill [r11] = r6, J_SP-J_R6\r
- ;;\r
- st8.spill [r10] = r7, J_F3-J_R7 \r
- ;;\r
- st8.spill [r11] = sp, J_F2-J_SP\r
- ;;\r
- //\r
- // save spilled Unat and pfs registers\r
- //\r
- mov r2 = ar.unat // save Unat register after spill\r
- ;;\r
- st8 [r32] = r2, J_PFS-J_NATS // save unat for spilled regs\r
- ;;\r
- st8 [r32] = r15 // save pfs\r
- //\r
- // save floating registers \r
- //\r
- stf.spill [r11] = f2, J_F4-J_F2\r
- stf.spill [r10] = f3, J_F5-J_F3 \r
- ;;\r
- stf.spill [r11] = f4, J_F16-J_F4\r
- stf.spill [r10] = f5, J_F17-J_F5 \r
- ;;\r
- stf.spill [r11] = f16, J_F18-J_F16\r
- stf.spill [r10] = f17, J_F19-J_F17 \r
- ;;\r
- stf.spill [r11] = f18, J_F20-J_F18\r
- stf.spill [r10] = f19, J_F21-J_F19 \r
- ;;\r
- stf.spill [r11] = f20, J_F22-J_F20\r
- stf.spill [r10] = f21, J_F23-J_F21 \r
- ;;\r
- stf.spill [r11] = f22, J_F24-J_F22\r
- stf.spill [r10] = f23, J_F25-J_F23 \r
- ;;\r
- stf.spill [r11] = f24, J_F26-J_F24\r
- stf.spill [r10] = f25, J_F27-J_F25 \r
- ;;\r
- stf.spill [r11] = f26, J_F28-J_F26\r
- stf.spill [r10] = f27, J_F29-J_F27 \r
- ;;\r
- stf.spill [r11] = f28, J_F30-J_F28\r
- stf.spill [r10] = f29, J_F31-J_F29 \r
- ;;\r
- stf.spill [r11] = f30, J_FPSR-J_F30\r
- stf.spill [r10] = f31, J_B0-J_F31 // size of f31 + fpsr\r
- //\r
- // save FPSR register & branch registers\r
- //\r
- mov r2 = ar.fpsr // save fpsr register\r
- mov r3 = b0 \r
- ;;\r
- st8 [r11] = r2, J_B1-J_FPSR\r
- st8 [r10] = r3, J_B2-J_B0\r
- mov r2 = b1\r
- mov r3 = b2 \r
- ;;\r
- st8 [r11] = r2, J_B3-J_B1\r
- st8 [r10] = r3, J_B4-J_B2\r
- mov r2 = b3\r
- mov r3 = b4 \r
- ;;\r
- st8 [r11] = r2, J_B5-J_B3\r
- st8 [r10] = r3\r
- mov r2 = b5 \r
- ;;\r
- st8 [r11] = r2\r
- ;;\r
- //\r
- // return\r
- //\r
- mov r8 = r0 // return 0 from setjmp\r
- mov ar.unat = r14 // restore unat\r
- br.ret.sptk b0\r