Chinaunix首页 | 论坛 | 博客
  • 博客访问: 919597
  • 博文数量: 96
  • 博客积分: 10071
  • 博客等级: 上将
  • 技术积分: 1118
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-20 17:54
文章分类

全部博文(96)

文章存档

2011年(3)

2010年(3)

2009年(29)

2008年(54)

2007年(7)

分类: LINUX

2008-03-11 15:27:37

2410虚拟内存与实际内存的转换
creator
sz111@126.com

#ifdef CONFIG_CPU_S3C2400
#define PHYS_OFFSET    UL(0x0C000000)
#else
#define PHYS_OFFSET    UL(0x30000000)
#endif

/*
 * Page offset: 3GB
 */
#ifndef PAGE_OFFSET
#define PAGE_OFFSET        UL(0xc0000000)
#endif


#define __virt_to_phys(x)    ((x) - PAGE_OFFSET + PHYS_OFFSET)
#define __phys_to_virt(x)    ((x) - PHYS_OFFSET + PAGE_OFFSET)

内核中3G-4G空间映射的是实际的SDRAM。
而实际的SDRAM又是从0X30000000开始的。
所以虚拟内存和实际内存的转换是通过以下公式:

V:虚拟内存(范围>3G)
P:实际内存(范围>0x30000000)

P=V-PAGE_OFFSET+PHYS_OFFSET
V=P+PAGE_OFFSET-PHYS_OFFSET

阅读(2838) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~