]> git.proxmox.com Git - grub2.git/commitdiff
2009-05-16 Bean <bean123ch@gmail.com>
authorbean <bean@localhost>
Sat, 16 May 2009 12:46:24 +0000 (12:46 +0000)
committerbean <bean@localhost>
Sat, 16 May 2009 12:46:24 +0000 (12:46 +0000)
* conf/common.rmk (pkglib_MODULES): Add lua.mod.
(lua_mod_SOURCES): New variable.
(lua_mod_CFLAGS): Likewise.
(lua_mod_LDFLAGS): Likewise.

* conf/i386.rmk (pkglib_MODULES): Add setjmp.mod.
(setjmp_mod_SOURCES): New variable.
(setjmp_mod_CFLAGS): Likewise.
(setjmp_LDFLAGS): Likewise.

* conf/x86_64-efi.rmk (pkglib_MODULES): Add setjmp.mod.
(setjmp_mod_SOURCES): New variable.
(setjmp_mod_CFLAGS): Likewise.
(setjmp_LDFLAGS): Likewise.

* conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add setjmp.mod.
(setjmp_mod_SOURCES): New variable.
(setjmp_mod_CFLAGS): Likewise.
(setjmp_LDFLAGS): Likewise.

* conf/sparc64-ieee1275.rmk (pkglib_MODULES): Add setjmp.mod.
(setjmp_mod_SOURCES): New variable.
(setjmp_mod_CFLAGS): Likewise.
(setjmp_LDFLAGS): Likewise.

* normal/i386/setjmp.S: Moved from here ...
* lib/i386/setjmp.S: ... Moved here
* normal/x86_64/setjmp.S: Moved from here ...
* lib/x86_64/setjmp.S: ... Moved here
* normal/powerpc/setjmp.S: Moved from here ...
* lib/powerpc/setjmp.S: ... Moved here
* normal/sparc64/setjmp.S: Moved from here ...
* lib/sparc64/setjmp.S: ... Moved here

* include/grub/i386/setjmp.h (grub_setjmp): Don't use attribute
returns_twice in mingw.

* script/lua/grub_lib.c: New file.
* script/lua/grub_lib.h: Likewise.
* script/lua/grub_lua.h: Likewise.
* script/lua/grub_main.c: Likewise.
* script/lua/lapi.c: Likewise.
* script/lua/lapi.h: Likewise.
* script/lua/lauxlib.c: Likewise.
* script/lua/lauxlib.h: Likewise.
* script/lua/lbaselib.c: Likewise.
* script/lua/lcode.c: Likewise.
* script/lua/lcode.h: Likewise.
* script/lua/ldblib.c: Likewise.
* script/lua/ldebug.c: Likewise.
* script/lua/ldebug.h: Likewise.
* script/lua/ldo.c: Likewise.
* script/lua/ldo.h: Likewise.
* script/lua/ldump.c: Likewise.
* script/lua/lfunc.c: Likewise.
* script/lua/lfunc.h: Likewise.
* script/lua/lgc.c: Likewise.
* script/lua/lgc.h: Likewise.
* script/lua/linit.c: Likewise.
* script/lua/liolib.c: Likewise.
* script/lua/llex.c: Likewise.
* script/lua/llex.h: Likewise.
* script/lua/llimits.h: Likewise.
* script/lua/lmathlib.c: Likewise.
* script/lua/lmem.c: Likewise.
* script/lua/lmem.h: Likewise.
* script/lua/loadlib.c: Likewise.
* script/lua/lobject.c: Likewise.
* script/lua/lobject.h: Likewise.
* script/lua/lopcodes.c: Likewise.
* script/lua/lopcodes.h: Likewise.
* script/lua/loslib.c: Likewise.
* script/lua/lparser.c: Likewise.
* script/lua/lparser.h: Likewise.
* script/lua/lstate.c: Likewise.
* script/lua/lstate.h: Likewise.
* script/lua/lstring.c: Likewise.
* script/lua/lstring.h: Likewise.
* script/lua/lstrlib.c: Likewise.
* script/lua/ltable.c: Likewise.
* script/lua/ltable.h: Likewise.
* script/lua/ltablib.c: Likewise.
* script/lua/ltm.c: Likewise.
* script/lua/ltm.h: Likewise.
* script/lua/lua.h: Likewise.
* script/lua/luaconf.h: Likewise.
* script/lua/lualib.h: Likewise.
* script/lua/lundump.c: Likewise.
* script/lua/lundump.h: Likewise.
* script/lua/lvm.c: Likewise.
* script/lua/lvm.h: Likewise.
* script/lua/lzio.c: Likewise.
* script/lua/lzio.h: Likewise.

