/* Put the paca pointer into r13 and SPRG_PACA */ void setup_paca(struct paca_struct *new_paca) { /* Setup r13 */ local_paca = new_paca; #ifdef CONFIG_PPC_BOOK3E /* On Book3E, initialize the TLB miss exception frames */ mtspr(SPRN_SPRG_TLB_EXFRAME, local_paca->extlb); #else /* In HV mode, we setup both HPACA and PACA to avoid problems * if we do a GET_PACA() before the feature fixups have been * applied */ if (early_cpu_has_feature(CPU_FTR_HVMODE)) mtspr(SPRN_SPRG_HPACA, local_paca); #endif mtspr(SPRN_SPRG_PACA, local_paca); }
void radix__tlbiel_all(unsigned int action) { unsigned int is; switch (action) { case TLB_INVAL_SCOPE_GLOBAL: is = 3; break; case TLB_INVAL_SCOPE_LPID: is = 2; break; default: BUG(); } if (early_cpu_has_feature(CPU_FTR_ARCH_300)) tlbiel_all_isa300(POWER9_TLB_SETS_RADIX, is); else WARN(1, "%s called on pre-POWER9 CPU\n", __func__); asm volatile(PPC_INVALIDATE_ERAT "; isync" : : :"memory"); }
void __init record_spr_defaults(void) { if (early_cpu_has_feature(CPU_FTR_DSCR)) spr_default_dscr = mfspr(SPRN_DSCR); }