Commit 7a2f671d authored by Mark Brown's avatar Mark Brown Committed by Catalin Marinas
Browse files

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: default avatarThiago Jung Bauermann <thiago.bauermann@linaro.org>
Tested-by: default avatarThiago Jung Bauermann <thiago.bauermann@linaro.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20241001-arm64-gcs-v13-29-222b78d87eee@kernel.org


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 5d8b172e
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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,