diff -rU5 binutils-2.16.1/bfd/archures.c binutils-2.16.1-patched/bfd/archures.c
--- binutils-2.16.1/bfd/archures.c	2005-01-17 22:08:03.000000000 +0800
+++ binutils-2.16.1-patched/bfd/archures.c	2005-08-17 13:02:51.120454400 +0800
@@ -344,10 +344,11 @@
 .#define bfd_mach_msp12          12
 .#define bfd_mach_msp13          13
 .#define bfd_mach_msp14          14
 .#define bfd_mach_msp15          15
 .#define bfd_mach_msp16          16  
+.#define bfd_mach_msp210         210
 .#define bfd_mach_msp31          31
 .#define bfd_mach_msp32          32
 .#define bfd_mach_msp33          33
 .#define bfd_mach_msp41          41
 .#define bfd_mach_msp42          42
diff -rU5 binutils-2.16.1/bfd/bfd-in2.h binutils-2.16.1-patched/bfd/bfd-in2.h
--- binutils-2.16.1/bfd/bfd-in2.h	2005-03-03 05:23:20.000000000 +0800
+++ binutils-2.16.1-patched/bfd/bfd-in2.h	2005-08-17 14:14:46.525702400 +0800
@@ -1788,11 +1788,12 @@
 #define bfd_mach_msp110         110
 #define bfd_mach_msp12          12
 #define bfd_mach_msp13          13
 #define bfd_mach_msp14          14
 #define bfd_mach_msp15          15
-#define bfd_mach_msp16          16  
+#define bfd_mach_msp16          16
+#define bfd_mach_msp210         210
 #define bfd_mach_msp31          31
 #define bfd_mach_msp32          32
 #define bfd_mach_msp33          33
 #define bfd_mach_msp41          41
 #define bfd_mach_msp42          42
diff -rU5 binutils-2.16.1/bfd/cpu-msp430.c binutils-2.16.1-patched/bfd/cpu-msp430.c
--- binutils-2.16.1/bfd/cpu-msp430.c	2003-11-04 19:30:54.000000000 +0800
+++ binutils-2.16.1-patched/bfd/cpu-msp430.c	2005-08-17 13:02:51.230612800 +0800
@@ -62,27 +62,30 @@
   N (16, bfd_mach_msp15, "msp:15", FALSE, & arch_info_struct[6]),
   
   /* msp430x16x.  */
   N (16, bfd_mach_msp16, "msp:16", FALSE, & arch_info_struct[7]),
 
+  /* msp430x21x1.  */
+  N (16, bfd_mach_msp210, "msp:210", FALSE, & arch_info_struct[8]),
+
   /* msp430x31x.  */
-  N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[8]), 
+  N (16, bfd_mach_msp31, "msp:31", FALSE, & arch_info_struct[9]), 
 
   /* msp430x32x.  */
-  N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[9]), 
+  N (16, bfd_mach_msp32, "msp:32", FALSE, & arch_info_struct[10]), 
 
   /* msp430x33x.  */
-  N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[10]),
+  N (16, bfd_mach_msp33, "msp:33", FALSE, & arch_info_struct[11]),
   
   /* msp430x41x.  */
-  N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[11]),
+  N (16, bfd_mach_msp41, "msp:41", FALSE, & arch_info_struct[12]),
 
   /* msp430x42x.  */
-  N (16, bfd_mach_msp42, "msp:42", FALSE, & arch_info_struct[12]),
+  N (16, bfd_mach_msp42, "msp:42", FALSE, & arch_info_struct[13]),
 
   /* msp430x43x.  */
-  N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[13]),
+  N (16, bfd_mach_msp43, "msp:43", FALSE, & arch_info_struct[14]),
 
   /* msp430x44x.  */
   N (16, bfd_mach_msp43, "msp:44", FALSE, NULL)
 };
 
diff -rU5 binutils-2.16.1/bfd/doc/archures.texi binutils-2.16.1-patched/bfd/doc/archures.texi
--- binutils-2.16.1/bfd/doc/archures.texi	2005-03-09 01:19:41.000000000 +0800
+++ binutils-2.16.1-patched/bfd/doc/archures.texi	2005-08-17 14:26:02.697990400 +0800
@@ -309,11 +309,12 @@
 #define bfd_mach_msp110         110
 #define bfd_mach_msp12          12
 #define bfd_mach_msp13          13
 #define bfd_mach_msp14          14
 #define bfd_mach_msp15          15
-#define bfd_mach_msp16          16  
+#define bfd_mach_msp16          16
+#define bfd_mach_msp16          210
 #define bfd_mach_msp31          31
 #define bfd_mach_msp32          32
 #define bfd_mach_msp33          33
 #define bfd_mach_msp41          41
 #define bfd_mach_msp42          42
diff -rU5 binutils-2.16.1/bfd/elf32-msp430.c binutils-2.16.1-patched/bfd/elf32-msp430.c
--- binutils-2.16.1/bfd/elf32-msp430.c	2004-10-21 23:28:23.000000000 +0800
+++ binutils-2.16.1-patched/bfd/elf32-msp430.c	2005-08-17 13:02:51.300713600 +0800
@@ -568,10 +568,14 @@
 
     case bfd_mach_msp16:
       val = E_MSP430_MACH_MSP430x16;
       break;
 
+    case bfd_mach_msp210:
+      val = E_MSP430_MACH_MSP430x21x1;
+      break;
+
     case bfd_mach_msp31:
       val = E_MSP430_MACH_MSP430x31;
       break;
 
     case bfd_mach_msp32:
@@ -645,10 +649,14 @@
 
 	case E_MSP430_MACH_MSP430x16:
 	  e_set = bfd_mach_msp16;
 	  break;
 
+	case E_MSP430_MACH_MSP430x21x1:
+	  e_set = bfd_mach_msp210;
+	  break;
+
 	case E_MSP430_MACH_MSP430x31:
 	  e_set = bfd_mach_msp31;
 	  break;
 
 	case E_MSP430_MACH_MSP430x32:
diff -rU5 binutils-2.16.1/gas/config/tc-msp430.c binutils-2.16.1-patched/gas/config/tc-msp430.c
--- binutils-2.16.1/gas/config/tc-msp430.c	2005-02-23 20:28:05.000000000 +0800
+++ binutils-2.16.1-patched/gas/config/tc-msp430.c	2005-08-17 13:06:58.015472000 +0800
@@ -203,10 +203,11 @@
 #define MSP430_ISA_12   12
 #define MSP430_ISA_13   13
 #define MSP430_ISA_14   14
 #define MSP430_ISA_15   15
 #define MSP430_ISA_16   16
+#define MSP430_ISA_210	210
 #define MSP430_ISA_31   31
 #define MSP430_ISA_32   32
 #define MSP430_ISA_33   33
 #define MSP430_ISA_41   41
 #define MSP430_ISA_42   42
@@ -238,10 +239,13 @@
   {"msp430x1331", MSP430_ISA_13, bfd_mach_msp13},
   {"msp430x1351", MSP430_ISA_13, bfd_mach_msp13},
   {"msp430x147",  MSP430_ISA_14, bfd_mach_msp14},
   {"msp430x148",  MSP430_ISA_14, bfd_mach_msp14},
   {"msp430x149",  MSP430_ISA_14, bfd_mach_msp14},
+  {"msp430x1471", MSP430_ISA_14, bfd_mach_msp14},
+  {"msp430x1481", MSP430_ISA_14, bfd_mach_msp14},
+  {"msp430x1491", MSP430_ISA_14, bfd_mach_msp14},
 
   {"msp430x155",  MSP430_ISA_15, bfd_mach_msp15},
   {"msp430x156",  MSP430_ISA_15, bfd_mach_msp15},
   {"msp430x157",  MSP430_ISA_15, bfd_mach_msp15},
   {"msp430x167",  MSP430_ISA_16, bfd_mach_msp16},
@@ -249,10 +253,15 @@
   {"msp430x169",  MSP430_ISA_16, bfd_mach_msp16},
   {"msp430x1610", MSP430_ISA_16, bfd_mach_msp16},
   {"msp430x1611", MSP430_ISA_16, bfd_mach_msp16},
   {"msp430x1612", MSP430_ISA_16, bfd_mach_msp16},
 
+  {"msp430x2101", MSP430_ISA_210, bfd_mach_msp210},
+  {"msp430x2111", MSP430_ISA_210, bfd_mach_msp210},
+  {"msp430x2121", MSP430_ISA_210, bfd_mach_msp210},
+  {"msp430x2131", MSP430_ISA_210, bfd_mach_msp210},
+
   {"msp430x311",  MSP430_ISA_31, bfd_mach_msp31},
   {"msp430x312",  MSP430_ISA_31, bfd_mach_msp31},
   {"msp430x313",  MSP430_ISA_31, bfd_mach_msp31},
   {"msp430x314",  MSP430_ISA_31, bfd_mach_msp31},
   {"msp430x315",  MSP430_ISA_31, bfd_mach_msp31},
@@ -264,10 +273,18 @@
   {"msp430x412",  MSP430_ISA_41, bfd_mach_msp41},
   {"msp430x413",  MSP430_ISA_41, bfd_mach_msp41},
   {"msp430x415",  MSP430_ISA_41, bfd_mach_msp41},
   {"msp430x417",  MSP430_ISA_41, bfd_mach_msp41},
 
+  {"msp430x423",  MSP430_ISA_42, bfd_mach_msp42},
+  {"msp430x425",  MSP430_ISA_42, bfd_mach_msp42},
+  {"msp430x427",  MSP430_ISA_42, bfd_mach_msp42},
+
+  {"msp430x4230", MSP430_ISA_42, bfd_mach_msp42},
+  {"msp430x4250", MSP430_ISA_42, bfd_mach_msp42},
+  {"msp430x4270", MSP430_ISA_42, bfd_mach_msp42},
+
   {"msp430xE423", MSP430_ISA_42, bfd_mach_msp42},
   {"msp430xE425", MSP430_ISA_42, bfd_mach_msp42},
   {"msp430xE427", MSP430_ISA_42, bfd_mach_msp42},
 
   {"msp430xW423", MSP430_ISA_42, bfd_mach_msp42},
@@ -731,24 +748,28 @@
 {
   fprintf (stream,
 	   _("MSP430 options:\n"
 	     "  -mmcu=[msp430-name] select microcontroller type\n"
 	     "                  msp430x110  msp430x112\n"
-	     "                  msp430x1101 msp430x1111\n"
-	     "                  msp430x1121 msp430x1122 msp430x1132\n"
+	     "                  msp430x1101 msp430x1111 msp430x1121\n"
+	     "                  msp430x1122 msp430x1132\n"
 	     "                  msp430x122  msp430x123\n"
 	     "                  msp430x1222 msp430x1232\n"
 	     "                  msp430x133  msp430x135\n"
 	     "                  msp430x1331 msp430x1351\n"
 	     "                  msp430x147  msp430x148  msp430x149\n"
+	     "                  msp430x1471 msp430x1481 msp430x1491\n"
 	     "                  msp430x155  msp430x156  msp430x157\n"
 	     "                  msp430x167  msp430x168  msp430x169\n"
 	     "                  msp430x1610 msp430x1611 msp430x1612\n"
+	     "                  msp430x2101 msp430x2111 msp430x2121 msp430x2131\n"
 	     "                  msp430x311  msp430x312  msp430x313  msp430x314  msp430x315\n"
 	     "                  msp430x323  msp430x325\n"
 	     "                  msp430x336  msp430x337\n"
 	     "                  msp430x412  msp430x413  msp430x415  msp430x417\n"
+	     "                  msp430x423  msp430x425  msp430427\n"
+	     "                  msp430x4250 msp430x4260 msp4304270\n"
 	     "                  msp430xE423 msp430xE425 msp430E427\n"
 	     "                  msp430xW423 msp430xW425 msp430W427\n"
 	     "                  msp430xG437 msp430xG438 msp430G439\n"
 	     "                  msp430x435  msp430x436  msp430x437\n"
 	     "                  msp430x447  msp430x448  msp430x449\n"));
diff -rU5 binutils-2.16.1/include/elf/msp430.h binutils-2.16.1-patched/include/elf/msp430.h
--- binutils-2.16.1/include/elf/msp430.h	2005-03-03 19:58:08.000000000 +0800
+++ binutils-2.16.1-patched/include/elf/msp430.h	2005-08-17 13:02:51.480972800 +0800
@@ -31,10 +31,11 @@
 #define E_MSP430_MACH_MSP430x12  12
 #define E_MSP430_MACH_MSP430x13  13
 #define E_MSP430_MACH_MSP430x14  14
 #define E_MSP430_MACH_MSP430x15  15
 #define E_MSP430_MACH_MSP430x16  16
+#define E_MSP430_MACH_MSP430x21x1  210
 #define E_MSP430_MACH_MSP430x31  31
 #define E_MSP430_MACH_MSP430x32  32
 #define E_MSP430_MACH_MSP430x33  33
 #define E_MSP430_MACH_MSP430x41  41
 #define E_MSP430_MACH_MSP430x42  42
diff -rU5 binutils-2.16.1/ld/emulparams/msp430all.sh binutils-2.16.1-patched/ld/emulparams/msp430all.sh
--- binutils-2.16.1/ld/emulparams/msp430all.sh	2004-08-25 20:54:10.000000000 +0800
+++ binutils-2.16.1-patched/ld/emulparams/msp430all.sh	2005-08-17 13:08:52.359891200 +0800
@@ -308,10 +308,61 @@
 RAM_SIZE=0x0800
 
 STACK=0xa00
 fi
 
+if [ "${MSP430_NAME}" = "msp430x1471" ] ; then
+ARCH=msp:14
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0x8000
+ROM_SIZE=0x7fe0
+RAM_START=0x0200
+RAM_SIZE=1K
+
+STACK=0x600
+fi
+
+if [ "${MSP430_NAME}" = "msp430x1481" ] ; then
+ARCH=msp:14
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0x4000
+ROM_SIZE=0xbfe0
+RAM_START=0x0200
+RAM_SIZE=0x0800
+
+STACK=0xa00
+fi
+
+if [ "${MSP430_NAME}" = "msp430x1491" ] ; then
+ARCH=msp:14
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0x1100
+ROM_SIZE=0xeee0
+RAM_START=0x0200
+RAM_SIZE=0x0800
+
+STACK=0xa00
+fi
+
 if [ "${MSP430_NAME}" = "msp430x155" ] ; then
 ARCH=msp:15
 MACHINE=
 SCRIPT_NAME=elf32msp430
 OUTPUT_FORMAT="elf32-msp430"
@@ -461,10 +512,78 @@
 RAM_SIZE=0x1400
 
 STACK=0x2500
 fi
 
+if [ "${MSP430_NAME}" = "msp430x2101" ] ; then
+ARCH=msp:210
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xfc00
+ROM_SIZE=0x3e0
+RAM_START=0x0200
+RAM_SIZE=128
+
+STACK=0x280
+fi
+
+if [ "${MSP430_NAME}" = "msp430x2111" ] ; then
+ARCH=msp:210
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xf800
+ROM_SIZE=0x7e0
+RAM_START=0x0200
+RAM_SIZE=128
+
+STACK=0x280
+fi
+
+if [ "${MSP430_NAME}" = "msp430x2121" ] ; then
+ARCH=msp:210
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xf000
+ROM_SIZE=0xfe0
+RAM_START=0x0200
+RAM_SIZE=256
+
+STACK=0x300
+fi
+
+if [ "${MSP430_NAME}" = "msp430x2131" ] ; then
+ARCH=msp:210
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xe000
+ROM_SIZE=0x1fe0
+RAM_START=0x0200
+RAM_SIZE=256
+
+STACK=0x300
+fi
+
 if [ "${MSP430_NAME}" = "msp430x311" ] ; then
 ARCH=msp:31
 MACHINE=
 SCRIPT_NAME=elf32msp430_3
 OUTPUT_FORMAT="elf32-msp430"
@@ -682,10 +801,112 @@
 RAM_SIZE=1024
 
 STACK=0x600
 fi
 
+if [ "${MSP430_NAME}" = "msp430x423" ] ; then
+ARCH=msp:42
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xe000
+ROM_SIZE=0x1fe0
+RAM_START=0x0200
+RAM_SIZE=256
+
+STACK=0x300
+fi
+
+if [ "${MSP430_NAME}" = "msp430x425" ] ; then
+ARCH=msp:42
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xc000
+ROM_SIZE=0x3fe0
+RAM_START=0x0200
+RAM_SIZE=512
+
+STACK=0x400
+fi
+
+if [ "${MSP430_NAME}" = "msp430x427" ] ; then
+ARCH=msp:42
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0x8000
+ROM_SIZE=0x7fe0
+RAM_START=0x0200
+RAM_SIZE=1024
+
+STACK=0x600
+fi
+
+if [ "${MSP430_NAME}" = "msp430x4250" ] ; then
+ARCH=msp:42
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xc000
+ROM_SIZE=0x3fe0
+RAM_START=0x0200
+RAM_SIZE=256
+
+STACK=0x300
+fi
+
+if [ "${MSP430_NAME}" = "msp430x4260" ] ; then
+ARCH=msp:42
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0xa000
+ROM_SIZE=0x5fe0
+RAM_START=0x0200
+RAM_SIZE=256
+
+STACK=0x300
+fi
+
+if [ "${MSP430_NAME}" = "msp430x4270" ] ; then
+ARCH=msp:42
+MACHINE=
+SCRIPT_NAME=elf32msp430
+OUTPUT_FORMAT="elf32-msp430"
+MAXPAGESIZE=1
+EMBEDDED=yes
+TEMPLATE_NAME=generic
+
+ROM_START=0x8000
+ROM_SIZE=0x7fe0
+RAM_START=0x0200
+RAM_SIZE=256
+
+STACK=0x300
+fi
+
 if [ "${MSP430_NAME}" = "msp430x435" ] ; then
 ARCH=msp:43
 MACHINE=
 SCRIPT_NAME=elf32msp430
 OUTPUT_FORMAT="elf32-msp430"
