Index: kernel/generic/include/byteorder.h
===================================================================
--- kernel/generic/include/byteorder.h	(revision 0cf1dcf618f56b3af8ac02f020702b3d38273d91)
+++ kernel/generic/include/byteorder.h	(revision c55dd5898c757f39330d775b262957e173319714)
@@ -42,5 +42,5 @@
 		((n & 0xff0000) << 24) |
 		((n & 0xff000000LL) << 8) |
-		((n & 0xff00000000LL) >>8) |
+		((n & 0xff00000000LL) >> 8) |
 		((n & 0xff0000000000LL) >> 24) |
 		((n & 0xff000000000000LL) >> 40) |
Index: kernel/generic/include/lib/rd.h
===================================================================
--- kernel/generic/include/lib/rd.h	(revision 0cf1dcf618f56b3af8ac02f020702b3d38273d91)
+++ kernel/generic/include/lib/rd.h	(revision c55dd5898c757f39330d775b262957e173319714)
@@ -36,7 +36,45 @@
 #define KERN_RD_H_
 
+#include <arch/types.h>
 #include <typedefs.h>
 
-extern bool init_rd(void * addr);
+/**
+ * RAM disk version
+ */
+#define	RD_VERSION	0
+
+/**
+ * RAM disk magic number
+ */
+#define RD_MAGIC_SIZE	4
+#define RD_MAG0			'H'
+#define RD_MAG1			'O'
+#define RD_MAG2			'R'
+#define RD_MAG3			'D'
+
+/**
+ * RAM disk data encoding types
+ */
+#define RD_DATA_NONE	0
+#define RD_DATA_LSB		1		/* Least significant byte first (little endian) */
+#define RD_DATA_MSB		2		/* Most signigicant byte first (big endian) */
+
+/**
+ * RAM disk error return codes
+ */
+#define RE_OK			0	/* No error */
+#define RE_INVALID		1	/* Invalid RAM disk image */
+#define RE_UNSUPPORTED		2	/* Non-supported image (e.g. wrong version) */
+
+/** RAM disk header */
+typedef struct {
+	uint8_t magic[RD_MAGIC_SIZE];
+	uint8_t version;
+	uint8_t data_type;
+	uint32_t header_size;
+	uint64_t data_size;
+} rd_header;
+
+extern int init_rd(rd_header * addr);
 
 #endif
