diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-06-15 18:34:30 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-06-15 18:59:39 -0700 |
commit | 260b6fff32036dcfc8299aa21dd7cd443b18bb6a (patch) | |
tree | 1795e3eab96364b622af81f98272fb512231116e /v/vm.c | |
parent | 4944be4d45cafabce0519f223124d2934b9dcac5 (diff) | |
download | env-260b6fff32036dcfc8299aa21dd7cd443b18bb6a.zip env-260b6fff32036dcfc8299aa21dd7cd443b18bb6a.tar.gz env-260b6fff32036dcfc8299aa21dd7cd443b18bb6a.tar.bz2 |
Speed up VM tests
Diffstat (limited to 'v/vm.c')
-rw-r--r-- | v/vm.c | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -59,18 +59,22 @@ void wtf() terminate(3); \ } while(0) -typedef struct { pte_t addr; void* next; } freelist_t; - -pte_t l1pt[PTES_PER_PT] __attribute__((aligned(PGSIZE))); -pte_t user_l2pt[PTES_PER_PT] __attribute__((aligned(PGSIZE))); -pte_t kernel_l2pt[PTES_PER_PT] __attribute__((aligned(PGSIZE))); +#define l1pt pt[0] +#define user_l2pt pt[1] +#define kernel_l2pt pt[2] #ifdef __riscv64 -pte_t user_l3pt[PTES_PER_PT] __attribute__((aligned(PGSIZE))); -pte_t kernel_l3pt[PTES_PER_PT] __attribute__((aligned(PGSIZE))); +# define NPT 5 +# define user_l3pt pt[3] +# define kernel_l3pt pt[4] #else +# define NPT 3 # define user_l3pt user_l2pt # define kernel_l3pt kernel_l2pt #endif +pte_t pt[NPT][PTES_PER_PT] __attribute__((aligned(PGSIZE))); + +typedef struct { pte_t addr; void* next; } freelist_t; + freelist_t user_mapping[MAX_TEST_PAGES]; freelist_t freelist_nodes[MAX_TEST_PAGES]; freelist_t *freelist_head, *freelist_tail; @@ -88,7 +92,7 @@ void printhex(uint64_t x) cputstring(str); } -void evict(unsigned long addr) +static void evict(unsigned long addr) { assert(addr >= PGSIZE && addr < MAX_TEST_PAGES * PGSIZE); addr = addr/PGSIZE*PGSIZE; |