diff options
author | Richard Henderson <rth@twiddle.net> | 2013-07-08 11:48:03 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2013-07-08 11:48:03 -0700 |
commit | e959a30a6a5a781606431f3c65e7ed6356940d6e (patch) | |
tree | ed8618c4b3f4b753356693d8c1e1f2b73836db31 | |
parent | 7974e1e03fbad67e3d29f4b942b13b8d82891ba2 (diff) | |
download | qemu-palcode-e959a30a6a5a781606431f3c65e7ed6356940d6e.zip qemu-palcode-e959a30a6a5a781606431f3c65e7ed6356940d6e.tar.gz qemu-palcode-e959a30a6a5a781606431f3c65e7ed6356940d6e.tar.bz2 |
Optimize memory layout.
Minimizing the amount of padding between page-aligned data structures.
-rw-r--r-- | init.c | 3 | ||||
-rw-r--r-- | pal.S | 2 | ||||
-rw-r--r-- | palcode.ld | 11 |
3 files changed, 11 insertions, 5 deletions
@@ -53,7 +53,8 @@ extern char _end[] __attribute__((visibility("hidden"), nocommon)); struct pcb_struct pcb __attribute__((section(".sbss"))); -static unsigned long page_dir[1024] __attribute__((aligned(PAGE_SIZE))); +static unsigned long page_dir[1024] + __attribute__((aligned(PAGE_SIZE), section(".bss.page_dir"))); /* The HWRPB must be aligned because it is exported at INIT_HWRPB. */ struct hwrpb_combine hwrpb __attribute__((aligned(PAGE_SIZE))); @@ -1905,7 +1905,7 @@ Sys_EnterConsole: * Allocate the initial bootup stack. */ - .section .bss + .section .bss.stack .align 3 .globl stack .type stack,@object @@ -6,12 +6,17 @@ SECTIONS . = 0xfffffc0000000000; .text : { *(.text*) } .rodata : { *(.rodata*) } - .data ALIGN(8192) : { *(.data.hwrpb) *(.data*) } + .data ALIGN(8192) : { *(.data*) } .got : { *(.got.plt) *(.got) } .sdata : { *(.sdata*) } .sbss : { *(.sbss) *(.scommon) } - .bss : { *(.bss) *(COMMON) } - PROVIDE (_end = .); + .bss : { + *(.bss.page_dir) + *(.bss.stack) + *(COMMON) + *(.bss) + PROVIDE (_end = .); + } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning |