Implement mapping pages in safe Rust, extensively using Rust's Typing System,...
Implement mapping pages in safe Rust, extensively using Rust's Typing System, Generics, and Specialization to handle all 4 page tables and support all 3 page sizes. Unsafe blocks only remain for dereferencing calculated addresses of the page tables and calling ASM/C functions. While it wasn't possible to port the optimized iterative algorithm from the C implementation of __page_map to safe Rust, the performance penalty of this recursive algorithm should be negligible. An iterative approach may be considered again as soon as Rust supports generic code over varying array sizes. This replaces the __page_map API provided by HermitCore.