Index: boot/arch/mips32/loader/Makefile
===================================================================
--- boot/arch/mips32/loader/Makefile	(revision 89b1b64f71aaaf3d8f3db35a293d36cb6056e718)
+++ boot/arch/mips32/loader/Makefile	(revision e16e0d595cccccd7668bd8111478ac903c1b3be3)
@@ -37,16 +37,22 @@
 endif
 
-ifeq ($(IMAGE),binary)
-	LD_IN = binary
-endif
-
-ifeq ($(IMAGE),ecoff)
-	LD_IN = ecoff
-endif
-
-BFD_NAME = elf32-tradlittlemips
 BFD_ARCH = mips
 TARGET = mipsel-linux-gnu
 TOOLCHAIN_DIR = $(CROSS_PREFIX)/mipsel/bin
+
+ifeq ($(MACHINE),lgxemul)
+	BFD_NAME = elf32-tradlittlemips
+	BFD = ecoff-littlemips
+endif
+ifeq ($(MACHINE),bgxemul)
+	BFD_NAME = elf32-tradbigmips
+	BFD = ecoff-bigmips
+	TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips/bin
+	TARGET = mips-linux-gnu
+endif
+ifeq ($(MACHINE),msim)
+	BFD_NAME = elf32-tradlittlemips
+	BFD = binary
+endif
 
 ifeq ($(COMPILER),gcc_native)
@@ -84,5 +90,5 @@
 	$(USPACEDIR)/srv/devmap/devmap \
 	$(USPACEDIR)/srv/rd/rd \
-	$(USPACEDIR)/srv/vfs/vfs 
+	$(USPACEDIR)/srv/vfs/vfs
 ifeq ($(RDFMT),tmpfs)
 	COMPONENTS += $(USPACEDIR)/srv/fs/tmpfs/tmpfs
@@ -115,6 +121,9 @@
 -include Makefile.depend
 
-image.boot: depend _components.h _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
-	$(LD) -no-check-sections -N -T _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) -o $@
+image.boot: image.raw
+	$(OBJCOPY) -O $(BFD) $< $@
+
+image.raw: depend _components.h _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
+	$(LD) -no-check-sections -N -T _link.ld -o $@ $(COMPONENT_OBJECTS) initrd.o $(OBJECTS)
 
 depend:
@@ -128,5 +137,5 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
-	-rm -f _components.h _components.c _link.ld _link.ld.in $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.boot Makefile.depend
+	-rm -f _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o $(OBJECTS) initrd.img image.raw image.boot Makefile.depend
 
 _components.h _components.c _link.ld $(COMPONENT_OBJECTS) initrd.o: $(COMPONENTS) $(RD_SRVS) $(RD_APPS) _link.ld.in
@@ -147,7 +156,4 @@
 	../../../tools/pack.py $(OBJCOPY) $(BFD_NAME) $(BFD_ARCH) 16384 "unsigned int" $(COMPONENTS) ./initrd.img
 
-_link.ld.in: _link.ld.in.$(LD_IN)
-	cp $< $@
-
 %.o: %.S
 	$(CC) $(DEFS) $(CFLAGS) -D__ASM__ -c $< -o $@
Index: boot/arch/mips32/loader/_link.ld.in
===================================================================
--- boot/arch/mips32/loader/_link.ld.in	(revision e16e0d595cccccd7668bd8111478ac903c1b3be3)
+++ boot/arch/mips32/loader/_link.ld.in	(revision e16e0d595cccccd7668bd8111478ac903c1b3be3)
@@ -0,0 +1,20 @@
+ENTRY(start)
+
+SECTIONS {
+	.boot 0xbfc00000: AT (0) {
+		*(BOOTSTRAP);
+		*(.text);
+		
+		*(.rodata);
+		*(.rodata.*);
+		*(.data);       /* initialized data */
+		*(.sdata);
+		*(.sdata2);
+		*(.sbss);
+		*(.scommon);
+		*(.bss);        /* uninitialized static variables */
+		*(COMMON);      /* global variables */
+		*(.reginfo);
+[[COMPONENTS]]
+	}
+}
Index: boot/arch/mips32/loader/_link.ld.in.binary
===================================================================
--- boot/arch/mips32/loader/_link.ld.in.binary	(revision 89b1b64f71aaaf3d8f3db35a293d36cb6056e718)
+++ 	(revision )
@@ -1,21 +1,0 @@
-OUTPUT_FORMAT("binary") 
-ENTRY(start) 
- 
-SECTIONS {
-	.boot 0xbfc00000: AT (0) {
-		*(BOOTSTRAP);
-		*(.text);
-		
-		*(.rodata);
-		*(.rodata.*);
-		*(.data);		/* initialized data */
-		*(.sdata);
-		*(.sdata2);
-		*(.sbss);
-		*(.scommon);
-		*(.bss);		/* uninitialized static variables */	
-		*(COMMON); 		/* global variables */
-		*(.reginfo);
-[[COMPONENTS]]
-	}
-}
Index: boot/arch/mips32/loader/_link.ld.in.ecoff
===================================================================
--- boot/arch/mips32/loader/_link.ld.in.ecoff	(revision 89b1b64f71aaaf3d8f3db35a293d36cb6056e718)
+++ 	(revision )
@@ -1,21 +1,0 @@
-OUTPUT_FORMAT("ecoff-littlemips")
-ENTRY(start) 
- 
-SECTIONS {
-	.boot 0xbfc00000: AT (0) {
-		*(BOOTSTRAP);
-		*(.text);
-		
-		*(.rodata);
-		*(.rodata.*);
-		*(.data);		/* initialized data */
-		*(.sdata);
-		*(.sdata2);
-		*(.sbss);
-		*(.scommon);
-		*(.bss);		/* uninitialized static variables */	
-		*(COMMON); 		/* global variables */
-		*(.reginfo);
-[[COMPONENTS]]
-	}
-}
