前面已经初始化内存和龙芯的缓存,那么现在已经差不多把新房子已经建立好了,要进入新房居住了。在 SDRAM 里的存取速度比 ROM 里快很多,并且可以随时修改数据,而在 ROM 是不能修改的,就算可以修改,也是非常慢的。
从上面初始化缓存回来后,就运行到下面的程序:
#####xuhua########open cp1
#if 1
mfc0 t0,COP_0_STATUS_REG
and t0,0xdbffffff
or t0,t0,0x24000000
mtc0 t0,COP_0_STATUS_REG
#endif
#################
上面的程序打开了 CP1 处理器,也就是浮点处理器。先从状态寄存器里取得 32 位中高 4 位的协处理器状态,然后先用通过 0x2400 0000 来打开浮点协处理器,把值改写回到状态寄存器。
/* close L2 cache */
li a0, 0xbfe00164
sw zero, 0(a0);
mfc0 a0,COP_0_CONFIG
and a0,a0,~((1<<12) | 3)
or a0,a0,2
mtc0 a0,COP_0_CONFIG
上面的程序关闭了二级缓存。
TTYDBG("Copy PMON to execute location.../r/n")
#ifdef DEBUG_LOCORE
TTYDBG(" start = 0x")
la a0, start