MIPS4k处理器boot学习

来源:互联网 发布:库存管理数据流程图 编辑:程序博客网 时间:2024/06/08 00:00

MIPS寄存器约定:

寄存器编号/助记符/用法
0 zero 永远返回值为0
1 at 用做汇编器的暂时变量
2-3 v0, v1 子函数调用返回结果
4-7 a0-a3 子函数调用的参数
8-15 t0-t7 暂时变量,子函数使用时不需要保存与恢复
24-25 t8-t9
16-25 s0-s7 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返
回之前,从而调用函数知道这些寄存器的值没有变化。
26,27 k0,k1 通常被中断或异常处理程序使用作为保存一些系统参数
28 gp    全局指针。一些运行系统维护这个指针来更方便的存取“static“和”extern"
变量。
29 sp     堆栈指针
30 s8/fp 第9个寄存器变量。子函数可以用来做桢指针
31  ra    子函数的返回地

===============================================

在bootloader下,MIPS核的初始化用汇编语言写成,基本过程是

1〉清除CP0的WATCH寄存器    

mtc0    zero, C0_WATCHLO  /* First thing: clear watch regs */
    mtc0    zero, C0_WATCHHI

2〉初始化CP0状态寄存器,禁止软硬件中断以及选择boot异常向量地址

3〉根据需要建立MIPS的状态和控制寄存器,通常会清除(ERL、EXL位)

4〉初始化cache,先初始化ICACHE,在初始化DCACHE(具体过程)

5〉开始初始化外围接口(init_platform),主要是初始化时钟系统、EMIF接口等。

 
原创粉丝点击