* ARM float/double conversion
@ 2001-12-05 6:54 Timothy Wall
2001-12-05 8:05 ` Andrew Cagney
0 siblings, 1 reply; 4+ messages in thread
From: Timothy Wall @ 2001-12-05 6:54 UTC (permalink / raw)
To: gdb
In gdb/doublest.c, there is some conversion done for
floatformat_littlebyte_bigword (currently only used by ARM):
longswaps = fmt->totalsize / FLOATFORMAT_CHAR_BIT;
longswaps >>= 3;
while (longswaps-- > 0)
{
/* This is ugly, but efficient */
*swapout++ = swapin[4];
*swapout++ = swapin[5];
*swapout++ = swapin[6];
*swapout++ = swapin[7];
*swapout++ = swapin[0];
*swapout++ = swapin[1];
*swapout++ = swapin[2];
*swapout++ = swapin[3];
swapin += 8;
}
What's odd is that fmt->totalsize can be either 64 or 96, based on the formats
defined in libiberty/floatformat.c. For either case, longswaps will be 1, so
I don't understand why
this code was "generalized". I assume that the extended double on the ARM has
just the
first two 32-bit words swapped.
I actually need to extend this code to do similar swaps for a 32-bit float,
and was going to
"generalize" to accommodate that (little-endian, bigword, word size is 16
bits).
T.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: ARM float/double conversion
2001-12-05 6:54 ARM float/double conversion Timothy Wall
@ 2001-12-05 8:05 ` Andrew Cagney
2001-12-05 8:16 ` Richard Earnshaw
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Cagney @ 2001-12-05 8:05 UTC (permalink / raw)
To: twall; +Cc: gdb
> In gdb/doublest.c, there is some conversion done for
> floatformat_littlebyte_bigword (currently only used by ARM):
>
> longswaps = fmt->totalsize / FLOATFORMAT_CHAR_BIT;
> longswaps >>= 3;
>
> while (longswaps-- > 0)
> {
> /* This is ugly, but efficient */
> *swapout++ = swapin[4];
> *swapout++ = swapin[5];
> *swapout++ = swapin[6];
> *swapout++ = swapin[7];
> *swapout++ = swapin[0];
> *swapout++ = swapin[1];
> *swapout++ = swapin[2];
> *swapout++ = swapin[3];
> swapin += 8;
> }
>
> What's odd is that fmt->totalsize can be either 64 or 96, based on the formats
> defined in libiberty/floatformat.c. For either case, longswaps will be 1, so
> I don't understand why
> this code was "generalized". I assume that the extended double on the ARM has
> just the
> first two 32-bit words swapped.
No. I'm pretty sure the hardware engineers wouldn't have done that. I
suspect instead that this is a long standing problem with cross
debugging the Arm. Anyone got an Arm spec available - my Arm book
suggests the above is wrong but isn't 100% clear?
Andrew
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2001-12-05 17:36 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-05 6:54 ARM float/double conversion Timothy Wall
2001-12-05 8:05 ` Andrew Cagney
2001-12-05 8:16 ` Richard Earnshaw
2001-12-05 9:36 ` Andrew Cagney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox