mirror of
https://github.com/iceHtwoO/novaOS.git
synced 2026-04-17 04:32:27 +00:00
feat: Implement a basic MMU configuration
This commit is contained in:
@@ -1,16 +1,33 @@
|
||||
static SCTLR_EL1_MMU_DISABLED: u64 = 0; //M
|
||||
static SCTLR_EL1_DATA_CACHE_DISABLED: u64 = 0 << 2; //C
|
||||
static SCTLR_EL1_INSTRUCTION_CACHE_DISABLED: u64 = 0 << 12; //I
|
||||
static SCTLR_EL1_LITTLE_ENDIAN_EL0: u64 = 0 << 24; //E0E
|
||||
static SCTLR_EL1_LITTLE_ENDIAN_EL1: u64 = 0 << 25; //EE
|
||||
const SCTLR_EL1_MMU_ENABLED: u64 = 1; //M
|
||||
const SCTLR_EL1_DATA_CACHE_DISABLED: u64 = 0 << 2; //C
|
||||
const SCTLR_EL1_INSTRUCTION_CACHE_DISABLED: u64 = 0 << 12; //I
|
||||
const SCTLR_EL1_LITTLE_ENDIAN_EL0: u64 = 0 << 24; //E0E
|
||||
const SCTLR_EL1_LITTLE_ENDIAN_EL1: u64 = 0 << 25; //EE
|
||||
const SCTLR_EL1_SPAN: u64 = 1 << 23; //SPAN
|
||||
|
||||
#[allow(clippy::identity_op)]
|
||||
static SCTLR_EL1_RES: u64 = (0 << 6) | (1 << 11) | (0 << 17) | (1 << 20) | (1 << 22); //Res0 & Res1
|
||||
const SCTLR_EL1_RES: u64 = (0 << 6) | (1 << 11) | (0 << 17) | (1 << 20) | (1 << 22); //Res0 & Res1
|
||||
|
||||
#[no_mangle]
|
||||
pub static SCTLR_EL1_CONF: u64 = SCTLR_EL1_MMU_DISABLED
|
||||
pub static SCTLR_EL1_CONF: u64 = SCTLR_EL1_MMU_ENABLED
|
||||
| SCTLR_EL1_DATA_CACHE_DISABLED
|
||||
| SCTLR_EL1_INSTRUCTION_CACHE_DISABLED
|
||||
| SCTLR_EL1_LITTLE_ENDIAN_EL0
|
||||
| SCTLR_EL1_LITTLE_ENDIAN_EL1
|
||||
| SCTLR_EL1_RES;
|
||||
| SCTLR_EL1_RES
|
||||
| SCTLR_EL1_SPAN;
|
||||
|
||||
const TG0: u64 = 0b00 << 14; // 4KB granularity EL0
|
||||
const T0SZ: u64 = 25; // 25 Bits of TTBR select -> 39 Bits of VA
|
||||
const SH0: u64 = 0b11 << 12; // Inner shareable
|
||||
|
||||
const TG1: u64 = 0b10 << 30; // 4KB granularity EL1
|
||||
const T1SZ: u64 = 25 << 16; // 25 Bits of TTBR select -> 39 Bits of VA
|
||||
const EPD1: u64 = 0b1 << 23; // Trigger translation fault when using TTBR1_EL1
|
||||
const SH1: u64 = 0b11 << 28; // Inner sharable
|
||||
|
||||
const IPS: u64 = 0b000 << 32; // 32 bits of PA space -> up to 4GiB
|
||||
const AS: u64 = 0b1 << 36; // configure an ASID size of 16 bits
|
||||
|
||||
#[no_mangle]
|
||||
pub static TCR_EL1_CONF: u64 = IPS | TG0 | TG1 | T0SZ | T1SZ | SH0 | SH1 | EPD1 | AS;
|
||||
|
||||
Reference in New Issue
Block a user