Move CPU segment structures into cpu_state structure.
This commit is contained in:
parent
4e7a13f452
commit
91143d3c68
13 changed files with 280 additions and 277 deletions
|
|
@ -3,7 +3,7 @@ static int opMOVSB_a16(uint32_t fetchdat)
|
|||
uint8_t temp;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
temp = readmemb(cpu_state.ea_seg->base, SI); if (cpu_state.abrt) return 1;
|
||||
writememb(es, DI, temp); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) { DI--; SI--; }
|
||||
|
|
@ -17,7 +17,7 @@ static int opMOVSB_a32(uint32_t fetchdat)
|
|||
uint8_t temp;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
temp = readmemb(cpu_state.ea_seg->base, ESI); if (cpu_state.abrt) return 1;
|
||||
writememb(es, EDI, temp); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) { EDI--; ESI--; }
|
||||
|
|
@ -32,7 +32,7 @@ static int opMOVSW_a16(uint32_t fetchdat)
|
|||
uint16_t temp;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
temp = readmemw(cpu_state.ea_seg->base, SI); if (cpu_state.abrt) return 1;
|
||||
writememw(es, DI, temp); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) { DI -= 2; SI -= 2; }
|
||||
|
|
@ -46,7 +46,7 @@ static int opMOVSW_a32(uint32_t fetchdat)
|
|||
uint16_t temp;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
temp = readmemw(cpu_state.ea_seg->base, ESI); if (cpu_state.abrt) return 1;
|
||||
writememw(es, EDI, temp); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) { EDI -= 2; ESI -= 2; }
|
||||
|
|
@ -61,7 +61,7 @@ static int opMOVSL_a16(uint32_t fetchdat)
|
|||
uint32_t temp;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
temp = readmeml(cpu_state.ea_seg->base, SI); if (cpu_state.abrt) return 1;
|
||||
writememl(es, DI, temp); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) { DI -= 4; SI -= 4; }
|
||||
|
|
@ -75,7 +75,7 @@ static int opMOVSL_a32(uint32_t fetchdat)
|
|||
uint32_t temp;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
temp = readmeml(cpu_state.ea_seg->base, ESI); if (cpu_state.abrt) return 1;
|
||||
writememl(es, EDI, temp); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) { EDI -= 4; ESI -= 4; }
|
||||
|
|
@ -91,7 +91,7 @@ static int opCMPSB_a16(uint32_t fetchdat)
|
|||
uint8_t src, dst;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
src = readmemb(cpu_state.ea_seg->base, SI);
|
||||
dst = readmemb(es, DI); if (cpu_state.abrt) return 1;
|
||||
setsub8(src, dst);
|
||||
|
|
@ -106,7 +106,7 @@ static int opCMPSB_a32(uint32_t fetchdat)
|
|||
uint8_t src, dst;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
src = readmemb(cpu_state.ea_seg->base, ESI);
|
||||
dst = readmemb(es, EDI); if (cpu_state.abrt) return 1;
|
||||
setsub8(src, dst);
|
||||
|
|
@ -122,7 +122,7 @@ static int opCMPSW_a16(uint32_t fetchdat)
|
|||
uint16_t src, dst;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
src = readmemw(cpu_state.ea_seg->base, SI);
|
||||
dst = readmemw(es, DI); if (cpu_state.abrt) return 1;
|
||||
setsub16(src, dst);
|
||||
|
|
@ -137,7 +137,7 @@ static int opCMPSW_a32(uint32_t fetchdat)
|
|||
uint16_t src, dst;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
src = readmemw(cpu_state.ea_seg->base, ESI);
|
||||
dst = readmemw(es, EDI); if (cpu_state.abrt) return 1;
|
||||
setsub16(src, dst);
|
||||
|
|
@ -153,7 +153,7 @@ static int opCMPSL_a16(uint32_t fetchdat)
|
|||
uint32_t src, dst;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
src = readmeml(cpu_state.ea_seg->base, SI);
|
||||
dst = readmeml(es, DI); if (cpu_state.abrt) return 1;
|
||||
setsub32(src, dst);
|
||||
|
|
@ -168,7 +168,7 @@ static int opCMPSL_a32(uint32_t fetchdat)
|
|||
uint32_t src, dst;
|
||||
|
||||
SEG_CHECK_READ(cpu_state.ea_seg);
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
src = readmeml(cpu_state.ea_seg->base, ESI);
|
||||
dst = readmeml(es, EDI); if (cpu_state.abrt) return 1;
|
||||
setsub32(src, dst);
|
||||
|
|
@ -181,7 +181,7 @@ static int opCMPSL_a32(uint32_t fetchdat)
|
|||
|
||||
static int opSTOSB_a16(uint32_t fetchdat)
|
||||
{
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
writememb(es, DI, AL); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) DI--;
|
||||
else DI++;
|
||||
|
|
@ -191,7 +191,7 @@ static int opSTOSB_a16(uint32_t fetchdat)
|
|||
}
|
||||
static int opSTOSB_a32(uint32_t fetchdat)
|
||||
{
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
writememb(es, EDI, AL); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) EDI--;
|
||||
else EDI++;
|
||||
|
|
@ -202,7 +202,7 @@ static int opSTOSB_a32(uint32_t fetchdat)
|
|||
|
||||
static int opSTOSW_a16(uint32_t fetchdat)
|
||||
{
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
writememw(es, DI, AX); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) DI -= 2;
|
||||
else DI += 2;
|
||||
|
|
@ -212,7 +212,7 @@ static int opSTOSW_a16(uint32_t fetchdat)
|
|||
}
|
||||
static int opSTOSW_a32(uint32_t fetchdat)
|
||||
{
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
writememw(es, EDI, AX); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) EDI -= 2;
|
||||
else EDI += 2;
|
||||
|
|
@ -223,7 +223,7 @@ static int opSTOSW_a32(uint32_t fetchdat)
|
|||
|
||||
static int opSTOSL_a16(uint32_t fetchdat)
|
||||
{
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
writememl(es, DI, EAX); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) DI -= 4;
|
||||
else DI += 4;
|
||||
|
|
@ -233,7 +233,7 @@ static int opSTOSL_a16(uint32_t fetchdat)
|
|||
}
|
||||
static int opSTOSL_a32(uint32_t fetchdat)
|
||||
{
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
writememl(es, EDI, EAX); if (cpu_state.abrt) return 1;
|
||||
if (flags & D_FLAG) EDI -= 4;
|
||||
else EDI += 4;
|
||||
|
|
@ -329,7 +329,7 @@ static int opSCASB_a16(uint32_t fetchdat)
|
|||
{
|
||||
uint8_t temp;
|
||||
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
temp = readmemb(es, DI); if (cpu_state.abrt) return 1;
|
||||
setsub8(AL, temp);
|
||||
if (flags & D_FLAG) DI--;
|
||||
|
|
@ -342,7 +342,7 @@ static int opSCASB_a32(uint32_t fetchdat)
|
|||
{
|
||||
uint8_t temp;
|
||||
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
temp = readmemb(es, EDI); if (cpu_state.abrt) return 1;
|
||||
setsub8(AL, temp);
|
||||
if (flags & D_FLAG) EDI--;
|
||||
|
|
@ -356,7 +356,7 @@ static int opSCASW_a16(uint32_t fetchdat)
|
|||
{
|
||||
uint16_t temp;
|
||||
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
temp = readmemw(es, DI); if (cpu_state.abrt) return 1;
|
||||
setsub16(AX, temp);
|
||||
if (flags & D_FLAG) DI -= 2;
|
||||
|
|
@ -369,7 +369,7 @@ static int opSCASW_a32(uint32_t fetchdat)
|
|||
{
|
||||
uint16_t temp;
|
||||
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
temp = readmemw(es, EDI); if (cpu_state.abrt) return 1;
|
||||
setsub16(AX, temp);
|
||||
if (flags & D_FLAG) EDI -= 2;
|
||||
|
|
@ -383,7 +383,7 @@ static int opSCASL_a16(uint32_t fetchdat)
|
|||
{
|
||||
uint32_t temp;
|
||||
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
temp = readmeml(es, DI); if (cpu_state.abrt) return 1;
|
||||
setsub32(EAX, temp);
|
||||
if (flags & D_FLAG) DI -= 4;
|
||||
|
|
@ -396,7 +396,7 @@ static int opSCASL_a32(uint32_t fetchdat)
|
|||
{
|
||||
uint32_t temp;
|
||||
|
||||
SEG_CHECK_READ(&_es);
|
||||
SEG_CHECK_READ(&cpu_state.seg_es);
|
||||
temp = readmeml(es, EDI); if (cpu_state.abrt) return 1;
|
||||
setsub32(EAX, temp);
|
||||
if (flags & D_FLAG) EDI -= 4;
|
||||
|
|
@ -410,7 +410,7 @@ static int opINSB_a16(uint32_t fetchdat)
|
|||
{
|
||||
uint8_t temp;
|
||||
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
check_io_perm(DX);
|
||||
temp = inb(DX);
|
||||
writememb(es, DI, temp); if (cpu_state.abrt) return 1;
|
||||
|
|
@ -424,7 +424,7 @@ static int opINSB_a32(uint32_t fetchdat)
|
|||
{
|
||||
uint8_t temp;
|
||||
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
check_io_perm(DX);
|
||||
temp = inb(DX);
|
||||
writememb(es, EDI, temp); if (cpu_state.abrt) return 1;
|
||||
|
|
@ -439,7 +439,7 @@ static int opINSW_a16(uint32_t fetchdat)
|
|||
{
|
||||
uint16_t temp;
|
||||
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
check_io_perm(DX);
|
||||
check_io_perm(DX + 1);
|
||||
temp = inw(DX);
|
||||
|
|
@ -454,7 +454,7 @@ static int opINSW_a32(uint32_t fetchdat)
|
|||
{
|
||||
uint16_t temp;
|
||||
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
check_io_perm(DX);
|
||||
check_io_perm(DX + 1);
|
||||
temp = inw(DX);
|
||||
|
|
@ -470,7 +470,7 @@ static int opINSL_a16(uint32_t fetchdat)
|
|||
{
|
||||
uint32_t temp;
|
||||
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
check_io_perm(DX);
|
||||
check_io_perm(DX + 1);
|
||||
check_io_perm(DX + 2);
|
||||
|
|
@ -487,7 +487,7 @@ static int opINSL_a32(uint32_t fetchdat)
|
|||
{
|
||||
uint32_t temp;
|
||||
|
||||
SEG_CHECK_WRITE(&_es);
|
||||
SEG_CHECK_WRITE(&cpu_state.seg_es);
|
||||
check_io_perm(DX);
|
||||
check_io_perm(DX + 1);
|
||||
check_io_perm(DX + 2);
|
||||
|
|
|
|||
Loading…
Reference in a new issue