Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire
@ 2009-11-17 12:15 Maxim Kuvyrkov
  2009-11-17 12:22 ` [PATCH, M68K] Handle lack of FPU registers Maxim Kuvyrkov
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Maxim Kuvyrkov @ 2009-11-17 12:15 UTC (permalink / raw)
  To: gdb-patches

Hi,

I'm submitting the following series of patches on behalf of my 
colleagues at CodeSourcery.  These patches fix a couple of issues in 
m68k support and generally improve support for ColdFire subarchitecture.

The cumulative patch was test on coldfire-elf and coldfire-linux targets 
with no regressions.  ColdFire-elf results show several progressions 
while coldfire-linux results show many progressions.

--
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH, M68K] Handle lack of FPU registers
  2009-11-17 12:15 [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Maxim Kuvyrkov
@ 2009-11-17 12:22 ` Maxim Kuvyrkov
  2009-11-17 12:28 ` [PATCH, M68K] Add regformat file for ColdFire registers Maxim Kuvyrkov
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Maxim Kuvyrkov @ 2009-11-17 12:22 UTC (permalink / raw)
  To: gdb-patches; +Cc: Daniel Jacobowitz

[-- Attachment #1: Type: text/plain, Size: 390 bytes --]

This patch by Daniel Jacobowitz fixes handling of FPU-less ColdFire CPUs.

Note: m68k_gdbarch_init() invokes set_gdbarch_fp0_regnum twice, the 
first call is conditioned on fpregs_present, the second invocation is 
erroneous and, thus, should be removed.

Dan, feel free to check in this patch yourself.

Regards,

-- 
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724

[-- Attachment #2: fsf-gdb-m68k-cf-fp-regs.ChangeLog --]
[-- Type: text/plain, Size: 182 bytes --]

2009-11-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* m68k-tdep.c (m68k_register_name): Check fpregs_present.
	(m68k_gdbarch_init): Remove a duplicate of set_gdbarch_fp0_regnum.

[-- Attachment #3: fsf-gdb-m68k-cf-fp-regs.patch --]
[-- Type: text/plain, Size: 1194 bytes --]

 ChangeLog.cf-fp-regs |    5 +++++
 gdb/m68k-tdep.c      |    4 +++-
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c
index dcf8779..9cbbbb3 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -179,6 +179,9 @@ m68k_register_name (struct gdbarch *gdbarch, int regnum)
   if (regnum < 0 || regnum >= ARRAY_SIZE (m68k_register_names))
     internal_error (__FILE__, __LINE__,
 		    _("m68k_register_name: illegal register number %d"), regnum);
+  else if (regnum >= M68K_FP0_REGNUM && regnum <= M68K_FPI_REGNUM
+	   && gdbarch_tdep (gdbarch)->fpregs_present == 0)
+    return "";
   else
     return m68k_register_names[regnum];
 }
@@ -1190,7 +1193,6 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_sp_regnum (gdbarch, M68K_SP_REGNUM);
   set_gdbarch_pc_regnum (gdbarch, M68K_PC_REGNUM);
   set_gdbarch_ps_regnum (gdbarch, M68K_PS_REGNUM);
-  set_gdbarch_fp0_regnum (gdbarch, M68K_FP0_REGNUM);
   set_gdbarch_convert_register_p (gdbarch, m68k_convert_register_p);
   set_gdbarch_register_to_value (gdbarch,  m68k_register_to_value);
   set_gdbarch_value_to_register (gdbarch, m68k_value_to_register);

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH, M68K] Add regformat file for ColdFire registers
  2009-11-17 12:15 [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Maxim Kuvyrkov
  2009-11-17 12:22 ` [PATCH, M68K] Handle lack of FPU registers Maxim Kuvyrkov
@ 2009-11-17 12:28 ` Maxim Kuvyrkov
  2009-11-17 12:34 ` [PATCH, M68K] Fix initialization Maxim Kuvyrkov
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Maxim Kuvyrkov @ 2009-11-17 12:28 UTC (permalink / raw)
  To: gdb-patches; +Cc: Nathan Sidwell, Vladimir Prus, Daniel Jacobowitz

