Boot framework rework (#45)
[lunaix-os.git] / lunaix-os / arch / generic / includes / sys / mm / tlb.h
1 #ifndef __LUNAIX_ARCH_TLB_H
2 #define __LUNAIX_ARCH_TLB_H
3
4 #include <lunaix/compiler.h>
5 #include <lunaix/mm/procvm.h>
6 #include <lunaix/mm/physical.h>
7
8 /**
9  * @brief Invalidate entries of all address spaces
10  * 
11  * @param asid 
12  * @param addr 
13  * @param npages 
14  */
15 void 
16 tlb_flush_range(ptr_t addr, unsigned int npages);
17
18 /**
19  * @brief Invalidate entries of an address space identified
20  *        by ASID
21  * 
22  * @param asid 
23  * @param addr 
24  * @param npages 
25  */
26 void 
27 tlb_flush_asid_range(unsigned int asid, ptr_t addr, unsigned int npages);
28
29 /**
30  * @brief Invalidate an entry of kernel address spaces
31  * 
32  * @param asid 
33  * @param addr 
34  * @param npages 
35  */
36 void 
37 tlb_flush_kernel(ptr_t addr);
38
39 /**
40  * @brief Invalidate entries of kernel address spaces
41  * 
42  * @param asid 
43  * @param addr 
44  * @param npages 
45  */
46 void 
47 tlb_flush_kernel_ranged(ptr_t addr, unsigned int npages);
48
49 /**
50  * @brief Invalidate an entry within a process memory space
51  * 
52  * @param asid 
53  * @param addr 
54  * @param npages 
55  */
56 void
57 tlb_flush_mm(struct proc_mm* mm, ptr_t addr);
58
59 /**
60  * @brief Invalidate entries within a process memory space
61  * 
62  * @param asid 
63  * @param addr 
64  * @param npages 
65  */
66 void
67 tlb_flush_mm_range(struct proc_mm* mm, ptr_t addr, unsigned int npages);
68
69 /**
70  * @brief Invalidate an entry within a vm region
71  * 
72  * @param asid 
73  * @param addr 
74  * @param npages 
75  */
76 void
77 tlb_flush_vmr(struct mm_region* vmr, ptr_t va);
78
79 /**
80  * @brief Invalidate all entries within a vm region
81  * 
82  * @param asid 
83  * @param addr 
84  * @param npages 
85  */
86 void
87 tlb_flush_vmr_all(struct mm_region* vmr);
88
89 /**
90  * @brief Invalidate entries within a vm region
91  * 
92  * @param asid 
93  * @param addr 
94  * @param npages 
95  */
96 void
97 tlb_flush_vmr_range(struct mm_region* vmr, ptr_t addr, unsigned int npages);
98
99 #endif /* __LUNAIX_VMTLB_H */