This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] [PowerPC] Fix inclusion of dfp pseudoregs in tdep


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0fb2aaa15e04238644471f7d89be3667784b19c0

commit 0fb2aaa15e04238644471f7d89be3667784b19c0
Author: Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com>
Date:   Tue May 22 11:09:05 2018 -0300

    [PowerPC] Fix inclusion of dfp pseudoregs in tdep
    
    Previously, decimal floating point pseudoregisters were always included
    in the target if it had a floating point unit.
    
    This patch changes this to only include them if the target description
    indicates that they are present, i.e. if the FPSCR register has more
    than 32 bits.
    
    gdb/ChangeLog:
    2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
    
    	* rs6000-tdep.c (rs6000_gdbarch_init): Assign 1 to have_dfp only
    	if the size of fpscr is larger than 32 bits.

Diff:
---
 gdb/ChangeLog     |  5 +++++
 gdb/rs6000-tdep.c | 10 ++++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9e74395..db8a6a7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
 2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
 
+	* rs6000-tdep.c (rs6000_gdbarch_init): Assign 1 to have_dfp only
+	if the size of fpscr is larger than 32 bits.
+
+2018-05-22  Pedro Franco de Carvalho  <pedromfc@linux.vnet.ibm.com>
+
 	* ppc-linux-tdep.c (ppc_linux_vsxregset): New function.
 	(ppc32_linux_vsxregmap): New global.
 	(ppc32_linux_vsxregset): Initialize with ppc32_linux_vsxregmap,
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 0a56c78..ff4699c 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -5981,14 +5981,16 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 	      return NULL;
 	    }
 	  have_fpu = 1;
+
+	  /* The fpscr register was expanded in isa 2.05 to 64 bits
+	     along with the addition of the decimal floating point
+	     facility.  */
+	  if (tdesc_register_size (feature, "fpscr") > 32)
+	    have_dfp = 1;
 	}
       else
 	have_fpu = 0;
 
-      /* The DFP pseudo-registers will be available when there are floating
-         point registers.  */
-      have_dfp = have_fpu;
-
       feature = tdesc_find_feature (tdesc,
 				    "org.gnu.gdb.power.altivec");
       if (feature != NULL)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]