kern
diff src/vm.h @ 23:5454cee245a3
- fixed tragic mistake in the initial kernel image mapping
- page table modifications by disabling paging first
- page allocation completed
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 04 Apr 2011 23:34:06 +0300 |
parents | 7ece008f09c5 |
children | 387078ef5c0d |
line diff
1.1 --- a/src/vm.h Sun Apr 03 18:42:19 2011 +0300 1.2 +++ b/src/vm.h Mon Apr 04 23:34:06 2011 +0300 1.3 @@ -18,12 +18,14 @@ 1.4 1.5 1.6 #define PGSIZE 4096 1.7 +#define PAGE_COUNT (1024 * 1024) 1.8 + 1.9 #define PGOFFS_MASK 0xfff 1.10 #define PGNUM_MASK 0xfffff000 1.11 #define PGENT_ADDR_MASK PGNUM_MASK 1.12 1.13 -#define ADDR_TO_PAGE(x) ((uint32_t)(x) >> 12) 1.14 -#define PAGE_TO_ADDR(x) ((uint32_t)(x) << 12) 1.15 +#define ADDR_TO_PAGE(x) ((uint32_t)(x) >> 12) 1.16 +#define PAGE_TO_ADDR(x) ((uint32_t)(x) << 12) 1.17 1.18 #define ADDR_TO_PGTBL(x) ((uint32_t)(x) >> 22) 1.19 #define ADDR_TO_PGTBL_PG(x) (((uint32_t)(x) >> 12) & 0x3ff) 1.20 @@ -35,10 +37,9 @@ 1.21 1.22 void init_vm(struct mboot_info *mb); 1.23 1.24 -void map_page(int vpage, int ppage, unsigned int attr); 1.25 -void map_page_range(int vpg_start, int pgcount, int ppg_start, unsigned int attr); 1.26 - 1.27 -void map_mem_range(uint32_t vaddr, size_t sz, uint32_t paddr, unsigned int attr); 1.28 +int map_page(int vpage, int ppage, unsigned int attr); 1.29 +int map_page_range(int vpg_start, int pgcount, int ppg_start, unsigned int attr); 1.30 +int map_mem_range(uint32_t vaddr, size_t sz, uint32_t paddr, unsigned int attr); 1.31 1.32 uint32_t virt_to_phys(uint32_t vaddr); 1.33 1.34 @@ -48,5 +49,8 @@ 1.35 }; 1.36 1.37 int pgalloc(int num, int area); 1.38 +void pgfree(int start, int num); 1.39 + 1.40 +void dbg_print_vm(int area); 1.41 1.42 #endif /* VM_H_ */