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]

Re: Coldfire control registers


Nathan Sidwell wrote:

How about this patch that does 2 things:

1) Add separate 5475 and 5485 lists of control registers. It seems wrong to accept control registers that don't exist :) Of course, we may have a backwards compatibility issue, should people have been using -mcpu=5475 to compiler for some random mcf4ve chip. But then Freescale only list 5407, 5475 and 5485 families :) I didn't think it worthwhile using a common array for the 5475 and 5485 families -- I find it much easier to just have a 1:1 correspondance between coldfire families and control register lists.

2) Adds the ColdFire documented names for the registers, together with the legacy names we've used so far. This addresses the bug report I had, namely not accepting asid.

ok?

I see I forgot to attach the patch -- you could've told me I'm an idiot, guys :)


nathan

--
Nathan Sidwell    ::   http://www.codesourcery.com   ::         CodeSourcery
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk

2007-02-05  Nathan Sidwell  <nathan@codesourcery.com>

	* config/m68k-parse.h (m68k_register): Add ROMBAR0, ASID.
	* config/tc-m68k.c (mcfv4e_ctrl): Add ColdFire specific names.
	(mcf5475_ctrl, mcf5485_ctrl): New.
	(m68k_cpus): Use mcf5485_ctrl and mcf5485_ctrl for those families.
	(m68k_ip): Add ASID, MMUBAR, ROMBAR0 handling.
	(init_table): Add asid, mmubar, adjust rombar0.

Index: config/m68k-parse.h
===================================================================
RCS file: /cvs/src/src/gas/config/m68k-parse.h,v
retrieving revision 1.10
diff -c -3 -p -r1.10 m68k-parse.h
*** config/m68k-parse.h	27 Dec 2006 07:15:02 -0000	1.10
--- config/m68k-parse.h	5 Feb 2007 12:30:19 -0000
*************** enum m68k_register
*** 116,121 ****
--- 116,122 ----
    RAMBAR0,
    RAMBAR1,
    MMUBAR,			/* mcfv4e added these.  */
+   ROMBAR0,			/* mcfv4e added these.  */
    ROMBAR1,			/* mcfv4e added these.  */
    MPCR, EDRAMBAR, SECMBAR,	/* mcfv4e added these.  */
    PCR1U0, PCR1L0, PCR1U1, PCR1L1,/* mcfv4e added these.  */
*************** enum m68k_register
*** 126,131 ****
--- 127,133 ----
    FLASHBAR, RAMBAR,  		/* mcf528x added these.  */
    MBAR2,  		        /* mcf5249 added this.  */
    MBAR,
+   ASID,				/* m5475.  */
    CAC,  		        /* fido added this.  */
    MBB,
  #define last_movec_reg MBB
Index: config/tc-m68k.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-m68k.c,v
retrieving revision 1.82
diff -c -3 -p -r1.82 tc-m68k.c
*** config/tc-m68k.c	8 Jan 2007 18:42:37 -0000	1.82
--- config/tc-m68k.c	5 Feb 2007 12:30:23 -0000
*************** static const enum m68k_register mcf5373_
*** 225,234 ****
    0
  };
  static const enum m68k_register mcfv4e_ctrl[] = {
!   CACR, TC, ITT0, ITT1, DTT0, DTT1, BUSCR, VBR, PC, ROMBAR,
!   ROMBAR1, RAMBAR0, RAMBAR1, MPCR, EDRAMBAR, SECMBAR, MBAR, MBAR0, MBAR1,
    PCR1U0, PCR1L0, PCR1U1, PCR1L1, PCR2U0, PCR2L0, PCR2U1, PCR2L1,
    PCR3U0, PCR3L0, PCR3U1, PCR3L1,
    0
  };
  static const enum m68k_register fido_ctrl[] = {
--- 225,261 ----
    0
  };
  static const enum m68k_register mcfv4e_ctrl[] = {
!   CACR, ASID, ACR0, ACR1, ACR2, ACR3, MMUBAR,
!   VBR, PC, ROMBAR0, ROMBAR1, RAMBAR0, RAMBAR1,
!   MBAR, SECMBAR,
!   MPCR /* Multiprocessor Control register */,
!   EDRAMBAR /* Embedded DRAM Base Address Register */,
!   /* Permutation control registers.  */
    PCR1U0, PCR1L0, PCR1U1, PCR1L1, PCR2U0, PCR2L0, PCR2U1, PCR2L1,
    PCR3U0, PCR3L0, PCR3U1, PCR3L1,
+   /* Legacy names */
+   TC /* ASID */, BUSCR /* MMUBAR */,
+   ITT0 /* ACR0 */, ITT1 /* ACR1 */, DTT0 /* ACR2 */, DTT1 /* ACR3 */,
+   MBAR1 /* MBAR */, MBAR2 /* SECMBAR */, MBAR0 /* SECMBAR */,
+   ROMBAR /* ROMBAR0 */,
+   0
+ };
+ static const enum m68k_register mcf5475_ctrl[] = {
+   CACR, ASID, ACR0, ACR1, ACR2, ACR3, MMUBAR,
+   VBR, PC, RAMBAR0, RAMBAR1, MBAR,
+   /* Legacy names */
+   TC /* ASID */, BUSCR /* MMUBAR */,
+   ITT0 /* ACR0 */, ITT1 /* ACR1 */, DTT0 /* ACR2 */, DTT1 /* ACR3 */,
+   MBAR1 /* MBAR */, ROMBAR /* ROMBAR0 */,
+   0
+ };
+ static const enum m68k_register mcf5485_ctrl[] = {
+   CACR, ASID, ACR0, ACR1, ACR2, ACR3, MMUBAR,
+   VBR, PC, RAMBAR0, RAMBAR1, MBAR,
+   /* Legacy names */
+   TC /* ASID */, BUSCR /* MMUBAR */,
+   ITT0 /* ACR0 */, ITT1 /* ACR1 */, DTT0 /* ACR2 */, DTT1 /* ACR3 */,
+   MBAR1 /* MBAR */, ROMBAR /* ROMBAR0 */,
    0
  };
  static const enum m68k_register fido_ctrl[] = {
*************** static const struct m68k_cpu m68k_cpus[]
*** 541,561 ****
    
    {mcfisa_a|mcfisa_b|mcfhwdiv|mcfmac,		mcf_ctrl, "5407",0},
    
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5470", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5471", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5472", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5473", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5474", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5475", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "547x", 0},
    
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5480", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5481", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5482", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5483", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5484", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "5485", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcfv4e_ctrl, "548x", 0},
    
    {fido_a,				fido_ctrl, "fido", 1},
  
--- 568,588 ----
    
    {mcfisa_a|mcfisa_b|mcfhwdiv|mcfmac,		mcf_ctrl, "5407",0},
    
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "5470", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "5471", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "5472", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "5473", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "5474", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "5475", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5475_ctrl, "547x", 0},
    
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "5480", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "5481", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "5482", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "5483", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "5484", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "5485", -1},
!   {mcfisa_a|mcfisa_b|mcfhwdiv|mcfemac|mcfusp|cfloat, mcf5485_ctrl, "548x", 0},
    
    {fido_a,				fido_ctrl, "fido", 1},
  
*************** m68k_ip (char *instring)
*** 2964,2969 ****
--- 2991,2997 ----
  	      tmpreg = 0x002;
  	      break;
  	    case TC:
+ 	    case ASID:
  	      tmpreg = 0x003;
  	      break;
  	    case ACR0:
*************** m68k_ip (char *instring)
*** 2983,2988 ****
--- 3011,3017 ----
  	      tmpreg = 0x007;
  	      break;
  	    case BUSCR:
+ 	    case MMUBAR:
  	      tmpreg = 0x008;
  	      break;
  
*************** m68k_ip (char *instring)
*** 3014,3019 ****
--- 3043,3049 ----
  	      tmpreg = 0x808;
  	      break;
              case ROMBAR:
+             case ROMBAR0:
  	      tmpreg = 0xC00;
  	      break;
              case ROMBAR1:
*************** static const struct init_entry init_tabl
*** 3759,3765 ****
    { "dacr0", DTT0 },		/* Data Access Control Register 0.  */
    { "dacr1", DTT1 },		/* Data Access Control Register 0.  */
  
!   /* mcf5200 versions of same.  The ColdFire programmer's reference
       manual indicated that the order is 2,3,0,1, but Ken Rose
       <rose@netcom.com> says that 0,1,2,3 is the correct order.  */
    { "acr0", ACR0 },		/* Access Control Unit 0.  */
--- 3789,3795 ----
    { "dacr0", DTT0 },		/* Data Access Control Register 0.  */
    { "dacr1", DTT1 },		/* Data Access Control Register 0.  */
  
!   /* Coldfire versions of same.  The ColdFire programmer's reference
       manual indicated that the order is 2,3,0,1, but Ken Rose
       <rose@netcom.com> says that 0,1,2,3 is the correct order.  */
    { "acr0", ACR0 },		/* Access Control Unit 0.  */
*************** static const struct init_entry init_tabl
*** 3769,3780 ****
--- 3799,3812 ----
  
    { "tc", TC },			/* MMU Translation Control Register.  */
    { "tcr", TC },
+   { "asid", ASID },
  
    { "mmusr", MMUSR },		/* MMU Status Register.  */
    { "srp", SRP },		/* User Root Pointer.  */
    { "urp", URP },		/* Supervisor Root Pointer.  */
  
    { "buscr", BUSCR },
+   { "mmubar", MMUBAR },
    { "pcr", PCR },
  
    { "rombar", ROMBAR },		/* ROM Base Address Register.  */
*************** static const struct init_entry init_tabl
*** 3784,3790 ****
  
    { "mbar0",    MBAR0 },	/* mcfv4e registers.  */
    { "mbar1",    MBAR1 },	/* mcfv4e registers.  */
!   { "rombar0",  ROMBAR },	/* mcfv4e registers.  */
    { "rombar1",  ROMBAR1 },	/* mcfv4e registers.  */
    { "mpcr",     MPCR },		/* mcfv4e registers.  */
    { "edrambar", EDRAMBAR },	/* mcfv4e registers.  */
--- 3816,3822 ----
  
    { "mbar0",    MBAR0 },	/* mcfv4e registers.  */
    { "mbar1",    MBAR1 },	/* mcfv4e registers.  */
!   { "rombar0",  ROMBAR0 },	/* mcfv4e registers.  */
    { "rombar1",  ROMBAR1 },	/* mcfv4e registers.  */
    { "mpcr",     MPCR },		/* mcfv4e registers.  */
    { "edrambar", EDRAMBAR },	/* mcfv4e registers.  */

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