nulldc-360/nullDC/dc/sh4/ccn.h
2011-10-15 12:33:03 +02:00

180 lines
No EOL
2.2 KiB
C

#pragma once
#include "types.h"
//Init/Res/Term
void ccn_Init();
void ccn_Reset(bool Manual);
void ccn_Term();
union CCN_PTEH_type
{
struct
{
#ifdef XENON
u32 VPN:22; //10-31 VPN
u32 res:2; //8,9 reserved
u32 ASID:8; //0-7 ASID
#else
u32 ASID:8; //0-7 ASID
u32 res:2; //8,9 reserved
u32 VPN:22; //10-31 VPN
#endif
};
u32 reg_data;
};
union CCN_PTEL_type
{
struct
{
#ifdef XENON
u32 res_1:3;
u32 PPN:19;//PPN 10-28
u32 res_0:1;
u32 V:1;
u32 SZ1:1;
u32 PR :2;
u32 SZ0:1;
u32 C :1;
u32 D :1;
u32 SH:1;
u32 WT:1;
#else
u32 WT:1;
u32 SH:1;
u32 D :1;
u32 C :1;
u32 SZ0:1;
u32 PR :2;
u32 SZ1:1;
u32 V:1;
u32 res_0:1;
u32 PPN:19;//PPN 10-28
u32 res_1:3;
#endif
};
u32 reg_data;
};
union CCN_MMUCR_type
{
struct
{
#ifdef XENON
u32 LRUI:6;
u32 URB:6;
u32 URC:6;
u32 SQMD:1;
u32 SV:1;
u32 res_2:5;
u32 TI:1;
u32 res:1;
u32 AT:1;
#else
u32 AT:1;
u32 res:1;
u32 TI:1;
u32 res_2:5;
u32 SV:1;
u32 SQMD:1;
u32 URC:6;
u32 URB:6;
u32 LRUI:6;
#endif
};
u32 reg_data;
};
union CCN_PTEA_type
{
struct
{
#ifdef XENON
u32 res:28;
u32 TC:1;
u32 SA:3;
#else
u32 SA:3;
u32 TC:1;
u32 res:28;
#endif
};
u32 reg_data;
};
union CCN_CCR_type
{
struct
{
#ifdef XENON
u32 res_4:16;
u32 IIX:1;
u32 res_3:3;
u32 ICI:1;
u32 res_2:2;
u32 ICE:1;
u32 OIX:1;
u32 res_1:1;
u32 ORA:1;
u32 res:1;
u32 OCI:1;
u32 CB:1;
u32 WT:1;
u32 OCE:1;
#else
u32 OCE:1;
u32 WT:1;
u32 CB:1;
u32 OCI:1;
u32 res:1;
u32 ORA:1;
u32 res_1:1;
u32 OIX:1;
u32 ICE:1;
u32 res_2:2;
u32 ICI:1;
u32 res_3:3;
u32 IIX:1;
u32 res_4:16;
#endif
};
u32 reg_data;
};
union CCN_QACR_type
{
struct
{
#ifdef XENON
u32 res_1:27;
u32 Area:3;
u32 res:2;
#else
u32 res:2;
u32 Area:3;
u32 res_1:27;
#endif
};
u32 reg_data;
};
//Types
extern CCN_PTEH_type CCN_PTEH;
extern CCN_PTEL_type CCN_PTEL;
extern u32 CCN_TTB;
extern u32 CCN_TEA;
extern CCN_MMUCR_type CCN_MMUCR;
extern u8 CCN_BASRA;
extern u8 CCN_BASRB;
extern CCN_CCR_type CCN_CCR;
extern u32 CCN_TRA;
extern u32 CCN_EXPEVT;
extern u32 CCN_INTEVT;
extern CCN_PTEA_type CCN_PTEA;
extern CCN_QACR_type CCN_QACR[2];
extern u32 CCN_QACR_TR[2];