Barrelfish
Data Structures | Functions
paging_kernel_arch.h File Reference

ARMv8 kernel page-table structures. More...

Data Structures

union  armv8_ttable_entry
 

Functions

void paging_map_kernel (uintptr_t initial_base, size_t initial_size)
 
lvaddr_t paging_map_device (lpaddr_t base, size_t size)
 Map a device into the kernel's address space. More...
 
bool paging_mmu_enabled (void)
 Return whether we have enabled the MMU. Useful for initialization assertions.
 
void paging_map_device_page (uintptr_t l1_table, lvaddr_t device_vbase, lpaddr_t device_pbase, size_t device_bytes)
 
void paging_make_good (lpaddr_t base)
 
void paging_context_switch (lpaddr_t table_addr)
 

Detailed Description

ARMv8 kernel page-table structures.

Function Documentation

void paging_context_switch ( lpaddr_t  ttbr)

/brief Perform a context switch. Reload TTBR0 with the new address, and invalidate the TLBs and caches.

void paging_make_good ( lpaddr_t  base)

Add kernel mappings to newly constructed page table.

Parameters
new_table_addraddress of newly constructed page table.
new_table_bytessize of newly constructed page table.
lvaddr_t paging_map_device ( lpaddr_t  device_base,
size_t  device_bytes 
)

Map a device into the kernel's address space.

Parameters
device_baseis the physical address of the device
device_sizeis the number of bytes of physical address space the device occupies.
Returns
the kernel virtual address of the mapped device, or panic.
void paging_map_device_page ( uintptr_t  l1_table,
lvaddr_t  device_vbase,
lpaddr_t  device_pbase,
size_t  device_bytes 
)

Maps a device to a l2 page. Assumption: corresponding L1 entry already set

void paging_map_kernel ( uintptr_t  initial_base,
size_t  initial_size 
)

Setup bootstrap page table with direct and relocated mappings for kernel.

This function does not enable paging.

Parameters
initial_base
initial_size