Lup,
Another great article!
One suggestion.
In section 10 "Swap the SATP Register"
You mention:
"Huh? Our Applications can meddle with the I/O Memory?
Nope they can’t, because the “U” User Permission is denied. Therefore
we’re all safe and well protected!
"
I may have missed the reference, but this might be a place to introduce
the idea that Kernel trampoline, eCalls, and so forth make use of kernel
memory being mapped and available in all User address spaces so the
Kernel's handling code does not have to immediately swap SATP to access
its data structures.
I know this is a large topic on its own, but am important trick to
learn.
Again, great article! Thanks!!
-KenD