profiling in user mode.
[akaros.git] / kern / include / ros / memlayout.h
1 #ifndef ROS_INC_MEMLAYOUT_H
2 #define ROS_INC_MEMLAYOUT_H
3
4 #ifndef __ASSEMBLER__
5 #include <ros/common.h>
6 #endif /* not __ASSEMBLER__ */
7
8 #include <ros/arch/mmu.h>
9
10 /*
11  * This file contains definitions for memory management in our OS,
12  * which are relevant to both the kernel and user-mode software.
13  */
14
15 /* TODO: sort out multiboot being in src/ (depends on this) */
16 #ifndef EXTPHYSMEM
17 #define EXTPHYSMEM      0x100000
18 #endif
19
20 #define KSTKSHIFT       (PGSHIFT + 1)                   /* KSTKSIZE == PGSIZE */
21 #define KSTKSIZE        (1 << KSTKSHIFT)        /* size of a static kernel stack */
22
23 /* Read-only, per-process shared info structures */
24 #define UINFO                   (UVPT - PTSIZE)
25 /* Top of user-writable VM */
26 #define UWLIM                   UINFO
27 /* Read-write, per-process shared info structures */
28 #define UDATA                   (UWLIM - PTSIZE)
29 /* Read-write, global page.  Shared by all processes. */
30 #define UGDATA                  (UDATA - PGSIZE)
31 /* Limit of what is mmap()/munmap()-able */
32 #define UMAPTOP                 UGDATA
33 /* Top of normal user stack */
34 #define USTACKTOP               UMAPTOP
35 /* Stack size of thread0, allocated by the kernel */
36 #define USTACK_NUM_PAGES        256
37
38 #endif /* !ROS_INC_MEMLAYOUT_H */