15 files changed:
ChangeLog
conf/common.rmk
conf/i386.rmk
conf/powerpc-ieee1275.rmk
conf/sparc64-ieee1275.rmk
conf/x86_64-efi.rmk
include/grub/i386/setjmp.h
lib/i386/setjmp.S [new file with mode: 0644]
lib/powerpc/setjmp.S [new file with mode: 0644]
lib/sparc64/setjmp.S [new file with mode: 0644]
lib/x86_64/setjmp.S [new file with mode: 0644]
normal/i386/setjmp.S [deleted file]
normal/powerpc/setjmp.S [deleted file]
normal/sparc64/setjmp.S [deleted file]
normal/x86_64/setjmp.S [deleted file]

index 3ee54e5861302986ec602bc8492ebffb29e9da99..c9495020a559632b6688ff053286bee9141b4d84 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,99 @@
+2009-05-16  Bean  <bean123ch@gmail.com>
+
+       * conf/common.rmk (pkglib_MODULES): Add lua.mod.
+       (lua_mod_SOURCES): New variable.
+       (lua_mod_CFLAGS): Likewise.
+       (lua_mod_LDFLAGS): Likewise.
+
+       * conf/i386.rmk (pkglib_MODULES): Add setjmp.mod.
+       (setjmp_mod_SOURCES): New variable.
+       (setjmp_mod_CFLAGS): Likewise.
+       (setjmp_LDFLAGS): Likewise.
+
+       * conf/x86_64-efi.rmk (pkglib_MODULES): Add setjmp.mod.
+       (setjmp_mod_SOURCES): New variable.
+       (setjmp_mod_CFLAGS): Likewise.
+       (setjmp_LDFLAGS): Likewise.
+
+       * conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add setjmp.mod.
+       (setjmp_mod_SOURCES): New variable.
+       (setjmp_mod_CFLAGS): Likewise.
+       (setjmp_LDFLAGS): Likewise.
+
+       * conf/sparc64-ieee1275.rmk (pkglib_MODULES): Add setjmp.mod.
+       (setjmp_mod_SOURCES): New variable.
+       (setjmp_mod_CFLAGS): Likewise.
+       (setjmp_LDFLAGS): Likewise.
+
+       * normal/i386/setjmp.S: Moved from here ...
+       * lib/i386/setjmp.S: ... Moved here
+       * normal/x86_64/setjmp.S: Moved from here ...
+       * lib/x86_64/setjmp.S: ... Moved here
+       * normal/powerpc/setjmp.S: Moved from here ...
+       * lib/powerpc/setjmp.S: ... Moved here
+       * normal/sparc64/setjmp.S: Moved from here ...
+       * lib/sparc64/setjmp.S: ... Moved here
+
+       * include/grub/i386/setjmp.h (grub_setjmp): Don't use attribute
+       returns_twice in mingw.
+
+       * script/lua/grub_lib.c: New file.
+       * script/lua/grub_lib.h: Likewise.
+       * script/lua/grub_lua.h: Likewise.
+       * script/lua/grub_main.c: Likewise.
+       * script/lua/lapi.c: Likewise.
+       * script/lua/lapi.h: Likewise.
+       * script/lua/lauxlib.c: Likewise.
+       * script/lua/lauxlib.h: Likewise.
+       * script/lua/lbaselib.c: Likewise.
+       * script/lua/lcode.c: Likewise.
+       * script/lua/lcode.h: Likewise.
+       * script/lua/ldblib.c: Likewise.
+       * script/lua/ldebug.c: Likewise.
+       * script/lua/ldebug.h: Likewise.
+       * script/lua/ldo.c: Likewise.
+       * script/lua/ldo.h: Likewise.
+       * script/lua/ldump.c: Likewise.
+       * script/lua/lfunc.c: Likewise.
+       * script/lua/lfunc.h: Likewise.
+       * script/lua/lgc.c: Likewise.
+       * script/lua/lgc.h: Likewise.
+       * script/lua/linit.c: Likewise.
+       * script/lua/liolib.c: Likewise.
+       * script/lua/llex.c: Likewise.
+       * script/lua/llex.h: Likewise.
+       * script/lua/llimits.h: Likewise.
+       * script/lua/lmathlib.c: Likewise.
+       * script/lua/lmem.c: Likewise.
+       * script/lua/lmem.h: Likewise.
+       * script/lua/loadlib.c: Likewise.
+       * script/lua/lobject.c: Likewise.
+       * script/lua/lobject.h: Likewise.
+       * script/lua/lopcodes.c: Likewise.
+       * script/lua/lopcodes.h: Likewise.
+       * script/lua/loslib.c: Likewise.
+       * script/lua/lparser.c: Likewise.
+       * script/lua/lparser.h: Likewise.
+       * script/lua/lstate.c: Likewise.
+       * script/lua/lstate.h: Likewise.
+       * script/lua/lstring.c: Likewise.
+       * script/lua/lstring.h: Likewise.
+       * script/lua/lstrlib.c: Likewise.
+       * script/lua/ltable.c: Likewise.
+       * script/lua/ltable.h: Likewise.
+       * script/lua/ltablib.c: Likewise.
+       * script/lua/ltm.c: Likewise.
+       * script/lua/ltm.h: Likewise.
+       * script/lua/lua.h: Likewise.
+       * script/lua/luaconf.h: Likewise.
+       * script/lua/lualib.h: Likewise.
+       * script/lua/lundump.c: Likewise.
+       * script/lua/lundump.h: Likewise.
+       * script/lua/lvm.c: Likewise.
+       * script/lua/lvm.h: Likewise.
+       * script/lua/lzio.c: Likewise.
+       * script/lua/lzio.h: Likewise.
+
 2009-05-16  Bean  <bean123ch@gmail.com>
 
        * include/grub/kernel.h (grub_module_header_types): Add type
