diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2005-12-08 10:35:18 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@codesourcery.com> | 2005-12-08 10:35:18 +0000 |
commit | 3950dc3f514d6a60c003565e610c925bc7cf4abf (patch) | |
tree | cb6d91d2c585f746cbe108611d17e96751acdb14 /gdb | |
parent | 6e50d963b00bbf8b95fe00354fd2c683971b43ba (diff) | |
download | gdb-3950dc3f514d6a60c003565e610c925bc7cf4abf.zip gdb-3950dc3f514d6a60c003565e610c925bc7cf4abf.tar.gz gdb-3950dc3f514d6a60c003565e610c925bc7cf4abf.tar.bz2 |
Add ms2 support.
* ms1-tdep.c (ms1_register_type): Check for ms2.
(ms1_breakpoint_from_pc): ms2 has a different break instruction.
(ms1_pseudo_register_read, ms1_pseudo_register_write,
ms1_registers_info): Add ms2.
* NEWS (Changes since GDB 6.4): Add ms2
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 11 | ||||
-rw-r--r-- | gdb/NEWS | 4 | ||||
-rw-r--r-- | gdb/ms1-tdep.c | 30 |
3 files changed, 32 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 01538d0..ae693f4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2005-12-08 Nathan Sidwell <nathan@codesourcery.com> + + Add ms2 support. + * ms1-tdep.c (ms1_register_type): Check for ms2. + (ms1_breakpoint_from_pc): ms2 has a different break instruction. + (ms1_pseudo_register_read, ms1_pseudo_register_write, + ms1_registers_info): Add ms2. + * NEWS (Changes since GDB 6.4): Add ms2 + 2005-12-08 Randolph Chung <tausq@debian.org> * somread.c (som_symfile_offsets): Iterate through number of sections @@ -47,7 +56,7 @@ * value.c (init_if_undefined_command): New function. (_initialize_values): Add command init-if-undefined. - * NEWS (Changes since GDB 6.3): Rename to 'Changes in GDB 6.4'. + * NEWS (Changes since GDB 6.3): Rename to 'Changes in GDB 6.4'. (Changes since GDB 6.4): New section. Mention new command init-if-undefined. @@ -8,6 +8,10 @@ init-if-undefined Initialize a convenience variable, but only if it doesn't already have a value. +* New architecture + +Morpho Technologies ms2 ms1-elf + *** Changes in GDB 6.4 * New native configurations diff --git a/gdb/ms1-tdep.c b/gdb/ms1-tdep.c index 2ff83c0..f67af76 100644 --- a/gdb/ms1-tdep.c +++ b/gdb/ms1-tdep.c @@ -198,7 +198,8 @@ ms1_register_type (struct gdbarch *arch, int regnum) case MS1_COPRO_PSEUDOREG_REGNUM: return copro_type; case MS1_MAC_PSEUDOREG_REGNUM: - if (gdbarch_bfd_arch_info (arch)->mach == bfd_mach_mrisc2) + if (gdbarch_bfd_arch_info (arch)->mach == bfd_mach_mrisc2 + || gdbarch_bfd_arch_info (arch)->mach == bfd_mach_ms2) return builtin_type_uint64; else return builtin_type_uint32; @@ -362,15 +363,20 @@ ms1_skip_prologue (CORE_ADDR pc) /* The breakpoint instruction must be the same size as the smallest instruction in the instruction set. - The BP for ms1 is defined as 0x68000000. */ + The BP for ms1 is defined as 0x68000000 (BREAK). + The BP for ms2 is defined as 0x69000000 (illegal) */ static const gdb_byte * ms1_breakpoint_from_pc (CORE_ADDR *bp_addr, int *bp_size) { - static gdb_byte breakpoint[] = { 0x68, 0, 0, 0 }; + static gdb_byte ms1_breakpoint[] = { 0x68, 0, 0, 0 }; + static gdb_byte ms2_breakpoint[] = { 0x69, 0, 0, 0 }; *bp_size = 4; - return breakpoint; + if (gdbarch_bfd_arch_info (current_gdbarch)->mach == bfd_mach_ms2) + return ms2_breakpoint; + + return ms1_breakpoint; } /* Fetch the pseudo registers: @@ -394,7 +400,8 @@ ms1_pseudo_register_read (struct gdbarch *gdbarch, break; case MS1_MAC_REGNUM: case MS1_MAC_PSEUDOREG_REGNUM: - if (gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_mrisc2) + if (gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_mrisc2 + || gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_ms2) { ULONGEST oldmac = 0, ext_mac = 0; ULONGEST newmac; @@ -438,7 +445,8 @@ ms1_pseudo_register_write (struct gdbarch *gdbarch, break; case MS1_MAC_REGNUM: case MS1_MAC_PSEUDOREG_REGNUM: - if (gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_mrisc2) + if (gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_mrisc2 + || gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_ms2) { /* The 8-byte MAC pseudo-register must be broken down into two 32-byte registers. */ @@ -549,16 +557,14 @@ ms1_registers_info (struct gdbarch *gdbarch, /* Get the two "real" mac registers. */ frame_register_read (frame, MS1_MAC_REGNUM, buf); - oldmac = extract_unsigned_integer (buf, - register_size (gdbarch, - MS1_MAC_REGNUM)); + oldmac = extract_unsigned_integer + (buf, register_size (gdbarch, MS1_MAC_REGNUM)); if (gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_mrisc2 || gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_ms2) { frame_register_read (frame, MS1_EXMAC_REGNUM, buf); - ext_mac = extract_unsigned_integer (buf, - register_size (gdbarch, - MS1_EXMAC_REGNUM)); + ext_mac = extract_unsigned_integer + (buf, register_size (gdbarch, MS1_EXMAC_REGNUM)); } else ext_mac = 0; |