mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
xen/riscv: add VM space layout
Also it was added explanation about ignoring of top VA bits Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> Acked-by: Bobby Eshleman <bobbyeshleman@gmail.com>
This commit is contained in:
1 parent
94200e1bae
commit
efadb18dd5
1 file changed
+36
@@ -4,6 +4,42 @@
|
||||
#include <xen/const.h>
|
||||
#include <xen/page-size.h>
|
||||
|
||||
/*
|
||||
* RISC-V64 Layout:
|
||||
*
|
||||
#if RV_STAGE1_MODE == SATP_MODE_SV39
|
||||
*
|
||||
* From the riscv-privileged doc:
|
||||
* When mapping between narrower and wider addresses,
|
||||
* RISC-V zero-extends a narrower physical address to a wider size.
|
||||
* The mapping between 64-bit virtual addresses and the 39-bit usable
|
||||
* address space of Sv39 is not based on zero-extension but instead
|
||||
* follows an entrenched convention that allows an OS to use one or
|
||||
* a few of the most-significant bits of a full-size (64-bit) virtual
|
||||
* address to quickly distinguish user and supervisor address regions.
|
||||
*
|
||||
* It means that:
|
||||
* top VA bits are simply ignored for the purpose of translating to PA.
|
||||
*
|
||||
* ============================================================================
|
||||
* Start addr | End addr | Size | Slot |area description
|
||||
* ============================================================================
|
||||
* FFFFFFFFC0800000 | FFFFFFFFFFFFFFFF |1016 MB | L2 511 | Unused
|
||||
* FFFFFFFFC0600000 | FFFFFFFFC0800000 | 2 MB | L2 511 | Fixmap
|
||||
* FFFFFFFFC0200000 | FFFFFFFFC0600000 | 4 MB | L2 511 | FDT
|
||||
* FFFFFFFFC0000000 | FFFFFFFFC0200000 | 2 MB | L2 511 | Xen
|
||||
* ... | 1 GB | L2 510 | Unused
|
||||
* 0000003200000000 | 0000007F80000000 | 309 GB | L2 200-509 | Direct map
|
||||
* ... | 1 GB | L2 199 | Unused
|
||||
* 0000003100000000 | 00000031C0000000 | 3 GB | L2 196-198 | Frametable
|
||||
* ... | 1 GB | L2 195 | Unused
|
||||
* 0000003080000000 | 00000030C0000000 | 1 GB | L2 194 | VMAP
|
||||
* ... | 194 GB | L2 0 - 193 | Unused
|
||||
* ============================================================================
|
||||
*
|
||||
#endif
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_RISCV_64)
|
||||
# define LONG_BYTEORDER 3
|
||||
# define ELFSIZE 64
|
||||
|
||||