overhaul of translation cache and sh2 literals handling

This commit is contained in:
kub 2019-04-05 21:01:03 +02:00
parent d760c90f3a
commit f133766faa
4 changed files with 525 additions and 364 deletions

View file

@ -1432,7 +1432,7 @@ static void REGPARM(3) sh2_write8_sdram(u32 a, u32 d, SH2 *sh2)
{
u32 a1 = a & 0x3ffff;
#ifdef DRC_SH2
u16 *p = sh2->p_drcblk_ram;
u8 *p = sh2->p_drcblk_ram;
int t = p[a1 >> SH2_DRCBLK_RAM_SHIFT];
if (t)
sh2_drc_wcheck_ram(a, t, sh2);
@ -1456,7 +1456,7 @@ static void REGPARM(3) sh2_write8_da(u32 a, u32 d, SH2 *sh2)
{
u32 a1 = a & 0xfff;
#ifdef DRC_SH2
u16 *p = sh2->p_drcblk_da;
u8 *p = sh2->p_drcblk_da;
int t = p[a1 >> SH2_DRCBLK_DA_SHIFT];
if (t)
sh2_drc_wcheck_da(a, t, sh2);
@ -1511,7 +1511,7 @@ static void REGPARM(3) sh2_write16_sdram(u32 a, u32 d, SH2 *sh2)
{
u32 a1 = a & 0x3fffe;
#ifdef DRC_SH2
u16 *p = sh2->p_drcblk_ram;
u8 *p = sh2->p_drcblk_ram;
int t = p[a1 >> SH2_DRCBLK_RAM_SHIFT];
if (t)
sh2_drc_wcheck_ram(a, t, sh2);
@ -1523,7 +1523,7 @@ static void REGPARM(3) sh2_write16_da(u32 a, u32 d, SH2 *sh2)
{
u32 a1 = a & 0xffe;
#ifdef DRC_SH2
u16 *p = sh2->p_drcblk_da;
u8 *p = sh2->p_drcblk_da;
int t = p[a1 >> SH2_DRCBLK_DA_SHIFT];
if (t)
sh2_drc_wcheck_da(a, t, sh2);
@ -1580,7 +1580,7 @@ static void REGPARM(3) sh2_write32_sdram(u32 a, u32 d, SH2 *sh2)
{
u32 a1 = a & 0x3fffc;
#ifdef DRC_SH2
u16 *p = sh2->p_drcblk_ram;
u8 *p = sh2->p_drcblk_ram;
int t = p[a1 >> SH2_DRCBLK_RAM_SHIFT];
if (t)
sh2_drc_wcheck_ram(a, t, sh2);
@ -1595,7 +1595,7 @@ static void REGPARM(3) sh2_write32_da(u32 a, u32 d, SH2 *sh2)
{
u32 a1 = a & 0xffc;
#ifdef DRC_SH2
u16 *p = sh2->p_drcblk_da;
u8 *p = sh2->p_drcblk_da;
int t = p[a1 >> SH2_DRCBLK_DA_SHIFT];
if (t)
sh2_drc_wcheck_da(a, t, sh2);

View file

@ -599,7 +599,8 @@ struct Pico32xMem
{
unsigned char sdram[0x40000];
#ifdef DRC_SH2
unsigned short drcblk_ram[1 << (18 - SH2_DRCBLK_RAM_SHIFT)];
unsigned char drcblk_ram[1 << (18 - SH2_DRCBLK_RAM_SHIFT)];
unsigned char drclit_ram[1 << (18 - SH2_DRCBLK_RAM_SHIFT)];
#endif
unsigned short dram[2][0x20000/2]; // AKA fb
union {
@ -607,7 +608,8 @@ struct Pico32xMem
unsigned char m68k_rom_bank[0x10000]; // M68K_BANK_SIZE
};
#ifdef DRC_SH2
unsigned short drcblk_da[2][1 << (12 - SH2_DRCBLK_DA_SHIFT)];
unsigned char drcblk_da[2][1 << (12 - SH2_DRCBLK_DA_SHIFT)];
unsigned char drclit_da[2][1 << (12 - SH2_DRCBLK_DA_SHIFT)];
#endif
union {
unsigned char b[0x800];