# HG changeset patch # User nkeynes # Date 1218267587 0 # Node ID 1ca418e6ed5d488a56d4a392e3383e3a79fd4653 # Parent 6ef1ce4a9dbc2aa52e37e645ef7faa63faf9a45f Fix ITLB lookup ASID behaviour (was somewhat back-to-front) --- a/src/sh4/mmu.c Fri Aug 08 00:17:57 2008 +0000 +++ b/src/sh4/mmu.c Sat Aug 09 07:39:47 2008 +0000 @@ -807,7 +807,10 @@ return TRUE; } - entryNo = mmu_itlb_lookup_vpn( addr ); + if( (mmucr & MMUCR_SV) == 0 ) + entryNo = mmu_itlb_lookup_vpn_asid( addr ); + else + entryNo = mmu_itlb_lookup_vpn( addr ); } else { if( addr & 0x80000000 ) { MMU_READ_ADDR_ERROR(); @@ -820,11 +823,8 @@ return TRUE; } - if( mmucr & MMUCR_SV ) { - entryNo = mmu_itlb_lookup_vpn( addr ); - } else { - entryNo = mmu_itlb_lookup_vpn_asid( addr ); - } + entryNo = mmu_itlb_lookup_vpn_asid( addr ); + if( entryNo != -1 && (mmu_itlb[entryNo].flags & TLB_USERMODE) == 0 ) { MMU_TLB_READ_PROT_ERROR(addr); return FALSE;