If host and target endianness does not match, loding an initrd does not work, but results in a kernel log message similar to the following.
... MOUNT_ROOT_RDONLY - 00000000 ... RAMDISK_FLAGS - 00000000 ... ORIG_ROOT_DEV - 00000000 ... LOADER_TYPE - 01000000 ... INITRD_START - 00008001 ... INITRD_SIZE - 00a01b00 Booting machvec: RTS7751R2D initrd must be page aligned initrd disabled Fix by writing boot parameters with appropriate endianness conversion. Signed-off-by: Guenter Roeck <li...@roeck-us.net> --- hw/sh4/r2d.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 321379e..d86eb12 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -336,9 +336,9 @@ static void r2d_init(MachineState *machine) } /* initialization which should be done by firmware */ - boot_params.loader_type = 1; - boot_params.initrd_start = INITRD_LOAD_OFFSET; - boot_params.initrd_size = initrd_size; + boot_params.loader_type = tswap32(1); + boot_params.initrd_start = tswap32(INITRD_LOAD_OFFSET); + boot_params.initrd_size = tswap32(initrd_size); } if (kernel_cmdline) { -- 1.9.1