index bca7f7806315f8a526435b3b9d5271f022b4dea9..1b9a6cdb48555d15d5b767b168fbf5af7e533d3d 100644 (file)
@@ -343,7 +343,8 @@ pkglib_MODULES += minicmd.mod extcmd.mod hello.mod handler.mod      \
        loopback.mod fs_uuid.mod configfile.mod echo.mod        \
        terminfo.mod test.mod blocklist.mod hexdump.mod         \
        read.mod sleep.mod loadenv.mod crc.mod parttool.mod     \
-       pcpart.mod memrw.mod boot.mod normal.mod sh.mod gptsync.mod
+       pcpart.mod memrw.mod boot.mod normal.mod sh.mod lua.mod \
+       gptsync.mod
 
 # For gptsync.mod.
 gptsync_mod_SOURCES = commands/gptsync.c
@@ -490,6 +491,24 @@ sh_mod_SOURCES = script/sh/main.c script/sh/script.c script/sh/execute.c \
 sh_mod_CFLAGS = $(COMMON_CFLAGS)
 sh_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
+# For lua.mod.
+lua_mod_SOURCES = script/lua/lapi.c script/lua/lcode.c script/lua/ldebug.c \
+       script/lua/ldo.c script/lua/ldump.c script/lua/lfunc.c \
+       script/lua/lgc.c script/lua/llex.c script/lua/lmem.c \
+       script/lua/lobject.c script/lua/lopcodes.c script/lua/lparser.c \
+       script/lua/lstate.c script/lua/lstring.c script/lua/ltable.c \
+       script/lua/ltm.c script/lua/lundump.c script/lua/lvm.c \
+       script/lua/lzio.c script/lua/lauxlib.c script/lua/lbaselib.c \
+       script/lua/linit.c script/lua/ltablib.c \
+       script/lua/grub_main.c script/lua/grub_lib.c
+lua_mod_CFLAGS = $(COMMON_CFLAGS)
+lua_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# Extra libraries for lua
+# script/lua/lmathlib.c script/lua/loslib.c script/lua/liolib.c
+# script/lua/lstrlib.c script/lua/ldblib.c script/lua/ltablib.c
+# script/lua/loadlib.c
+
 # Common Video Subsystem specific modules.
 pkglib_MODULES += video.mod videotest.mod bitmap.mod tga.mod jpeg.mod  \
        png.mod font.mod gfxterm.mod
