Re: [kvm-unit-test PATCH v2] powerpc: Add emulator test for the lswi instruction

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

 



On 10.05.2016 14:05, Paolo Bonzini wrote:
> 
> 
> On 20/04/2016 11:24, Thomas Huth wrote:
>>>> +		      ".long 0x7fe154aa\n"       /* lswi r31, r1, 10 */
>>>
>>> Perhaps you can add a comment explaining why you are using a .long
>>> instead of the mnemonic?
>>
>> The compiler is smart enough to detect that r1 is in the range of
>> registers that get clobbered, and thus rejects that mnemonic. You
>> quickly notice that when replacing the .long with the mnemonic, so I'm
>> not sure whether it's worth to add a verbose comment here... Paolo, what
>> do you prefer?
> 
> The assembler does this, not the compiler.

Right, of course.

> Is this a valid operation at all, or is it undefined?  (aka, what
> does it do on real hardware)? O_o

The specification (PowerISA) says "If RA is in the range of registers to
be loaded, including the case in which RA=0, the instruction form is
invalid." ... which sounds like the CPU is supposed to raise an invalid
instruction exception.

However, on real hardware (POWER8), the CPU simply stops before loading
that register and continues with the next instruction. In any case, the
contents of the RA register should not be destroyed, and this is what
we're testing here. (and this is also already mentioned in a comment
later in the patch already, right before the report() line).

 Thomas

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux