]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/arm64: add HWCAP2_LRCPC3 test
authorJoey Gouly <joey.gouly@arm.com>
Tue, 19 Sep 2023 16:27:57 +0000 (17:27 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 13 Oct 2023 18:12:03 +0000 (19:12 +0100)
Add a test for the newly added HWCAP2_LRCPC3.

Signed-off-by: Joey Gouly <joey.gouly@arm.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20230919162757.2707023-3-joey.gouly@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
tools/testing/selftests/arm64/abi/hwcap.c

index d8a144213d044320be72cd4e5c5225aa41056e21..a60f23794944dde6999194bd166ac6dadbb8517e 100644 (file)
@@ -295,6 +295,19 @@ static void uscat_sigbus(void)
        asm volatile(".inst 0xb820003f" : : : );
 }
 
+static void lrcpc3_sigill(void)
+{
+       int data[2] = { 1, 2 };
+
+       register int *src asm ("x0") = data;
+       register int data0 asm ("w2") = 0;
+       register int data1 asm ("w3") = 0;
+
+       /* LDIAPP w2, w3, [x0] */
+       asm volatile(".inst 0x99431802"
+                     : "=r" (data0), "=r" (data1) : "r" (src) :);
+}
+
 static const struct hwcap_data {
        const char *name;
        unsigned long at_hwcap;
@@ -354,6 +367,13 @@ static const struct hwcap_data {
                .cpuinfo = "ilrcpc",
                .sigill_fn = ilrcpc_sigill,
        },
+       {
+               .name = "LRCPC3",
+               .at_hwcap = AT_HWCAP2,
+               .hwcap_bit = HWCAP2_LRCPC3,
+               .cpuinfo = "lrcpc3",
+               .sigill_fn = lrcpc3_sigill,
+       },
        {
                .name = "LSE",
                .at_hwcap = AT_HWCAP,