[kernel][arm64] Expose and enable FEAT_MOPS for EL0

This adds the ZX_ARM64_FEATURE_ISA_MOPS flag for the arm64
zx_system_get_features.  When the hardware supports FEAT_MOPS,
the kernel allows the instructions to be used in EL0.

This makes possible a new kind of machine exception, which is now
mapped to ZX_EXCP_UNDEFINED_INSTRUCTION rather than the catch-all
ZX_EXCP_GENERAL.  zxtest doesn't preserve exception details to be
checked by the test code, but the new userland test does include
a death test for inducing that exception (by flipping C between a
prologue insn and a main-body that has something left to do).

Change-Id: Ie6539364e89dd8fd9b03a4ec0758b1cb7abc6b4f
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1188013
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
API-Review: Roland McGrath <mcgrathr@google.com>
Reviewed-by: Travis Geiselbrecht <travisg@google.com>
Fuchsia-Auto-Submit: Roland McGrath <mcgrathr@google.com>
9 files changed
tree: 8e1a55caf03fcfb1d7d9cd71e901624662bdae72
  1. .helix/
  2. boards/
  3. build/
  4. bundles/
  5. docs/
  6. examples/
  7. infra/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .editorconfig
  18. .git-blame-ignore-revs
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. .gn
  23. .ignore
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyproject.toml
  34. pyrightconfig.json
  35. README.md
  36. rustfmt.toml
  37. shac.star
  38. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.