|
Kernelite 0.1.0
Kernelite is a minimalist, educational operating system kernel built from scratch. The project aims to recreate core components of the Linux architecture to explore the fundamentals of operating system design and hardware-software interaction.
|
MAIR attribute byte layout for Normal (cacheable) memory. More...
Data Fields | |
| uint8_t | inner_write_alloc: 1 |
| uint8_t | inner_read_alloc: 1 |
| uint8_t | inner_write_back: 1 |
| uint8_t | inner_non_transient: 1 |
| uint8_t | outer_write_alloc: 1 |
| uint8_t | outer_read_alloc: 1 |
| uint8_t | outer_write_back: 1 |
| uint8_t | outer_non_transient: 1 |
MAIR attribute byte layout for Normal (cacheable) memory.
The byte is split into two 4-bit cache-policy nibbles:
Per-nibble encoding: 0b0000 = Device / invalid (only legal for outer nibble to mark Device) 0b0100 = Non-cacheable 0bNWRT = Cacheable: N=Non-transient, W=Write-Back, R=Read-Alloc, T=Write-Alloc
| uint8_t mair_normal_attr_t::inner_non_transient |
[3] Inner: 1=Non-transient, 0=Transient hint.
| uint8_t mair_normal_attr_t::inner_read_alloc |
[1] Inner Read-Allocate on cache miss.
| uint8_t mair_normal_attr_t::inner_write_alloc |
[0] Inner Write-Allocate on cache miss.
| uint8_t mair_normal_attr_t::inner_write_back |
[2] Inner policy: 1=Write-Back, 0=Write-Through.
| uint8_t mair_normal_attr_t::outer_non_transient |
[7] Outer: 1=Non-transient, 0=Transient hint.
| uint8_t mair_normal_attr_t::outer_read_alloc |
[5] Outer Read-Allocate on cache miss.
| uint8_t mair_normal_attr_t::outer_write_alloc |
[4] Outer Write-Allocate on cache miss.
| uint8_t mair_normal_attr_t::outer_write_back |
[6] Outer policy: 1=Write-Back, 0=Write-Through.