|  | #ifndef ROS_INC_MEMLAYOUT_H | 
|  | #define ROS_INC_MEMLAYOUT_H | 
|  |  | 
|  | #ifndef __ASSEMBLER__ | 
|  | #include <ros/common.h> | 
|  | #endif /* not __ASSEMBLER__ */ | 
|  |  | 
|  | #include <ros/arch/mmu.h> | 
|  |  | 
|  | /* | 
|  | * This file contains definitions for memory management in our OS, | 
|  | * which are relevant to both the kernel and user-mode software. | 
|  | */ | 
|  |  | 
|  | /* TODO: sort out multiboot being in src/ (depends on this) */ | 
|  | #ifndef EXTPHYSMEM | 
|  | #define EXTPHYSMEM	0x100000 | 
|  | #endif | 
|  |  | 
|  | #define KSTKSHIFT	(PGSHIFT + 1)			/* KSTKSIZE == PGSIZE */ | 
|  | #define KSTKSIZE	(1 << KSTKSHIFT)	/* size of a static kernel stack */ | 
|  |  | 
|  | /* Read-only, per-process shared info structures */ | 
|  | #define UINFO			(UVPT - PTSIZE) | 
|  | /* Top of user-writable VM */ | 
|  | #define UWLIM			UINFO | 
|  | /* Read-write, per-process shared info structures */ | 
|  | #define UDATA			(UWLIM - PTSIZE) | 
|  | /* Read-write, global page.  Shared by all processes. */ | 
|  | #define UGDATA			(UDATA - PGSIZE) | 
|  | /* Limit of what is mmap()/munmap()-able */ | 
|  | #define UMAPTOP			UGDATA | 
|  | /* Top of normal user stack */ | 
|  | #define USTACKTOP		UMAPTOP | 
|  | /* Stack size of thread0, allocated by the kernel */ | 
|  | #define USTACK_NUM_PAGES	256 | 
|  |  | 
|  | #endif /* !ROS_INC_MEMLAYOUT_H */ |