Commit 4db27dca authored by Vineet Gupta's avatar Vineet Gupta

ARC: mm: document system mem map clearly

Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
parent def32fad
...@@ -100,29 +100,26 @@ extern unsigned int get_wchan(struct task_struct *p); ...@@ -100,29 +100,26 @@ extern unsigned int get_wchan(struct task_struct *p);
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
/* Kernels Virtual memory area. /*
* Unlike other architectures(MIPS, sh, cris ) ARC 700 does not have a * System Memory Map on ARC
* "kernel translated" region (like KSEG2 in MIPS). So we use a upper part *
* of the translated bottom 2GB for kernel virtual memory and protect * ---------------------------- (lower 2G, Translated) -------------------------
* these pages from user accesses by disabling Ru, Eu and Wu. * 0x0000_0000 0x5FFF_FFFF (user vaddr: TASK_SIZE)
* 0x6000_0000 0x6FFF_FFFF (reserved gutter between U/K)
* 0x7000_0000 0x7FFF_FFFF (kvaddr: vmalloc/modules/pkmap..)
*
* PAGE_OFFSET ---------------- (Upper 2G, Untranslated) -----------------------
* 0x8000_0000 0xBFFF_FFFF (kernel direct mapped)
* 0xC000_0000 0xFFFF_FFFF (peripheral uncached space)
* -----------------------------------------------------------------------------
*/ */
#define VMALLOC_SIZE (0x10000000) /* 256M */ #define VMALLOC_START 0x70000000
#define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE) #define VMALLOC_SIZE (PAGE_OFFSET - VMALLOC_START)
#define VMALLOC_END (PAGE_OFFSET) #define VMALLOC_END (VMALLOC_START + VMALLOC_SIZE)
/* Most of the architectures seem to be keeping some kind of padding between
* userspace TASK_SIZE and PAGE_OFFSET. i.e TASK_SIZE != PAGE_OFFSET.
*/
#define USER_KERNEL_GUTTER 0x10000000 #define USER_KERNEL_GUTTER 0x10000000
/* User address space: #define TASK_SIZE (VMALLOC_START - USER_KERNEL_GUTTER)
* On ARC700, CPU allows the entire lower half of 32 bit address space to be
* translated. Thus potentially 2G (0:0x7FFF_FFFF) could be User vaddr space.
* However we steal 256M for kernel addr (0x7000_0000:0x7FFF_FFFF) and another
* 256M (0x6000_0000:0x6FFF_FFFF) is gutter between user/kernel spaces
* Thus total User vaddr space is (0:0x5FFF_FFFF)
*/
#define TASK_SIZE (PAGE_OFFSET - VMALLOC_SIZE - USER_KERNEL_GUTTER)
#define STACK_TOP TASK_SIZE #define STACK_TOP TASK_SIZE
#define STACK_TOP_MAX STACK_TOP #define STACK_TOP_MAX STACK_TOP
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define PAGE_OFFSET (0x80000000) #define PAGE_OFFSET (0x80000000)
#else #else
#define PAGE_SIZE (1UL << PAGE_SHIFT) /* Default 8K */ #define PAGE_SIZE (1UL << PAGE_SHIFT) /* Default 8K */
#define PAGE_OFFSET (0x80000000UL) /* Kernel starts at 2G onwards */ #define PAGE_OFFSET (0x80000000UL) /* Kernel starts at 2G onwards */
#endif #endif
#define PAGE_MASK (~(PAGE_SIZE-1)) #define PAGE_MASK (~(PAGE_SIZE-1))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment