41 lines
		
	
	
		
			594 B
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			594 B
		
	
	
	
		
			ArmAsm
		
	
	
	
/* Memory sub-system initialization code */
 | 
						|
 | 
						|
#include <config.h>
 | 
						|
#include <asm/regdef.h>
 | 
						|
#include <asm/mipsregs.h>
 | 
						|
 | 
						|
	.text
 | 
						|
	.set noreorder
 | 
						|
	.set mips32
 | 
						|
 | 
						|
	.globl	lowlevel_init
 | 
						|
lowlevel_init:
 | 
						|
 | 
						|
	/*
 | 
						|
	 * Step 2) Establish Status Register
 | 
						|
	 * (set BEV, clear ERL, clear EXL, clear IE)
 | 
						|
	 */
 | 
						|
	li	t1, 0x00400000
 | 
						|
	mtc0	t1, CP0_STATUS
 | 
						|
 | 
						|
	/*
 | 
						|
	 * Step 3) Establish CP0 Config0
 | 
						|
	 * (set K0=3)
 | 
						|
	 */
 | 
						|
	li	t1, 0x00000003
 | 
						|
	mtc0	t1, CP0_CONFIG
 | 
						|
 | 
						|
	/*
 | 
						|
	 * Step 7) Establish Cause
 | 
						|
	 * (set IV bit)
 | 
						|
	 */
 | 
						|
	li	t1, 0x00800000
 | 
						|
	mtc0	t1, CP0_CAUSE
 | 
						|
 | 
						|
	/* Establish Wired (and Random) */
 | 
						|
	mtc0	zero, CP0_WIRED
 | 
						|
	nop
 | 
						|
 | 
						|
	jr	ra
 | 
						|
	nop
 |