#include "setarch.h" .file "setjmp.S" .section .text .align 2 .global _setjmp _setjmp: #if defined(__H8300SX__) mov.l er7,@er0+ mov.l er6,@er0+ mov.l er5,@er0+ mov.l er4,@er0+ mov.l @sp,@er0 sub.l er0,er0 #elif defined(__H8300H__) || defined(__H8300S__) mov.l er7,@er0 mov.l er6,@(4,er0) mov.l er5,@(8,er0) mov.l er4,@(12,er0) mov.l @sp,er1 mov.l er1,@(16,er0) sub.l er0,er0 #else mov.w r7,@r0 mov.w r6,@(2,r0) mov.w r5,@(4,r0) mov.w r4,@(6,r0) mov.w @sp,r1 mov.w r1,@(8,r0) sub.w r0,r0 #endif rts .global _longjmp _longjmp: #if defined(__H8300H__) || defined (__H8300S__) || defined (__H8300SX__) mov.l @er0+,er7 mov.l @er0+,er6 mov.l @er0+,er5 mov.l @er0+,er4 #if defined(__H8300SX__) mov.l @er0,@sp #else mov.l @er0,er2 mov.l er2,@sp #endif #if (__INT_MAX__ <= 32767) mov.w r1,r0 #else mov.l er1,er0 #endif bne .L1 sub er0,er0 adds #1,er0 #else mov.w @r0+,r7 mov.w @r0+,r6 mov.w @r0+,r5 mov.w @r0+,r4 mov.w @r0,r2 mov.w r2,@sp mov.w r1,r0 bne .L1 mov.w #1,r0 #endif .L1: rts