-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hi everyone,
I was playing around a bit with gem5 and noticed by accident that the
O3 CPU model seems to be unable to handle jumps to the same location
(at least, that's what it looks like).
I have the following piece of x86 assembly code:
_start:
jmp _start
mov $0xDEADBEEF, %rax
mov $0xDEADBEEF, %rbx
When I execute that in FS mode with Exec tracing, I get:
355000: system.cpu T0 : @_start. 0 : JMP_I : rdip t1, %ctrl153,
: IntAlu : D=0x0000000000240005
355000: system.cpu T0 : @_start.1 : JMP_I : limm t2,
0xfffffffffffffffb : IntAlu : D=0xfffffffffffffffb
355000: system.cpu T0 : @_start.2 : JMP_I : wrip , t1, t2 :
IntAlu :
359500: system.cpu T0 : @_start.0 : JMP_I : rdip t1, %ctrl153,
: IntAlu : D=0x0000000000240008
359500: system.cpu T0 : @_start.1 : JMP_I : limm t2,
0xfffffffffffffffb : IntAlu : D=0xfffffffffffffffb
359500: system.cpu T0 : @_start.2 : JMP_I : wrip , t1, t2 :
IntAlu :
365000: system.cpu T0 : @_start+3.0 : UD2 : fault Invalid-Opcode
: No_OpClass :
376500: system.cpu T0 : @_start+3.32768 : Microcode_ROM : slli
t4, t1, 0x4 : IntAlu : D=0x0000000000000060
376500: system.cpu T0 : @_start+3.32769 : Microcode_ROM : ld t2,
IDTR:[t4 + 0x8] : MemRead : D=0x0000000000000000 A=0x68
376500: system.cpu T0 : @_start+3.32770 : Microcode_ROM : ld t4,
IDTR:[t4] : MemRead : D=0x0000000000000000 A=0x60
[...]
What happens exactly after the jump, depends on the instructions
behind it. To "fix" that problem, it is sufficient to e.g. add a nop
in the loop:
_start:
nop
jmp _start
Now everything works fine. Note that the problem does not occur with
the timing CPU model.
Best regards,
Nils
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQEcBAEBCAAGBQJWBQHLAAoJEJs2bdYwYTUN0CwH/3McC6HAzQJg7WnHzES681X4
NlMm5hM3ra7GtmkYUs8e5vgEwSF/MTWWY4SHJWji+QXq9gOKdUV9pF7zxYBoqXgw
nZcAta0Cm0BrFXGsZed9f8QDx5FMrB3iI9YJsyBu/AzZ/A1hoiY62hyTdkk758r2
j8gGjlFjjsNqoC00kNcWsmg/p4hgQVAQMU86jfSRAAwKX9RuM4U/jIKTloTiqomr
4hNWVFHeI0xdD6lcipVgESij9RJjYR7847o/s1TuSbzYBER5Wgz/reiNFweA0luO
e4agXYoBcmWDAJ7HpYDf1MeIdcQJxzrs5+DfscSSjDeM0K4cCGBSnFVaQ3hSvbI=
=nOQ2
-----END PGP SIGNATURE-----
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev