diff --git a/gas/ChangeLog b/gas/ChangeLog
index ce9c7338c28..7010e644cea 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2015-05-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* configure.tgt (arch): Set to iamcu for i386-*-elfiamcu target.
+	* config/tc-i386.c (i386_mach): Support iamcu.
+	(i386_target_format): Likewise.
+
 2015-05-11  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* config/tc-i386.c (cpu_arch): Add iamcu.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 8a6da64b03a..db263eeb262 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -2468,7 +2468,8 @@ i386_mach (void)
       else
 	return bfd_mach_x64_32;
     }
-  else if (!strcmp (default_arch, "i386"))
+  else if (!strcmp (default_arch, "i386")
+	   || !strcmp (default_arch, "iamcu"))
     {
       if (cpu_arch_isa == PROCESSOR_IAMCU)
 	{
@@ -10071,6 +10072,27 @@ i386_target_format (void)
     }
   else if (!strcmp (default_arch, "i386"))
     update_code_flag (CODE_32BIT, 1);
+  else if (!strcmp (default_arch, "iamcu"))
+    {
+      update_code_flag (CODE_32BIT, 1);
+      if (cpu_arch_isa == PROCESSOR_UNKNOWN)
+	{
+	  static const i386_cpu_flags iamcu_flags = CPU_IAMCU_FLAGS;
+	  cpu_arch_name = "iamcu";
+	  cpu_sub_arch_name = NULL;
+	  cpu_arch_flags = iamcu_flags;
+	  cpu_arch_isa = PROCESSOR_IAMCU;
+	  cpu_arch_isa_flags = iamcu_flags;
+	  if (!cpu_arch_tune_set)
+	    {
+	      cpu_arch_tune = cpu_arch_isa;
+	      cpu_arch_tune_flags = cpu_arch_isa_flags;
+	    }
+	}
+      else
+	as_fatal (_("Intel MCU doesn't support `%s' architecture"),
+		  cpu_arch_name);
+    }
   else
     as_fatal (_("unknown architecture"));
 
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 09ee2758326..d14bcdf5faf 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -215,6 +215,7 @@ case ${generic_target} in
   i386-*-beospe*)			fmt=coff em=pe ;;
   i386-*-beos*)				fmt=elf ;;
   i386-*-coff)				fmt=coff ;;
+  i386-*-elfiamcu)			fmt=elf arch=iamcu ;;
   i386-*-elf*)				fmt=elf ;;
   i386-*-kaos*)				fmt=elf ;;
   i386-*-bsd*)				fmt=aout em=386bsd ;;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index bbb819b1876..4cd77f75908 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2015-05-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* configure.tgt: Support i[3-7]86-*-elfiamcu target.
+
 2015-05-11  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* Makefile.am (ALL_EMULATION_SOURCES): Add eelf_iamcu.c.
diff --git a/ld/configure.tgt b/ld/configure.tgt
index e1f5be79a54..e4eacd4d56f 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -304,6 +304,8 @@ x86_64-*-netbsd*)	targ_emul=elf_x86_64
 				        sed -e 's/netbsd/netbsdelf/'`;;
 			esac ;;
 i[3-7]86-*-netware)	targ_emul=i386nw ;;
+i[3-7]86-*-elfiamcu)	targ_emul=elf_iamcu
+			targ_extra_emuls=elf_i386 ;;
 i[3-7]86-*-elf*)	targ_emul=elf_i386
 			targ_extra_emuls=elf_iamcu ;;
 x86_64-*-elf*)		targ_emul=elf_x86_64
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 52f09fbb7d9..89f695cb2ac 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-05-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* ld-i386/i386.exp (iamcu_tests): Run iamcu-4.
+	* ld-i386/iamcu-4.d: New file.
+
 2015-05-11  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* ld-i386/abs-iamcu.d: New file.
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 7309910a490..2e59522f959 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -248,6 +248,7 @@ proc iamcu_tests {} {
     run_dump_test "iamcu-1"
     run_dump_test "iamcu-2"
     run_dump_test "iamcu-3"
+    run_dump_test "iamcu-4"
 }
 
 iamcu_tests
diff --git a/ld/testsuite/ld-i386/iamcu-4.d b/ld/testsuite/ld-i386/iamcu-4.d
new file mode 100644
index 00000000000..b43d04899b2
--- /dev/null
+++ b/ld/testsuite/ld-i386/iamcu-4.d
@@ -0,0 +1,16 @@
+#source: dummy.s
+#ld: tmpdir/startiamcu.o tmpdir/fooiamcu.o
+#readelf: -h
+#target: i?86-*-elfiamcu
+
+ELF Header:
+  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
+  Class:                             ELF32
+  Data:                              2's complement, little endian
+  Version:                           1 \(current\)
+  OS/ABI:                            UNIX - System V
+  ABI Version:                       0
+  Type:                              EXEC \(Executable file\)
+  Machine:                           Intel MCU
+  Version:                           0x1
+#pass