4 #ifndef _POWERPC_OEA_BAT_H_
5 #define _POWERPC_OEA_BAT_H_
84 #define BAT_RPN (~0x1ffff)
85 #define BAT_XPN 0x00000e00
86 #define BAT_W 0x00000040
87 #define BAT_I 0x00000020
88 #define BAT_M 0x00000010
89 #define BAT_G 0x00000008
90 #define BAT_X 0x00000004
97 #define BAT_PP 0x00000003
98 #define BAT_PP_NONE 0x00000000
99 #define BAT_PP_RO_S 0x00000001
100 #define BAT_PP_RW 0x00000002
101 #define BAT_PP_RO 0x00000003
104 #define BAT_EPI (~0x1ffffL)
105 #define BAT_BL 0x00001ffc
106 #define BAT_Vs 0x00000002
107 #define BAT_Vu 0x00000001
109 #define BAT_XBL 0x0001e000
110 #define BAT_XBL_512M 0x00002000
111 #define BAT_XBL_1G 0x00006000
112 #define BAT_XBL_2G 0x0000e000
113 #define BAT_XBL_4G 0x0001e000
115 #define BAT_V (BAT_Vs|BAT_Vu)
118 #define BAT_BL_128K 0x00000000
119 #define BAT_BL_256K 0x00000004
120 #define BAT_BL_512K 0x0000000c
121 #define BAT_BL_1M 0x0000001c
122 #define BAT_BL_2M 0x0000003c
123 #define BAT_BL_4M 0x0000007c
124 #define BAT_BL_8M 0x000000fc
125 #define BAT_BL_16M 0x000001fc
126 #define BAT_BL_32M 0x000003fc
127 #define BAT_BL_64M 0x000007fc
128 #define BAT_BL_128M 0x00000ffc
129 #define BAT_BL_256M 0x00001ffc
131 #define BATU(va, len, v) \
132 (((va) & BAT_EPI) | ((len) & BAT_BL) | ((v) & BAT_V))
134 #define BATL(pa, wimg, pp) \
135 (((pa) & BAT_RPN) | (wimg) | (pp))
137 #define BAT_VA_MATCH_P(batu,va) \
138 (((~(((batu)&BAT_BL)<<15))&(va)&BAT_EPI)==((batu)&BAT_EPI))
140 #define BAT_PA_MATCH_P(batu,batl,pa) \
141 (((~(((batu)&BAT_BL)<<15))&(pa)&BAT_RPN)==((batl)&BAT_RPN))
143 #define BAT_VALID_P(batu, msr) \
144 (((msr)&PSL_PR)?(((batu)&BAT_Vu)==BAT_Vu):(((batu)&BAT_Vs)==BAT_Vs))
147 #define BAT601_PBN 0xfffe0000
148 #define BAT601_V 0x00000040
149 #define BAT601_BSM 0x0000003f
152 #define BAT601_BLPI 0xfffe0000
153 #define BAT601_W 0x00000040
154 #define BAT601_I 0x00000020
155 #define BAT601_M 0x00000010
156 #define BAT601_Ks 0x00000008
157 #define BAT601_Ku 0x00000004
174 #define BAT601_PP 0x00000003
175 #define BAT601_PP_NONE 0x00000000
176 #define BAT601_PP_RO_S 0x00000001
177 #define BAT601_PP_RW 0x00000002
178 #define BAT601_PP_RO 0x00000003
181 #define BAT601_BSM_128K 0x00000000
182 #define BAT601_BSM_256K 0x00000001
183 #define BAT601_BSM_512K 0x00000003
184 #define BAT601_BSM_1M 0x00000007
185 #define BAT601_BSM_2M 0x0000000f
186 #define BAT601_BSM_4M 0x0000001f
187 #define BAT601_BSM_8M 0x0000003f
189 #define BATU601(va, wim, key, pp) \
190 (((va) & BAT601_BLPI) | (wim) | (key) | (pp))
192 #define BATL601(pa, size, v) \
193 (((pa) & BAT601_PBN) | (v) | (size))
195 #define BAT601_VA_MATCH_P(batu, batl, va) \
196 (((~(((batl)&BAT601_BSM)<<17))&(va)&BAT601_BLPI)==((batu)&BAT601_BLPI))
198 #define BAT601_VALID_P(batl) \
203 void oea_batinit(paddr_t, ...);
204 void oea_iobat_add(paddr_t, register_t);
205 void oea_iobat_remove(paddr_t);
206 extern struct bat battable[];