166926Sobrien/* $NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $ */ 266926Sobrien 366926Sobrien#include <machine/asm.h> 466926Sobrien 566928Sobrien#if (defined(LIBC_SCCS) || defined(LIBC_RCS)) && !defined(lint) 666926Sobrien .text 766928Sobrien .asciz "$FreeBSD$" 866926Sobrien#endif 966926Sobrien 1066926Sobrien/* 1166926Sobrien * C library -- _setjmp, _longjmp 1266926Sobrien * 1366926Sobrien * _longjmp(a,v) 1466926Sobrien * will generate a "return(v?v:1)" from the last call to 1566926Sobrien * _setjmp(a) 1666926Sobrien * by restoring registers from the stack. 1766926Sobrien * The previous signal state is NOT restored. 1866926Sobrien */ 1966926Sobrien 2066926SobrienENTRY(_setjmp) 2166926Sobrien mflr 11 2266926Sobrien mfcr 12 2366926Sobrien mr 10,1 2466926Sobrien mr 9,2 2566926Sobrien stmw 9,8(3) 2666926Sobrien li 3,0 2766926Sobrien blr 2866926Sobrien 2966926SobrienENTRY(_longjmp) 3066926Sobrien lmw 9,8(3) 3166926Sobrien mtlr 11 3266926Sobrien mtcr 12 3366926Sobrien mr 2,9 3466926Sobrien mr 1,10 3568544Sbenno mr 3,4 3666926Sobrien blr 37