1
0
Fork 0

AC flag toggling depends on emulated CPU type (486+)

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3697
This commit is contained in:
Sebastian Strohhäcker 2011-04-19 20:38:42 +00:00
parent 617fd7006d
commit 81d9c369aa
2 changed files with 6 additions and 5 deletions

View file

@ -41,7 +41,7 @@
#define FLAG_ID 0x00200000
#define FMASK_TEST (FLAG_CF | FLAG_PF | FLAG_AF | FLAG_ZF | FLAG_SF | FLAG_OF)
#define FMASK_NORMAL (FMASK_TEST | FLAG_DF | FLAG_TF | FLAG_IF | FLAG_AC )
#define FMASK_NORMAL (FMASK_TEST | FLAG_DF | FLAG_TF | FLAG_IF )
#define FMASK_ALL (FMASK_NORMAL | FLAG_IOPL | FLAG_NT)
#define SETFLAGBIT(TYPE,TEST) if (TEST) reg_flags|=FLAG_ ## TYPE; else reg_flags&=~FLAG_ ## TYPE

View file

@ -64,7 +64,7 @@ Bitu CPU_AutoDetermineMode = 0;
Bitu CPU_ArchitectureType = CPU_ARCHTYPE_MIXED;
Bitu CPU_flag_id_toggle=0;
Bitu CPU_extflags_toggle=0; // ID and AC flags may be toggled depending on emulated CPU architecture
Bitu CPU_PrefetchQueueSize=0;
@ -170,7 +170,7 @@ PhysPt SelBase(Bitu sel) {
void CPU_SetFlags(Bitu word,Bitu mask) {
mask|=CPU_flag_id_toggle; // ID-flag can be toggled on cpuid-supporting CPUs
mask|=CPU_extflags_toggle; // ID-flag and AC-flag can be toggled on CPUID-supporting CPUs
reg_flags=(reg_flags & ~mask)|(word & mask)|2;
cpu.direction=1-((reg_flags & FLAG_DF) >> 9);
}
@ -2389,8 +2389,9 @@ public:
CPU_ArchitectureType = CPU_ARCHTYPE_PENTIUMSLOW;
}
if (CPU_ArchitectureType>=CPU_ARCHTYPE_486NEWSLOW) CPU_flag_id_toggle=FLAG_ID;
else CPU_flag_id_toggle=0;
if (CPU_ArchitectureType>=CPU_ARCHTYPE_486NEWSLOW) CPU_extflags_toggle=(FLAG_ID|FLAG_AC);
else if (CPU_ArchitectureType>=CPU_ARCHTYPE_486OLDSLOW) CPU_extflags_toggle=(FLAG_AC);
else CPU_extflags_toggle=0;
if(CPU_CycleMax <= 0) CPU_CycleMax = 3000;