source: bootcd/isolinux/syslinux-6.03/gnu-efi/gnu-efi-3.0/gnuefi/setjmp_x86_64.S

Last change on this file was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 *  GRUB  --  GRand Unified Bootloader
3 *  Copyright (C) 2003  Free Software Foundation, Inc.
4 *
5 *  This program is free software; you can redistribute it and/or modify
6 *  it under the terms of the GNU General Public License as published by
7 *  the Free Software Foundation; either version 2 of the License, or
8 *  (at your option) any later version.
9 *
10 *  This program is distributed in the hope that it will be useful,
11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 *  GNU General Public License for more details.
14 *
15 *  You should have received a copy of the GNU General Public License
16 *  along with this program; if not, see <http://www.gnu.org/licenses/>.
17 */
18
19#define EXT_C(sym) sym
20#define FUNCTION(x)     .globl EXT_C(x) ; .type EXT_C(x), @function ; EXT_C(x):
21
22        .file   "setjmp.S"
23
24        .text
25
26/*
27 * int setjmp (jmp_buf env)
28 */
29FUNCTION(setjmp)
30        pop     %rsi            /* Return address, and adjust the stack */
31        xor     %rax, %rax
32        movq    %rbx, 0(%rdi)   /* RBX */
33        movq    %rsp, 8(%rdi)   /* RSP */
34        push    %rsi
35        movq    %rbp, 16(%rdi)  /* RBP */
36        movq    %r12, 24(%rdi)  /* R12 */
37        movq    %r13, 32(%rdi)  /* R13 */
38        movq    %r14, 40(%rdi)  /* R14 */
39        movq    %r15, 48(%rdi)  /* R15 */
40        movq    %rsi, 56(%rdi)  /* RSI */
41        ret
42
43/*
44 * int longjmp (jmp_buf env, int val)
45 */
46FUNCTION(longjmp)
47        movl    %esi, %eax
48        movq    (%rdi), %rbx
49        movq    8(%rdi), %rsp
50        movq    16(%rdi), %rbp
51        movq    24(%rdi), %r12
52        movq    32(%rdi), %r13
53        movq    40(%rdi), %r14
54        movq    48(%rdi), %r15
55        jmp     *56(%rdi)
56
Note: See TracBrowser for help on using the repository browser.