summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/h8300/bsd-setjmp.S
blob: 77c810fe06004b79ba1cef114cb82b4251979035 (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
/* BSD `_setjmp' entry point to `sigsetjmp (..., 1)'. H8/300 version. */

#include <jmpbuf-offsets.h>

#ifdef __H8300S__
	.h8300s
#else
	.h8300h
#endif
	.text

.global setjmp

setjmp:
	add.l	#JB_SIZE,er0
	mov.l	@sp,er1		; return PC
	mov.l	er1,@-er0
	mov.l	sp,@-er0
	mov.l	er6,@-er0
	mov.l	er5,@-er0
	mov.l	er4,@-er0
	sub.l	er0,er0
#if !defined(__PIC__)
	jmp	@__sigjmp_save
#else
	mov.l	@(__sigjmp_save@GOTOFF,er5),er1
	jmp	@er3
#endif
	.end