x86: Put the boot PMLs and stacks in BSS
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Nov 2016 04:01:43 +0000 (23:01 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 29 Nov 2016 16:27:40 +0000 (11:27 -0500)
This cuts down the size of the kernel binary by about 4 MB, due mostly
to the PML2 tables (which recently grew by 2x with the addition of the
EPTs).

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/entry64.S
kern/arch/x86/kernel64.ld

index fe60d89..bcde2df 100644 (file)
@@ -423,6 +423,7 @@ no_long_string:
 no_pml3ps_string:
        .string "Unable to boot: 1 GB pages not supported"
 # boot page tables
 no_pml3ps_string:
        .string "Unable to boot: 1 GB pages not supported"
 # boot page tables
+.section .bootbss, "w",@nobits
        .align PGSIZE
 .globl boot_pml4
 boot_pml4:
        .align PGSIZE
 .globl boot_pml4
 boot_pml4:
@@ -454,7 +455,7 @@ get_boot_pml4:
 get_gdt64:
        movabs  $(gdt64), %rax
        ret
 get_gdt64:
        movabs  $(gdt64), %rax
        ret
-.data
+.section .bootbss, "w",@nobits
        .p2align        PGSHIFT         # force page alignment
        .globl          bootstack
 bootstack:
        .p2align        PGSHIFT         # force page alignment
        .globl          bootstack
 bootstack:
index 392a2f9..c1eafc3 100644 (file)
@@ -15,7 +15,7 @@ SECTIONS
        . = 0x00100000;
 
        .bootstrap : {
        . = 0x00100000;
 
        .bootstrap : {
-               *(.boottext .bootdata)
+               *(.boottext .bootdata .bootbss)
        }
 
        /* Needed this for syslinux, which was sitting around 16MB phys.  This just
        }
 
        /* Needed this for syslinux, which was sitting around 16MB phys.  This just