mmu: optimize mmu_full_SQ()
This commit is contained in:
parent
8cb86de026
commit
4540acc22e
|
@ -254,6 +254,23 @@ u32 mmu_full_lookup(u32 va, const TLB_Entry** tlb_entry_ret, u32& rv)
|
|||
}
|
||||
template u32 mmu_full_lookup<false>(u32 va, const TLB_Entry** tlb_entry_ret, u32& rv);
|
||||
|
||||
template<u32 translation_type>
|
||||
u32 mmu_full_SQ(u32 va, u32& rv)
|
||||
{
|
||||
//Address=Dest&0xFFFFFFE0;
|
||||
|
||||
const TLB_Entry *entry;
|
||||
u32 lookup = mmu_full_lookup(va, &entry, rv);
|
||||
|
||||
if (lookup != MMU_ERROR_NONE)
|
||||
return lookup;
|
||||
|
||||
rv &= ~31;//lower 5 bits are forced to 0
|
||||
|
||||
return MMU_ERROR_NONE;
|
||||
}
|
||||
template u32 mmu_full_SQ<MMU_TT_DREAD>(u32 va, u32& rv);
|
||||
|
||||
template<u32 translation_type, typename T>
|
||||
u32 mmu_data_translation(u32 va, u32& rv)
|
||||
{
|
||||
|
|
|
@ -263,7 +263,7 @@ void mmu_raise_exception(u32 mmu_error, u32 address, u32 am)
|
|||
|
||||
void DoMMUException(u32 address, u32 mmu_error, u32 access_type)
|
||||
{
|
||||
printf_mmu("DoMMUException -> pc = 0x%X : ", next_pc);
|
||||
printf_mmu("DoMMUException -> pc = 0x%X : %d ", next_pc, access_type);
|
||||
CCN_TEA = address;
|
||||
CCN_PTEH.VPN = address >> 10;
|
||||
|
||||
|
@ -431,6 +431,7 @@ u32 mmu_QACR_SQ(u32 va)
|
|||
return QACR + va;
|
||||
}
|
||||
|
||||
#ifndef FAST_MMU
|
||||
template<u32 translation_type>
|
||||
u32 mmu_full_SQ(u32 va, u32& rv)
|
||||
{
|
||||
|
@ -476,9 +477,8 @@ u32 mmu_full_SQ(u32 va, u32& rv)
|
|||
}
|
||||
return MMU_ERROR_NONE;
|
||||
}
|
||||
template u32 mmu_full_SQ<MMU_TT_DWRITE>(u32 va, u32& rv);
|
||||
template u32 mmu_full_SQ<MMU_TT_DREAD>(u32 va, u32& rv);
|
||||
|
||||
#ifndef FAST_MMU
|
||||
template<u32 translation_type, typename T>
|
||||
u32 mmu_data_translation(u32 va, u32& rv)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue