summary refs log tree commit diff stats
path: root/results/classifier/zero-shot/108/other/1469342
blob: 9a22528330874bca09c9ef5f3c970a89361c1eef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
semantic: 0.665
other: 0.660
graphic: 0.553
device: 0.484
performance: 0.432
debug: 0.341
vnc: 0.273
PID: 0.252
permissions: 0.243
network: 0.233
boot: 0.226
socket: 0.202
files: 0.198
KVM: 0.130

qemu-i386 pentium3/athlon incorrect instruction set

Running a binary containing a movsd instruction (SSE2) in 32-bit qemu-i386 -cpu pentium3 from 20150609 results in flawless execution whereas it should crash with SIGILL as P3 only had SSE.

Still there in the latest master.

To clarify, running the binary with the -cpu athlon switch (same instruction set as P3) also exhibits the problem whereas a real athlon  SIGILL's correctly.

QEMU doesn't try to mimic the exact set of instructions for a processor, unfortunately. Virtualization solutions like KVM also do not allow you to do that, so the case for this feature is relatively minor.

However, patches are welcome.

I'm pretty sure you're right regarding entire instruction sets - but surely simply disabling SSE2 is possible even now? (after all pentium2 and below doesn't have it)

That could solve this problem with a simple hack like, eg. :

pentium3 = $pentium3 - SSE2



In the case it's really unfixable and both pentium3 and athlon are nothing more than aliases for 'QEMU Virtual CPU version 2.4.50' they should be removed from the list the user gets after:

qemu-i386 -cpu help

so as not to mislead. Thanks!

After looking at target-i386/cpu.c, it's clear to me CPUID_SSE and CPUID_SSE2 are defined seperately and neither pentium3 nor athlon have those defines set. 

This could mean it's a bug not in the instruction set but possibly in the build process somewhere.

This option is useful for testing, nothing more.

I think I may have found the culprit - athlon is defined as 'PPRO_FEATURES + some additional features'.

If  PPRO_FEATURES is what I think it is (pentium pro) why does it have SSE and SSE2 defined? It should end with MMX.