--- a/src/sh4/mmu.c Sat Aug 09 07:39:47 2008 +0000 +++ b/src/sh4/mmu.c Sat Aug 09 11:17:06 2008 +0000 @@ -686,8 +686,11 @@ } /* finally generate the target address */ - return (mmu_utlb[entryNo].ppn & mmu_utlb[entryNo].mask) | - (addr & (~mmu_utlb[entryNo].mask)); + sh4addr_t pma = (mmu_utlb[entryNo].ppn & mmu_utlb[entryNo].mask) | + (addr & (~mmu_utlb[entryNo].mask)); + if( pma > 0x1C000000 ) // Remap 1Cxx .. 1Fxx region to P4 + pma |= 0xE0000000; + return pma; } } @@ -746,8 +749,11 @@ } /* finally generate the target address */ - return (mmu_utlb[entryNo].ppn & mmu_utlb[entryNo].mask) | - (addr & (~mmu_utlb[entryNo].mask)); + sh4addr_t pma = (mmu_utlb[entryNo].ppn & mmu_utlb[entryNo].mask) | + (addr & (~mmu_utlb[entryNo].mask)); + if( pma > 0x1C000000 ) // Remap 1Cxx .. 1Fxx region to P4 + pma |= 0xE0000000; + return pma; } }