|  | /* | 
|  | * This file contains low level CPU setup functions. | 
|  | * Valentine Barshak <vbarshak@ru.mvista.com> | 
|  | * MontaVista Software, Inc (c) 2007 | 
|  | * | 
|  | * Based on cpu_setup_6xx code by | 
|  | * Benjamin Herrenschmidt <benh@kernel.crashing.org> | 
|  | * | 
|  | * This program is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU General Public License | 
|  | * as published by the Free Software Foundation; either version | 
|  | * 2 of the License, or (at your option) any later version. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #include <asm/processor.h> | 
|  | #include <asm/cputable.h> | 
|  | #include <asm/ppc_asm.h> | 
|  |  | 
|  | _GLOBAL(__setup_cpu_440ep) | 
|  | b	__init_fpu_44x | 
|  | _GLOBAL(__setup_cpu_440epx) | 
|  | mflr	r4 | 
|  | bl	__init_fpu_44x | 
|  | bl	__plb_disable_wrp | 
|  | bl	__fixup_440A_mcheck | 
|  | mtlr	r4 | 
|  | blr | 
|  | _GLOBAL(__setup_cpu_440grx) | 
|  | mflr	r4 | 
|  | bl	__plb_disable_wrp | 
|  | bl	__fixup_440A_mcheck | 
|  | mtlr	r4 | 
|  | blr | 
|  | _GLOBAL(__setup_cpu_460ex) | 
|  | _GLOBAL(__setup_cpu_460gt) | 
|  | _GLOBAL(__setup_cpu_460sx) | 
|  | _GLOBAL(__setup_cpu_apm821xx) | 
|  | mflr	r4 | 
|  | bl	__init_fpu_44x | 
|  | bl	__fixup_440A_mcheck | 
|  | mtlr	r4 | 
|  | blr | 
|  |  | 
|  | _GLOBAL(__setup_cpu_440x5) | 
|  | _GLOBAL(__setup_cpu_440gx) | 
|  | _GLOBAL(__setup_cpu_440spe) | 
|  | b	__fixup_440A_mcheck | 
|  |  | 
|  | /* enable APU between CPU and FPU */ | 
|  | _GLOBAL(__init_fpu_44x) | 
|  | mfspr	r3,SPRN_CCR0 | 
|  | /* Clear DAPUIB flag in CCR0 */ | 
|  | rlwinm	r3,r3,0,12,10 | 
|  | mtspr	SPRN_CCR0,r3 | 
|  | isync | 
|  | blr | 
|  |  | 
|  | /* | 
|  | * Workaround for the incorrect write to DDR SDRAM errata. | 
|  | * The write address can be corrupted during writes to | 
|  | * DDR SDRAM when write pipelining is enabled on PLB0. | 
|  | * Disable write pipelining here. | 
|  | */ | 
|  | #define DCRN_PLB4A0_ACR	0x81 | 
|  |  | 
|  | _GLOBAL(__plb_disable_wrp) | 
|  | mfdcr	r3,DCRN_PLB4A0_ACR | 
|  | /* clear WRP bit in PLB4A0_ACR */ | 
|  | rlwinm	r3,r3,0,8,6 | 
|  | mtdcr	DCRN_PLB4A0_ACR,r3 | 
|  | isync | 
|  | blr | 
|  |  |