mtspr
mtspr(SPR_TCR, 0);
mtspr(SPR_TCR, 0);
mtspr(SPR_MAS4, MAS4_TSIZED_4KB | MAS4_MD);
mtspr(SPR_HID0, hid0);
mtspr(SPR_HID0,
mtspr(SPR_TCR, TCR_WIE | mfspr(SPR_TCR));
mtspr(SPR_SCR, mfspr(SPR_SCR) | SPR_SCR_WAKE(cpu_num));
mtspr(IBM750CL_SPR_WPAR, base);
mtspr(IBM750CL_SPR_HID2, value);
mtspr(SPR_HID0, value | 0x8);
mtspr(SPR_HID0, value);
mtspr(SPR_HID0, hid0 & ~HID0_SGE);
mtspr(SPR_HID0, hid0);
mtspr(SPR_SCR, mfspr(SPR_SCR) | scr_mask);
mtspr(IBM750CL_SPR_HID4, spr);
mtspr(SPR_IBMESPRESSO_HID5, spr | HID5_H5A | HID5_PIRE);
mtspr(SPR_SCR, (spr & ~0x40000000) | 0x80000000);
mtspr(SPR_CAR, spr | 0xfc100000);
mtspr(SPR_BCR, 0x08000000);
mtspr(SPR_DEC, ticks_per_intr);
mtspr(SPR_SCR, spr & ~SPR_SCR_IPI_PEND(cpu_num));
mtspr(SPR_TCR, 0); /* disable all timers */
mtspr(SPR_TCR, 0); /* disable all timers */
mtspr(SPR_IAC2, iac2);
mtspr(SPR_IAC1, tf->tf_srr0 + 4);
mtspr(SPR_DBCR1, dbcr1);
mtspr(SPR_DBCR0, dbcr0);
mtspr(SPR_TSR, TSR_ENW);
mtspr(SPR_TSR, TSR_ENW);
mtspr(SPR_TCR, tcr);
mtspr(SPR_TSR, TSR_ENW);
mtspr(SPR_TCR, tcr);
mtspr(SPR_TSR, TSR_ENW|TSR_WIS);
mtspr(SPR_MAS4, MAS4_TSIZED_4KB | MAS4_MD);
mtspr(SPR_MAS0, mas0 | MAS0_ESEL_MAKE(slot >> esel_shift));
mtspr(SPR_MAS2, slot << PAGE_SHIFT);
mtspr(SPR_MAS0, saved_mas0);
mtspr(SPR_MAS0, hwtlb.hwtlb_mas0);
mtspr(SPR_MAS1, hwtlb.hwtlb_mas1);
mtspr(SPR_MAS2, hwtlb.hwtlb_mas2);
mtspr(SPR_MAS3, hwtlb.hwtlb_mas3);
mtspr(SPR_MAS0, saved_mas0);
mtspr(SPR_PID0, asid);
mtspr(SPR_MMUCSR0, MMUCSR0_TLB0_FI);
mtspr(SPR_MAS0, MAS0_ESEL_MAKE(assoc) | MAS0_TLBSEL_TLB0);
mtspr(SPR_MAS2, epn);
mtspr(SPR_MAS1, mas1 ^ MAS1_V);
mtspr(SPR_MAS0, MAS0_ESEL_MAKE(assoc) | MAS0_TLBSEL_TLB0);
mtspr(SPR_MAS2, epn);
mtspr(SPR_MAS1, mas1 ^ MAS1_V);
mtspr(SPR_MAS0, MAS0_ESEL_MAKE(assoc) | MAS0_TLBSEL_TLB0);
mtspr(SPR_MAS2, epn);
mtspr(SPR_MAS6, asid ? __SHIFTIN(asid, MAS6_SPID0) | MAS6_SAS : 0);
mtspr(SPR_MAS1, mas1);
mtspr(SPR_MAS2, hwtlb.hwtlb_mas2);
mtspr(SPR_MAS3, hwtlb.hwtlb_mas3);
mtspr(SPR_MAS0, hwtlb.hwtlb_mas0);
mtspr(SPR_MAS2, epn);
mtspr(SPR_MAS0, saved_mas0);
mtspr(SPR_MAS0, hwtlb.hwtlb_mas0);
mtspr(SPR_MAS2, epn);
mtspr(SPR_MAS0, saved_mas0);
mtspr(SPR_DBSR, tf->tf_esr);
mtspr(SPR_DBCR1, 0);
mtspr(SPR_DBCR0, 0);
mtspr(SPR_TSR, TSR_FIS); /* Clear TSR[FIS] */
mtspr(SPR_TSR, TSR_PIS); /* Clear TSR[PIS] */
mtspr(SPR_DECAR, ticks_per_intr);
mtspr(SPR_DEC, ticks_per_intr);
mtspr(SPR_TCR, TCR_DIE | TCR_ARE | TCR_FIE | TCR_PERIOD);
mtspr(SPR_PIT, ticks_per_intr);
mtspr(SPR_TCR, TCR_PIE | TCR_ARE | TCR_FIE | TCR_PERIOD);
mtspr(SPR_TSR, TSR_WRS_MASK);
mtspr(SPR_TSR, TSR_ENW | TSR_WIS);
mtspr(SPR_TSR, tsr);
mtspr(SPR_TSR, TSR_ENW | TSR_WIS);
mtspr(SPR_TSR, tsr);
mtspr(SPR_TCR, tcr);
mtspr(SPR_TCR, tcr);
mtspr(SPR_IVPR, 0); /* Exception vector base */
mtspr(SPR_IVOR0, EXC_CII); /* critical input */
mtspr(SPR_IVOR1, EXC_MCHK); /* machine check */
mtspr(SPR_IVOR2, EXC_DSI); /* data storage */
mtspr(SPR_IVOR3, EXC_ISI); /* instruction storage */
mtspr(SPR_IVOR4, EXC_EXI); /* external input */
mtspr(SPR_IVOR5, EXC_ALI); /* alignment */
mtspr(SPR_IVOR6, EXC_PGM); /* program */
mtspr(SPR_IVOR7, EXC_FPU); /* FP unavailable */
mtspr(SPR_IVOR8, EXC_SC); /* system call */
mtspr(SPR_IVOR9, EXC_FPA); /* AP unavailable (default trap) */
mtspr(SPR_IVOR10, EXC_PIT); /* decrementer -> PIT stub */
mtspr(SPR_IVOR11, EXC_FIT); /* fixed interval timer */
mtspr(SPR_IVOR12, EXC_WDOG); /* watchdog */
mtspr(SPR_IVOR13, EXC_DTMISS); /* data TLB error */
mtspr(SPR_IVOR14, EXC_ITMISS); /* instruction TLB error */
mtspr(SPR_IVOR15, EXC_DEBUG); /* debug */
mtspr(SPR_EVPR, 0); /* Set Exception vector base */
mtspr(SPR_DBCR0, mfspr(SPR_DBCR0) & ~DBCR0_TDE);
mtspr(SPR_MCSR, mcsr);
mtspr(SPR_SCOMC, address | SCOMC_READ);
mtspr(SPR_SCOMD, data);
mtspr(SPR_SCOMC, address | SCOMC_WRITE);
mtspr(SPR_L2CR, l2cr & ~L2CR_L2E);
mtspr(SPR_L2CR, l2cr | L2CR_L2I);
mtspr(SPR_L2CR, l2cr | L2CR_L2I);
mtspr(SPR_L2CR, l2cr);
mtspr(SPR_L3CR, l3cr);
mtspr(SPR_L3CR, l3cr);
mtspr(SPR_L3CR, l3cr);
mtspr(SPR_L3CR, l3cr|L3CR_L3I);
mtspr(SPR_L3CR, l3cr);
mtspr(SPR_L3CR, l3cr);
mtspr(SPR_MMCR0, MMCR0_FC);
mtspr(SPR_PMC1, 0);
mtspr(SPR_MMCR0, MMCR0_PMC1SEL(PMCN_CYCLES));
mtspr(SPR_MMCR0, MMCR0_FC);
mtspr(SPR_HID1, hid1);
mtspr(SPR_THRM1, SPR_THRM_VALID);
mtspr(SPR_THRM2, 0);
mtspr(SPR_THRM3, SPR_THRM_TIMER(therm_delay) | SPR_THRM_ENABLE);
mtspr(SPR_THRM1,
mtspr(SPR_PIR, h->hatch_pir);
mtspr(SPR_HID0, h->hatch_hid0);
mtspr(SPR_ASR, h->hatch_asr);
mtspr(SPR_HID0, hid0);
mtspr(SPR_HID1, hid1);
mtspr(SPR_IBMESPRESSO_HID4, spr | HID4_H4A | HID4_SBE);
mtspr(SPR_HID0, spr | HID0_ABE);
mtspr(SPR_PIR, id);
mtspr(SPR_HID0, hid0);
mtspr(SPR_IBMESPRESSO_HID2, 0);
mtspr(SPR_IBMESPRESSO_HID4, spr);
mtspr(SPR_IBMESPRESSO_HID5, spr | 0x67fdc000);
mtspr(SPR_DBAT##n##L, (batl)); \
mtspr(SPR_DBAT##n##U, (batu)); \
mtspr(SPR_IBAT##n##L, (batl)); \
mtspr(SPR_IBAT##n##U, (batu)); \
mtspr(SPR_DEC, ticks_per_intr);