diff options
Diffstat (limited to 'src/kernel/linker.ld')
-rw-r--r-- | src/kernel/linker.ld | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/kernel/linker.ld b/src/kernel/linker.ld new file mode 100644 index 0000000..1203950 --- /dev/null +++ b/src/kernel/linker.ld @@ -0,0 +1,43 @@ +ENTRY (loader) + +SECTIONS{ + k_highhalf_addr = 0xC0000000; + + . = 0x00100000; + + .setup : { + *(.setup) + } + + . += k_highhalf_addr; + + .text : AT(ADDR(.text) - k_highhalf_addr) { + *(.text) + } + + .rodata ALIGN (0x1000) : AT(ADDR(.rodata) - k_highhalf_addr) { + *(.rodata) + } + + .data ALIGN (0x1000) : AT(ADDR(.data) - k_highhalf_addr) { + start_ctors = .; + *(.ctor*) + end_ctors = .; + start_dtors = .; + *(.dtor*) + end_dtors = .; + *(.data) + *(.locks) + } + + .bss : AT(ADDR(.bss) - k_highhalf_addr) { + sbss = .; + *(COMMON) + *(.bss) + ebss = .; + } + + k_end_addr = .; +} + +/* vim: set ts=4 sw=4 tw=0 noet :*/ |