/* Copyright (c) 2003 Anthony Green */ /* This is a simple version of setjmp and longjmp for iq2000. */ /* int setjmp (jmp_buf); */ .globl setjmp .ent setjmp setjmp: sw r16,0(r4) /* rs0 */ sw r17,4(r4) /* rs1 */ sw r18,8(r4) /* rs2 */ sw r19,12(r4) /* rs3 */ sw r20,16(r4) /* rs4 */ sw r21,20(r4) /* rs5 */ sw r22,24(r4) /* rs6 */ sw r23,28(r4) /* rs7 */ sw r30,32(r4) /* rs8 */ sw r29,36(r4) sw r31,40(r4) move r2,r0 j r31 .end setjmp /* volatile void longjmp (jmp_buf, int); */ .globl longjmp .ent longjmp longjmp: lw r16,0(r4) /* rs0 */ lw r17,4(r4) /* rs1 */ lw r18,8(r4) /* rs2 */ lw r19,12(r4) /* rs3 */ lw r20,16(r4) /* rs4 */ lw r21,20(r4) /* rs5 */ lw r22,24(r4) /* rs6 */ lw r23,28(r4) /* rs7 */ lw r30,32(r4) /* rs8 */ lw r29,36(r4) lw r31,40(r4) bne r5,r0,1f li r5,1 1: move r2,r5 j r31 .end longjmp