rendered paste bodyIndex: target/linux/brcm47xx/patches-2.6.25/900-fix_cfe_detection.patch===================================================================--- target/linux/brcm47xx/patches-2.6.25/900-fix_cfe_detection.patch (revision 0)+++ target/linux/brcm47xx/patches-2.6.25/900-fix_cfe_detection.patch (revision 0)@@ -0,0 +1,86 @@+--- a/arch/mips/bcm47xx/prom.c++++ b/arch/mips/bcm47xx/prom.c+@@ -32,6 +32,7 @@+ #include <asm/fw/cfe/cfe_error.h>+ + static int cfe_cons_handle;++static void (* __prom_putchar)(char c);+ + const char *get_system_type(void)+ {+@@ -40,11 +41,17 @@+ + void prom_putchar(char c)+ {++ if (__prom_putchar)++ __prom_putchar(c);++}++++void prom_putchar_cfe(char c)++{+ while (cfe_write(cfe_cons_handle, &c, 1) == 0)+ ;+ }+ +-static __init void prom_init_cfe(void)++static __init int prom_init_cfe(void)+ {+ uint32_t cfe_ept;+ uint32_t cfe_handle;+@@ -71,34 +78,24 @@+ cfe_handle = (uint32_t)prom_vec;+ cfe_ept = 0xBFC00500;+ cfe_eptseal = CFE_EPTSEAL;+- } else {+- /*+- * Newer loaders bundle the handle/ept/eptseal+- * Note: prom_vec is in the loader's useg+- * which is still alive in the TLB.+- */+- cfe_handle = prom_vec[0];+- cfe_ept = prom_vec[2];+- cfe_eptseal = prom_vec[3];+ }+ }+ +- if (cfe_eptseal != CFE_EPTSEAL) {+- /* too early for panic to do any good */+- printk(KERN_ERR "CFE's entrypoint seal doesn't match.");+- while (1) ;+- }++ if (cfe_eptseal != CFE_EPTSEAL)++ return -1;+ + cfe_init(cfe_handle, cfe_ept);++++ return 0;+ }+ +-static __init void prom_init_console(void)++static __init void prom_init_console_cfe(void)+ {+ /* Initialize CFE console */+ cfe_cons_handle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE);+ }+ +-static __init void prom_init_cmdline(void)++static __init void prom_init_cmdline_cfe(void)+ {+ char buf[CL_SIZE];+ +@@ -146,9 +143,12 @@+ + void __init prom_init(void)+ {+- prom_init_cfe();+- prom_init_console();+- prom_init_cmdline();++ if (prom_init_cfe() == 0) {}++ prom_init_console_cfe();++ prom_init_cmdline_cfe();++ __prom_putchar = prom_putchar_cfe;++ }+++ prom_init_mem();+ }+