diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3afe1b4635f..1c0af35eca9 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2004-10-08  Linus Nielsen Feltzing  <linus@haxx.se>
+
+	* config/m68k-parse.h (enum m68k_register): New control register,
+	MBAR2 (for MCF5249)
+	* config/tc-m68k.c: Correct control register set for MCF5249.
+
 2004-10-07  Bob Wilson  <bob.wilson@acm.org>
 
 	* config/tc-xtensa.c (absolute_literals_supported): New global flag.
diff --git a/gas/config/m68k-parse.h b/gas/config/m68k-parse.h
index 3b98b8a065c..769a432c553 100644
--- a/gas/config/m68k-parse.h
+++ b/gas/config/m68k-parse.h
@@ -124,6 +124,7 @@ enum m68k_register
   MBAR0, MBAR1,			/* mcfv4e added these.  */
   ACR0, ACR1, ACR2, ACR3,       /* mcf5200 added these.  */
   FLASHBAR, RAMBAR,  		/* mcf528x added these.  */
+  MBAR2,  		        /* mcf5249 added this.  */
   MBAR,
 #define last_movec_reg MBAR
   /* End of movec ordering constraints.  */
diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c
index d784c03c4a8..04baa6e6e3b 100644
--- a/gas/config/tc-m68k.c
+++ b/gas/config/tc-m68k.c
@@ -178,6 +178,10 @@ static const enum m68k_register mcf_control_regs[] = {
   RAMBAR0, RAMBAR1, MBAR,
   0
 };
+static const enum m68k_register mcf5249_control_regs[] = {
+  CACR, ACR0, ACR1, VBR, RAMBAR0, RAMBAR1, MBAR, MBAR2,
+  0
+};
 static const enum m68k_register mcf528x_control_regs[] = {
   CACR, ACR0, ACR1, VBR, FLASHBAR, RAMBAR,
   0
@@ -2989,6 +2993,7 @@ m68k_ip (char *instring)
               tmpreg = 0xC0D;
               break;
             case MBAR0:
+            case MBAR2:
             case SECMBAR:
               tmpreg = 0xC0E;
               break;
@@ -3754,6 +3759,8 @@ static const struct init_entry init_table[] =
 
   { "flashbar", FLASHBAR }, 	/* mcf528x registers.  */
   { "rambar",   RAMBAR },  	/* mcf528x registers.  */
+
+  { "mbar2",    MBAR2 },  	/* mcf5249 registers.  */
   /* End of control registers.  */
 
   { "ac", AC },
@@ -4341,11 +4348,13 @@ select_control_regs (void)
       break;
     case mcf5200:
     case mcf5206e:
-    case mcf5249:
     case mcf5307:
     case mcf5407:
       control_regs = mcf_control_regs;
       break;
+    case mcf5249:
+      control_regs = mcf5249_control_regs;
+      break;
     case mcf528x:
     case mcf521x:
       control_regs = mcf528x_control_regs;