Adds the GPC bypass windows defined in D9.2 of the Arm ARM. D9.8 (the
APAS instruction) is not implemented yet.
A large part of this is testing. To test GPC effectively, we need to
check that memory accesses are causing exceptions, or not causing exceptions
as appropriate. For some tests, boot.S is altered to record certain
exceptions and continue executing the test. An alternative would be
to use gdbstub to break on locations inside the vector table and continue,
but this requires significant coordination between the C test binary and
Python test driver, so has been avoided for now.
Signed-off-by: Jim MacArthur <jim.macarthur@linaro.org>
---
Jim MacArthur (5):
target/arm/cpu-features.h: x-rme now means GPC3
target/arm: Setup new registers for GPC3
target/arm/ptw.c: Add Granule Bypass Windows
tests/tcg/aarch64/system: Alternative boot object for exception logging
tests/tcg/aarch64/system/gpc-test.c: Basic test for granule protection check
target/arm/cpu-features.h | 5 +
target/arm/cpu.h | 7 ++
target/arm/helper.c | 19 ++++
target/arm/ptw.c | 50 ++++++++++
target/arm/tcg/cpu64.c | 4 +-
tests/tcg/aarch64/Makefile.softmmu-target | 22 +++-
tests/tcg/aarch64/system/boot.S | 62 ++++++++++++
tests/tcg/aarch64/system/boot.h | 14 +++
tests/tcg/aarch64/system/gpc-test.c | 160 ++++++++++++++++++++++++++++++
9 files changed, 336 insertions(+), 7 deletions(-)
---
base-commit: 2db91528542672cf0db78b3f2cc0e22b36302b38
change-id: 20260528-jmac-gpc3b-187f9d7cf0dd
Best regards,
--
Jim MacArthur <jim.macarthur@linaro.org>