On 01/20/2012 10:15 PM, Alexander Graf wrote: > @@ -4273,6 +4274,16 @@ void helper_booke206_tlbwe(void) > tlb->mas1 &= ~MAS1_IPROT; > } > > + /* check that we support the targeted size */ > + size_tlb = (tlb->mas1 & MAS1_TSIZE_MASK) >> MAS1_TSIZE_SHIFT; > + size_ps = booke206_tlbnps(env, tlbn); > + if ((tlb->mas1 & MAS1_VALID) && (tlbncfg & TLBnCFG_AVAIL) && > + !(size_ps & (1 << size_tlb))) { > + helper_raise_exception_err(POWERPC_EXCP_PROGRAM, > + POWERPC_EXCP_INVAL | > + POWERPC_EXCP_INVAL_INVAL); > + } > + > if (booke206_tlb_to_page_size(env, tlb) == TARGET_PAGE_SIZE) { > tlb_flush_page(env, tlb->mas2 & MAS2_EPN_MASK); > } else {
For tlb0 on e500 and derivatives, tsize is explicitly documented as ignored. Software may rely on this. -Scott