[-- Attachment #1: Type: text/plain, Size: 272 bytes --]

The following patch adds regformat entry for the ColdFire registers and 
adjusts configure scripts to select between the two register formats: 
reg-m68k.dat and reg-cf.dat.

OK to apply?

Thanks,

-- 
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724

[-- Attachment #2: fsf-gdb-m68k-regs.ChangeLog --]
[-- Type: text/plain, Size: 444 bytes --]

2009-11-17  Nathan Sidwell  <nathan@codesourcery.com>
2009-11-17  Vladimir Prus  <vladimir@codesourcery.com>

	* Makefile.in (reg-cf.o, reg-cf.c): New targets.
	* configure.ac: Check for __mcoldfire__ and set
	gdb_cv_m68k_is_coldfire.
	* configure.srv: Use gdb_cv_m68k_is_coldfire to select between
	reg-cf.o and reg-m68k.o.
	* configure: Regenerated.

2009-11-17  Nathan Sidwell  <nathan@codesourcery.com>

	* regformats/reg-cf.dat: New file.

[-- Attachment #3: fsf-gdb-m68k-regs.patch --]
[-- Type: text/plain, Size: 4527 bytes --]

 ChangeLog.regs              |   10 ++++++++++
 gdb/gdbserver/Makefile.in   |    3 +++
 gdb/gdbserver/configure     |   29 +++++++++++++++++++++++++++++
 gdb/gdbserver/configure.ac  |   12 ++++++++++++
 gdb/gdbserver/configure.srv |   12 ++++++++++--
 gdb/regformats/reg-cf.dat   |   33 +++++++++++++++++++++++++++++++++
 6 files changed, 97 insertions(+), 2 deletions(-)

diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 155094b..cfd9d0f 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -359,6 +359,9 @@ reg-m32r.c : $(srcdir)/../regformats/reg-m32r.dat $(regdat_sh)
 reg-m68k.o : reg-m68k.c $(regdef_h)
 reg-m68k.c : $(srcdir)/../regformats/reg-m68k.dat $(regdat_sh)
 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-m68k.dat reg-m68k.c
+reg-cf.o : reg-cf.c $(regdef_h)
+reg-cf.c : $(srcdir)/../regformats/reg-cf.dat $(regdat_sh)
+	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-cf.dat reg-cf.c
 mips-linux.o : mips-linux.c $(regdef_h)
 mips-linux.c : $(srcdir)/../regformats/mips-linux.dat $(regdat_sh)
 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/mips-linux.dat mips-linux.c
diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
index 955f716..93aeb78 100755
--- a/gdb/gdbserver/configure
+++ b/gdb/gdbserver/configure
@@ -4005,6 +4005,35 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_i386_is_x86_64" >&5
 $as_echo "$gdb_cv_i386_is_x86_64" >&6; }
     ;;
+  m68k-*-*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for Coldfire" >&5
+$as_echo_n "checking if building for Coldfire... " >&6; }
+if test "${gdb_cv_m68k_is_coldfire+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_CPPFLAGS="$CPPFLAGS"
+                    CPPFLAGS="$CPPFLAGS $CFLAGS"
+                    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef __mcoldfire__
+got it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "got it" >/dev/null 2>&1; then :
+  gdb_cv_m68k_is_coldfire=yes
+else
+  gdb_cv_m68k_is_coldfire=no
+fi
+rm -f conftest*
+
+                    CPPFLAGS="$save_CPPFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_m68k_is_coldfire" >&5
+$as_echo "$gdb_cv_m68k_is_coldfire" >&6; }
+    ;;
 esac
 
 . ${srcdir}/configure.srv
diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
index 57eaf21..215387d 100644
--- a/gdb/gdbserver/configure.ac
+++ b/gdb/gdbserver/configure.ac
@@ -90,6 +90,18 @@ got it
                     [gdb_cv_i386_is_x86_64=no])
                     CPPFLAGS="$save_CPPFLAGS"])
     ;;
+  m68k-*-*)
+    AC_CACHE_CHECK([if building for Coldfire], [gdb_cv_m68k_is_coldfire],
+      	           [save_CPPFLAGS="$CPPFLAGS"
+                    CPPFLAGS="$CPPFLAGS $CFLAGS"
+                    AC_EGREP_CPP([got it], [
+#ifdef __mcoldfire__
+got it
+#endif
+                 ], [gdb_cv_m68k_is_coldfire=yes],
+                    [gdb_cv_m68k_is_coldfire=no])
+                    CPPFLAGS="$save_CPPFLAGS"])
+    ;;
 esac
 
 . ${srcdir}/configure.srv
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index ea746be..1814b0e 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -98,13 +98,21 @@ case "${target}" in
 			srv_linux_usrregs=yes
  			srv_linux_thread_db=yes
 			;;
