1/* Copyright (c) 2003 Anthony Green <green@moxielogic.com> */ 2/* This is a simple version of setjmp and longjmp for iq2000. */ 3 4 5/* int setjmp (jmp_buf); */ 6#include <picolibc.h> 7 8 .globl setjmp 9 .ent setjmp 10setjmp: 11 sw r16,0(r4) /* rs0 */ 12 sw r17,4(r4) /* rs1 */ 13 sw r18,8(r4) /* rs2 */ 14 sw r19,12(r4) /* rs3 */ 15 sw r20,16(r4) /* rs4 */ 16 sw r21,20(r4) /* rs5 */ 17 sw r22,24(r4) /* rs6 */ 18 sw r23,28(r4) /* rs7 */ 19 sw r30,32(r4) /* rs8 */ 20 21 sw r29,36(r4) 22 sw r31,40(r4) 23 24 move r2,r0 25 26 j r31 27 28 .end setjmp 29 30/* volatile void longjmp (jmp_buf, int); */ 31 .globl longjmp 32 .ent longjmp 33longjmp: 34 lw r16,0(r4) /* rs0 */ 35 lw r17,4(r4) /* rs1 */ 36 lw r18,8(r4) /* rs2 */ 37 lw r19,12(r4) /* rs3 */ 38 lw r20,16(r4) /* rs4 */ 39 lw r21,20(r4) /* rs5 */ 40 lw r22,24(r4) /* rs6 */ 41 lw r23,28(r4) /* rs7 */ 42 lw r30,32(r4) /* rs8 */ 43 44 lw r29,36(r4) 45 lw r31,40(r4) 46 47 bne r5,r0,1f 48 li r5,1 491: 50 move r2,r5 51 52 j r31 53 54 .end longjmp 55