Inject an exception into EL1 instead of panicking for unsupported MSRs

When accessing an unsupported, undefined, or deliberately blocked system
register, inject an exception into the EL1 of the VM instead of panicking.

Exception Class (EC) 0x0 is used, because it applies to accessing a system
register that is either not allocated or not permitted. See Arm Architecture
Reference Manual Armv8-A, page D13-2924.

Added a basic unit test for this, which I plan to expand to ensure that other
protected system registers inject exceptions.

Bug: 140916188
Change-Id: Idaf3c420bdd5a4b5e1d77000c6f850476dc3acc6
16 files changed
tree: 411543af00cdd71e6690fff5e84604a43b50803a
  1. .vscode/
  2. build/
  3. docs/
  4. driver/
  5. inc/
  6. kokoro/
  7. project/
  8. src/
  9. test/
  10. third_party/
  11. vmlib/
  12. .clang-format
  13. .clang-tidy
  14. .gitignore
  15. .gitmodules
  16. .gn
  17. AUTHORS
  18. BUILD.gn
  19. CONTRIBUTING.md
  20. LICENSE
  21. Makefile
  22. README.md
README.md

Hafnium

Hafnium is a hypervisor, initially supporting aarch64 (64-bit ARMv8 CPUs).

Get in touch and keep up-to-date at hafnium-discuss@googlegroups.com.

Getting started

To jump in and build Hafnium, follow the getting started instructions.

If you want to contribute to the project, see details of how we accept contributions.

Documentation

More documentation is available on: