查看64位多核 MIPS 异常和中断结构的源代码
←
64位多核 MIPS 异常和中断结构
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
==== Cavium Octeon (MIPS64 R2) 情形 ==== 对于像 Cavium Octeon 这类多核处理器,他有 16 个 CPU 核,在一些特殊应用环境下(比如其中 1 个核跑一个 Linux 作为控制面,其他 15 个核,每个核只跑一个应用作为数据面),不同的核就需要不同的例外入口基地址。为了这个原因,MIPS 在 MIPS64 R2 里引入了 CP0_EBase 寄存器,用于存放例外入口的基地址。 MIPS64 R2 规定,CP0_EBase 只在 CP0_STATUS[BEV]=0 时,即在正常运行时有效,BEV=1 的上电启动状态,例外的基地址还是原来的地址。 CP0_EBase 的默认值为 0x8000 0000,32bit 的值在 64bit 下,高位自动扩展: 0xFFFF FFFF 8000 0000,这样就能和 MIPS64 R1 兼容,即使用户无视这个寄存器,原系统也能在 R2 上正常运行。 有了 CP0_EBase 后,不同的核就可以有自己的例外入口,这样就可以各自跑自己的系统,甚至只跑一个应用。 因此在 MIPS64 R2 下,BEV = 0 时只规定四个固定例外入口的偏移: <source lang=bash> TLB Refill 时,偏移为 0x00 (32 bit address space) xTLB Refill 时,偏移为 0x80 (64 bit address space) Cache Error 时,偏移为 0x100 其它例外时,偏移为 0x180 </source> 实际的入口为 0xFFFF FFFF 0000 0000 + (cp0_ebase & 0x3FFF F000) Cavium Octeon 上 Bootloader 将异常的基地址设为 0xFFFF FFFF 8000 1000 <br><br>
返回到
64位多核 MIPS 异常和中断结构
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面