move common code (extended topology leaf) into base cpuid class to save code duplication
This commit is contained in:
parent
f8267ec3a7
commit
caab07e580
@ -533,80 +533,6 @@ void corei5_arrandale_m520_t::get_std_cpuid_leaf_A(cpuid_function_t *leaf) const
|
||||
BX_INFO(("WARNING: Architectural Performance Monitoring is not implemented"));
|
||||
}
|
||||
|
||||
BX_CPP_INLINE static Bit32u ilog2(Bit32u x)
|
||||
{
|
||||
Bit32u count = 0;
|
||||
while(x>>=1) count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
// leaf 0x0000000B //
|
||||
void corei5_arrandale_m520_t::get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const
|
||||
{
|
||||
// CPUID function 0x0000000B - Extended Topology Leaf
|
||||
leaf->eax = 0;
|
||||
leaf->ebx = 0;
|
||||
leaf->ecx = subfunction;
|
||||
leaf->edx = cpu->get_apic_id();
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
switch(subfunction) {
|
||||
case 0:
|
||||
if (nthreads > 1) {
|
||||
leaf->eax = ilog2(nthreads-1)+1;
|
||||
leaf->ebx = nthreads;
|
||||
leaf->ecx |= (1<<8);
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
else {
|
||||
leaf->eax = 1;
|
||||
leaf->ebx = 1; // number of logical CPUs at this level
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (nthreads > 1) {
|
||||
if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (nthreads > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// leaf 0x80000000 //
|
||||
void corei5_arrandale_m520_t::get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const
|
||||
{
|
||||
|
@ -52,7 +52,6 @@ private:
|
||||
void get_std_cpuid_leaf_5(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_6(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_A(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
void get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const;
|
||||
void get_ext_cpuid_leaf_1(cpuid_function_t *leaf) const;
|
||||
|
@ -508,80 +508,6 @@ void corei5_lynnfield_750_t::get_std_cpuid_leaf_A(cpuid_function_t *leaf) const
|
||||
BX_INFO(("WARNING: Architectural Performance Monitoring is not implemented"));
|
||||
}
|
||||
|
||||
BX_CPP_INLINE static Bit32u ilog2(Bit32u x)
|
||||
{
|
||||
Bit32u count = 0;
|
||||
while(x>>=1) count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
// leaf 0x0000000B //
|
||||
void corei5_lynnfield_750_t::get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const
|
||||
{
|
||||
// CPUID function 0x0000000B - Extended Topology Leaf
|
||||
leaf->eax = 0;
|
||||
leaf->ebx = 0;
|
||||
leaf->ecx = subfunction;
|
||||
leaf->edx = cpu->get_apic_id();
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
switch(subfunction) {
|
||||
case 0:
|
||||
if (nthreads > 1) {
|
||||
leaf->eax = ilog2(nthreads-1)+1;
|
||||
leaf->ebx = nthreads;
|
||||
leaf->ecx |= (1<<8);
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
else {
|
||||
leaf->eax = 1;
|
||||
leaf->ebx = 1; // number of logical CPUs at this level
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (nthreads > 1) {
|
||||
if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (nthreads > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// leaf 0x80000000 //
|
||||
void corei5_lynnfield_750_t::get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const
|
||||
{
|
||||
|
@ -52,7 +52,6 @@ private:
|
||||
void get_std_cpuid_leaf_5(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_6(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_A(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
void get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const;
|
||||
void get_ext_cpuid_leaf_1(cpuid_function_t *leaf) const;
|
||||
|
@ -607,80 +607,6 @@ void corei7_haswell_4770_t::get_std_cpuid_leaf_A(cpuid_function_t *leaf) const
|
||||
BX_INFO(("WARNING: Architectural Performance Monitoring is not implemented"));
|
||||
}
|
||||
|
||||
BX_CPP_INLINE static Bit32u ilog2(Bit32u x)
|
||||
{
|
||||
Bit32u count = 0;
|
||||
while(x>>=1) count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
// leaf 0x0000000B //
|
||||
void corei7_haswell_4770_t::get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const
|
||||
{
|
||||
// CPUID function 0x0000000B - Extended Topology Leaf
|
||||
leaf->eax = 0;
|
||||
leaf->ebx = 0;
|
||||
leaf->ecx = subfunction;
|
||||
leaf->edx = cpu->get_apic_id();
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
switch(subfunction) {
|
||||
case 0:
|
||||
if (nthreads > 1) {
|
||||
leaf->eax = ilog2(nthreads-1)+1;
|
||||
leaf->ebx = nthreads;
|
||||
leaf->ecx |= (1<<8);
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
else {
|
||||
leaf->eax = 1;
|
||||
leaf->ebx = 1; // number of logical CPUs at this level
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (nthreads > 1) {
|
||||
if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (nthreads > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// leaf 0x0000000C reserved //
|
||||
|
||||
// leaf 0x0000000D //
|
||||
|
@ -53,7 +53,6 @@ private:
|
||||
void get_std_cpuid_leaf_6(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_7(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_A(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_xsave_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
void get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const;
|
||||
|
@ -601,80 +601,6 @@ void corei7_ivy_bridge_3770k_t::get_std_cpuid_leaf_A(cpuid_function_t *leaf) con
|
||||
BX_INFO(("WARNING: Architectural Performance Monitoring is not implemented"));
|
||||
}
|
||||
|
||||
BX_CPP_INLINE static Bit32u ilog2(Bit32u x)
|
||||
{
|
||||
Bit32u count = 0;
|
||||
while(x>>=1) count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
// leaf 0x0000000B //
|
||||
void corei7_ivy_bridge_3770k_t::get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const
|
||||
{
|
||||
// CPUID function 0x0000000B - Extended Topology Leaf
|
||||
leaf->eax = 0;
|
||||
leaf->ebx = 0;
|
||||
leaf->ecx = subfunction;
|
||||
leaf->edx = cpu->get_apic_id();
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
switch(subfunction) {
|
||||
case 0:
|
||||
if (nthreads > 1) {
|
||||
leaf->eax = ilog2(nthreads-1)+1;
|
||||
leaf->ebx = nthreads;
|
||||
leaf->ecx |= (1<<8);
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
else {
|
||||
leaf->eax = 1;
|
||||
leaf->ebx = 1; // number of logical CPUs at this level
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (nthreads > 1) {
|
||||
if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (nthreads > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// leaf 0x0000000C reserved //
|
||||
|
||||
// leaf 0x0000000D //
|
||||
|
@ -53,7 +53,6 @@ private:
|
||||
void get_std_cpuid_leaf_6(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_7(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_A(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_xsave_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
void get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const;
|
||||
|
@ -556,80 +556,6 @@ void corei7_sandy_bridge_2600k_t::get_std_cpuid_leaf_A(cpuid_function_t *leaf) c
|
||||
BX_INFO(("WARNING: Architectural Performance Monitoring is not implemented"));
|
||||
}
|
||||
|
||||
BX_CPP_INLINE static Bit32u ilog2(Bit32u x)
|
||||
{
|
||||
Bit32u count = 0;
|
||||
while(x>>=1) count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
// leaf 0x0000000B //
|
||||
void corei7_sandy_bridge_2600k_t::get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const
|
||||
{
|
||||
// CPUID function 0x0000000B - Extended Topology Leaf
|
||||
leaf->eax = 0;
|
||||
leaf->ebx = 0;
|
||||
leaf->ecx = subfunction;
|
||||
leaf->edx = cpu->get_apic_id();
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
switch(subfunction) {
|
||||
case 0:
|
||||
if (nthreads > 1) {
|
||||
leaf->eax = ilog2(nthreads-1)+1;
|
||||
leaf->ebx = nthreads;
|
||||
leaf->ecx |= (1<<8);
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
else {
|
||||
leaf->eax = 1;
|
||||
leaf->ebx = 1; // number of logical CPUs at this level
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (nthreads > 1) {
|
||||
if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (nthreads > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// leaf 0x0000000C reserved //
|
||||
|
||||
// leaf 0x0000000D //
|
||||
|
@ -52,7 +52,6 @@ private:
|
||||
void get_std_cpuid_leaf_5(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_6(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_leaf_A(cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
void get_std_cpuid_xsave_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
void get_ext_cpuid_leaf_0(cpuid_function_t *leaf) const;
|
||||
|
@ -44,6 +44,80 @@ bx_cpuid_t::bx_cpuid_t(BX_CPU_C *_cpu): cpu(_cpu)
|
||||
ia_extensions_bitmask[n] = 0;
|
||||
}
|
||||
|
||||
BX_CPP_INLINE static Bit32u ilog2(Bit32u x)
|
||||
{
|
||||
Bit32u count = 0;
|
||||
while(x>>=1) count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
// leaf 0x0000000B //
|
||||
void bx_cpuid_t::get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const
|
||||
{
|
||||
// CPUID function 0x0000000B - Extended Topology Leaf
|
||||
leaf->eax = 0;
|
||||
leaf->ebx = 0;
|
||||
leaf->ecx = subfunction;
|
||||
leaf->edx = cpu->get_apic_id();
|
||||
|
||||
#if BX_SUPPORT_SMP
|
||||
switch(subfunction) {
|
||||
case 0:
|
||||
if (nthreads > 1) {
|
||||
leaf->eax = ilog2(nthreads-1)+1;
|
||||
leaf->ebx = nthreads;
|
||||
leaf->ecx |= (1<<8);
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
else {
|
||||
leaf->eax = 1;
|
||||
leaf->ebx = 1; // number of logical CPUs at this level
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (nthreads > 1) {
|
||||
if (ncores > 1) {
|
||||
leaf->eax = ilog2(ncores-1)+1;
|
||||
leaf->ebx = ncores;
|
||||
leaf->ecx |= (2<<8);
|
||||
}
|
||||
else if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
else if (ncores > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (nthreads > 1) {
|
||||
if (nprocessors > 1) {
|
||||
leaf->eax = ilog2(nprocessors-1)+1;
|
||||
leaf->ebx = nprocessors;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void bx_cpuid_t::dump_cpuid(unsigned max_std_leaf, unsigned max_ext_leaf) const
|
||||
{
|
||||
struct cpuid_function_t leaf;
|
||||
@ -61,3 +135,4 @@ void bx_cpuid_t::dump_cpuid(unsigned max_std_leaf, unsigned max_ext_leaf) const
|
||||
BX_INFO(("CPUID[0x%08x]: %08x %08x %08x %08x", n, leaf.eax, leaf.ebx, leaf.ecx, leaf.edx));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,6 +195,8 @@ protected:
|
||||
leaf->edx = 0;
|
||||
}
|
||||
|
||||
void get_std_cpuid_extended_topology_leaf(Bit32u subfunction, cpuid_function_t *leaf) const;
|
||||
|
||||
BX_CPP_INLINE void get_ext_cpuid_brand_string_leaf(const char *brand_string, Bit32u function, cpuid_function_t *leaf) const
|
||||
{
|
||||
switch(function) {
|
||||
|
@ -1605,22 +1605,7 @@ Bit32u bx_generic_cpuid_t::get_ext3_cpuid_features(void) const
|
||||
|
||||
void bx_generic_cpuid_t::dump_cpuid(void) const
|
||||
{
|
||||
struct cpuid_function_t leaf;
|
||||
unsigned n;
|
||||
|
||||
for (n=0; n <= max_std_leaf; n++) {
|
||||
get_cpuid_leaf(n, 0x00000000, &leaf);
|
||||
BX_INFO(("CPUID[0x%08x]: %08x %08x %08x %08x", n, leaf.eax, leaf.ebx, leaf.ecx, leaf.edx));
|
||||
}
|
||||
|
||||
#if BX_CPU_LEVEL >= 6
|
||||
if (max_ext_leaf > 0) {
|
||||
for (n=0x80000000; n <= max_ext_leaf; n++) {
|
||||
get_cpuid_leaf(n, 0x00000000, &leaf);
|
||||
BX_INFO(("CPUID[0x%08x]: %08x %08x %08x %08x", n, leaf.eax, leaf.ebx, leaf.ecx, leaf.edx));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
bx_cpuid_t::dump_cpuid(max_std_leaf, max_ext_leaf-0x80000000);
|
||||
}
|
||||
|
||||
bx_cpuid_t *create_bx_generic_cpuid(BX_CPU_C *cpu) { return new bx_generic_cpuid_t(cpu); }
|
||||
|
Loading…
Reference in New Issue
Block a user