Welcome to mirror list, hosted at ThFree Co, Russian Federation.

setjmp.c « i386 « config « cygwin « winsup - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9104c2c83d15fa4c4d418fe90d7e2802cc82596a (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
37
38
39
40
41
42
43
44
45
46
47
48
/* setjmp.c

   Copyright 1996, 1998, 1999, 2000, 2001 Red Hat, Inc.

This file is part of Cygwin.

This software is a copyrighted work licensed under the terms of the
Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
details. */

#ifdef __i386__

#if 1
asm("	.globl	_setjmp			\n"
"_setjmp:				\n"
"	pushl	%ebp			\n"
"	movl	%esp,%ebp		\n"
"	pushl	%edi			\n"
"	movl	8(%ebp),%edi		\n"
"	movl	%eax,0(%edi)		\n"
"	movl	%ebx,4(%edi)		\n"
"	movl	%ecx,8(%edi)		\n"
"	movl	%edx,12(%edi)		\n"
"	movl	%esi,16(%edi)		\n"
"	movl	-4(%ebp),%eax		\n"
"	movl	%eax,20(%edi)		\n"
"	movl	0(%ebp),%eax		\n"
"	movl	%eax,24(%edi)		\n"
"	movl	%esp,%eax		\n"
"	addl	$12,%eax		\n"
"	movl	%eax,28(%edi)		\n"
"	movl	4(%ebp),%eax		\n"
"	movl	%eax,32(%edi)		\n"
"	movw	%es, %ax		\n"
"	movw	%ax, 36(%edi)		\n"
"	movw	%fs, %ax		\n"
"	movw	%ax, 38(%edi)		\n"
"	movw	%gs, %ax		\n"
"	movw	%ax, 40(%edi)		\n"
"	movw	%ss, %ax		\n"
"	movw	%ax, 42(%edi)		\n"
"	popl	%edi			\n"
"	movl	$0,%eax			\n"
"	leave				\n"
"	ret				\n");
#endif

#endif /* __i386__ */