// i386cpuid.cpu_feature = CPU_FEATURES_80386 | CPU_FEATURE_FPU; // 20200501 TMP K.O
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_80386;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_80386;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_80386;
i386cpuid.cpu_brandid = CPU_BRAND_ID_80386;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_80386);
i386cpuid.cpu_feature = CPU_FEATURES_I486SX | CPU_FEATURE_FPU;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_I486SX;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_I486SX;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_I486SX;
i386cpuid.cpu_brandid = CPU_BRAND_ID_I486SX;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_I486SX);
i386cpuid.cpu_feature = CPU_FEATURES_I486DX;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_I486DX;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_I486DX;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_I486DX;
i386cpuid.cpu_brandid = CPU_BRAND_ID_I486DX;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_I486DX);
i386cpuid.cpu_feature = CPU_FEATURES_PENTIUM;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_PENTIUM;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_PENTIUM;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_PENTIUM;
i386cpuid.cpu_brandid = CPU_BRAND_ID_PENTIUM;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_PENTIUM);
i386cpuid.cpu_feature = CPU_FEATURES_MMX_PENTIUM;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_MMX_PENTIUM;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_MMX_PENTIUM;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_MMX_PENTIUM;
i386cpuid.cpu_brandid = CPU_BRAND_ID_MMX_PENTIUM;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_MMX_PENTIUM);
i386cpuid.cpu_feature = CPU_FEATURES_PENTIUM_PRO;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_PENTIUM_PRO;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_PENTIUM_PRO;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_PENTIUM_PRO;
i386cpuid.cpu_brandid = CPU_BRAND_ID_PENTIUM_PRO;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_PENTIUM_PRO);
i386cpuid.cpu_feature = CPU_FEATURES_PENTIUM_II;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_PENTIUM_II;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_PENTIUM_II;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_PENTIUM_II;
i386cpuid.cpu_brandid = CPU_BRAND_ID_PENTIUM_II;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_PENTIUM_II);
i386cpuid.cpu_feature = CPU_FEATURES_PENTIUM_III;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_PENTIUM_III;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_PENTIUM_III;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_PENTIUM_III;
i386cpuid.cpu_brandid = CPU_BRAND_ID_PENTIUM_III;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_PENTIUM_III);
i386cpuid.cpu_feature = CPU_FEATURES_PENTIUM_M;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_PENTIUM_M;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_PENTIUM_M;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_PENTIUM_M;
i386cpuid.cpu_brandid = CPU_BRAND_ID_PENTIUM_M;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_PENTIUM_M);
i386cpuid.cpu_feature = CPU_FEATURES_PENTIUM_4;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_PENTIUM_4;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_PENTIUM_4;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_PENTIUM_4;
i386cpuid.cpu_brandid = CPU_BRAND_ID_PENTIUM_4;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_INTEL);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_PENTIUM_4);
i386cpuid.cpu_feature = CPU_FEATURES_AMD_K6_2;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_AMD_K6_2;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_AMD_K6_2;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_AMD_K6_2;
i386cpuid.cpu_brandid = CPU_BRAND_ID_AMD_K6_2;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_AMD);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_AMD_K6_2);
i386cpuid.cpu_feature = CPU_FEATURES_AMD_K6_III;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_AMD_K6_III;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_AMD_K6_III;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_AMD_K6_III;
i386cpuid.cpu_brandid = CPU_BRAND_ID_AMD_K6_III;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_AMD);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_AMD_K6_III);
i386cpuid.cpu_feature = CPU_FEATURES_AMD_K7_ATHLON;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_AMD_K7_ATHLON;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_AMD_K7_ATHLON;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_AMD_K7_ATHLON;
i386cpuid.cpu_brandid = CPU_BRAND_ID_AMD_K7_ATHLON;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_AMD);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_AMD_K7_ATHLON);
i386cpuid.cpu_feature = CPU_FEATURES_AMD_K7_ATHLON_XP;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_AMD_K7_ATHLON_XP;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_AMD_K7_ATHLON_XP;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK_AMD_K7_ATHLON_XP;
i386cpuid.cpu_brandid = CPU_BRAND_ID_AMD_K7_ATHLON_XP;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_AMD);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_AMD_K7_ATHLON_XP);
i386cpuid.cpu_feature = CPU_FEATURES_ALL;
i386cpuid.cpu_feature_ex = CPU_FEATURES_EX_ALL;
i386cpuid.cpu_feature_ecx = CPU_FEATURES_ECX_ALL;
+ i386cpuid.cpu_eflags_mask = CPU_EFLAGS_MASK;
i386cpuid.cpu_brandid = CPU_BRAND_ID_NEKOPRO2;
strcpy(i386cpuid.cpu_vendor, CPU_VENDOR_NEKOPRO);
strcpy(i386cpuid.cpu_brandstring, CPU_BRAND_STRING_NEKOPRO2);
char cpu_brandstring[64]; // ブランド名(48byte)
UINT32 cpu_brandid; // ブランドID
UINT32 cpu_feature_ecx; // ECX機能フラグ
- UINT32 reserved[32]; // 将来の拡張のためにとりあえず32bit*32個用意しておく
+ UINT32 cpu_eflags_mask; // EFLAGSマスク(1のところがマスク状態)
+ UINT32 reserved[31]; // 将来の拡張のためにとりあえず32bit*31個用意しておく
UINT8 fpu_type; // FPU種類
} I386CPUID;
#define CPU_FEATURES_ECX_AMD_K7_ATHLON_XP (0)
+/* EFLAGS MASK */
+#define CPU_EFLAGS_MASK_PENTIUM_4 (0)
+#define CPU_EFLAGS_MASK_PENTIUM_M (0)
+#define CPU_EFLAGS_MASK_PENTIUM_III (0)
+#define CPU_EFLAGS_MASK_PENTIUM_II (0)
+#define CPU_EFLAGS_MASK_PENTIUM_PRO (0)
+#define CPU_EFLAGS_MASK_MMX_PENTIUM (0)
+#define CPU_EFLAGS_MASK_PENTIUM (0)
+#define CPU_EFLAGS_MASK_I486DX (0)
+#define CPU_EFLAGS_MASK_I486SX (0)
+#define CPU_EFLAGS_MASK_80386 ((1 << 18))
+#define CPU_EFLAGS_MASK_80286 ((1 << 18))
+
+#define CPU_EFLAGS_MASK_AMD_K6_2 (0)
+#define CPU_EFLAGS_MASK_AMD_K6_III (0)
+#define CPU_EFLAGS_MASK_AMD_K7_ATHLON (0)
+#define CPU_EFLAGS_MASK_AMD_K7_ATHLON_XP (0)
+
+
/* brand string */
#define CPU_BRAND_STRING_PENTIUM_4 "Intel(R) Pentium(R) 4 CPU "
#define CPU_BRAND_STRING_PENTIUM_M "Intel(R) Pentium(R) M processor "
#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM_III
#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM_III
#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM_III
+#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM_III
//#define CPU_FAMILY CPU_PENTIUM_4_FAMILY
//#define CPU_MODEL CPU_PENTIUM_4_MODEL /* Pentium 4 */
//#define CPU_STEPPING CPU_PENTIUM_4_STEPPING
//#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM_4
//#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM_4
//#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM_4
+//#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM_4
#elif defined(USE_SSE2)
#define CPU_FAMILY CPU_PENTIUM_III_FAMILY
#define CPU_MODEL CPU_PENTIUM_III_MODEL /* Pentium III */
#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM_III
#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM_III
#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM_III
+#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM_III
//#define CPU_FAMILY CPU_PENTIUM_M_FAMILY
//#define CPU_MODEL CPU_PENTIUM_M_MODEL /* Pentium M */
//#define CPU_STEPPING CPU_PENTIUM_M_STEPPING
//#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM_M
//#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM_M
//#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM_M
+//#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM_M
#elif defined(USE_SSE)
#define CPU_FAMILY CPU_PENTIUM_III_FAMILY
#define CPU_MODEL CPU_PENTIUM_III_MODEL /* Pentium III */
#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM_III
#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM_III
#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM_III
+#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM_III
#elif defined(USE_MMX)
#define CPU_FAMILY CPU_PENTIUM_II_FAMILY
#define CPU_MODEL CPU_PENTIUM_II_MODEL /* Pentium II */
#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM_II
#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM_II
#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM_II
+#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM_II
#else
#define CPU_FAMILY CPU_PENTIUM_FAMILY
#define CPU_MODEL CPU_PENTIUM_MODEL /* Pentium */
#define CPU_FEATURES_ECX CPU_FEATURES_ECX_PENTIUM
#define CPU_BRAND_STRING CPU_BRAND_STRING_PENTIUM
#define CPU_BRAND_ID CPU_BRAND_ID_PENTIUM
+#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_PENTIUM
#endif
#else
#define CPU_FAMILY CPU_I486SX_FAMILY
#define CPU_FEATURES_ECX CPU_FEATURES_ECX_I486SX
#define CPU_BRAND_STRING CPU_BRAND_STRING_I486SX
#define CPU_BRAND_ID CPU_BRAND_ID_I486SX
+#define CPU_EFLAGS_MASK CPU_EFLAGS_MASK_I486SX
#endif