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*);
}
* (.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;
};