diff options
| -rw-r--r-- | .editorconfig | 3 | ||||
| -rw-r--r-- | kernel/kernel.ld | 36 | 
2 files changed, 27 insertions, 12 deletions
| diff --git a/.editorconfig b/.editorconfig index cd9dfc3..c47611e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -14,6 +14,9 @@ indent_size = 2  [*.S]  indent_size = 8 +[*.ld] +indent_size = 2 +  [Makefile]  indent_style = tab  indent_size = 8 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 = .);  } | 
