Browse Source

use MEM_START, not DRAM_BASE, for pk mappings

pull/228/head
Andrew Waterman 6 years ago
parent
commit
0011fdf211
  1. 4
      pk/mmap.c
  2. 2
      pk/mmap.h

4
pk/mmap.c

@ -402,10 +402,10 @@ uintptr_t pk_vm_init()
first_free_paddr = first_free_page + free_pages * RISCV_PGSIZE;
root_page_table = (void*)__page_alloc();
__map_kernel_range(DRAM_BASE, DRAM_BASE, first_free_paddr - DRAM_BASE, PROT_READ|PROT_WRITE|PROT_EXEC);
__map_kernel_range(MEM_START, MEM_START, first_free_paddr - MEM_START, PROT_READ|PROT_WRITE|PROT_EXEC);
current.mmap_max = current.brk_max =
MIN(DRAM_BASE, mem_size - (first_free_paddr - DRAM_BASE));
MIN(MEM_START, mem_size - (first_free_paddr - MEM_START));
size_t stack_size = MIN(mem_pages >> 5, 2048) * RISCV_PGSIZE;
size_t stack_bottom = __do_mmap(current.mmap_max - stack_size, stack_size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0);

2
pk/mmap.h

@ -36,6 +36,6 @@ uintptr_t do_brk(uintptr_t addr);
#define va2pa(va) ({ uintptr_t __va = (uintptr_t)(va); \
extern uintptr_t first_free_paddr; \
__va >= DRAM_BASE ? __va : __va + first_free_paddr; })
__va >= MEM_START ? __va : __va + first_free_paddr; })
#endif

Loading…
Cancel
Save