summary refs log tree commit diff stats
path: root/gitlab/issues/target_arm/host_missing/accel_TCG/1499.toml
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/issues/target_arm/host_missing/accel_TCG/1499.toml')
-rw-r--r--gitlab/issues/target_arm/host_missing/accel_TCG/1499.toml98
1 files changed, 0 insertions, 98 deletions
diff --git a/gitlab/issues/target_arm/host_missing/accel_TCG/1499.toml b/gitlab/issues/target_arm/host_missing/accel_TCG/1499.toml
deleted file mode 100644
index 1c9d1cce..00000000
--- a/gitlab/issues/target_arm/host_missing/accel_TCG/1499.toml
+++ /dev/null
@@ -1,98 +0,0 @@
-id = 1499
-title = "qemu-system-arm doesn't honour CPACR.ASEDIS, D32DIS"
-state = "opened"
-created_at = "2023-02-21T02:44:11.168Z"
-closed_at = "n/a"
-labels = ["accel: TCG", "target: arm"]
-url = "https://gitlab.com/qemu-project/qemu/-/issues/1499"
-host-os = "Ubuntu 20.04"
-host-arch = "x86"
-qemu-version = "7.2.0"
-guest-os = "-"
-guest-arch = "cortex-a7"
-description = """We used differential testing to compared the instruction consistency (ARMv7) between QEMU and raspberry pi 2B in system level and some inconsistency in SIMD instruction was detected.
-
-We compiled the kernel with options `-mcpu=cortex-a7 -march=armv7ve -mfloat-abi=hard -mfpu=vfpv4 `. Some SIMD instructions are considered as **undefined** instructions in raspi2b, but run successfully in the QEMU. 
-
-We checked that the CPACR.ASEDIS=1, which disables Advanced SIMD functionality, according to ARMv7-a manual B4.1.40.  The manual says "All instruction encodings identified in the Alphabetical list of instructions on page A8-300 as being Advanced SIMD instructions, but that are not VFPv3 or VFPv4
-instructions, are UNDEFINED when accessed from PL1 and PL0 modes."
-
-Tested instruction samples are shown as follows:
-
-- VMAX_int_T1A1_A 11110010010010110000011010100100 0xf24b06a4
-- VMUL_scalar_A1_A 11110010101001001100100 001000011 0xf2a4c843
-- VADD_int_T1A1_A 11110010000111111010100000001100 0xf21fa80c
-
-...
-
-Some checks of the SIMD instructions may be needed before the execution of the instructions in function ` do_3same` etc. in target/arm/translate-neon.c."""
-reproduce = """1. Compile a kernel module to run the test instruction in PL1.
-2. Hook a undefined handler in kernel module to catch the undefined instructions. A kernel module template we used to test is as follows
-
-```c
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <asm/traps.h> 
-
-MODULE_LICENSE("GPL");
-#pragma GCC optimize ("O0")
-// instr is undefined instruction value
-static int undef_instr_handler(struct pt_regs *regs, u32 instr)
-{
-    printk(KERN_INFO "get undefined instruction\\n");
-    // Just skip over to the next instruction.
-    regs->ARM_pc += 4;
-    return 0; // All fine!
-}
-
-static struct undef_hook uh = {
-    .instr_mask  = 0x0, // any instruction
-    .instr_val   = 0x0, // any instruction
-    .cpsr_mask = 0x0, // any pstate
-    .cpsr_val  = 0x0, // any pstate
-    .fn          = undef_instr_handler
-};
-int init_module(void) {
-    // Lookup wanted symbols.
-    register_undef_hook(&uh);
-    __asm__ __volatile__("push {R0-R12}");
-    __asm__ __volatile__(
-      ".global inialize_location\\n"
-      "inialize_location:\\n"
-      "mov r0, %[reg_init]        \\n"
-      "mov r1, %[reg_init]        \\n"
-      "mov r2, %[reg_init]        \\n"
-      "mov r3, %[reg_init]        \\n"
-      "mov r4, %[reg_init]        \\n"
-      "mov r5, %[reg_init]        \\n"
-      "mov r6, %[reg_init]        \\n"
-      "mov r7, %[reg_init]        \\n"
-      "mov r8, %[reg_init]        \\n"
-      "mov r9, %[reg_init]        \\n"
-      "mov r10, %[reg_init]       \\n"
-      "mov r11, %[reg_init]       \\n"
-      "mov r12, %[reg_init]       \\n"
-      :
-      : [reg_init] "n"(0)
-    );
-  // =======TODO=======
-  // replace nop with test instruction
-   __asm__ __volatile__(
-      ".global inst_location\\n"
-      "inst_location:\\n"
-      "nop\\n" 
-    );
-    // kgdb_breakpoint();
-    __asm__ __volatile__(
-      ".global finish_location\\n"
-      "finish_location:\\n"
-    );
-    __asm__ __volatile__("pop {R0-R12}");
-    return 0;
-}
-
-void cleanup_module(void) {
-    unregister_undef_hook(&uh);
-}
-```"""
-additional = """"""