49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* 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__ */
 |