This source file includes following definitions.
- swift_inv_insn_tag
- swift_inv_data_tag
- swift_flush_dcache
- swift_flush_icache
- swift_idflash_clear
- swift_flush_page
- swift_flush_segment
- swift_flush_region
- swift_flush_context
1
2
3
4
5
6
7 #ifndef _SPARC_SWIFT_H
8 #define _SPARC_SWIFT_H
9
10
11 #define SWIFT_ST 0x00800000
12 #define SWIFT_WP 0x00400000
13
14
15 #define SWIFT_BF 0x00200000
16 #define SWIFT_PMC 0x00180000
17 #define SWIFT_PE 0x00040000
18 #define SWIFT_PC 0x00020000
19 #define SWIFT_AP 0x00010000
20 #define SWIFT_AC 0x00008000
21 #define SWIFT_BM 0x00004000
22 #define SWIFT_RC 0x00003c00
23 #define SWIFT_IE 0x00000200
24 #define SWIFT_DE 0x00000100
25 #define SWIFT_SA 0x00000080
26 #define SWIFT_NF 0x00000002
27 #define SWIFT_EN 0x00000001
28
29 extern inline void swift_inv_insn_tag(unsigned long addr)
30 {
31 __asm__ __volatile__("sta %%g0, [%0] %1\n\t" : :
32 "r" (addr), "i" (ASI_M_TXTC_TAG));
33 }
34
35 extern inline void swift_inv_data_tag(unsigned long addr)
36 {
37 __asm__ __volatile__("sta %%g0, [%0] %1\n\t" : :
38 "r" (addr), "i" (ASI_M_DATAC_TAG));
39 }
40
41 extern inline void swift_flush_dcache(void)
42 {
43 unsigned long addr;
44
45 for(addr = 0; addr < (PAGE_SIZE << 2); addr += 16)
46 swift_inv_data_tag(addr);
47 }
48
49 extern inline void swift_flush_icache(void)
50 {
51 unsigned long addr;
52
53 for(addr = 0; addr < (PAGE_SIZE << 2); addr += 16)
54 swift_inv_insn_tag(addr);
55 }
56
57 extern inline void swift_idflash_clear(void)
58 {
59 unsigned long addr;
60
61 for(addr = 0; addr < (PAGE_SIZE << 2); addr += 16) {
62 swift_inv_insn_tag(addr);
63 swift_inv_data_tag(addr);
64 }
65 }
66
67
68 extern inline void swift_flush_page(unsigned long page)
69 {
70 __asm__ __volatile__("sta %%g0, [%0] %1\n\t" : :
71 "r" (page), "i" (ASI_M_FLUSH_PAGE));
72 }
73
74 extern inline void swift_flush_segment(unsigned long addr)
75 {
76 __asm__ __volatile__("sta %%g0, [%0] %1\n\t" : :
77 "r" (addr), "i" (ASI_M_FLUSH_SEG));
78 }
79
80 extern inline void swift_flush_region(unsigned long addr)
81 {
82 __asm__ __volatile__("sta %%g0, [%0] %1\n\t" : :
83 "r" (addr), "i" (ASI_M_FLUSH_REGION));
84 }
85
86 extern inline void swift_flush_context(void)
87 {
88 __asm__ __volatile__("sta %%g0, [%%g0] %0\n\t" : :
89 "i" (ASI_M_FLUSH_CTX));
90 }
91
92 #endif