⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mm.h

📁 os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm os arm
💻 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 + -