Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / arch / i386 / core / setjmp.S
1 /* setjmp and longjmp. Use of these functions is deprecated. */
2
3 FILE_LICENCE ( GPL2_OR_LATER )
4
5         .text
6         .arch i386
7         .code32
8         
9 /**************************************************************************
10 SETJMP - Save stack context for non-local goto
11 **************************************************************************/
12         .globl  setjmp
13 setjmp:
14         movl    4(%esp),%ecx            /* jmpbuf */
15         movl    0(%esp),%edx            /* return address */
16         movl    %edx,0(%ecx)
17         movl    %ebx,4(%ecx)
18         movl    %esp,8(%ecx)
19         movl    %ebp,12(%ecx)
20         movl    %esi,16(%ecx)
21         movl    %edi,20(%ecx)
22         movl    $0,%eax
23         ret
24
25 /**************************************************************************
26 LONGJMP - Non-local jump to a saved stack context
27 **************************************************************************/
28         .globl  longjmp
29 longjmp:
30         movl    4(%esp),%edx            /* jumpbuf */
31         movl    8(%esp),%eax            /* result */
32         movl    0(%edx),%ecx
33         movl    4(%edx),%ebx
34         movl    8(%edx),%esp
35         movl    12(%edx),%ebp
36         movl    16(%edx),%esi
37         movl    20(%edx),%edi
38         cmpl    $0,%eax
39         jne     1f
40         movl    $1,%eax
41 1:      movl    %ecx,0(%esp)
42         ret