mips
文章平均质量分 77
白水煮鸡蛋
这个作者很懒,什么都没留下…
展开
-
64位多核 MIPS 异常和中断结构
64位多核 MIPS 异常和中断结构1. 概述MIPS 统称异常(同步事件)和中断(异步事件)为例外 (Exception)引入异常则是为了解决处理器运行过程中的一些意外情形,比如执行流中有非法指令(无法被处理器辨识的指令),访问了没有映射的虚拟地址等等。中断的引入则是提供一种 IO 设备请求处理器服务的一种通讯机制;往往是由外部设备主动发起(给处理器的中断引脚一个信号),转载 2013-01-10 20:51:47 · 2334 阅读 · 0 评论 -
64位多核 MIPS 异常和中断内核代码分析 (2)
64位多核 MIPS 异常和中断内核代码分析 (2)本节主要分析 Cavium Octeon 上 TLB 异常相关的处理函数 1.2 TLB Refill 例外入口 非启动模式 (BEV=0) 下,MIPS64 R1上,64 位地址空间的 TLB Refill 入口在物理地址 0x80 处,其空间可以放一个 32 条指令的处理函数; 32 位地址空间的 TLB Refil转载 2013-01-11 11:03:59 · 2566 阅读 · 0 评论 -
Using Watchpoints register to monitor momery access on MIPS
1. 一般MIPS CPU 都有一对 WatchPoints register:可以设置 WatchLo 指定一个监测的内存地址,一旦有对该地址的操作,即触发一个 watch 异常下面的设置监测 0x8000000004190000 的内存写操作: unsigned long cat_wlo1 = 0x8000000004190001; unsign转载 2013-01-11 11:44:29 · 1275 阅读 · 0 评论 -
分支延迟槽
分支延迟槽1. 概述分支延迟槽 (Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交 (commit)。看这个代码片段 (MIPS Linux kernel 2.6.17):801ea9d4: 02202021 move a0,s1801ea9d8转载 2013-01-10 20:02:31 · 15080 阅读 · 0 评论 -
精确异常与非精确异常
这里的异常是指同步的 (Synchronous),非异步的中断。非精确异常 (Imprecise Exception)在多发射乱序执行的流水线 CPU 上,从指令进入流水线到异常事件的发生,期间要经过若干流水级,此时 PC 的值已指向其后的某条指令,在实现非精确异常的 CPU 上就把此时的 PC 值作为引起异常指令的所在(为了表达的方便,记为 eptr)。简单地说就是 ep转载 2013-01-10 20:06:24 · 8861 阅读 · 0 评论 -
64位多核 MIPS 异常和中断内核代码分析 (1)
64位多核 MIPS 异常和中断内核代码分析 (1)1. 高优先级例外入口初始化本文不涉及 Bootloader,因此 Reset 例外入口处的 Bootloader 我们就不讨论了。多核环境下,所有核默认指向的例外入口基地址都是一样的,尽管可以修改各自核内部的 EBase 寄存器来改变例外入口基地址,但我们此处只讨论所有核运行在对称多处理模式(SMP) 下的情形,即所有核都使用同样的转载 2013-01-11 11:02:03 · 2028 阅读 · 0 评论 -
64位多核 MIPS 异常和中断内核代码分析 (4)
64位多核 MIPS 异常和中断内核代码分析 (4) 1.3 其它例外入口初始化其它例外的入口初始化位于:[arch/mips/kernel/traps.c]void __init trap_init(){...... /* * Copy the generic exception handlers to their final destina转载 2013-01-11 11:25:54 · 1770 阅读 · 0 评论 -
64位多核 MIPS 异常和中断内核代码分析 (3)
64位多核 MIPS 异常和中断内核代码分析 (3) RMI XLR732TLB 相关处理函数分析0. 背景 MIPS64 下虚拟地址空间的划分: 其中内核空间是 xkphys 和 xkseg;其中 xkphys 是固定映射,不经 TLB (unmapped)用户空间是 xuseg1. RMI XLR732 TLB Refill转载 2013-01-11 11:05:50 · 1380 阅读 · 0 评论 -
Linux/MIPS启动分析
Linux启动入口主要代码在 arch/mips/kernel/head.S文件中 kernel_entry函数以汇编形式出现主要干了以下几件事:1. BSS段清02. 从boot传过来的参数赋值到全局变量3. clear context register4. 根据init_thread_union建立$gp寄存器 并设置 $sp 寄存器,堆栈指针 (PTR_原创 2013-01-12 21:02:33 · 2213 阅读 · 0 评论