This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
m68k_register_virtual_type
- From: Andreas Schwab <schwab at suse dot de>
- To: gdb-patches at sources dot redhat dot com
- Date: Fri, 22 Nov 2002 11:53:10 +0100
- Subject: m68k_register_virtual_type
[ Seems like this mail didn't come through although I'm sure it left my
notebook. ]
The m68k sr, fpcontrol and fpstatus registers don't contain addresses, so
they should be treated like any other integer register. Committed.
Andreas.
2002-11-22 Andreas Schwab <schwab@suse.de>
* m68k-tdep.c (m68k_register_virtual_type): Return int for SR, FPC
and FPS registers.
Index: gdb/m68k-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68k-tdep.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -p -a -u -p -a -r1.27 -r1.28
--- gdb/m68k-tdep.c 18 Nov 2002 22:19:28 -0000 1.27
+++ gdb/m68k-tdep.c 22 Nov 2002 00:02:03 -0000 1.28
@@ -148,20 +148,25 @@ m68k_register_virtual_size (int regnum)
return (((unsigned) (regnum) - FP0_REGNUM) < 8 ? 12 : 4);
}
-/* Return the GDB type object for the "standard" data type of data
- in register N. This should be int for D0-D7, long double for FP0-FP7,
- and void pointer for all others (A0-A7, PC, SR, FPCONTROL etc).
- Note, for registers which contain addresses return pointer to void,
- not pointer to char, because we don't want to attempt to print
- the string after printing the address. */
+/* Return the GDB type object for the "standard" data type of data in
+ register N. This should be int for D0-D7, SR, FPCONTROL and
+ FPSTATUS, long double for FP0-FP7, and void pointer for all others
+ (A0-A7, PC, FPIADDR). Note, for registers which contain
+ addresses return pointer to void, not pointer to char, because we
+ don't want to attempt to print the string after printing the
+ address. */
static struct type *
m68k_register_virtual_type (int regnum)
{
- if ((unsigned) regnum >= E_FPC_REGNUM)
+ if (regnum == E_FPI_REGNUM)
return lookup_pointer_type (builtin_type_void);
+ else if ((unsigned) regnum >= E_FPC_REGNUM)
+ return builtin_type_int;
else if ((unsigned) regnum >= FP0_REGNUM)
return builtin_type_long_double;
+ else if (regnum == PS_REGNUM)
+ return builtin_type_int;
else if ((unsigned) regnum >= A0_REGNUM)
return lookup_pointer_type (builtin_type_void);
else
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."