diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0acf61a1489..20a5a16b298 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-19  Nathan Sidwell  <nathan@codesourcery.com>
+
+	* gas/config/tc-m68k.c (m68k_init_arch): Move checking of
+	cfloat/m68881 to correct architecture before using it.
+
 2006-05-16  Bjoern Haase  <bjoern.m.haase@web.de>
 
         * config/tc-avr.h (TC_VALIDATE_FIX): Allow fixups for immediate
diff --git a/gas/config/tc-m68k.c b/gas/config/tc-m68k.c
index f370e6cf8e9..6cf85d7e603 100644
--- a/gas/config/tc-m68k.c
+++ b/gas/config/tc-m68k.c
@@ -7233,6 +7233,15 @@ m68k_init_arch (void)
   
   current_architecture &= ~not_current_architecture;
 
+  if ((current_architecture & (cfloat | m68881)) == (cfloat | m68881))
+    {
+      /* Determine which float is really meant.  */
+      if (current_architecture & (m68k_mask & ~m68881))
+	current_architecture ^= cfloat;
+      else
+	current_architecture ^= m68881;
+    }
+
   if (selected_cpu)
     {
       control_regs = selected_cpu->control_regs;
@@ -7244,15 +7253,6 @@ m68k_init_arch (void)
 	}
     }
 
-  if ((current_architecture & (cfloat | m68881)) == (cfloat | m68881))
-    {
-      /* Determine which float is really meant.  */
-      if (current_architecture & (m68k_mask & ~m68881))
-	current_architecture ^= cfloat;
-      else
-	current_architecture ^= m68881;
-    }
-
   if ((current_architecture & m68k_mask)
       && (current_architecture & ~m68k_mask))
     {