foo
[eightysix] / kern / kern.ld
index 99bc701..c851a6d 100644 (file)
@@ -2,17 +2,18 @@ OUTPUT_FORMAT(binary)
 ENTRY(_start)
 
 SECTIONS {
-       . = 0x7c00;
+       /* we'll relocate the boot sector to this address immediately, and
+        * continue loading the kernel from the end of it
+        */
+       . = 0x600;
+       _bootsect_start = .;
        .bootsect : {
                * (.bootsect);
        }
-       _bootsect_end = .;
 
-       /* load high out of the way, to allow stage2 to load the kernel low */
-       . = 0x80000;
-       _stage2_start = .;
-       _stage2_start_seg = _stage2_start >> 4;
-       .text : AT(_bootsect_end) {
+       _kern_start = .;
+       _kern_start_seg = _kern_start >> 4;
+       .text : {
                * (.startup);
                * (.text*);
        }
@@ -20,15 +21,15 @@ SECTIONS {
                * (.rodata*);
                * (.data*);
        }
-       .bss ALIGN(4) (NOLOAD): {
+       .bss ALIGN(4): {
                _bss_start = .;
-               _bss_start_off = _bss_start - _stage2_start;
+               _bss_start_off = _bss_start - _kern_start;
                * (.bss*);
                * (COMMON);
                . = ALIGN(4);
        }
        _bss_size = SIZEOF(.bss);
        . = ALIGN(4);
-       _stage2_end = .;
-       _stage2_size = _stage2_end - _stage2_start;
+       _kern_end = .;
+       _kern_size = _kern_end - _kern_start;
 };