* i386-tdep.c (i386_register_virtual_type): New function.
(i386_register_convertible): New function. * config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE): Redefine in terms of i386_register_virtual_type. (REGISTER_CONVERTIBLE): Redefine in terms of i386_register_convertible. (i386_register_virtual_type, i386_register_convertible): New prototypes.
This commit is contained in:
parent
6e0ce711e9
commit
d7a0d72c95
@ -1,3 +1,14 @@
|
||||
2001-05-09 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* i386-tdep.c (i386_register_virtual_type): New function.
|
||||
(i386_register_convertible): New function.
|
||||
* config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE): Redefine in terms
|
||||
of i386_register_virtual_type.
|
||||
(REGISTER_CONVERTIBLE): Redefine in terms of
|
||||
i386_register_convertible.
|
||||
(i386_register_virtual_type, i386_register_convertible): New
|
||||
prototypes.
|
||||
|
||||
2001-05-08 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* Makefile.in (mn10300-tdep.o): New rule.
|
||||
|
@ -238,23 +238,17 @@ extern int i386_register_virtual_size[];
|
||||
/* Largest value REGISTER_VIRTUAL_SIZE can have. */
|
||||
#define MAX_REGISTER_VIRTUAL_SIZE 16
|
||||
|
||||
/* Return the GDB type object for the "standard" data type of data in
|
||||
register N. Perhaps si and di should go here, but potentially they
|
||||
could be used for things other than address. */
|
||||
/* Return the GDB type object for the "standard" data type of data in
|
||||
register REGNUM. */
|
||||
|
||||
#define REGISTER_VIRTUAL_TYPE(N) \
|
||||
(((N) == PC_REGNUM || (N) == FP_REGNUM || (N) == SP_REGNUM) \
|
||||
? lookup_pointer_type (builtin_type_void) \
|
||||
: IS_FP_REGNUM(N) ? builtin_type_long_double \
|
||||
: IS_SSE_REGNUM(N) ? builtin_type_v4sf \
|
||||
: builtin_type_int)
|
||||
#define REGISTER_VIRTUAL_TYPE(regnum) i386_register_virtual_type (regnum)
|
||||
extern struct type *i386_register_virtual_type (int regnum);
|
||||
|
||||
/* REGISTER_CONVERTIBLE(N) is true iff register N's virtual format is
|
||||
different from its raw format. Note that this definition assumes
|
||||
that the host supports IEEE 32-bit floats, since it doesn't say
|
||||
that SSE registers need conversion. Even if we can't find a
|
||||
counterexample, this is still sloppy. */
|
||||
#define REGISTER_CONVERTIBLE(n) (IS_FP_REGNUM (n))
|
||||
/* Return true iff register REGNUM's virtual format is different from
|
||||
its raw format. */
|
||||
|
||||
#define REGISTER_CONVERTIBLE(regnum) i386_register_convertible (regnum)
|
||||
extern int i386_register_convertible (int regnum);
|
||||
|
||||
/* Convert data from raw format for register REGNUM in buffer FROM to
|
||||
virtual format with type TYPE in buffer TO. */
|
||||
|
@ -905,6 +905,37 @@ i386_extract_struct_value_address (char *regbuf)
|
||||
}
|
||||
|
||||
|
||||
/* Return the GDB type object for the "standard" data type of data in
|
||||
register REGNUM. Perhaps %esi and %edi should go here, but
|
||||
potentially they could be used for things other than address. */
|
||||
|
||||
struct type *
|
||||
i386_register_virtual_type (int regnum)
|
||||
{
|
||||
if (regnum == PC_REGNUM || regnum == FP_REGNUM || regnum == SP_REGNUM)
|
||||
return lookup_pointer_type (builtin_type_void);
|
||||
|
||||
if (IS_FP_REGNUM (regnum))
|
||||
return builtin_type_long_double;
|
||||
|
||||
if (IS_SSE_REGNUM (regnum))
|
||||
return builtin_type_v4sf;
|
||||
|
||||
return builtin_type_int;
|
||||
}
|
||||
|
||||
/* Return true iff register REGNUM's virtual format is different from
|
||||
its raw format. Note that this definition assumes that the host
|
||||
supports IEEE 32-bit floats, since it doesn't say that SSE
|
||||
registers need conversion. Even if we can't find a counterexample,
|
||||
this is still sloppy. */
|
||||
|
||||
int
|
||||
i386_register_convertible (int regnum)
|
||||
{
|
||||
return IS_FP_REGNUM (regnum);
|
||||
}
|
||||
|
||||
/* Convert data from raw format for register REGNUM in buffer FROM to
|
||||
virtual format with type TYPE in buffer TO. In principle both
|
||||
formats are identical except that the virtual format has two extra
|
||||
|
Loading…
Reference in New Issue
Block a user