[kernel][mmu] De-templatize the ArchMmu code

In a previous change an allocation routine that both x86 and arm's page
table code was made a template parameter with the idea that for testing
it could use a different allocator without adding a conditional to the
regular routine.

The idea is sound, but the implementation detail of needing to pass
around this template parameter everywhere plus the amount of code
duplication (around 5KB on arm, somewhere around 12KB on x86) is a bit
excessive.

Pass the test routine in as an argument to ::Init() and have a default
just use the regular routine.

Tested: booted on qemu on arm and x86, with and without KVM. Run system
unit tests as well as kernel unittests, which actually uses the
allocator hook.

Change-Id: Iee2236314fe4d7d49e8e18621cac7beb0410dbde
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/375422
Commit-Queue: Travis Geiselbrecht <travisg@google.com>
Reviewed-by: Nick Maniscalco <maniscalco@google.com>
Testability-Review: Nick Maniscalco <maniscalco@google.com>
10 files changed
tree: 70ff98630a17b8e4940e10bc035af9de60346315
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. garnet/
  7. prebuilt/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .dir-locals.el
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. AUTHORS
  23. BUILD.gn
  24. CODE_OF_CONDUCT.md
  25. CONTRIBUTING.md
  26. LICENSE
  27. OWNERS
  28. PATENTS
  29. README.md
  30. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.