index 93f84ce39cf45714413befdd26c98182a1e05798..e8e2857cb8b4b71966caca334538481e5dea13db 100644 (file)
@@ -14,3 +14,9 @@ pkglib_MODULES += vga_text.mod
 vga_text_mod_SOURCES = term/i386/pc/vga_text.c term/i386/vga_common.c
 vga_text_mod_CFLAGS = $(COMMON_CFLAGS)
 vga_text_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For setjmp.mod
+pkglib_MODULES += setjmp.mod
+setjmp_mod_SOURCES = lib/i386/setjmp.S
+setjmp_mod_CFLAGS = $(COMMON_CFLAGS)
+setjmp_mod_LDFLAGS = $(COMMON_LDFLAGS)
index 204d54a83e73f4b37eb1157ecad9c938b901173d..bf0dd49bba65427c7a528a493c599b21f8ead959 100644 (file)
@@ -156,5 +156,10 @@ lsmmap_mod_SOURCES = commands/lsmmap.c
 lsmmap_mod_CFLAGS = $(COMMON_CFLAGS)
 lsmmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
-include $(srcdir)/conf/common.mk
+# For setjmp.mod
+pkglib_MODULES += setjmp.mod
+setjmp_mod_SOURCES = lib/powerpc/setjmp.S
+setjmp_mod_CFLAGS = $(COMMON_CFLAGS)
+setjmp_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
+include $(srcdir)/conf/common.mk
index c94b342af554d035462b24944397dd700208dd82..234f80122120672ceeecf1a6dca4f57165760a0e 100644 (file)
@@ -174,4 +174,10 @@ lsmmap_mod_SOURCES = commands/lsmmap.c
 lsmmap_mod_CFLAGS = $(COMMON_CFLAGS)
 lsmmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
 
+# For setjmp.mod
+pkglib_MODULES += setjmp.mod
+setjmp_mod_SOURCES = lib/sparc64/setjmp.S
+setjmp_mod_CFLAGS = $(COMMON_CFLAGS)
+setjmp_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
 include $(srcdir)/conf/common.mk
index 92ad9f7d43389428ee47397f282b52fa51049b35..d25b03a4cbcc2c001f18551dbcbb1e634d70526f 100644 (file)
@@ -193,4 +193,10 @@ xnu_mod_CFLAGS = $(COMMON_CFLAGS) -Werror -Wall
 xnu_mod_LDFLAGS = $(COMMON_LDFLAGS)
 xnu_mod_ASFLAGS = $(COMMON_ASFLAGS)
 
+# For setjmp.mod
+pkglib_MODULES += setjmp.mod
+setjmp_mod_SOURCES = lib/x86_64/setjmp.S
+setjmp_mod_CFLAGS = $(COMMON_CFLAGS)
+setjmp_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
 include $(srcdir)/conf/common.mk
index c5f94b40654626523198642fae5024057fe88796..6b6b6fd153f6349def11eca341d40d6ddad0b8be 100644 (file)
 
 typedef unsigned long grub_jmp_buf[6];
 
+#ifdef __MINGW32__
+int grub_setjmp (grub_jmp_buf env) __attribute__ ((cdecl, regparm (3)));
+#else
 int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice, cdecl,
                                                   regparm (3)));
+#endif
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn, cdecl,
                                                              regparm (3)));
 
