/* setjmp for am33. Copyright (C) 2001, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include #define _ASM #define _SETJMP_H #include #include ENTRY (__sigsetjmp) .Lsigsetjmp: /* Save registers. */ mov d0,a0 mov d2,(0,a0) mov d3,(4,a0) mov mdr,d0 mov d0,(8,a0) /* Restore d0 for __sigjmp_save. */ mov a0,d0 mov a2,(12,a0) mov a3,(16,a0) mov sp,a1 mov a1,(20,a0) add 24,a0 mov r4,(a0+) mov r5,(a0+) mov r6,(a0+) mov r7,(a0+) #ifdef __AM33_2__ fmov fs4,(a0+) fmov fs5,(a0+) fmov fs6,(a0+) fmov fs7,(a0+) fmov fs8,(a0+) fmov fs9,(a0+) fmov fs10,(a0+) fmov fs11,(a0+) fmov fs12,(a0+) fmov fs13,(a0+) fmov fs14,(a0+) fmov fs15,(a0+) fmov fs16,(a0+) fmov fs17,(a0+) fmov fs18,(a0+) fmov fs19,(a0+) #endif /* Make a tail call to __sigjmp_save; it takes the same args. */ jmp __sigjmp_save END (__sigsetjmp) /* BSD `_setjmp' entry point to `sigsetjmp (..., 1)'. */ ENTRY (setjmp) /* Tail-call setsetjmp with savesigs==1. */ mov 1,d1 bra .Lsigsetjmp END (setjmp) /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. */ ENTRY (_setjmp) /* Tail-call setsetjmp with savesigs==0. */ clr d1 bra .Lsigsetjmp END (_setjmp)