xref: /DragonStub/lib/ia32/setjmp.S (revision 803b49c40bb0b720b90d9c31d372911f1b946aa7)
1/*
2 * Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
3 * This program and the accompanying materials are licensed and made
4available
5 * under the terms and conditions of the BSD License which accompanies
6this
7 * distribution.  The full text of the license may be found at
8 * http://opensource.org/licenses/bsd-license.php.
9 *
10 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
11BASIS,
12 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
13 * IMPLIED.
14 */
15	.text
16	.globl	setjmp
17#ifndef __MINGW32__
18	.type setjmp, @function
19#else
20	.def setjmp; .scl 2; .type 32; .endef
21#endif
22setjmp:
23	pop	%ecx
24	movl	(%esp), %edx
25	movl	%ebx, (%edx)
26	movl	%esi, 4(%edx)
27	movl	%edi, 8(%edx)
28	movl	%ebp, 12(%edx)
29	movl	%esp, 16(%edx)
30	xorl	%eax, %eax
31	jmp	*%ecx
32
33	.globl	longjmp
34#ifndef __MINGW32__
35	.type	longjmp, @function
36#else
37	.def longjmp; .scl 2; .type 32; .endef
38#endif
39longjmp:
40	pop	%eax
41	pop	%edx
42	pop	%eax
43	movl	(%edx), %ebx
44	movl	4(%edx), %esi
45	movl	8(%edx), %edi
46
47#if defined(__ELF__) && defined(__linux__)
48	.section .note.GNU-stack,"",%progbits
49#endif
50