Document TODO steps
This commit is contained in:
parent
bd4015679c
commit
9b5d7b14d3
|
@ -9,3 +9,51 @@ a specific-size page.
|
|||
----
|
||||
|
||||
For more information please re-read.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----
|
||||
|
||||
# Plan
|
||||
1. MMU tables - because we need separate memspaces for kernel and userspace
|
||||
1a. Allocate initial page tables
|
||||
1b. Map over available RAM sensibly
|
||||
1c. Create kernel's own mapping (TTBR_EL1)
|
||||
|
||||
# What does the kernel MMU code support?
|
||||
* mapping
|
||||
* unmapping
|
||||
* switching per-process mappings (virtspaces)
|
||||
* virt2phys resolution
|
||||
* direct phys access for kernel (TTBR_EL1 mapping to physmem)
|
||||
* initial kernel memory allocation: for mapping tables and capnodes, for initial thread TCB and stacks
|
||||
|
||||
# public api:
|
||||
ARMMU invocations:
|
||||
on page directory cap
|
||||
cache maintenance (clean/invalidate/unify)
|
||||
on page table cap
|
||||
map
|
||||
unmap
|
||||
on small frame/frame caps
|
||||
map
|
||||
remap
|
||||
unmap
|
||||
cache maintenance (clean/invalidate/unify)
|
||||
get address
|
||||
on asid control cap
|
||||
on asid pool cap
|
||||
|
||||
|
||||
# Minimum Required Functionality (build from this)
|
||||
* resolve VA to PA - resolving lets kernel access mapped process memory.
|
||||
(start from the process' virtspace root - Page Directory)
|
||||
* flush page, pd, pt, virtspace - will be important for thread switching
|
||||
|
|
Loading…
Reference in New Issue