kselftest/arm64: Verify the GCS hwcap

Add coverage of the GCS hwcap to the hwcap selftest, using a read of
GCSPR_EL0 to generate SIGILL without having to worry about enabling GCS.

Reviewed-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Tested-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20241001-arm64-gcs-v13-29-222b78d87eee@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Mark Brown 2024-10-01 23:59:08 +01:00 committed by Catalin Marinas
parent 5d8b172e70
commit 7a2f671db6

View File

@ -98,6 +98,17 @@ static void fpmr_sigill(void)
asm volatile("mrs x0, S3_3_C4_C4_2" : : : "x0");
}
static void gcs_sigill(void)
{
unsigned long *gcspr;
asm volatile(
"mrs %0, S3_3_C2_C5_1"
: "=r" (gcspr)
:
: "cc");
}
static void ilrcpc_sigill(void)
{
/* LDAPUR W0, [SP, #8] */
@ -534,6 +545,14 @@ static const struct hwcap_data {
.sigill_fn = fpmr_sigill,
.sigill_reliable = true,
},
{
.name = "GCS",
.at_hwcap = AT_HWCAP,
.hwcap_bit = HWCAP_GCS,
.cpuinfo = "gcs",
.sigill_fn = gcs_sigill,
.sigill_reliable = true,
},
{
.name = "JSCVT",
.at_hwcap = AT_HWCAP,