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.
|
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