1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  | /* 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 
 |  
  |