This source file includes following definitions.
- enable_vac
- disable_vac
- hw_flush_vac_context_entry
- sw_flush_vac_context_entry
- hw_flush_vac_segment_entry
- sw_flush_vac_segment_entry
- hw_flush_vac_page_entry
- sw_flush_vac_page_entry
1
2
3
4
5
6
7
8
9
10
11 extern __inline__ int enable_vac()
12 {
13 int success;
14
15 __asm__ __volatile__("lduba [0x40000000] 0x2, %0\n\t"
16 "or %0, 0x10, %0\n\t"
17 "stba %0, [0x40000000] 0x2\n\t"
18 "or %g0, %g0, %0" : "=r" (success) : "0" (success));
19 return success;
20 }
21
22
23
24
25
26 extern __inline__ int disable_vac()
27 {
28 int success;
29
30 __asm__ __volatile__("lduba [0x40000000] 0x2, %0\n\t"
31 "xor %0, 0x10, %0\n\t"
32 "stba %0, [0x40000000] 0x2\n\t"
33 "or %g0, %g0, %0" : "=r" (success) : "0" (success));
34 return success;
35 }
36
37
38
39 extern __inline__ void hw_flush_vac_context_entry(char* addr)
40 {
41 __asm__ __volatile__("sta 0, [%0] 0x7" : : "r" (addr));
42 }
43
44 extern __inline__ void sw_flush_vac_context_entry(char* addr)
45 {
46 __asm__ __volatile__("sta 0, [%0] 0xe" : : "r" (addr));
47 }
48
49 extern __inline__ void hw_flush_vac_segment_entry(char* addr)
50 {
51 __asm__ __volatile__("sta 0, [%0] 0x5" : : "r" (addr));
52 }
53
54 extern __inline__ void sw_flush_vac_segment_entry(char* addr)
55 {
56 __asm__ __volatile__("sta 0, [%0], 0xc" : : "r" (addr));
57 }
58
59 extern __inline__ void hw_flush_vac_page_entry(char* addr)
60 {
61 __asm__ __volatile__("sta 0, [%0] 0x6" : : "r" (addr));
62 }
63
64 extern __inline__ void sw_flush_vac_page_entry(char* addr)
65 {
66 __asm__ __volatile__("sta 0, [%0] 0xd" : : "r" (addr));
67 }
68