zephyr/soc/xtensa/dc233c
Flavio Ceolin c47880af0d arch/xtensa: Add new MMU layer
Andy Ross re-implementation of MMU layer with some subtle changes,
like re-using existent macros, fix page table cache property when
direct mapping it in TLB.

From Andy's original commit message:

This is a reworked MMU layer, sitting cleanly below the page table
handling in the OS.  Notable differences from the original work:

+ Significantly smaller code and simpler API (just three functions to
  be called from the OS/userspace/ptable layer).

+ Big README-MMU document containing my learnings over the process, so
  hopefully fewer people need to go through this in the future.

+ No TLB flushing needed.  Clean separation of ASIDs, just requires
  that the upper levels match the ASID to the L1 page table page
  consistently.

+ Vector mapping is done with a 4k page and not a 4M page, leading to
  much more flexibility with hardware memory layout.  The original
  scheme required that the 4M region containing vecbase be mapped
  virtually to a location other than the hardware address, which makes
  confusing linkage with call0 and difficult initialization
  constraints where the exception vectors run at different addresses
  before and after MMU setup (effectively forcing them to be PIC
  code).

+ More provably correct initialization, all MMU changes happen in a
  single asm block with no memory accesses which would generate a
  refill.

Signed-off-by: Andy Ross <andyross@google.com>
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2023-11-21 15:49:48 +01:00
..
include arch: xtensa: Rename xtensa_mmu.c to ptables.c 2023-11-21 15:49:48 +01:00
CMakeLists.txt cmake: cleanup and simplify the standard include logic in Zephyr 2023-11-06 18:57:30 -05:00
Kconfig.defconfig boards: qemu_xtensa: use dc233c core 2023-10-20 15:00:14 +02:00
Kconfig.soc xtensa: dc233c: enable userspace support 2023-11-21 15:49:48 +01:00
mmu.c arch/xtensa: Add new MMU layer 2023-11-21 15:49:48 +01:00