All pastes #1230448 Raw Edit

Someone

public diff v1 · immutable
#1230448 ·published 2008-10-18 20:44 UTC
rendered paste body
Index: 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();+ }+