* where decompression in place becomes safe.
  */
        pushl   %esi
-       leal    _ebss(%ebp), %esi
-       leal    _ebss(%ebx), %edi
-       movl    $(_ebss - startup_32), %ecx
+       leal    _bss(%ebp), %esi
+       leal    _bss(%ebx), %edi
+       movl    $(_bss - startup_32), %ecx
        std
        rep     movsb
        cld
  * Clear BSS
  */
        xorl    %eax, %eax
-       leal    _edata(%ebx), %edi
+       leal    _bss(%ebx), %edi
        leal    _ebss(%ebx), %ecx
        subl    %edi, %ecx
        cld
 
  * Copy the compressed kernel to the end of our buffer
  * where decompression in place becomes safe.
  */
-       leaq    _end_before_pgt(%rip), %r8
-       leaq    _end_before_pgt(%rbx), %r9
-       movq    $_end_before_pgt /* - $startup_32 */, %rcx
+       leaq    _bss(%rip), %r8
+       leaq    _bss(%rbx), %r9
+       movq    $_bss /* - $startup_32 */, %rcx
 1:     subq    $8, %r8
        subq    $8, %r9
        movq    0(%r8), %rax
  * Clear BSS
  */
        xorq    %rax, %rax
-       leaq    _edata(%rbx), %rdi
-       leaq    _end_before_pgt(%rbx), %rcx
+       leaq    _bss(%rbx), %rdi
+       leaq    _ebss(%rbx), %rcx
        subq    %rdi, %rcx
        cld
        rep     stosb
 boot_stack:
        .fill BOOT_STACK_SIZE, 1, 0
 boot_stack_end:
+
+/*
+ * Space for page tables (not in .bss so not zeroed)
+ */
+       .section ".pgtable","a",@nobits
+       .balign 4096
+pgtable:
+       .fill 6*4096, 1, 0