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 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>
|
template<u32 translation_type, typename T>
|
||||||
u32 mmu_data_translation(u32 va, u32& rv)
|
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)
|
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_TEA = address;
|
||||||
CCN_PTEH.VPN = address >> 10;
|
CCN_PTEH.VPN = address >> 10;
|
||||||
|
|
||||||
|
@ -431,6 +431,7 @@ u32 mmu_QACR_SQ(u32 va)
|
||||||
return QACR + va;
|
return QACR + va;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef FAST_MMU
|
||||||
template<u32 translation_type>
|
template<u32 translation_type>
|
||||||
u32 mmu_full_SQ(u32 va, u32& rv)
|
u32 mmu_full_SQ(u32 va, u32& rv)
|
||||||
{
|
{
|
||||||
|
@ -476,9 +477,8 @@ u32 mmu_full_SQ(u32 va, u32& rv)
|
||||||
}
|
}
|
||||||
return MMU_ERROR_NONE;
|
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>
|
template<u32 translation_type, typename T>
|
||||||
u32 mmu_data_translation(u32 va, u32& rv)
|
u32 mmu_data_translation(u32 va, u32& rv)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue