From 4713453b1e6866c908ee95678a44c371cc6cf208 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 30 Jun 2007 17:15:15 +0000 Subject: [PATCH] * m68k-tdep.c (m68k_ps_type): New. (m68k_init_types): New. (m68k_register_type): Use m68k_ps_type for PS register. (_initialize_m68k_tdep): Call m68k_init_types. --- gdb/ChangeLog | 5 +++++ gdb/m68k-tdep.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fde27981a0..94f98e5b55 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2007-06-30 Andreas Schwab + * m68k-tdep.c (m68k_ps_type): New. + (m68k_init_types): New. + (m68k_register_type): Use m68k_ps_type for PS register. + (_initialize_m68k_tdep): Call m68k_init_types. + * m68k-tdep.c (m68k_gdbarch_init): Don't infer coldfire flavour from the generic m68k arch. diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c index 32aa8eb077..f028472c90 100644 --- a/gdb/m68k-tdep.c +++ b/gdb/m68k-tdep.c @@ -69,6 +69,32 @@ m68k_local_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr) *lenptr = sizeof (break_insn); return break_insn; } + + +/* Type for %ps. */ +struct type *m68k_ps_type; + +/* Construct types for ISA-specific registers. */ +static void +m68k_init_types (void) +{ + struct type *type; + + type = init_flags_type ("builtin_type_m68k_ps", 4); + append_flags_type_flag (type, 0, "C"); + append_flags_type_flag (type, 1, "V"); + append_flags_type_flag (type, 2, "Z"); + append_flags_type_flag (type, 3, "N"); + append_flags_type_flag (type, 4, "X"); + append_flags_type_flag (type, 8, "I0"); + append_flags_type_flag (type, 9, "I1"); + append_flags_type_flag (type, 10, "I2"); + append_flags_type_flag (type, 12, "M"); + append_flags_type_flag (type, 13, "S"); + append_flags_type_flag (type, 14, "T0"); + append_flags_type_flag (type, 15, "T1"); + m68k_ps_type = type; +} /* 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 @@ -112,6 +138,9 @@ m68k_register_type (struct gdbarch *gdbarch, int regnum) if (regnum >= M68K_A0_REGNUM && regnum <= M68K_A0_REGNUM + 7) return builtin_type_void_data_ptr; + if (regnum == M68K_PS_REGNUM) + return m68k_ps_type; + return builtin_type_int32; } @@ -1249,4 +1278,7 @@ void _initialize_m68k_tdep (void) { gdbarch_register (bfd_arch_m68k, m68k_gdbarch_init, m68k_dump_tdep); + + /* Initialize the m68k-specific register types. */ + m68k_init_types (); } -- 2.34.1