 1da177e4c3
			
		
	
	
	1da177e4c3
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) Paul Mackerras 1997.
 | |
|  *
 | |
|  * 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.
 | |
|  */
 | |
| 	.text
 | |
| 
 | |
| /*
 | |
|  * Use the BAT2 & 3 registers to map the 1st 16MB of RAM to
 | |
|  * the address given as the 1st argument.
 | |
|  */
 | |
| 	.globl	setup_bats
 | |
| setup_bats:
 | |
| 	mfpvr	5
 | |
| 	rlwinm	5,5,16,16,31		/* r3 = 1 for 601, 4 for 604 */
 | |
| 	cmpwi	0,5,1
 | |
| 	li	0,0
 | |
| 	bne	4f
 | |
| 	mtibatl	3,0			/* invalidate BAT first */
 | |
| 	ori	3,3,4			/* set up BAT registers for 601 */
 | |
| 	li	4,0x7f
 | |
| 	mtibatu	2,3
 | |
| 	mtibatl	2,4
 | |
| 	oris	3,3,0x80
 | |
| 	oris	4,4,0x80
 | |
| 	mtibatu	3,3
 | |
| 	mtibatl	3,4
 | |
| 	b	5f
 | |
| 4:	mtdbatu	3,0			/* invalidate BATs first */
 | |
| 	mtibatu	3,0
 | |
| 	ori	3,3,0xff		/* set up BAT registers for 604 */
 | |
| 	li	4,2
 | |
| 	mtdbatl	2,4
 | |
| 	mtdbatu	2,3
 | |
| 	mtibatl	2,4
 | |
| 	mtibatu	2,3
 | |
| 	oris	3,3,0x80
 | |
| 	oris	4,4,0x80
 | |
| 	mtdbatl	3,4
 | |
| 	mtdbatu	3,3
 | |
| 	mtibatl	3,4
 | |
| 	mtibatu	3,3
 | |
| 5:	sync
 | |
| 	isync
 | |
| 	blr
 | |
| 
 | |
| /*
 | |
|  * Flush the dcache and invalidate the icache for a range of addresses.
 | |
|  *
 | |
|  * flush_cache(addr, len)
 | |
|  */
 | |
| 	.global	flush_cache
 | |
| flush_cache:
 | |
| 	addi	4,4,0x1f	/* len = (len + 0x1f) / 0x20 */
 | |
| 	rlwinm.	4,4,27,5,31
 | |
| 	mtctr	4
 | |
| 	beqlr
 | |
| 1:	dcbf	0,3
 | |
| 	icbi	0,3
 | |
| 	addi	3,3,0x20
 | |
| 	bdnz	1b
 | |
| 	sync
 | |
| 	isync
 | |
| 	blr
 |