* Cyrix 5x86 */
| 184 | * Cyrix 5x86 |
| 185 | */ |
| 186 | static void |
| 187 | init_5x86(void) |
| 188 | { |
| 189 | register_t saveintr; |
| 190 | u_char ccr2, ccr3, ccr4, pcr0; |
| 191 | |
| 192 | saveintr = intr_disable(); |
| 193 | |
| 194 | load_cr0(rcr0() | CR0_CD | CR0_NW); |
| 195 | wbinvd(); |
| 196 | |
| 197 | (void)read_cyrix_reg(CCR3); /* dummy */ |
| 198 | |
| 199 | /* Initialize CCR2. */ |
| 200 | ccr2 = read_cyrix_reg(CCR2); |
| 201 | ccr2 |= CCR2_WB; |
| 202 | #ifdef CPU_SUSP_HLT |
| 203 | ccr2 |= CCR2_SUSP_HLT; |
| 204 | #else |
| 205 | ccr2 &= ~CCR2_SUSP_HLT; |
| 206 | #endif |
| 207 | ccr2 |= CCR2_WT1; |
| 208 | write_cyrix_reg(CCR2, ccr2); |
| 209 | |
| 210 | /* Initialize CCR4. */ |
| 211 | ccr3 = read_cyrix_reg(CCR3); |
| 212 | write_cyrix_reg(CCR3, CCR3_MAPEN0); |
| 213 | |
| 214 | ccr4 = read_cyrix_reg(CCR4); |
| 215 | ccr4 |= CCR4_DTE; |
| 216 | ccr4 |= CCR4_MEM; |
| 217 | #ifdef CPU_FASTER_5X86_FPU |
| 218 | ccr4 |= CCR4_FASTFPE; |
| 219 | #else |
| 220 | ccr4 &= ~CCR4_FASTFPE; |
| 221 | #endif |
| 222 | ccr4 &= ~CCR4_IOMASK; |
| 223 | /******************************************************************** |
| 224 | * WARNING: The "BIOS Writers Guide" mentions that I/O recovery time |
| 225 | * should be 0 for errata fix. |
| 226 | ********************************************************************/ |
| 227 | #ifdef CPU_IORT |
| 228 | ccr4 |= CPU_IORT & CCR4_IOMASK; |
| 229 | #endif |
| 230 | write_cyrix_reg(CCR4, ccr4); |
| 231 | |
| 232 | /* Initialize PCR0. */ |
| 233 | /**************************************************************** |
| 234 | * WARNING: RSTK_EN and LOOP_EN could make your system unstable. |
| 235 | * BTB_EN might make your system unstable. |
| 236 | ****************************************************************/ |
| 237 | pcr0 = read_cyrix_reg(PCR0); |
| 238 | #ifdef CPU_RSTK_EN |
| 239 | pcr0 |= PCR0_RSTK; |
| 240 | #else |
| 241 | pcr0 &= ~PCR0_RSTK; |
| 242 | #endif |
| 243 | #ifdef CPU_BTB_EN |
no test coverage detected