mirror of
https://github.com/gligli/nulldc-360.git
synced 2025-04-02 11:11:56 -04:00
63 lines
No EOL
1.7 KiB
C
63 lines
No EOL
1.7 KiB
C
#pragma once
|
|
#include "types.h"
|
|
#include "dc/sh4/ccn.h"
|
|
|
|
struct TLB_Entry
|
|
{
|
|
CCN_PTEH_type Address;
|
|
CCN_PTEL_type Data;
|
|
};
|
|
|
|
extern TLB_Entry UTLB[64];
|
|
extern TLB_Entry ITLB[4];
|
|
|
|
//sync mem mapping to mmu , suspend compiled blocks if needed.entry is a UTLB entry # , -1 is for full sync
|
|
bool UTLB_SyncMap(u32 entry);
|
|
void UTLB_SyncUnmap(u32 entry);
|
|
//sync mem mapping to mmu , suspend compiled blocks if needed.entry is a ITLB entry # , -1 is for full sync
|
|
void ITLB_Sync(u32 entry);
|
|
|
|
|
|
//Do a full lookup on the UTLB entry's
|
|
//Return Values
|
|
//Translation was sucessfull , rv contains return
|
|
#define MMU_ERROR_NONE 0
|
|
//TLB miss
|
|
#define MMU_ERROR_TLB_MISS 1
|
|
//TLB Multyhit
|
|
#define MMU_ERROR_TLB_MHIT 2
|
|
//Mem is read/write protected (depends on translation type)
|
|
#define MMU_ERROR_PROTECTED 3
|
|
//Mem is write protected , firstwrite
|
|
#define MMU_ERROR_FIRSTWRITE 4
|
|
//data-Opcode read/write missasligned
|
|
#define MMU_ERROR_BADADDR 5
|
|
//Can't Execute
|
|
#define MMU_ERROR_EXECPROT 6
|
|
|
|
//Translation Types
|
|
//Opcode read
|
|
#define MMU_TT_IREAD 0
|
|
//Data write
|
|
#define MMU_TT_DWRITE 1
|
|
//Data write
|
|
#define MMU_TT_DREAD 2
|
|
//Do an mmu lookup for va , returns translation status , if MMU_ERROR_NONE , rv is set to translated index
|
|
|
|
extern u32 mmu_error_TT;
|
|
|
|
void MMU_Init();
|
|
void MMU_Reset(bool Manual);
|
|
void MMU_Term();
|
|
|
|
u8 __fastcall mmu_ReadMem8(u32 addr);
|
|
u16 __fastcall mmu_ReadMem16(u32 addr);
|
|
u16 __fastcall mmu_IReadMem16(u32 addr);
|
|
u32 __fastcall mmu_ReadMem32(u32 addr);
|
|
u64 __fastcall mmu_ReadMem64(u32 addr);
|
|
|
|
void __fastcall mmu_WriteMem8(u32 addr,u8 data);
|
|
void __fastcall mmu_WriteMem16(u32 addr,u16 data);
|
|
void __fastcall mmu_WriteMem32(u32 addr,u32 data);
|
|
void __fastcall mmu_WriteMem64(u32 addr,u64 data);
|
|
bool __fastcall mmu_TranslateSQW(u32& addr); |