diff -urN kernel-source-2.6.7.orig/arch/ppc/syslib/prom_init.c kernel-source-2.6.7.peg2/arch/ppc/syslib/prom_init.c --- kernel-source-2.6.7.orig/arch/ppc/syslib/prom_init.c 2004-06-16 07:20:24.000000000 +0200 +++ kernel-source-2.6.7.peg2/arch/ppc/syslib/prom_init.c 2004-06-29 21:07:04.491319912 +0200 @@ -794,6 +794,9 @@ char *p, *d; unsigned long phys; void *result[3]; + char model[32]; + phandle node; + int rc; /* Default */ phys = (unsigned long) &_stext; @@ -880,6 +883,11 @@ for (i = 0; i < prom_num_displays; ++i) prom_display_paths[i] = PTRUNRELOC(prom_display_paths[i]); + /* Pegasos 1 has a broken translate method in the OF, fix it */ + node = call_prom("finddevice", 1, 1, "/"); + rc = call_prom("getprop", 4, 1, node, "model", model, sizeof(model)); + if (rc > 0 && !strncmp (model, "Pegasos", 7) && strncmp (model, "Pegasos2", 8)) phys = 0x00010000; + prom_print("returning 0x"); prom_print_hex(phys); prom_print("from prom_init\n");