diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel.ld | 36 | 
1 files changed, 24 insertions, 12 deletions
| diff --git a/kernel/kernel.ld b/kernel/kernel.ld index acc3c8e..ee04f22 100644 --- a/kernel/kernel.ld +++ b/kernel/kernel.ld @@ -8,25 +8,37 @@ SECTIONS     * where qemu's -kernel jumps.     */    . = 0x80000000; -  .text : -  { -    *(.text) + +  .text : { +    *(.text .text.*)      . = ALIGN(0x1000); +    _trampoline = .;      *(trampsec) +    . = ALIGN(0x1000); +    ASSERT(. - _trampoline == 0x1000, "error: trampoline larger than one page"); +    PROVIDE(etext = .);    } -  . = ALIGN(0x1000); -  PROVIDE(etext = .); +  .rodata : { +    . = ALIGN(16); +    *(.srodata .srodata.*) /* do not need to distinguish this from .rodata */ +    . = ALIGN(16); +    *(.rodata .rodata.*) +  } -  /* -   * make sure end is after data and bss. -   */    .data : { -    *(.data) +    . = ALIGN(16); +    *(.sdata .sdata.*) /* do not need to distinguish this from .data */ +    . = ALIGN(16); +    *(.data .data.*)    } +    .bss : { -    *(.bss) -    *(.sbss*) -     PROVIDE(end = .); +    . = ALIGN(16); +    *(.sbss .sbss.*) /* do not need to distinguish this from .bss */ +    . = ALIGN(16); +    *(.bss .bss.*)    } + +  PROVIDE(end = .);  } | 
