Initial commit of dynamic recompiler.
Various CPU changes to support dynamic recompiler.
This commit is contained in:
parent
17cae8a2d7
commit
4676daade4
52 changed files with 3740 additions and 1139 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue