/* * Copyright (c) 2020 Intel Corp. * SPDX-License-Identifier: Apache-2.0 */ /* Pagetables. These are produced by arch/x86/gen-mmu.py based on * data in zephyr_prebuilt.elf (the result of linker pass 1). * For the pass 1 build, an equal-sized dummy area is provided as * to not shift memory addresses that occur after this. */ #ifdef CONFIG_MMU SECTION_DATA_PROLOGUE(pagetables,,) { . = ALIGN(4096); z_x86_pagetables_start = .; #ifdef LINKER_ZEPHYR_FINAL KEEP(*(pagetables)) /* gen_mmu.py */ #else KEEP(*(.dummy_pagetables)) /* from x86_mmu.c, just an empty array */ #endif /* LINKER_ZEPHYR_FINAL */ /* Top-level paging structure is the last thing in this section */ #if CONFIG_X86_PAE /* 4-entry PDPT */ z_x86_kernel_ptables = . - 32; #else /* Page directory or PML4 */ z_x86_kernel_ptables = . - 4096; #endif /* CONFIG_X86_PAE */ } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) #ifdef LINKER_ZEPHYR_FINAL /DISCARD/ : { /* We have the real ones in this build */ *(.dummy_pagetables) } #endif /* LINKER_ZEPHYR_FINAL */ #endif /* CONFIG_MMU */