71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| /* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.S,v 1.1 1999/07/10 07:24:49 dawes Exp $ */
 | |
| /*
 | |
|  * Copyright 1998 by Metro Link Incorporated
 | |
|  *
 | |
|  * Permission to use, copy, modify, distribute, and sell this software
 | |
|  * and its documentation for any purpose is hereby granted without fee,
 | |
|  * provided that the above copyright notice appear in all copies and that
 | |
|  * both that copyright notice and this permission notice appear in
 | |
|  * supporting documentation, and that the name of Metro Link
 | |
|  * Incorporated not be used in advertising or publicity pertaining to
 | |
|  * distribution of the software without specific, written prior
 | |
|  * permission.  Metro Link Incorporated makes no representations
 | |
|  * about the suitability of this software for any purpose.  It is
 | |
|  * provided "as is" without express or implied warranty.
 | |
|  *
 | |
|  * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
 | |
|  * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 | |
|  * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE
 | |
|  * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
 | |
|  * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 | |
|  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
 | |
|  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 | |
|  * SOFTWARE.
 | |
|  */
 | |
| 
 | |
| 	.file	"ppc.s"
 | |
| .toc
 | |
| 	.csect .text[PR]
 | |
| 	.balign 4
 | |
| 	.globl ppc_flush_icache
 | |
| 	.globl .ppc_flush_icache
 | |
| .csect ppc_flush_icache[DS]
 | |
| ppc_flush_icache:
 | |
| 	.long .ppc_flush_icache, TOC[tc0], 0
 | |
| .csect .text[PR]
 | |
| .ppc_flush_icache:
 | |
| 	mflr 0
 | |
| 	stw 31,-4(1)
 | |
| 	stw 0,8(1)
 | |
| 	stwu 1,-64(1)
 | |
| 	mr 31,1
 | |
| 	stw 3,88(31)
 | |
| 	li 6, 0		/* __inst_dcbf (addr, 0); */
 | |
| 	dcbf 3, 6
 | |
| 	li 5, 32	/* __inst_dcbf (addr, LINESIZE); */
 | |
| 	dcbf 3, 5
 | |
| 	sync		/* __inst_sync (); */
 | |
| 	li 4,0		/* __inst_icbi (addr, 0); */
 | |
| 	icbi  3,4
 | |
| 	li 7,32		/* __inst_icbi (addr, LINESIZE); */
 | |
| 	icbi  3,7
 | |
| 	sync		/* __inst_sync (); */
 | |
| 	isync		/* __inst_isync (); */
 | |
| L..1:
 | |
| 	lwz 1,0(1)
 | |
| 	lwz 0,8(1)
 | |
| 	mtlr 0
 | |
| 	lwz 31,-4(1)
 | |
| 	blr
 | |
| LT..ppc_flush_icache:
 | |
| 	.long 0
 | |
| 	.byte 0,0,32,97,128,1,1,1
 | |
| 	.long 0
 | |
| 	.long LT..ppc_flush_icache-.ppc_flush_icache
 | |
| 	.short 16
 | |
| 	.byte "ppc_flush_icache"
 | |
| 	.byte 31
 | |
| _section_.text:
 | |
| 	.csect .data[RW]
 | |
| 	.long _section_.text
 |