mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-24 17:07:29 +00:00
This patch is a preparatory step in enabling the MMU in long mode; no steps are taken to implement long mode support. We introduce struct x86_page_tables, which represents the top-level data structure for page tables: - For 32-bit, this will contain a four-entry page directory pointer table (PDPT) - For 64-bit, this will (eventually) contain a page map level 4 table (PML4) In either case, this pointer value is what gets programmed into CR3 to activate a set of page tables. There are extra bits in CR3 to set for long mode, we'll get around to that later. This abstraction will allow us to use the same APIs that work with page tables in either mode, rather than hard-coding that the top level data structure is a PDPT. z_x86_mmu_validate() has been re-written to make it easier to add another level of paging for long mode, to support 2MB PDPT entries, and correctly validate regions which span PDPTE entries. Some MMU-related APIs moved out of 32-bit x86's arch.h into mmustructs.h. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com> |
||
---|---|---|
.. | ||
src | ||
CMakeLists.txt | ||
prj.conf | ||
README.txt | ||
testcase.yaml |
Title: x86 boot time page table validation Description: This test is for x86 to validate boot time page table faults. Testcase outputs to console, for corresponding result, on validating boot page table. The checks are for param of the interested memory region that are value->p, value->us and value->rw. These are permissoin associated with the interested memory regions. -------------------------------------------------------------------------------- Build and Run: This testcase will output to console. It can be built and executed on QEMU as follows: mkdir build && cd build cmake -DBOARD=qemu_x86 .. make run -------------------------------------------------------------------------------- Troubleshooting/Problem Solving: Issues will occur if the object files and other related files generated from previous build are not discarded. In that scenario below step can be followed make pristine # remove old outdir directory # discard results/files generated from previous build -------------------------------------------------------------------------------- Sample Output: Running test suite boot_page_table_validate =================================================================== starting test - test_boot_page_table PASS - test_boot_page_table. =================================================================== =================================================================== PROJECT EXECUTION SUCCESSFUL