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
|