summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2007-07-05 15:15:43 +0200
committerMichael Brown2007-07-05 15:15:43 +0200
commit6e082c9b8135e6a9afc0f1c8539e43fa895542f9 (patch)
tree8b75222553aa2b3f3d4ebd764a8522855addbe72 /src
parentWorking with multi-sector reads (diff)
downloadipxe-6e082c9b8135e6a9afc0f1c8539e43fa895542f9.tar.gz
ipxe-6e082c9b8135e6a9afc0f1c8539e43fa895542f9.tar.xz
ipxe-6e082c9b8135e6a9afc0f1c8539e43fa895542f9.zip
Add .usb target
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/Makefile11
-rw-r--r--src/arch/i386/prefix/usbdisk.S23
2 files changed, 34 insertions, 0 deletions
diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile
index ce147b76..f4e19d3f 100644
--- a/src/arch/i386/Makefile
+++ b/src/arch/i386/Makefile
@@ -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
index 00000000..07255d50
--- /dev/null
+++ b/src/arch/i386/prefix/usbdisk.S
@@ -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