MCPcopy Create free account
hub / github.com/F-Stack/f-stack / init_6x86MX

Function init_6x86MX

freebsd/i386/i386/initcpu.c:429–486  ·  view source on GitHub ↗

* Cyrix 6x86MX (code-named M2) * * XXX - What should I do here? Please let me know. */

Source from the content-addressed store, hash-verified

427 * XXX - What should I do here? Please let me know.
428 */
429static void
430init_6x86MX(void)
431{
432 register_t saveintr;
433 u_char ccr3, ccr4;
434
435 saveintr = intr_disable();
436
437 load_cr0(rcr0() | CR0_CD | CR0_NW);
438 wbinvd();
439
440 /* Initialize CCR0. */
441 write_cyrix_reg(CCR0, read_cyrix_reg(CCR0) | CCR0_NC1);
442
443 /* Initialize CCR1. */
444#ifdef CPU_CYRIX_NO_LOCK
445 write_cyrix_reg(CCR1, read_cyrix_reg(CCR1) | CCR1_NO_LOCK);
446#else
447 write_cyrix_reg(CCR1, read_cyrix_reg(CCR1) & ~CCR1_NO_LOCK);
448#endif
449
450 /* Initialize CCR2. */
451#ifdef CPU_SUSP_HLT
452 write_cyrix_reg(CCR2, read_cyrix_reg(CCR2) | CCR2_SUSP_HLT);
453#else
454 write_cyrix_reg(CCR2, read_cyrix_reg(CCR2) & ~CCR2_SUSP_HLT);
455#endif
456
457 ccr3 = read_cyrix_reg(CCR3);
458 write_cyrix_reg(CCR3, CCR3_MAPEN0);
459
460 /* Initialize CCR4. */
461 ccr4 = read_cyrix_reg(CCR4);
462 ccr4 &= ~CCR4_IOMASK;
463#ifdef CPU_IORT
464 write_cyrix_reg(CCR4, ccr4 | (CPU_IORT & CCR4_IOMASK));
465#else
466 write_cyrix_reg(CCR4, ccr4 | 7);
467#endif
468
469 /* Initialize CCR5. */
470#ifdef CPU_WT_ALLOC
471 write_cyrix_reg(CCR5, read_cyrix_reg(CCR5) | CCR5_WT_ALLOC);
472#endif
473
474 /* Restore CCR3. */
475 write_cyrix_reg(CCR3, ccr3);
476
477 /* Unlock NW bit in CR0. */
478 write_cyrix_reg(CCR2, read_cyrix_reg(CCR2) & ~CCR2_LOCK_NW);
479
480 load_cr0(rcr0() & ~(CR0_CD | CR0_NW)); /* CD = 0 and NW = 0 */
481
482 /* Lock NW bit in CR0. */
483 write_cyrix_reg(CCR2, read_cyrix_reg(CCR2) | CCR2_LOCK_NW);
484
485 intr_restore(saveintr);
486}

Callers 1

initializecpuFunction · 0.85

Calls 7

write_cyrix_regFunction · 0.85
read_cyrix_regFunction · 0.85
intr_disableFunction · 0.50
load_cr0Function · 0.50
rcr0Function · 0.50
wbinvdFunction · 0.50
intr_restoreFunction · 0.50

Tested by

no test coverage detected