📄 mm.h
字号:
/* * ApOS (Another Project software for s3c2410) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Copyright caiyuqing * */#ifndef _MEMORY_H#define _MEMORY_H#define DIR_VALID(dir) ((dir)&0x00000001) #define PAGE_VALID(page) ((page)&0x00000002)#define DIR_INVALID(dir) !((dir)&0x00000001) #define PAGE_INVALID(page) !((page)&0x00000002) #define PAGE_TABLE_INDEX(v_addr) ((v_addr)>>20) //获得页表号的索引#define PAGE_ENTRY_INDEX(v_addr) (((v_addr)>>12)&0xff) //获得页表项的索引#define SDRAM_BASE (0x30000000)#define SDRAM_SIZE (1024*1024*64) //我使用的SDRAM大小为64MB#define SDRAM_LIMIT (SDRAM_BASE+SDRAM_SIZE)#define SFR_BASE (0x48000000)#define SFR_LIMIT (0x60000000)#define PAGE_SIZE 4096#define SYS_RAM_BASE 0x30000000#define SYS_RAM_SIZE (1024*1024*10) //系统使用了前10MB的空间#define SYS_RAM_LIMIT (SYS_RAM_BASE+SYS_RAM_SIZE)#define SYS_VADDR_BASE 0x30000000#define SYS_VADDR_SIZE (1024*1024*10) //系统使用了前10MB的空间#define SYS_VADDR_LIMIT (SYS_VADDR_BASE+SYS_VADDR_SIZE)#define USER_RAM_BASE (SYS_RAM_BASE+SYS_RAM_SIZE)#define USER_RAM_SIZE (SDRAM_SIZE-SYS_RAM_SIZE) //64MB的RAM空间除去系统使用的10MB,剩下54MB作为用户空间 #define USER_VADDR_BASE (SYS_VADDR_BASE+SYS_VADDR_SIZE)#define USER_VADDR_SIZE (SDRAM_SIZE-SYS_RAM_SIZE)#define RAM_PAGES (USER_RAM_SIZE>>12) //用户空间分割成的页数(每页4096 Byte)/* * DIRECTORY: 页目录表,该表总共有4096个目录项 * 所处地址范围: 0x30000000~0x30003fff */#define DIRECTORY_ENTRIES 4096#define DIRECTORY_ENTRY_SIZE 4#define DIRECTORY_BASE 0x30000000#define DIRECTORY_SIZE (DIRECTORY_ENTRIES)*(DIRECTORY_ENTRY_SIZE)/* * 内核的起始地址,必须是4KB的边界,所以从我决定从0x30075000开始 */#define KERNEL_BASE 0x30075000#define EXCEPTION_BASE 0xffff0000#define COARSE_PAGE (1) /* indicates that this is a Coarse page descriptor */#define SPECIAL (1<<4) /* must be 1 */#define CLIENT (0<<5)#define MANAGER (1<<5)#define COARSE_PAGE_DESC (COARSE_PAGE|SPECIAL)#define SMALL_PAGE (2<<0)#define BUFFERABLE (1<<2) /* bufferable */#define CACHEABLE (1<<3) /* cacheable */#define USER_AP0_RW (3<<4)#define USER_AP1_RW (3<<6)#define USER_AP2_RW (3<<8)#define USER_AP3_RW (3<<10)#define USER_AP0_R (2<<4)#define USER_AP1_R (2<<6)#define USER_AP2_R (2<<8)#define USER_AP3_R (2<<10)#define USER_SMALL_PAGE_DESC_RW (SMALL_PAGE|CACHEABLE|USER_AP0_RW|USER_AP1_RW|USER_AP2_RW|USER_AP3_RW)#define USER_SMALL_PAGE_DESC_R (SMALL_PAGE|CACHEABLE|USER_AP0_R|USER_AP1_R|USER_AP2_R|USER_AP3_R)#define PAGE_TABLE_ENTRIES 256#define PAGE_TABLE_ENTRY_SIZE 4#define PAGE_TABLE_SIZE (PAGE_TABLE_ENTRIES)*(PAGE_TABLE_ENTRY_SIZE)#define SYS_STACK_SIZE 0x8000#define IRQ_STACK_SIZE 0x8000#define ABORT_STACK_SIZE 0x8000#define SVC_STACK_SIZE 0x8000#define TASK0_STACK_SIZE 0x8000#define ABORT_STACK_BASE 0x30A00000-4 #define IRQ_STACK_BASE ABORT_STACK_BASE-ABORT_STACK_SIZE#define SYS_STACK_BASE IRQ_STACK_BASE-IRQ_STACK_SIZE#define SVC_STACK_BASE SYS_STACK_BASE-SYS_STACK_SIZE#define TASK0_STACK_BASE SVC_STACK_BASE-TASK0_STACK_SIZE //0x309dfffd~0x309e7ffc#define IRQ_STACK_FRAME_SIZE 68#define ABORT_STACK_FRAME_SIZE 68#define SVC_STACK_FRAME_SIZE 68#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -