summary refs log tree commit diff stats
path: root/results/classifier/semantic-bugs-usermode/test/2318
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-26 11:32:28 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-06-26 11:32:36 +0200
commitadedf8771bc4de3113041ca21bd4d0d1c0014b6a (patch)
tree1e8e456a6e4247061767e0d42740a62102ae1550 /results/classifier/semantic-bugs-usermode/test/2318
parentba2789bd7d81618a42dc7f69706a7acfa591630a (diff)
downloadqemu-analysis-adedf8771bc4de3113041ca21bd4d0d1c0014b6a.tar.gz
qemu-analysis-adedf8771bc4de3113041ca21bd4d0d1c0014b6a.zip
filter for semantic-user-mode bugs
Diffstat (limited to 'results/classifier/semantic-bugs-usermode/test/2318')
-rw-r--r--results/classifier/semantic-bugs-usermode/test/231847
1 files changed, 47 insertions, 0 deletions
diff --git a/results/classifier/semantic-bugs-usermode/test/2318 b/results/classifier/semantic-bugs-usermode/test/2318
new file mode 100644
index 000000000..3defce0d6
--- /dev/null
+++ b/results/classifier/semantic-bugs-usermode/test/2318
@@ -0,0 +1,47 @@
+instruction: 0.871
+device: 0.679
+graphic: 0.495
+assembly: 0.485
+vnc: 0.479
+semantic: 0.460
+boot: 0.291
+socket: 0.281
+network: 0.239
+other: 0.133
+mistranslation: 0.100
+KVM: 0.006
+
+SH4: SUBV instruction not emulated properly
+Description of problem:
+SUBV opcode is emulated incorrectly.
+
+The documentation says:
+
+`SUBV Rm, Rn        Rn - Rm -> Rn, underflow -> T`
+
+Qemu seems to perform the subtraction correctly, but will not detect an underflow.
+Steps to reproduce:
+```c
+#include <stdio.h>
+
+int main(void)
+{
+	register unsigned int a asm("r8") = 0x80000001;
+	register unsigned int b asm("r9") = 0x2;
+	register unsigned int c asm("r10");
+
+	asm volatile("subv %2,%0\n"
+		     "movt %1\n"
+		     : "+r"(a), "=r"(c) : "r"(b) :);
+
+	printf("Values: a=0x%x b=0x%x c=0x%x\n", a, b, c);
+
+	return 0;
+}
+```
+Additional information:
+Tested on real hardware (SEGA Dreamcast, GCC 15.0), the program above prints:
+`Values: a=0x7fffffff b=0x2 c=0x1`
+
+Running with Qemu (and GCC 13.0), the same program prints:
+`Values: a=0x7fffffff b=0x2 c=0x0`