Add .usb target
authorMichael Brown <mcb30@etherboot.org>
Thu, 5 Jul 2007 13:15:43 +0000 (14:15 +0100)
committerMichael Brown <mcb30@etherboot.org>
Thu, 5 Jul 2007 13:15:43 +0000 (14:15 +0100)
src/arch/i386/Makefile
src/arch/i386/prefix/usbdisk.S [new file with mode: 0644]

index ce147b7..f4e19d3 100644 (file)
@@ -98,6 +98,10 @@ MEDIA                        += com
 
 MEDIA                  += exe
 
+# Special target for building Master Boot Record binary
+$(BIN)/mbr.bin : $(BIN)/mbr.o
+       $(OBJCOPY) -O binary $< $@
+
 # Some suffixes (e.g. %.zfd0) are generated directly from other
 # finished files (e.g. %.zdsk), rather than having their own prefix.
 
@@ -117,6 +121,13 @@ NON_AUTO_MEDIA             += liso
 %liso: %lilo util/genliso
        bash util/genliso $@ $<
 
+# rule to make a USB disk image
+$(BIN)/usbdisk.bin : $(BIN)/usbdisk.o
+       $(OBJCOPY) -O binary $< $@
+
+%usb: $(BIN)/usbdisk.bin %hd
+       cat $^ > $@
+
 # Add NON_AUTO_MEDIA to the media list, so that they show up in the
 # output of "make"
 #
diff --git a/src/arch/i386/prefix/usbdisk.S b/src/arch/i386/prefix/usbdisk.S
new file mode 100644 (file)
index 0000000..07255d5
--- /dev/null
@@ -0,0 +1,23 @@
+       .text
+       .arch i386
+       .section ".prefix", "awx", @progbits
+       .code16
+       .org 0
+
+#include "mbr.S"
+
+/* Partition table: ZIP-compatible partition 4, 64 heads, 32 sectors/track */
+       .org 446
+       .space 16
+       .space 16
+       .space 16
+       .byte 0x80, 0x01, 0x01, 0x00
+       .byte 0x01, 0x3f, 0x20, 0x01
+       .long 0x00000020
+       .long 0x00000fe0
+
+       .org 510
+       .byte 0x55, 0xaa
+
+/* Skip to start of partition */
+       .org 32 * 512