mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	There was for long time no activity in the 4xx area. We need to go further and convert to Kconfig, but it turned out, nobody is interested anymore in 4xx, so remove it. Signed-off-by: Heiko Schocher <hs@denx.de>
		
			
				
	
	
		
			109 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 1998  Dan Malek <dmalek@jlc.net>
 | |
|  * Copyright (C) 1999  Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
 | |
|  * Copyright (C) 2000, 2001,2002 Wolfgang Denk <wd@denx.de>
 | |
|  * Copyright Freescale Semiconductor, Inc. 2004, 2006.
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| 
 | |
| #include <config.h>
 | |
| #include <ppc_asm.tmpl>
 | |
| #include <ppc_defs.h>
 | |
| 
 | |
| #include <asm/cache.h>
 | |
| 
 | |
| /*------------------------------------------------------------------------------- */
 | |
| /* Function:	 ppcDcbf */
 | |
| /* Description:	 Data Cache block flush */
 | |
| /* Input:	 r3 = effective address */
 | |
| /* Output:	 none. */
 | |
| /*------------------------------------------------------------------------------- */
 | |
| 	.globl	ppcDcbf
 | |
| ppcDcbf:
 | |
| 	dcbf	r0,r3
 | |
| 	blr
 | |
| 
 | |
| /*------------------------------------------------------------------------------- */
 | |
| /* Function:	 ppcDcbi */
 | |
| /* Description:	 Data Cache block Invalidate */
 | |
| /* Input:	 r3 = effective address */
 | |
| /* Output:	 none. */
 | |
| /*------------------------------------------------------------------------------- */
 | |
| 	.globl	ppcDcbi
 | |
| ppcDcbi:
 | |
| 	dcbi	r0,r3
 | |
| 	blr
 | |
| 
 | |
| /*--------------------------------------------------------------------------
 | |
|  * Function:	 ppcDcbz
 | |
|  * Description:	 Data Cache block zero.
 | |
|  * Input:	 r3 = effective address
 | |
|  * Output:	 none.
 | |
|  *-------------------------------------------------------------------------- */
 | |
| 
 | |
| 	.globl	ppcDcbz
 | |
| ppcDcbz:
 | |
| 	dcbz	r0,r3
 | |
| 	blr
 | |
| 
 | |
| /*------------------------------------------------------------------------------- */
 | |
| /* Function:	 ppcSync */
 | |
| /* Description:	 Processor Synchronize */
 | |
| /* Input:	 none. */
 | |
| /* Output:	 none. */
 | |
| /*------------------------------------------------------------------------------- */
 | |
| 	.globl	ppcSync
 | |
| ppcSync:
 | |
| 	sync
 | |
| 	blr
 | |
| 
 | |
| /*
 | |
|  * Write any modified data cache blocks out to memory and invalidate them.
 | |
|  * Does not invalidate the corresponding instruction cache blocks.
 | |
|  *
 | |
|  * flush_dcache_range(unsigned long start, unsigned long stop)
 | |
|  */
 | |
| _GLOBAL(flush_dcache_range)
 | |
| #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
 | |
| 	li	r5,L1_CACHE_BYTES-1
 | |
| 	andc	r3,r3,r5
 | |
| 	subf	r4,r3,r4
 | |
| 	add	r4,r4,r5
 | |
| 	srwi.	r4,r4,L1_CACHE_SHIFT
 | |
| 	beqlr
 | |
| 	mtctr	r4
 | |
| 
 | |
| 1:	dcbf	0,r3
 | |
| 	addi	r3,r3,L1_CACHE_BYTES
 | |
| 	bdnz	1b
 | |
| 	sync				/* wait for dcbst's to get to ram */
 | |
| #endif
 | |
| 	blr
 | |
| 
 | |
| /*
 | |
|  * Like above, but invalidate the D-cache.  This is used by the 8xx
 | |
|  * to invalidate the cache so the PPC core doesn't get stale data
 | |
|  * from the CPM (no cache snooping here :-).
 | |
|  *
 | |
|  * invalidate_dcache_range(unsigned long start, unsigned long stop)
 | |
|  */
 | |
| _GLOBAL(invalidate_dcache_range)
 | |
| #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
 | |
| 	li	r5,L1_CACHE_BYTES-1
 | |
| 	andc	r3,r3,r5
 | |
| 	subf	r4,r3,r4
 | |
| 	add	r4,r4,r5
 | |
| 	srwi.	r4,r4,L1_CACHE_SHIFT
 | |
| 	beqlr
 | |
| 	mtctr	r4
 | |
| 
 | |
| 	sync
 | |
| 1:	dcbi	0,r3
 | |
| 	addi	r3,r3,L1_CACHE_BYTES
 | |
| 	bdnz	1b
 | |
| 	sync				/* wait for dcbi's to get to ram */
 | |
| #endif
 | |
| 	blr
 | |
| 
 |