Correct link address the-null-kernel
authorJack Miller <jack@codezen.org>
Mon, 10 Sep 2012 23:27:30 +0000 (18:27 -0500)
committerJack Miller <jack@codezen.org>
Sat, 19 Mar 2016 19:02:48 +0000 (14:02 -0500)
Use 0xFFFFFFFF80000000 instead of the legacy 32-bit kernel favorite
0xC0000000.

Makefile
boot/grub_sig.c [new file with mode: 0644]
linker.ld

index ad56011..3718eef 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 CC = gcc
 LD = ld
-CFLAGS = -std=c99 -pedantic -Wall -nostdlib -ffreestanding
+CFLAGS = -std=c99 -pedantic -Wall -nostdlib -ffreestanding -mcmodel=kernel
 LDFLAGS = -T linker.ld -nostdlib -n
 
 SRC = main.c
diff --git a/boot/grub_sig.c b/boot/grub_sig.c
new file mode 100644 (file)
index 0000000..cb35bae
--- /dev/null
@@ -0,0 +1,5 @@
+/* vim: set ts=4 sw=4 sts=4 noet : */
+#include <grub.h>
+
+struct grub_signature gs __attribute__ ((section (".grub_sig"))) =
+       { GRUB_MAGIC, GRUB_FLAGS, GRUB_CHECKSUM };
index f40c85c..9584ff7 100644 (file)
--- a/linker.ld
+++ b/linker.ld
@@ -2,7 +2,7 @@ OUTPUT_FORMAT("elf64-x86-64")
 ENTRY(main)
 SECTIONS
 {
-    .grub_sig 0xC0100000 : AT(0x100000)
+    .grub_sig 0xFFFFFFFF80100000 : AT(0x100000)
     {
         *(.grub_sig)
     }