-  m68*-*-linux*)	srv_regobj=reg-m68k.o
+  m68*-*-linux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
+                          srv_regobj=reg-cf.o
+                        else
+                          src_regobj=reg-m68k.o
+                        fi
 			srv_tgtobj="linux-low.o linux-m68k-low.o"
 			srv_linux_usrregs=yes
 			srv_linux_regsets=yes
 			srv_linux_thread_db=yes
 			;;
-  m68*-*-uclinux*)	srv_regobj=reg-m68k.o
+  m68*-*-uclinux*)	if test "$gdb_cv_m68k_is_coldfire" = yes; then
+                          srv_regobj=reg-cf.o
+                        else
+                          src_regobj=reg-m68k.o
+                        fi
 			srv_tgtobj="linux-low.o linux-m68k-low.o"
 			srv_linux_usrregs=yes
 			srv_linux_regsets=yes
diff --git a/gdb/regformats/reg-cf.dat b/gdb/regformats/reg-cf.dat
new file mode 100644
index 0000000..068aa75
--- /dev/null
+++ b/gdb/regformats/reg-cf.dat
@@ -0,0 +1,33 @@
+name:m68k
+expedite:sp,fp,pc
+32:d0
+32:d1
+32:d2
+32:d3
+32:d4
+32:d5
+32:d6
+32:d7
+32:a0
+32:a1
+32:a2
+32:a3
+32:a4
+32:a5
+32:fp
+32:sp
+32:ps
+32:pc
+
+64:fp0
+64:fp1
+64:fp2
+64:fp3
+64:fp4
+64:fp5
+64:fp6
+64:fp7
+
+32:fpcontrol
+32:fpstatus
+32:fpiaddr

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH, M68K] Fix initialization
  2009-11-17 12:15 [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Maxim Kuvyrkov
  2009-11-17 12:22 ` [PATCH, M68K] Handle lack of FPU registers Maxim Kuvyrkov
  2009-11-17 12:28 ` [PATCH, M68K] Add regformat file for ColdFire registers Maxim Kuvyrkov
@ 2009-11-17 12:34 ` Maxim Kuvyrkov
  2009-11-17 12:36 ` [PATCH, M68K] Support xml testsuite Maxim Kuvyrkov
  2009-11-17 15:40 ` [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Daniel Jacobowitz
  4 siblings, 0 replies; 6+ messages in thread
From: Maxim Kuvyrkov @ 2009-11-17 12:34 UTC (permalink / raw)
  To: gdb-patches; +Cc: Daniel Jacobowitz

[-- Attachment #1: Type: text/plain, Size: 236 bytes --]

Hi,

This patch makes m68k_gdbarch_init reuse previous initialization if 
there is one; this is quite similar to what other targets do.

OK to apply?

Regards,

-- 
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724

[-- Attachment #2: fsf-gdb-m68k-reinit-fix.ChangeLog --]
[-- Type: text/plain, Size: 123 bytes --]

2009-11-17  Daniel Jacobowitz  <dan@codesourcery.com>

	* m68k-tdep.c (m68k_gdbarch_init): Reuse previous initialization.


[-- Attachment #3: fsf-gdb-m68k-reinit-fix.patch --]
[-- Type: text/plain, Size: 592 bytes --]

 gdb/m68k-tdep.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c
index dcf8779..e6a4177 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -1160,6 +1160,13 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       break;
     }
 
+  if (best_arch != NULL)
+    {
+      if (tdesc_data != NULL)
+	tdesc_data_cleanup (tdesc_data);
+      return best_arch->gdbarch;
+    }
+
   tdep = xzalloc (sizeof (struct gdbarch_tdep));
   gdbarch = gdbarch_alloc (&info, tdep);
   tdep->fpregs_present = has_fp;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH, M68K] Support xml testsuite
  2009-11-17 12:15 [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Maxim Kuvyrkov
                   ` (2 preceding siblings ...)
  2009-11-17 12:34 ` [PATCH, M68K] Fix initialization Maxim Kuvyrkov
@ 2009-11-17 12:36 ` Maxim Kuvyrkov
  2009-11-17 15:40 ` [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Daniel Jacobowitz
  4 siblings, 0 replies; 6+ messages in thread
From: Maxim Kuvyrkov @ 2009-11-17 12:36 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 194 bytes --]

Hi,

This simple patch adds support for the gdb.xml testsuite for M68K and 
ColdFire targets.

OK to apply?

Regards,

-- 
Maxim Kuvyrkov
CodeSourcery
maxim@codesourcery.com
(650) 331-3385 x724

[-- Attachment #2: fsf-gdb-m68k-testsuite.ChangeLog --]
[-- Type: text/plain, Size: 189 bytes --]

2009-11-17  Nathan Sidwell  <nathan@codesourcery.com>

	* features/m68k-core.xml: New file.

2009-11-17  Nathan Sidwell  <nathan@codesourcery.com>

	* gdb.xml/tdesc-regs.exp: Use for m68k.

[-- Attachment #3: fsf-gdb-m68k-testsuite.patch --]
[-- Type: text/plain, Size: 1730 bytes --]

 ChangeLog.testsuite                  |    6 ++++++
 gdb/features/m68k-core.xml           |   24 ++++++++++++++++++++++++
 gdb/testsuite/gdb.xml/tdesc-regs.exp |    3 +++
 3 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/gdb/features/m68k-core.xml b/gdb/features/m68k-core.xml
new file mode 100644
index 0000000..f0b3d30
--- /dev/null
+++ b/gdb/features/m68k-core.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
+<feature name="org.gnu.gdb.coldfire.core">
+  <reg name="d0" bitsize="32"/>
+  <reg name="d1" bitsize="32"/>
+  <reg name="d2" bitsize="32"/>
+  <reg name="d3" bitsize="32"/>
+  <reg name="d4" bitsize="32"/>
+  <reg name="d5" bitsize="32"/>
+  <reg name="d6" bitsize="32"/>
+  <reg name="d7" bitsize="32"/>
+  <reg name="a0" bitsize="32" type="data_ptr"/>
+  <reg name="a1" bitsize="32" type="data_ptr"/>
+  <reg name="a2" bitsize="32" type="data_ptr"/>
+  <reg name="a3" bitsize="32" type="data_ptr"/>
+  <reg name="a4" bitsize="32" type="data_ptr"/>
+  <reg name="a5" bitsize="32" type="data_ptr"/>
+  <reg name="fp" bitsize="32" type="data_ptr"/>
+  <reg name="sp" bitsize="32" type="data_ptr"/>
+
+  <reg name="ps" bitsize="32"/>
+  <reg name="pc" bitsize="32" type="code_ptr"/>
+
+</feature>
diff --git a/gdb/testsuite/gdb.xml/tdesc-regs.exp b/gdb/testsuite/gdb.xml/tdesc-regs.exp
index cc61cd0..958b18f 100644
--- a/gdb/testsuite/gdb.xml/tdesc-regs.exp
+++ b/gdb/testsuite/gdb.xml/tdesc-regs.exp
@@ -32,6 +32,9 @@ switch -glob -- [istarget] {
     "xscale-*-*" {
         set core-regs {arm-core.xml}
     }
+    "*m68k-*-*" {
+        set core-regs {m68k-core.xml}
+    }
     "mips*-*-*" {
 	set core-regs {mips-cpu.xml mips-cp0.xml mips-fpu.xml}
     }

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHES, M68K] Various fixes and improvements for M68K and  ColdFire
  2009-11-17 12:15 [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Maxim Kuvyrkov
                   ` (3 preceding siblings ...)
  2009-11-17 12:36 ` [PATCH, M68K] Support xml testsuite Maxim Kuvyrkov
@ 2009-11-17 15:40 ` Daniel Jacobowitz
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Jacobowitz @ 2009-11-17 15:40 UTC (permalink / raw)
  To: Maxim Kuvyrkov; +Cc: gdb-patches

On Tue, Nov 17, 2009 at 03:14:00PM +0300, Maxim Kuvyrkov wrote:
> Hi,
> 
> I'm submitting the following series of patches on behalf of my
> colleagues at CodeSourcery.  These patches fix a couple of issues in
> m68k support and generally improve support for ColdFire
> subarchitecture.
> 
> The cumulative patch was test on coldfire-elf and coldfire-linux
> targets with no regressions.  ColdFire-elf results show several
> progressions while coldfire-linux results show many progressions.

These patches are all OK to check in.

-- 
Daniel Jacobowitz
CodeSourcery


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-11-17 15:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-17 12:15 [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Maxim Kuvyrkov
2009-11-17 12:22 ` [PATCH, M68K] Handle lack of FPU registers Maxim Kuvyrkov
2009-11-17 12:28 ` [PATCH, M68K] Add regformat file for ColdFire registers Maxim Kuvyrkov
2009-11-17 12:34 ` [PATCH, M68K] Fix initialization Maxim Kuvyrkov
2009-11-17 12:36 ` [PATCH, M68K] Support xml testsuite Maxim Kuvyrkov
2009-11-17 15:40 ` [PATCHES, M68K] Various fixes and improvements for M68K and ColdFire Daniel Jacobowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox