summaryrefslogtreecommitdiff
path: root/newlib/libc/sys/sysvi386/_setjmp.s
blob: 8f191b59a7b2b3161435e8aaa358d7855cbb95af (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
/
/ our buffer looks like:
/  eax,ebx,ecx,edx,esi,edi,esp,ebp,pc

	.globl	_setjmp
	.globl	setjmp
_setjmp:
setjmp:
	pushl	%ebx
	movl	8(%esp), %ebx
	movl	%eax, (%ebx)
	popl	%eax
	movl	%eax, 4(%ebx)
	movl	%ecx, 8(%ebx)
	movl	%edx, 12(%ebx)
	movl	%esi, 16(%ebx)
	movl	%edi, 20(%ebx)
	movl	%esp, 24(%ebx)
	movl	%ebp, 28(%ebx)
	movl	(%esp), %eax
	movl	%eax, 32(%ebx)
	xorl	%eax, %eax
	ret