| /* 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 |