Rev 3771 | Rev 3862 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3771 | Rev 3835 | ||
---|---|---|---|
Line 72... | Line 72... | ||
72 | "Nucleus", |
72 | "Nucleus", |
73 | "Reserved" |
73 | "Reserved" |
74 | }; |
74 | }; |
75 | #endif |
75 | #endif |
76 | 76 | ||
- | 77 | /* |
|
77 | mmu_fault_status_area_t mmu_fault_status_areas[MAX_NUM_STRANDS] |
78 | * Invalidate all non-locked DTLB and ITLB entries. |
78 | __attribute__ ((aligned (64))); |
- | |
79 | 79 | */ |
|
80 | void tlb_arch_init(void) |
80 | void tlb_arch_init(void) |
81 | { |
81 | { |
82 | uint64_t errno; |
- | |
83 | /* |
- | |
84 | * Invalidate all non-locked DTLB and ITLB entries. |
- | |
85 | */ |
- | |
86 | - | ||
87 | tlb_invalidate_all(); |
82 | tlb_invalidate_all(); |
88 | - | ||
89 | /* |
- | |
90 | * Set the MMU fault status area for the current CPU. |
- | |
91 | */ |
- | |
92 | uint64_t myid; |
- | |
93 | __hypercall_fast_ret1(0, 0, 0, 0, 0, CPU_MYID, &myid); |
- | |
94 | errno = __hypercall_fast1(MMU_FAULT_AREA_CONF, |
- | |
95 | KA2PA(&(mmu_fault_status_areas[myid]))); |
- | |
96 | if (errno != EOK) { |
- | |
97 | panic("Could not set MMU fault area for CPU %d, errno = %d.\n", |
- | |
98 | myid, errno); |
- | |
99 | } |
- | |
100 | printf("Setting MMU fault area for CPU %d at %x.\n", myid, KA2PA(&(mmu_fault_status_areas[myid]))); |
- | |
101 | #if 0 |
- | |
102 | /* |
- | |
103 | * Clear both SFSRs. |
- | |
104 | */ |
- | |
105 | dtlb_sfsr_write(0); |
- | |
106 | itlb_sfsr_write(0); |
- | |
107 | #endif |
- | |
108 | } |
83 | } |
109 | 84 | ||
110 | /** Insert privileged mapping into DMMU TLB. |
85 | /** Insert privileged mapping into DMMU TLB. |
111 | * |
86 | * |
112 | * @param page Virtual page address. |
87 | * @param page Virtual page address. |