Index: tools/mktmpfs.py
===================================================================
--- tools/mktmpfs.py	(revision 10ef329a86471ef42e84a0db45f6e6b1b10d45bd)
+++ tools/mktmpfs.py	(revision 33c058d38d41ac857965ed7cc15a2eb95d492a91)
@@ -35,21 +35,29 @@
 import struct
 
+def align_up(size, alignment):
+	return (((size) + ((alignment) - 1)) & ~((alignment) - 1))
+
 def usage(prname):
 	"Print usage syntax"
-	print prname + " <PATH> <IMAGE>"
+	print prname + " <ALIGNMENT> <PATH> <IMAGE>"
 
 def main():
-	if (len(sys.argv) < 3):
+	if (len(sys.argv) < 4):
 		usage(sys.argv[0])
 		return
 	
-	path = os.path.abspath(sys.argv[1]);
+	if (not sys.argv[1].isdigit()):
+		print "<ALIGNMENT> must be a number"
+		return
+	
+	align = int(sys.argv[1], 0)
+	path = os.path.abspath(sys.argv[2])
 	if (not os.path.isdir(path)):
 		print "<PATH> must be a directory"
 		return
 	
-	header_size = 18
+	header_size = align_up(18, align)
 	payload_size = 0
-	outf = file(sys.argv[2], "w")
+	outf = file(sys.argv[3], "w")
 	outf.write(struct.pack("<" + ("%d" % header_size) + "x"))
 	
@@ -80,6 +88,11 @@
 			payload_size += 5 + len(canon)
 	
+	aligned_size = align_up(payload_size, align)
+	
+	if (aligned_size - payload_size > 0):
+		outf.write(struct.pack("<" + ("%d" % (aligned_size - payload_size)) + "x"))
+	
 	outf.seek(0)
-	outf.write(struct.pack("<4sBBLQ", "HORD", 1, 1, header_size, payload_size))
+	outf.write(struct.pack("<4sBBLQ", "HORD", 1, 1, header_size, aligned_size))
 	outf.close()
 
