This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

[patch] Add fido support (Part 6/n)


Hi,

Attached is the sixth in a series of patches to add fido support to
binutils.

This patch adds two new movec registers.  movec registers are control
registers that are accessible only through the movec instruction.

Tested by building binutils and newlib, which already uses these
registers.  OK to apply?

Kazu Hirata

gas/
2006-12-25  Kazu Hirata  <kazu@codesourcery.com>

	* config/m68k-parse.h (m68k_register): Add CAC and MBB.
	* config/tc-m68k.c (fido_ctrl): New.
	(m68k_archs): Use fido_ctrl for -mfidoa.
	(m68k_cpus): Use fido_ctrl on fido-*-*.
	(m68k_ip): Add support for CAC and MBB.
	(init_table): Add CAC and MBB.

opcodes/
2006-12-25  Kazu Hirata  <kazu@codesourcery.com>

	* m68k-dis.c (print_insn_arg): Add support for cac and mbb.

Index: gas/config/m68k-parse.h
===================================================================
RCS file: /cvs/src/src/gas/config/m68k-parse.h,v
retrieving revision 1.9
diff -u -d -p -r1.9 m68k-parse.h
--- gas/config/m68k-parse.h	23 Jun 2005 11:40:28 -0000	1.9
+++ gas/config/m68k-parse.h	25 Dec 2006 23:49:16 -0000
@@ -126,7 +126,9 @@ enum m68k_register
   FLASHBAR, RAMBAR,  		/* mcf528x added these.  */
   MBAR2,  		        /* mcf5249 added this.  */
   MBAR,
-#define last_movec_reg MBAR
+  CAC,  		        /* fido added this.  */
+  MBB,
+#define last_movec_reg MBB
   /* End of movec ordering constraints.  */
 
   FPI,
Index: gas/config/tc-m68k.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-m68k.c,v
retrieving revision 1.80
diff -u -d -p -r1.80 tc-m68k.c
--- gas/config/tc-m68k.c	25 Dec 2006 22:39:21 -0000	1.80
+++ gas/config/tc-m68k.c	25 Dec 2006 23:49:16 -0000
@@ -231,6 +231,10 @@ static const enum m68k_register mcfv4e_c
   PCR3U0, PCR3L0, PCR3U1, PCR3L1,
   0
 };
+static const enum m68k_register fido_ctrl[] = {
+  SFC, DFC, USP, VBR, CAC, MBB,
+  0
+};
 #define cpu32_ctrl m68010_ctrl
 
 static const enum m68k_register *control_regs;
@@ -421,7 +425,7 @@ static const struct m68k_cpu m68k_archs[
   {m68040,					m68040_ctrl, "68040", 0},
   {m68060,					m68060_ctrl, "68060", 0},
   {cpu32|m68881,				cpu32_ctrl, "cpu32", 0},
-  {cpu32|fido_a,				cpu32_ctrl, "fidoa", 0},
+  {cpu32|fido_a,				fido_ctrl, "fidoa", 0},
   {mcfisa_a|mcfhwdiv,				NULL, "isaa", 0},
   {mcfisa_a|mcfhwdiv|mcfisa_aa|mcfusp,		NULL, "isaaplus", 0},
   {mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp,		NULL, "isab", 0},
@@ -553,7 +557,7 @@ static const struct m68k_cpu m68k_cpus[]
   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5485", -1},
   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "548x", 0},
   
-  {cpu32|fido_a,				cpu32_ctrl, "fido", 1},
+  {cpu32|fido_a,				fido_ctrl, "fido", 1},
 
   {0,NULL,NULL, 0}
   };
@@ -3074,6 +3078,12 @@ m68k_ip (char *instring)
             case PCR3U1:
               tmpreg = 0xD0F;
               break;
+            case CAC:
+              tmpreg = 0xFFE;
+              break;
+            case MBB:
+              tmpreg = 0xFFF;
+              break;
 	    default:
 	      abort ();
 	    }
@@ -3798,6 +3808,9 @@ static const struct init_entry init_tabl
   { "rambar",   RAMBAR },  	/* mcf528x registers.  */
 
   { "mbar2",    MBAR2 },  	/* mcf5249 registers.  */
+
+  { "cac",    CAC },  		/* fido registers.  */
+  { "mbb",    MBB },  		/* fido registers.  */
   /* End of control registers.  */
 
   { "ac", AC },
Index: opcodes/m68k-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/m68k-dis.c,v
retrieving revision 1.23
diff -u -d -p -r1.23 m68k-dis.c
--- opcodes/m68k-dis.c	25 May 2006 08:09:03 -0000	1.23
+++ opcodes/m68k-dis.c	25 Dec 2006 23:49:16 -0000
@@ -650,7 +650,10 @@ print_insn_arg (const char *d,
 	     /* Should we be calling this psr like we do in case 'Y'?  */
 	     {"%mmusr",0x805},
 
-             {"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808}};
+             {"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808},
+
+	     /* Fido added these.  */
+             {"%cac", 0xffe}, {"%mbb", 0xfff}};
 
 	val = fetch_arg (buffer, place, 12, info);
 	for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--)


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