summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/v850/__longjmp.S
blob: 0996099185882f5816e74f83f2d190bde3535e9d (plain)
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
/*
 * libc/sysdeps/linux/v850/longjmp.S -- `longjmp' for v850
 *
 *  Copyright (C) 2001,02  NEC Corporation
 *  Copyright (C) 2001,02  Miles Bader <miles@gnu.org>
 *
 * This file is subject to the terms and conditions of the GNU Lesser
 * General Public License.  See the file COPYING.LIB in the main
 * directory of this archive for more details.
 *
 * Written by Miles Bader <miles@gnu.org>
 */

#include <clinkage.h>

	.text
C_ENTRY(__longjmp):
	/* Save registers */
	mov	r6, ep
	sld.w	0[ep], sp
	sld.w	4[ep], lp
	sld.w	8[ep], r2
	sld.w	12[ep], r20
	sld.w	16[ep], r21
	sld.w	20[ep], r22
	sld.w	24[ep], r23
	sld.w	28[ep], r24
	sld.w	32[ep], r25
	sld.w	36[ep], r26
	sld.w	40[ep], r27
	sld.w	44[ep], r28
	sld.w	48[ep], r29
	mov	1, r10			/* return val */
	jmp	[lp]
C_END(__longjmp)
libc_hidden_def(__longjmp)