blob: 5a30810b54ffc336fcb8aa29e99d063ae6ada6df (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* $NetBSD: _setjmp.S,v 1.1 1997/03/29 20:55:53 thorpej Exp $ */
#include <machine/asm.h>
#if (defined(LIBC_SCCS) || defined(LIBC_RCS)) && !defined(lint)
.text
.asciz "$FreeBSD$"
#endif
/*
* C library -- _setjmp, _longjmp
*
* _longjmp(a,v)
* will generate a "return(v?v:1)" from the last call to
* _setjmp(a)
* by restoring registers from the stack.
* The previous signal state is NOT restored.
*/
ENTRY(_setjmp)
mflr 11
mfcr 12
mr 10,1
mr 9,2
stmw 9,8(3)
li 3,0
blr
ENTRY(_longjmp)
lmw 9,8(3)
mtlr 11
mtcr 12
mr 2,9
mr 1,10
mr 3,4
blr
|