Fixed two small bugs in 386_common.h, NT 3.51 Service Pack 5 now works again.
This commit is contained in:
@@ -57,7 +57,7 @@ extern uint16_t ea_rseg;
|
|||||||
#define CHECK_READ(chseg, low, high) \
|
#define CHECK_READ(chseg, low, high) \
|
||||||
if ((low < (chseg)->limit_low) || (high > (chseg)->limit_high) || ((msw & 1) && !(eflags & VM_FLAG) && (((chseg)->access & 10) == 8))) \
|
if ((low < (chseg)->limit_low) || (high > (chseg)->limit_high) || ((msw & 1) && !(eflags & VM_FLAG) && (((chseg)->access & 10) == 8))) \
|
||||||
{ \
|
{ \
|
||||||
x86gpf("Limit check", 0); \
|
x86gpf("Limit check (READ)", 0); \
|
||||||
return 1; \
|
return 1; \
|
||||||
} \
|
} \
|
||||||
if (msw&1 && !(eflags&VM_FLAG) && !((chseg)->access & 0x80)) \
|
if (msw&1 && !(eflags&VM_FLAG) && !((chseg)->access & 0x80)) \
|
||||||
@@ -72,7 +72,7 @@ extern uint16_t ea_rseg;
|
|||||||
#define CHECK_WRITE(chseg, low, high) \
|
#define CHECK_WRITE(chseg, low, high) \
|
||||||
if ((low < (chseg)->limit_low) || (high > (chseg)->limit_high) || !((chseg)->access & 2) || ((msw & 1) && !(eflags & VM_FLAG) && ((chseg)->access & 8))) \
|
if ((low < (chseg)->limit_low) || (high > (chseg)->limit_high) || !((chseg)->access & 2) || ((msw & 1) && !(eflags & VM_FLAG) && ((chseg)->access & 8))) \
|
||||||
{ \
|
{ \
|
||||||
x86gpf("Limit check", 0); \
|
x86gpf("Limit check (WRITE)", 0); \
|
||||||
return 1; \
|
return 1; \
|
||||||
} \
|
} \
|
||||||
if (msw&1 && !(eflags&VM_FLAG) && !((chseg)->access & 0x80)) \
|
if (msw&1 && !(eflags&VM_FLAG) && !((chseg)->access & 0x80)) \
|
||||||
@@ -87,7 +87,7 @@ extern uint16_t ea_rseg;
|
|||||||
#define CHECK_WRITE_REP(chseg, low, high) \
|
#define CHECK_WRITE_REP(chseg, low, high) \
|
||||||
if ((low < (chseg)->limit_low) || (high > (chseg)->limit_high)) \
|
if ((low < (chseg)->limit_low) || (high > (chseg)->limit_high)) \
|
||||||
{ \
|
{ \
|
||||||
x86gpf("Limit check", 0); \
|
x86gpf("Limit check (WRITE REP)", 0); \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
if (msw&1 && !(eflags&VM_FLAG) && !((chseg)->access & 0x80)) \
|
if (msw&1 && !(eflags&VM_FLAG) && !((chseg)->access & 0x80)) \
|
||||||
@@ -117,7 +117,7 @@ static __inline uint8_t fastreadb(uint32_t a)
|
|||||||
return *((uint8_t *)&pccache2[a]);
|
return *((uint8_t *)&pccache2[a]);
|
||||||
t = getpccache(a);
|
t = getpccache(a);
|
||||||
if (cpu_state.abrt)
|
if (cpu_state.abrt)
|
||||||
return 0xFF;
|
return 0;
|
||||||
pccache = a >> 12;
|
pccache = a >> 12;
|
||||||
pccache2 = t;
|
pccache2 = t;
|
||||||
return *((uint8_t *)&pccache2[a]);
|
return *((uint8_t *)&pccache2[a]);
|
||||||
@@ -136,7 +136,7 @@ static __inline uint16_t fastreadw(uint32_t a)
|
|||||||
if ((a>>12)==pccache) return *((uint16_t *)&pccache2[a]);
|
if ((a>>12)==pccache) return *((uint16_t *)&pccache2[a]);
|
||||||
t = getpccache(a);
|
t = getpccache(a);
|
||||||
if (cpu_state.abrt)
|
if (cpu_state.abrt)
|
||||||
return 0xff;
|
return 0;
|
||||||
|
|
||||||
pccache = a >> 12;
|
pccache = a >> 12;
|
||||||
pccache2 = t;
|
pccache2 = t;
|
||||||
|
|||||||
Reference in New Issue
Block a user