QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 848|回复: 2

请教skyeye源码中的几个问题

[复制链接]
发表于 2004-12-21 17:38:23 | 显示全部楼层 |阅读模式
armmmu.c中translate函数中计算一级描述符地址
l1addr = state->mmu.translation_table_base & 0xFFFFC000;
l1addr = (l1addr | (virt_addr >> 1) & ~3;
...


i)translation_table_base已经是入口地址了,后面直接或上(virt_addr >> 1应该就可以了,为什么要 & 0xFFFFC000?

ii)为什么要~3;

iii)一级描述符是个什么概念?在OS段页式访问中,一般是先查段的页表,再查页,最后将该页物理首地址+偏移得到对应的物理地址,这里二级描述符中怎么也分了页式变换以及段变换。

iv)
switch (l1desc & 3) {
        case 0:
        case 3:
        case 1:
            ...
          switch (l2desc & 3) {
                                case 0:
                                case 3:
...
==>l1desc/l2desc为什么要&3?这样的结果表示什么?

哪位朋友可以给我解释一下?
发表于 2004-12-28 09:45:26 | 显示全部楼层
这里解释比较麻烦,建议看看有关arm的mmu的硬件相关文档(如ARM reference manual等)。
回复

使用道具 举报

 楼主| 发表于 2004-12-28 21:49:29 | 显示全部楼层
我去查查看

斑竹可否大致说说,让我有个大概的认识?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 18:51 , Processed in 0.062450 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表