On 06/21/2017 09:18 AM, Philippe Mathieu-Daudé wrote:
+typedef CPU_LDoubleU FPReg;
What an awful name... Anyway checking on "qemu/bswap.h" it seems there is some
endianess issue with it if your host is little-endian.
There is no endian-ness issue because we do not attempt to read that structure
from memory as a whole. Instead, Laurent uses two big-endian loads (with
appropriate address arithmetic) and stores the result into this host structure
in host-endian order. Further, the host routines use the structure members by
name and do not assume any particular relationship between them.
Do you have a way to run Berkeley TestFloat?
As noted in Laurent's cover message, floatx80 isn't quite right -- that is the
x86 data type, and the proper m68k data type is slightly different.
I would expect the results from using floatx80 to be Just Good Enough to
produce a working m68k user-land. It will produce correct results for normal
numbers in arithmetic such as 1.0 + 10.0. But I would expect many of the edge
conditions that TestFloat would attempt (especially de-normals and un-normals)
would fail.
r~