I found that initrd_header in mips64 cvs kernel is broken. The initrd_header should be consist of two 32bit words while 32bit addinitrd is used for 64bit kernel too. diff -ur linux-mips-cvs/arch/mips64/kernel/setup.c linux.new/arch/mips64/kernel/setup.c --- linux-mips-cvs/arch/mips64/kernel/setup.c Wed Apr 9 22:06:57 2003 +++ linux.new/arch/mips64/kernel/setup.c Fri May 2 21:47:36 2003 @@ -245,7 +245,7 @@ { #ifdef CONFIG_BLK_DEV_INITRD unsigned long tmp; - unsigned long *initrd_header; + unsigned int *initrd_header; #endif unsigned long bootmap_size; unsigned long start_pfn, max_pfn; @@ -255,7 +255,7 @@ tmp = (((unsigned long)&_end + PAGE_SIZE-1) & PAGE_MASK) - 8; if (tmp < (unsigned long)&_end) tmp += PAGE_SIZE; - initrd_header = (unsigned long *)tmp; + initrd_header = (unsigned int *)tmp; if (initrd_header[0] == 0x494E5244) { initrd_start = (unsigned long)&initrd_header[2]; initrd_end = initrd_start + initrd_header[1]; --- Atsushi Nemoto