mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
* amd64-tdep.c (amd64_classify): Add support for decimal float
types. * i386-tdep.c (i386_return_value): Make 128-bit decimal float use the struct return convention.
This commit is contained in:
parent
cd72c29180
commit
5daa78cc6f
@ -1,3 +1,10 @@
|
||||
2008-02-26 Thiago Jung Bauermann <bauerman@br.ibm.com>
|
||||
|
||||
* amd64-tdep.c (amd64_classify): Add support for decimal float
|
||||
types.
|
||||
* i386-tdep.c (i386_return_value): Make 128-bit decimal float
|
||||
use the struct return convention.
|
||||
|
||||
2008-02-26 Nick Roberts <nickrob@snap.net.nz>
|
||||
|
||||
* breakpoint.c (print_one_breakpoint_location): Revert Enb field
|
||||
|
@ -364,15 +364,19 @@ amd64_classify (struct type *type, enum amd64_reg_class class[2])
|
||||
&& (len == 1 || len == 2 || len == 4 || len == 8))
|
||||
class[0] = AMD64_INTEGER;
|
||||
|
||||
/* Arguments of types float, double and __m64 are in class SSE. */
|
||||
else if (code == TYPE_CODE_FLT && (len == 4 || len == 8))
|
||||
/* Arguments of types float, double, _Decimal32, _Decimal64 and __m64
|
||||
are in class SSE. */
|
||||
else if ((code == TYPE_CODE_FLT || code == TYPE_CODE_DECFLOAT)
|
||||
&& (len == 4 || len == 8))
|
||||
/* FIXME: __m64 . */
|
||||
class[0] = AMD64_SSE;
|
||||
|
||||
/* Arguments of types __float128 and __m128 are split into two
|
||||
halves. The least significant ones belong to class SSE, the most
|
||||
/* Arguments of types __float128, _Decimal128 and __m128 are split into
|
||||
two halves. The least significant ones belong to class SSE, the most
|
||||
significant one to class SSEUP. */
|
||||
/* FIXME: __float128, __m128. */
|
||||
else if (code == TYPE_CODE_DECFLOAT && len == 16)
|
||||
/* FIXME: __float128, __m128. */
|
||||
class[0] = AMD64_SSE, class[1] = AMD64_SSEUP;
|
||||
|
||||
/* The 64-bit mantissa of arguments of type long double belongs to
|
||||
class X87, the 16-bit exponent plus 6 bytes of padding belongs to
|
||||
|
@ -1579,10 +1579,12 @@ i386_return_value (struct gdbarch *gdbarch, struct type *type,
|
||||
{
|
||||
enum type_code code = TYPE_CODE (type);
|
||||
|
||||
if ((code == TYPE_CODE_STRUCT
|
||||
|| code == TYPE_CODE_UNION
|
||||
|| code == TYPE_CODE_ARRAY)
|
||||
&& !i386_reg_struct_return_p (gdbarch, type))
|
||||
if (((code == TYPE_CODE_STRUCT
|
||||
|| code == TYPE_CODE_UNION
|
||||
|| code == TYPE_CODE_ARRAY)
|
||||
&& !i386_reg_struct_return_p (gdbarch, type))
|
||||
/* 128-bit decimal float uses the struct return convention. */
|
||||
|| (code == TYPE_CODE_DECFLOAT && TYPE_LENGTH (type) == 16))
|
||||
{
|
||||
/* The System V ABI says that:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user