]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ARM: 9327/1: vfp: Add missing VFP instructions to neon_support_hook
authorMark-PK Tsai <mark-pk.tsai@mediatek.com>
Thu, 19 Oct 2023 08:35:22 +0000 (09:35 +0100)
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 5 Dec 2023 11:40:27 +0000 (11:40 +0000)
Add the missing "Unconditional Advanced SIMD and floating-point
instructions" in [1] to the VFP undef hook.

This commit addresses the issue reported in [2], where
executing the vudot instruction on a platform with FEAT_DotProd
support resulted in an undefined instruction error.

Link: https://developer.arm.com/documentation/ddi0597/2023-06/?lang=en
Link: https://lore.kernel.org/lkml/20230920083907.30479-1-mark-pk.tsai@mediatek.com/
Signed-off-by: Mark-PK Tsai <mark-pk.tsai@mediatek.com>
Tested-by: Xuewen Yan <xuewen.yan@unisoc.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
arch/arm/vfp/vfpmodule.c

index 7e8773a2d99d086383fa334b6a10dd9b3a26b011..b68efe643a12ca3242e5f4c5b68acb187f9e0382 100644 (file)
@@ -800,6 +800,24 @@ static struct undef_hook neon_support_hook[] = {{
        .cpsr_mask      = PSR_T_BIT,
        .cpsr_val       = PSR_T_BIT,
        .fn             = vfp_support_entry,
+}, {
+       .instr_mask     = 0xff000800,
+       .instr_val      = 0xfc000800,
+       .cpsr_mask      = 0,
+       .cpsr_val       = 0,
+       .fn             = vfp_support_entry,
+}, {
+       .instr_mask     = 0xff000800,
+       .instr_val      = 0xfd000800,
+       .cpsr_mask      = 0,
+       .cpsr_val       = 0,
+       .fn             = vfp_support_entry,
+}, {
+       .instr_mask     = 0xff000800,
+       .instr_val      = 0xfe000800,
+       .cpsr_mask      = 0,
+       .cpsr_val       = 0,
+       .fn             = vfp_support_entry,
 }};
 
 static struct undef_hook vfp_support_hook = {