75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/*
 | 
						|
 * This file contains low level CPU setup functions.
 | 
						|
 * Kumar Gala <galak@kernel.crashing.org>
 | 
						|
 * Copyright 2009 Freescale Semiconductor, Inc.
 | 
						|
 *
 | 
						|
 * 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(__e500_icache_setup)
 | 
						|
	mfspr	r0, SPRN_L1CSR1
 | 
						|
	andi.	r3, r0, L1CSR1_ICE
 | 
						|
	bnelr				/* Already enabled */
 | 
						|
	oris	r0, r0, L1CSR1_CPE@h
 | 
						|
	ori	r0, r0, (L1CSR1_ICFI | L1CSR1_ICLFR |  L1CSR1_ICE)
 | 
						|
	mtspr	SPRN_L1CSR1, r0		/* Enable I-Cache */
 | 
						|
	isync
 | 
						|
	blr
 | 
						|
 | 
						|
_GLOBAL(__e500_dcache_setup)
 | 
						|
	mfspr	r0, SPRN_L1CSR0
 | 
						|
	andi.	r3, r0, L1CSR0_DCE
 | 
						|
	bnelr				/* Already enabled */
 | 
						|
	msync
 | 
						|
	isync
 | 
						|
	li	r0, 0
 | 
						|
	mtspr	SPRN_L1CSR0, r0		/* Disable */
 | 
						|
	msync
 | 
						|
	isync
 | 
						|
	li	r0, (L1CSR0_DCFI | L1CSR0_CLFC)
 | 
						|
	mtspr	SPRN_L1CSR0, r0		/* Invalidate */
 | 
						|
	isync
 | 
						|
1:	mfspr	r0, SPRN_L1CSR0
 | 
						|
	andi.	r3, r0, L1CSR0_CLFC
 | 
						|
	bne+	1b			/* Wait for lock bits reset */
 | 
						|
	oris	r0, r0, L1CSR0_CPE@h
 | 
						|
	ori	r0, r0, L1CSR0_DCE
 | 
						|
	msync
 | 
						|
	isync
 | 
						|
	mtspr	SPRN_L1CSR0, r0		/* Enable */
 | 
						|
	isync
 | 
						|
	blr
 | 
						|
 | 
						|
_GLOBAL(__setup_cpu_e200)
 | 
						|
	/* enable dedicated debug exception handling resources (Debug APU) */
 | 
						|
	mfspr	r3,SPRN_HID0
 | 
						|
	ori	r3,r3,HID0_DAPUEN@l
 | 
						|
	mtspr	SPRN_HID0,r3
 | 
						|
	b	__setup_e200_ivors
 | 
						|
_GLOBAL(__setup_cpu_e500v1)
 | 
						|
_GLOBAL(__setup_cpu_e500v2)
 | 
						|
	mflr	r4
 | 
						|
	bl	__e500_icache_setup
 | 
						|
	bl	__e500_dcache_setup
 | 
						|
	bl	__setup_e500_ivors
 | 
						|
	mtlr	r4
 | 
						|
	blr
 | 
						|
_GLOBAL(__setup_cpu_e500mc)
 | 
						|
	mflr	r4
 | 
						|
	bl	__e500_icache_setup
 | 
						|
	bl	__e500_dcache_setup
 | 
						|
	bl	__setup_e500mc_ivors
 | 
						|
	mtlr	r4
 | 
						|
	blr
 |