qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ppc64 XER potentially ignored/not setting


From: Thomas Huth
Subject: Re: ppc64 XER potentially ignored/not setting
Date: Tue, 16 Nov 2021 08:26:03 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0

On 30/10/2021 19.19, Kyle Lehman wrote:
Hello all,

I work with the libre-soc team in the testing area.  Recently I have started on writing an interface that uses qemu as another means to verify our results from our own simulations against qemu.
The basic workflow I have set up is:

1. Take a test (which are usually one or two instructions, along with a supplied list of registers)
2. Compile it as a bin (no loader, nothing but the compiled instructions), 
launch qemu along with gdb, set registers, PC, etc. via gdb
3. Step the instructions, extract registers with gdb and compare them to our 
own results
This works fairly well for int registers and from what I can tell so far the 
CR.  However, and I must apologize if this is somewhat beyond the scope of 
what qemu can do since I'm basically treating it as a finite state machine 
for this...on tests that use or would cause a change in the XER: so, ca, ov 
are ignored.
Launching as (built from latest master):
qemu-system-ppc64 -machine powernv9 -cpu power9 -nographic -s -S -m size=1024 -kernel test_path.bin
Instruction of test:
sraw 3, 1, 2      : 7c 23 16 30 (big endian)
r1 = 0x82345678
r2 = 8

Upon execution r3 is set correctly to 0xffffffffff823456, however ca is not set within the XER when it should be.
Could you reproduce the issue with a stand alone binary, too? ... it would 
be interesting to know whether the problem is in the GDB interface or in the 
emulation part...
 Thomas


There is another test that is a little more involved, which will actually use the XER only *if* I execute the instruction twice by setting the PC back to it again.  I can provide that if needed.
Regards,
Kyle




reply via email to

[Prev in Thread] Current Thread [Next in Thread]