Initial commit of dynamic recompiler.

Various CPU changes to support dynamic recompiler.
This commit is contained in:
TomW 2014-11-05 21:24:16 +00:00
commit 4676daade4
52 changed files with 3740 additions and 1139 deletions

View file

@ -1,4 +1,4 @@
int opMOVD_l_mm_a16(uint32_t fetchdat)
static int opMOVD_l_mm_a16(uint32_t fetchdat)
{
MMX_ENTER();
@ -13,7 +13,7 @@ int opMOVD_l_mm_a16(uint32_t fetchdat)
{
uint32_t dst;
dst = readmeml(easeg, eaaddr); if (abrt) return 0;
dst = readmeml(easeg, eaaddr); if (abrt) return 1;
MM[reg].l[0] = dst;
MM[reg].l[1] = 0;
@ -21,7 +21,7 @@ int opMOVD_l_mm_a16(uint32_t fetchdat)
}
return 0;
}
int opMOVD_l_mm_a32(uint32_t fetchdat)
static int opMOVD_l_mm_a32(uint32_t fetchdat)
{
MMX_ENTER();
@ -36,7 +36,7 @@ int opMOVD_l_mm_a32(uint32_t fetchdat)
{
uint32_t dst;
dst = readmeml(easeg, eaaddr); if (abrt) return 0;
dst = readmeml(easeg, eaaddr); if (abrt) return 1;
MM[reg].l[0] = dst;
MM[reg].l[1] = 0;
@ -45,7 +45,7 @@ int opMOVD_l_mm_a32(uint32_t fetchdat)
return 0;
}
int opMOVD_mm_l_a16(uint32_t fetchdat)
static int opMOVD_mm_l_a16(uint32_t fetchdat)
{
MMX_ENTER();
@ -58,12 +58,12 @@ int opMOVD_mm_l_a16(uint32_t fetchdat)
else
{
CHECK_WRITE(ea_seg, eaaddr, eaaddr + 3);
writememl(easeg, eaaddr, MM[reg].l[0]); if (abrt) return 0;
writememl(easeg, eaaddr, MM[reg].l[0]); if (abrt) return 1;
cycles -= 2;
}
return 0;
}
int opMOVD_mm_l_a32(uint32_t fetchdat)
static int opMOVD_mm_l_a32(uint32_t fetchdat)
{
MMX_ENTER();
@ -76,13 +76,13 @@ int opMOVD_mm_l_a32(uint32_t fetchdat)
else
{
CHECK_WRITE(ea_seg, eaaddr, eaaddr + 3);
writememl(easeg, eaaddr, MM[reg].l[0]); if (abrt) return 0;
writememl(easeg, eaaddr, MM[reg].l[0]); if (abrt) return 1;
cycles -= 2;
}
return 0;
}
int opMOVQ_q_mm_a16(uint32_t fetchdat)
static int opMOVQ_q_mm_a16(uint32_t fetchdat)
{
MMX_ENTER();
@ -97,14 +97,14 @@ int opMOVQ_q_mm_a16(uint32_t fetchdat)
uint32_t dst[2];
dst[0] = readmeml(easeg, eaaddr);
dst[1] = readmeml(easeg, eaaddr + 4); if (abrt) return 0;
dst[1] = readmeml(easeg, eaaddr + 4); if (abrt) return 1;
MM[reg].l[0] = dst[0];
MM[reg].l[1] = dst[1];
cycles -= 2;
}
return 0;
}
int opMOVQ_q_mm_a32(uint32_t fetchdat)
static int opMOVQ_q_mm_a32(uint32_t fetchdat)
{
MMX_ENTER();
@ -119,7 +119,7 @@ int opMOVQ_q_mm_a32(uint32_t fetchdat)
uint32_t dst[2];
dst[0] = readmeml(easeg, eaaddr);
dst[1] = readmeml(easeg, eaaddr + 4); if (abrt) return 0;
dst[1] = readmeml(easeg, eaaddr + 4); if (abrt) return 1;
MM[reg].l[0] = dst[0];
MM[reg].l[1] = dst[1];
cycles -= 2;
@ -127,7 +127,7 @@ int opMOVQ_q_mm_a32(uint32_t fetchdat)
return 0;
}
int opMOVQ_mm_q_a16(uint32_t fetchdat)
static int opMOVQ_mm_q_a16(uint32_t fetchdat)
{
MMX_ENTER();
@ -141,12 +141,12 @@ int opMOVQ_mm_q_a16(uint32_t fetchdat)
{
CHECK_WRITE(ea_seg, eaaddr, eaaddr + 7);
writememl(easeg, eaaddr, MM[reg].l[0]);
writememl(easeg, eaaddr + 4, MM[reg].l[1]); if (abrt) return 0;
writememl(easeg, eaaddr + 4, MM[reg].l[1]); if (abrt) return 1;
cycles -= 2;
}
return 0;
}
int opMOVQ_mm_q_a32(uint32_t fetchdat)
static int opMOVQ_mm_q_a32(uint32_t fetchdat)
{
MMX_ENTER();
@ -160,7 +160,7 @@ int opMOVQ_mm_q_a32(uint32_t fetchdat)
{
CHECK_WRITE(ea_seg, eaaddr, eaaddr + 7);
writememl(easeg, eaaddr, MM[reg].l[0]);
writememl(easeg, eaaddr + 4, MM[reg].l[1]); if (abrt) return 0;
writememl(easeg, eaaddr + 4, MM[reg].l[1]); if (abrt) return 1;
cycles -= 2;
}
return 0;