diff options
author | Stephane Carrez <stcarrez@nerim.fr> | 2002-08-13 16:19:22 +0000 |
---|---|---|
committer | Stephane Carrez <stcarrez@nerim.fr> | 2002-08-13 16:19:22 +0000 |
commit | 5706502aab5d26fc794f0f3458450e4764fbba36 (patch) | |
tree | b0d47bdd7e7a08bc3e0f28c281f45ea0197d1b95 | |
parent | 28fc67409494a8a33cb1a7826a896a054ca71dd3 (diff) | |
download | gdb-5706502aab5d26fc794f0f3458450e4764fbba36.zip gdb-5706502aab5d26fc794f0f3458450e4764fbba36.tar.gz gdb-5706502aab5d26fc794f0f3458450e4764fbba36.tar.bz2 |
* m68hc11-tdep.c (HARD_PAGE_REGNUM): Define for 68HC12 page register.
(M68HC11_LAST_HARD_REG, m68hc11_register_names): Update.
(m68hc11_register_virtual_type): Return a 8-bit type for 8-bit
registers.
(m68hc11_register_raw_size): Likewise.
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/m68hc11-tdep.c | 35 |
2 files changed, 39 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 766a796..f66f294 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2002-08-13 Stephane Carrez <stcarrez@nerim.fr> + + * m68hc11-tdep.c (HARD_PAGE_REGNUM): Define for 68HC12 page register. + (M68HC11_LAST_HARD_REG, m68hc11_register_names): Update. + (m68hc11_register_virtual_type): Return a 8-bit type for 8-bit + registers. + (m68hc11_register_raw_size): Likewise. + 2002-08-13 Andrew Cagney <cagney@redhat.com> * i386-tdep.c (i386_register_name): Handle mmx registers. diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c index 11237bb..c2f7a4b 100644 --- a/gdb/m68hc11-tdep.c +++ b/gdb/m68hc11-tdep.c @@ -55,7 +55,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define HARD_A_REGNUM 5 #define HARD_B_REGNUM 6 #define HARD_CCR_REGNUM 7 -#define M68HC11_LAST_HARD_REG (HARD_CCR_REGNUM) + +/* 68HC12 page number register. + Note: to keep a compatibility with gcc register naming, we must + not have to rename FP and other soft registers. The page register + is a real hard register and must therefore be counted by NUM_REGS. + For this it has the same number as Z register (which is not used). */ +#define HARD_PAGE_REGNUM 8 +#define M68HC11_LAST_HARD_REG (HARD_PAGE_REGNUM) /* Z is replaced by X or Y by gcc during machine reorg. ??? There is no way to get it and even know whether @@ -114,7 +121,7 @@ static char * m68hc11_register_names[] = { "x", "d", "y", "sp", "pc", "a", "b", - "ccr", "z", "frame","tmp", "zs", "xy", 0, + "ccr", "page", "frame","tmp", "zs", "xy", 0, "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", "d16", "d17", "d18", "d19", "d20", "d21", @@ -891,7 +898,17 @@ m68hc11_call_dummy_address (void) static struct type * m68hc11_register_virtual_type (int reg_nr) { - return builtin_type_uint16; + switch (reg_nr) + { + case HARD_PAGE_REGNUM: + case HARD_A_REGNUM: + case HARD_B_REGNUM: + case HARD_CCR_REGNUM: + return builtin_type_uint8; + + default: + return builtin_type_uint16; + } } static void @@ -1014,7 +1031,17 @@ m68hc11_register_byte (int reg_nr) static int m68hc11_register_raw_size (int reg_nr) { - return M68HC11_REG_SIZE; + switch (reg_nr) + { + case HARD_PAGE_REGNUM: + case HARD_A_REGNUM: + case HARD_B_REGNUM: + case HARD_CCR_REGNUM: + return 1; + + default: + return M68HC11_REG_SIZE; + } } static int |