blob: b2b81b9df57eb3871679922b191b9c983b092800 [file] [log] [blame]
#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 */