* conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/i386/misc.S'.
* conf/i386-ieee1275.rmk: Likewise.
* conf/i386-coreboot.rmk: Likewise.
* kern/i386/pc/startup.S (grub_stop): Remove function.
* kern/i386/ieee1275/startup.S: Likewise.
* kern/i386/coreboot/startup.S: Likewise.
* kern/i386/misc.S (grub_stop): New function.
+2009-06-22 Robert Millan <rmh.grub@aybabtu.com>
+
+ * conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/i386/misc.S'.
+ * conf/i386-ieee1275.rmk: Likewise.
+ * conf/i386-coreboot.rmk: Likewise.
+
+ * kern/i386/pc/startup.S (grub_stop): Remove function.
+ * kern/i386/ieee1275/startup.S: Likewise.
+ * kern/i386/coreboot/startup.S: Likewise.
+ * kern/i386/misc.S (grub_stop): New function.
+
2009-06-22 Robert Millan <rmh.grub@aybabtu.com>
* kern/i386/pc/startup.S (real_to_prot): Move from here ...
# For kernel.img.
kernel_img_SOURCES = kern/i386/coreboot/startup.S \
+ kern/i386/misc.S \
kern/i386/coreboot/init.c \
kern/i386/multiboot_mmap.c \
kern/main.c kern/device.c \
pkglib_PROGRAMS = kernel.img
# For kernel.img.
-kernel_img_SOURCES = kern/i386/ieee1275/startup.S kern/i386/ieee1275/init.c \
+kernel_img_SOURCES = kern/i386/ieee1275/startup.S \
+ kern/i386/misc.S \
+ kern/i386/ieee1275/init.c \
kern/ieee1275/init.c \
kern/ieee1275/mmap.c \
kern/ieee1275/cmain.c kern/ieee1275/openfw.c \
cdboot_img_FORMAT = binary
# For kernel.img.
-kernel_img_SOURCES = kern/i386/pc/startup.S kern/main.c kern/device.c \
+kernel_img_SOURCES = kern/i386/pc/startup.S \
+ kern/i386/misc.S \
+ kern/main.c kern/device.c \
kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \
kern/misc.c kern/mm.c kern/reader.c kern/term.c \
kern/rescue_parser.c kern/rescue_reader.c \
/* jump to the main body of C code */
jmp EXT_C(grub_main)
-/*
- * This call is special... it never returns... in fact it should simply
- * hang at this point!
- */
-FUNCTION(grub_stop)
- hlt
- jmp EXT_C(grub_stop)
-
/*
* prot_to_real and associated structures (but NOT real_to_prot, that is
* only needed for BIOS gates).
movl %eax, EXT_C(grub_ieee1275_entry_fn)
jmp EXT_C(grub_main)
-/*
- * This call is special... it never returns... in fact it should simply
- * hang at this point!
- */
-FUNCTION(grub_stop)
- hlt
- jmp EXT_C(grub_stop)
-
/*
* prot_to_real and associated structures (but NOT real_to_prot, that is
* only needed for BIOS gates).
--- /dev/null
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 1999,2000,2001,2002,2003,2005,2006,2007,2008 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>
+
+ .text
+/*
+ * This call is special... it never returns... in fact it should simply
+ * hang at this point!
+ */
+FUNCTION(grub_stop)
+ cli
+1: hlt
+ jmp 1b
*/
. = _start + GRUB_KERNEL_MACHINE_RAW_SIZE
-/*
- * This call is special... it never returns... in fact it should simply
- * hang at this point!
- */
-
-FUNCTION(grub_stop)
- call prot_to_real
-
/*
* This next part is sort of evil. It takes advantage of the
* byte ordering on the x86 to work in either 16-bit or 32-bit