免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2984 | 回复: 9
打印 上一主题 下一主题

arm体系与x86的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-07 23:08 |只看该作者 |倒序浏览
simple.c 中的以下这段内核代码:

int g1 = 0;
static int g2 = 0;
int g3;
static int g4;

static int __init simple_init(void)
{
        int i;        
        
        printk("addr of i        :%x\n", &i);
        printk("addr of g1        :%x\n", &g1);
        printk("addr of g2        :%x\n", &g2);
        printk("addr of g3        :%x\n", &g3);
        printk("addr of g4        :%x\n", &g4);        
        return 0;
}

成功编绎成 simple.ko

在arm(s3c2410)下执行结果:
/tmp $ insmod simple.ko
addr of i        :c1dc9e58
addr of g1      :bf0174a0
addr of g2      :bf0174a8
addr of g3      :bf0174a4
addr of g4      :bf0174ac
在X86下的执行结果:
root@gao:/home/gao/kernel/Test# insmod simple.ko
addr of i        :c124ded0
addr of g1      :d0887680
addr of g2      :d0887688
addr of g3      :d0887684
addr of g4      :d088768c

看到了区别吗?arm下全局的变量小于0xc0000000 !!!!
还是内核空间?

希望大家分析讨论下。。

论坛徽章:
0
2 [报告]
发表于 2007-07-08 10:24 |只看该作者
原帖由 eagle1597 于 2007-7-7 23:08 发表于 1楼  
simple.c 中的以下这段内核代码:

int g1 = 0;
static int g2 = 0;
int g3;
static int g4;

static int __init simple_init(void)
{
        int i;        
        
        printk("addr  ...



各个体系结构对内存的应用是不一定完全相同的, 在X86中是0xC0000000, 而在其它体系结构中就不一定了.
同样,对于896M这个内存限制, 也是在X86系统中的, 其它系统也不一定有这个限制.

论坛徽章:
0
3 [报告]
发表于 2007-07-08 11:55 |只看该作者
我找了好多资料,也没有这方面的介绍.

有哪位对arm 体系很了解的可以解释下吗?

论坛徽章:
0
4 [报告]
发表于 2007-07-09 03:03 |只看该作者
PAGE_OFFSET 被修改?

论坛徽章:
0
5 [报告]
发表于 2007-07-09 08:40 |只看该作者
#define PAGE_OFFSET                (0xc0000000UL)

论坛徽章:
0
6 [报告]
发表于 2007-07-09 11:35 |只看该作者
很正常阿
其它体系结构俺不清楚,但arm的是这样的:

0x0000,1000 ---- TASK_SIZE-1 用户空间
TASK_SIZE-1  ---- PAGE_OFFSET-1 内核模块空间,通过insmod动态加载的模块,通过动态映射放置于此
PAGE_OFFSET-1 ----- high_memory-1 内核逻辑地址空间

TASK_SIZE定义为0xbf00,0000
PAGE_OFFSET定义为0xc000,0000

arm内存空间的具体描述请察看源码树Document/arm/memory.txt

论坛徽章:
0
7 [报告]
发表于 2007-07-10 13:58 |只看该作者
非常谢谢augustusqing 兄弟!
在文档Document/arm/memory.txt里确实说的很清楚啊....
arm 下的 4G VM大概是这样的:

论坛徽章:
0
8 [报告]
发表于 2007-07-10 13:59 |只看该作者
那么按照这种搞法的话, module space 是不是属于我们常说的内核空间呢?

论坛徽章:
0
9 [报告]
发表于 2007-07-10 17:42 |只看该作者
狭义和广义了,具体语境具体对待了

论坛徽章:
0
10 [报告]
发表于 2007-07-12 18:07 |只看该作者
呵呵,  有道理啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP