summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu
diff options
context:
space:
mode:
author angelosa <lordkale4@gmail.com>2026-03-23 18:51:08 +0100
committer angelosa <lordkale4@gmail.com>2026-03-23 18:51:17 +0100
commite922f604ad085e1134f582121492e9ae3576b470 (patch)
tree7429e41ef339843e5936d0b42ab29532bd4dec2d /src/devices/cpu
parent5fc5f5ad612a2f03c02cae539f9a964449bb0139 (diff)
cpu/i386/i386.cpp: add CPUID brand ID for Pentium 3 and 4
Diffstat (limited to 'src/devices/cpu')
-rw-r--r--src/devices/cpu/i386/i386.cpp3
-rw-r--r--src/devices/cpu/i386/i386.h1
-rw-r--r--src/devices/cpu/i386/i486ops.hxx1
3 files changed, 5 insertions, 0 deletions
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index 80af52f6baa..5e21bb126f3 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -2483,6 +2483,7 @@ void i386_device::zero_state()
m_cpuid_id1 = 0;
m_cpuid_id2 = 0;
m_cpu_version = 0;
+ m_brand_id = 0; // Pentium III model 8 onward
m_feature_flags = 0;
m_tsc = 0;
m_perfctr[0] = m_perfctr[1] = 0;
@@ -3425,6 +3426,7 @@ void pentium3_device::device_reset()
// [15:15] CMOV and FCMOV
// [18:18] PSN (Processor Serial Number, P3 only)
m_feature_flags = 0x0004a111; // TODO: enable relevant flags here
+ m_brand_id = 0x02;
CHANGE_PC(m_eip);
}
@@ -3518,6 +3520,7 @@ void pentium4_device::device_reset()
// [ 8:8] CMPXCHG8B instruction
// [15:15] CMOV and FCMOV
m_feature_flags = 0x00008101; // TODO: enable relevant flags here
+ m_brand_id = 0x08;
CHANGE_PC(m_eip);
}
diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 7a0ac627429..ba6302a3a31 100644
--- a/src/devices/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
@@ -354,6 +354,7 @@ protected:
int m_cpuid_max_input_value_eax; // Highest CPUID standard function available
uint32_t m_cpuid_id0, m_cpuid_id1, m_cpuid_id2;
uint32_t m_cpu_version;
+ uint32_t m_brand_id;
uint32_t m_feature_flags;
uint64_t m_tsc;
uint64_t m_perfctr[2];
diff --git a/src/devices/cpu/i386/i486ops.hxx b/src/devices/cpu/i386/i486ops.hxx
index df8dc08c4ed..2131e15b717 100644
--- a/src/devices/cpu/i386/i486ops.hxx
+++ b/src/devices/cpu/i386/i486ops.hxx
@@ -27,6 +27,7 @@ void i386_device::i486_cpuid() // Opcode 0x0F A2
case 1:
{
REG32(EAX) = m_cpu_version;
+ REG32(EBX) = m_brand_id;
REG32(EDX) = m_feature_flags;
CYCLES(CYCLES_CPUID_EAX1);
break;