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 #ifndef _SPARC_VAC_OPS_H
2 #define _SPARC_VAC_OPS_H
3
4
5
6
7
8
9
10 extern void flush_vac_context(void);
11 extern void flush_vac_segment(unsigned int foo_segment);
12 extern void flush_vac_page(unsigned int foo_addr);
13
14
15
16
17
18 extern __inline__ int enable_vac(void)
19 {
20 int success=0;
21
22 __asm__ __volatile__("lduba [%1] 2, %0\n\t"
23 "or %0, 0x10, %0\n\t"
24 "stba %0, [%1] 2\n\t"
25 "or %%g0, %%g0, %0" :
26 "=r" (success) :
27 "r" ((unsigned int) 0x40000000),
28 "0" (success));
29 return success;
30 }
31
32
33
34
35
36 extern __inline__ int disable_vac(void)
37 {
38 int success=0;
39
40 __asm__ __volatile__("lduba [%1] 0x2, %0\n\t"
41 "xor %0, 0x10, %0\n\t"
42 "stba %0, [%1] 0x2\n\t"
43 "or %%g0, %%g0, %0" :
44 "=r" (success) :
45 "r" (0x40000000),
46 "0" (success));
47 return success;
48 }
49
50
51
52 extern __inline__ void hw_flush_vac_context_entry(char* addr)
53 {
54 __asm__ __volatile__("sta %%g0, [%0] 0x7" : : "r" (addr));
55 }
56
57 extern __inline__ void sw_flush_vac_context_entry(char* addr)
58 {
59 __asm__ __volatile__("sta %%g0, [%0] 0xe" : : "r" (addr));
60 }
61
62 extern __inline__ void hw_flush_vac_segment_entry(char* addr)
63 {
64 __asm__ __volatile__("sta %%g0, [%0] 0x5" : : "r" (addr));
65 }
66
67 extern __inline__ void sw_flush_vac_segment_entry(char* addr)
68 {
69 __asm__ __volatile__("sta %%g0, [%0] 0xc" : : "r" (addr));
70 }
71
72 extern __inline__ void hw_flush_vac_page_entry(char* addr)
73 {
74 __asm__ __volatile__("sta %%g0, [%0] 0x6" : : "r" (addr));
75 }
76
77 extern __inline__ void sw_flush_vac_page_entry(char* addr)
78 {
79 __asm__ __volatile__("sta %%g0, [%0] 0xd" : : "r" (addr));
80 }
81
82 #endif