Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
Line 39... | Line 39... | ||
39 | 39 | ||
40 | static vhpt_entry_t* vhpt_base; |
40 | static vhpt_entry_t* vhpt_base; |
41 | 41 | ||
42 | uintptr_t vhpt_set_up(void) |
42 | uintptr_t vhpt_set_up(void) |
43 | { |
43 | { |
44 | vhpt_base = frame_alloc(VHPT_WIDTH - FRAME_WIDTH, FRAME_KA | FRAME_ATOMIC); |
44 | vhpt_base = frame_alloc(VHPT_WIDTH - FRAME_WIDTH, |
- | 45 | FRAME_KA | FRAME_ATOMIC); |
|
45 | if (!vhpt_base) |
46 | if (!vhpt_base) |
46 | panic("Kernel configured with VHPT but no memory for table."); |
47 | panic("Kernel configured with VHPT but no memory for table."); |
47 | vhpt_invalidate_all(); |
48 | vhpt_invalidate_all(); |
48 | return (uintptr_t) vhpt_base; |
49 | return (uintptr_t) vhpt_base; |
49 | } |
50 | } |
Line 79... | Line 80... | ||
79 | ventry->present.tag.tag_word = tag; |
80 | ventry->present.tag.tag_word = tag; |
80 | } |
81 | } |
81 | 82 | ||
82 | void vhpt_invalidate_all() |
83 | void vhpt_invalidate_all() |
83 | { |
84 | { |
84 | memsetb((uintptr_t) vhpt_base, 1 << VHPT_WIDTH, 0); |
85 | memsetb(vhpt_base, 1 << VHPT_WIDTH, 0); |
85 | } |
86 | } |
86 | 87 | ||
87 | void vhpt_invalidate_asid(asid_t asid) |
88 | void vhpt_invalidate_asid(asid_t asid) |
88 | { |
89 | { |
89 | vhpt_invalidate_all(); |
90 | vhpt_invalidate_all(); |