diff --git a/lib/i386/setjmp.S b/lib/i386/setjmp.S
new file mode 100644 (file)
index 0000000..ba38bd2
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2003,2007  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/symbol.h>
+
+       .file   "setjmp.S"
+       
+       .text
+       
+/*
+ * int grub_setjmp (grub_jmp_buf env)
+ */
+FUNCTION(grub_setjmp)
+       movl    %ebx, 0(%eax)   /* EBX */
+       movl    %esi, 4(%eax)   /* ESI */
+       movl    %edi, 8(%eax)   /* EDI */
+       movl    %ebp, 12(%eax)  /* EBP */
+       popl    %ecx
+       movl    %esp, 16(%eax)  /* ESP */
+       movl    %ecx, 20(%eax)  /* EIP */
+       xorl    %eax, %eax
+       jmp     *%ecx
+
+               
+/*
+ * int grub_longjmp (grub_jmp_buf env, int val)
+ */
+FUNCTION(grub_longjmp)
+       movl    0(%eax), %ebx
+       movl    4(%eax), %esi
+       movl    8(%eax), %edi
+       movl    12(%eax), %ebp
+       movl    16(%eax), %esp
+       movl    20(%eax), %ecx
+
+       movl    %edx, %eax
+       testl   %eax, %eax
+       jnz     1f
+       incl    %eax
+1:     jmp     *%ecx
+       
diff --git a/lib/powerpc/setjmp.S b/lib/powerpc/setjmp.S
new file mode 100644 (file)
index 0000000..25cbaa3
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2004,2007  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/symbol.h>
+
+       .file   "setjmp.S"
+
+       .text
+
+/*
+ * int grub_setjmp (grub_jmp_buf env)
+ */
+FUNCTION(grub_setjmp)
+       stw     1, 0(3)
+       stw     14, 4(3)
+       stw     15, 8(3)
+       stw     16, 12(3)
+       stw     17, 16(3)
+       stw     18, 20(3)
+       stw     19, 24(3)
+       stw     20, 28(3)
+       stw     21, 32(3)
+       stw     22, 36(3)
+       stw     23, 40(3)
+       stw     24, 44(3)
+       stw     25, 48(3)
+       stw     26, 52(3)
+       stw     27, 56(3)
+       stw     28, 60(3)
+       stw     29, 64(3)
+       stw     30, 68(3)
+       mflr    4
+       stw     4, 72(3)
+       mfcr    4
+       stw     4, 76(3)
+       li      3, 0
+       blr
+
+/*
+ * int grub_longjmp (grub_jmp_buf env, int val)
+ */
+FUNCTION(grub_longjmp)
+       lwz     1, 0(3)
+       lwz     14, 4(3)
+       lwz     15, 8(3)
+       lwz     16, 12(3)
+       lwz     17, 16(3)
+       lwz     18, 20(3)
+       lwz     19, 24(3)
+       lwz     20, 28(3)
+       lwz     21, 32(3)
+       lwz     22, 36(3)
+       lwz     23, 40(3)
+       lwz     24, 44(3)
+       lwz     25, 48(3)
+       lwz     26, 52(3)
+       lwz     27, 56(3)
+       lwz     28, 60(3)
+       lwz     29, 64(3)
+       lwz     30, 68(3)
+       lwz     5, 72(3)
+       mtlr    5
+       lwz     5, 76(3)
+       mtcr    5
+       mr.     3, 4
+       bne     1f
+       li      3, 1
+1:     blr
+
diff --git a/lib/sparc64/setjmp.S b/lib/sparc64/setjmp.S
new file mode 100644 (file)
index 0000000..0e23ecf
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2005,2007,2009  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/symbol.h>
+
+        .file   "setjmp.S"
+
+        .text
+
+/*
+ * int grub_setjmp (grub_jmp_buf env)
+ */
+FUNCTION(grub_setjmp)
+       stx     %o7, [%o0 + 0x00]
+       stx     %sp, [%o0 + 0x08]
+       stx     %fp, [%o0 + 0x10]
+       retl
+        clr    %o0
+
+/*
+ * int grub_longjmp (grub_jmp_buf env, int val)
+ */
+FUNCTION(grub_longjmp)
+       ldx     [%o0 + 0x10], %g1
+       movrz   %o1, 1, %o1
+       flushw
+       ldx     [%o0 + 0x00], %o7
+       ldx     [%o0 + 0x08], %fp
+       sub     %fp, 192, %sp
+       stx     %g1, [%sp + 2047 + (14 * 8)]
+       retl
+        restore %o1, 0, %o0
diff --git a/lib/x86_64/setjmp.S b/lib/x86_64/setjmp.S
new file mode 100644 (file)
index 0000000..621b09b
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2003,2007  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/symbol.h>
+
+       .file   "setjmp.S"
+
+       .text
+
+/*
+ *  jmp_buf:
+ *   rbx rsp rbp r12 r13 r14 r15 rip
+ *   0   8   16  24  32  40  48  56
+ */
+
+/*
+ * int grub_setjmp (grub_jmp_buf env)
+ */
+FUNCTION(grub_setjmp)
+       pop     %rsi            /* Return address, and adjust the stack */
+       xorq    %rax, %rax
+       movq    %rbx, 0(%rdi)   /* RBX */
+       movq    %rsp, 8(%rdi)   /* RSP */
+       push    %rsi
+       movq    %rbp, 16(%rdi)  /* RBP */
+       movq    %r12, 24(%rdi)  /* R12 */
+       movq    %r13, 32(%rdi)  /* R13 */
+       movq    %r14, 40(%rdi)  /* R14 */
+       movq    %r15, 48(%rdi)  /* R15 */
+       movq    %rsi, 56(%rdi)  /* RSI */
+       ret
+
+/*
+ * int grub_longjmp (grub_jmp_buf env, int val)
+ */
+FUNCTION(grub_longjmp)
+       movl    %esi, %eax
+       orl     %eax, %eax
+       jnz     1f
+       incl    %eax
+1:
+
+       movq    (%rdi), %rbx
+       movq    8(%rdi), %rsp
+       movq    16(%rdi), %rbp
+       movq    24(%rdi), %r12
+       movq    32(%rdi), %r13
+       movq    40(%rdi), %r14
+       movq    48(%rdi), %r15
+       jmp     *56(%rdi)
diff --git a/normal/i386/setjmp.S b/normal/i386/setjmp.S
deleted file mode 100644 (file)
index ba38bd2..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2003,2007  Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <grub/symbol.h>
-
-       .file   "setjmp.S"
-       
-       .text
-       
-/*
- * int grub_setjmp (grub_jmp_buf env)
- */
-FUNCTION(grub_setjmp)
-       movl    %ebx, 0(%eax)   /* EBX */
-       movl    %esi, 4(%eax)   /* ESI */
-       movl    %edi, 8(%eax)   /* EDI */
-       movl    %ebp, 12(%eax)  /* EBP */
-       popl    %ecx
-       movl    %esp, 16(%eax)  /* ESP */
-       movl    %ecx, 20(%eax)  /* EIP */
-       xorl    %eax, %eax
-       jmp     *%ecx
-
-               
-/*
- * int grub_longjmp (grub_jmp_buf env, int val)
- */
-FUNCTION(grub_longjmp)
-       movl    0(%eax), %ebx
-       movl    4(%eax), %esi
-       movl    8(%eax), %edi
-       movl    12(%eax), %ebp
-       movl    16(%eax), %esp
-       movl    20(%eax), %ecx
-
-       movl    %edx, %eax
-       testl   %eax, %eax
-       jnz     1f
-       incl    %eax
-1:     jmp     *%ecx
-       
diff --git a/normal/powerpc/setjmp.S b/normal/powerpc/setjmp.S
deleted file mode 100644 (file)
index 25cbaa3..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2004,2007  Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <grub/symbol.h>
-
-       .file   "setjmp.S"
-
-       .text
-
-/*
- * int grub_setjmp (grub_jmp_buf env)
- */
-FUNCTION(grub_setjmp)
-       stw     1, 0(3)
-       stw     14, 4(3)
-       stw     15, 8(3)
-       stw     16, 12(3)
-       stw     17, 16(3)
-       stw     18, 20(3)
-       stw     19, 24(3)
-       stw     20, 28(3)
-       stw     21, 32(3)
-       stw     22, 36(3)
-       stw     23, 40(3)
-       stw     24, 44(3)
-       stw     25, 48(3)
-       stw     26, 52(3)
-       stw     27, 56(3)
-       stw     28, 60(3)
-       stw     29, 64(3)
-       stw     30, 68(3)
-       mflr    4
-       stw     4, 72(3)
-       mfcr    4
-       stw     4, 76(3)
-       li      3, 0
-       blr
-
-/*
- * int grub_longjmp (grub_jmp_buf env, int val)
- */
-FUNCTION(grub_longjmp)
-       lwz     1, 0(3)
-       lwz     14, 4(3)
-       lwz     15, 8(3)
-       lwz     16, 12(3)
-       lwz     17, 16(3)
-       lwz     18, 20(3)
-       lwz     19, 24(3)
-       lwz     20, 28(3)
-       lwz     21, 32(3)
-       lwz     22, 36(3)
-       lwz     23, 40(3)
-       lwz     24, 44(3)
-       lwz     25, 48(3)
-       lwz     26, 52(3)
-       lwz     27, 56(3)
-       lwz     28, 60(3)
-       lwz     29, 64(3)
-       lwz     30, 68(3)
-       lwz     5, 72(3)
-       mtlr    5
-       lwz     5, 76(3)
-       mtcr    5
-       mr.     3, 4
-       bne     1f
-       li      3, 1
-1:     blr
-
diff --git a/normal/sparc64/setjmp.S b/normal/sparc64/setjmp.S
deleted file mode 100644 (file)
index 0e23ecf..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2005,2007,2009  Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <grub/symbol.h>
-
-        .file   "setjmp.S"
-
-        .text
-
-/*
- * int grub_setjmp (grub_jmp_buf env)
- */
-FUNCTION(grub_setjmp)
-       stx     %o7, [%o0 + 0x00]
-       stx     %sp, [%o0 + 0x08]
-       stx     %fp, [%o0 + 0x10]
-       retl
-        clr    %o0
-
-/*
- * int grub_longjmp (grub_jmp_buf env, int val)
- */
-FUNCTION(grub_longjmp)
-       ldx     [%o0 + 0x10], %g1
-       movrz   %o1, 1, %o1
-       flushw
-       ldx     [%o0 + 0x00], %o7
-       ldx     [%o0 + 0x08], %fp
-       sub     %fp, 192, %sp
-       stx     %g1, [%sp + 2047 + (14 * 8)]
-       retl
-        restore %o1, 0, %o0
diff --git a/normal/x86_64/setjmp.S b/normal/x86_64/setjmp.S
deleted file mode 100644 (file)
index 621b09b..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2003,2007  Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <grub/symbol.h>
-
-       .file   "setjmp.S"
-
-       .text
-
-/*
- *  jmp_buf:
- *   rbx rsp rbp r12 r13 r14 r15 rip
- *   0   8   16  24  32  40  48  56
- */
-
-/*
- * int grub_setjmp (grub_jmp_buf env)
- */
-FUNCTION(grub_setjmp)
-       pop     %rsi            /* Return address, and adjust the stack */
-       xorq    %rax, %rax
-       movq    %rbx, 0(%rdi)   /* RBX */
-       movq    %rsp, 8(%rdi)   /* RSP */
-       push    %rsi
-       movq    %rbp, 16(%rdi)  /* RBP */
-       movq    %r12, 24(%rdi)  /* R12 */
-       movq    %r13, 32(%rdi)  /* R13 */
-       movq    %r14, 40(%rdi)  /* R14 */
-       movq    %r15, 48(%rdi)  /* R15 */
-       movq    %rsi, 56(%rdi)  /* RSI */
-       ret
-
-/*
- * int grub_longjmp (grub_jmp_buf env, int val)
- */
-FUNCTION(grub_longjmp)
-       movl    %esi, %eax
-       orl     %eax, %eax
-       jnz     1f
-       incl    %eax
-1:
-
-       movq    (%rdi), %rbx
-       movq    8(%rdi), %rsp
-       movq    16(%rdi), %rbp
-       movq    24(%rdi), %r12
-       movq    32(%rdi), %r13
-       movq    40(%rdi), %r14
-       movq    48(%rdi), %r15
-       jmp     *56(%rdi)