Applied patch by Vasilis Kaoutsis: now checks for the MSR feature as well; obviously
some Pentium 200 MMX pretend to support MTRRs. This should fix bug #553. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19899 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
#define IA32_MSR_MTRR_PHYSICAL_MASK_0 0x201
|
#define IA32_MSR_MTRR_PHYSICAL_MASK_0 0x201
|
||||||
|
|
||||||
// cpuid eax 1 features
|
// cpuid eax 1 features
|
||||||
|
#define IA32_FEATURE_MSR (1UL << 5)
|
||||||
#define IA32_FEATURE_MTRR (1UL << 12)
|
#define IA32_FEATURE_MTRR (1UL << 12)
|
||||||
#define IA32_FEATURE_GLOBAL_PAGES (1UL << 13)
|
#define IA32_FEATURE_GLOBAL_PAGES (1UL << 13)
|
||||||
#define IA32_FEATURE_SSE (1UL << 25)
|
#define IA32_FEATURE_SSE (1UL << 25)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2005-2006, Haiku, Inc.
|
* Copyright 2005-2007, Haiku, Inc.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
@@ -48,7 +48,8 @@ generic_count_mtrrs(void)
|
|||||||
{
|
{
|
||||||
cpuid_info cpuInfo;
|
cpuid_info cpuInfo;
|
||||||
if (get_current_cpuid(&cpuInfo, 1) != B_OK
|
if (get_current_cpuid(&cpuInfo, 1) != B_OK
|
||||||
|| (cpuInfo.eax_1.features & IA32_FEATURE_MTRR) == 0)
|
|| (cpuInfo.eax_1.features & IA32_FEATURE_MTRR) == 0
|
||||||
|
|| (cpuInfo.eax_1.features & IA32_FEATURE_MSR) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
mtrr_capabilities capabilities(x86_read_msr(IA32_MSR_MTRR_CAPABILITIES));
|
mtrr_capabilities capabilities(x86_read_msr(IA32_MSR_MTRR_CAPABILITIES));
|
||||||
@@ -160,6 +161,9 @@ generic_mtrr_compute_physical_mask(void)
|
|||||||
void
|
void
|
||||||
generic_dump_mtrrs(uint32 count)
|
generic_dump_mtrrs(uint32 count)
|
||||||
{
|
{
|
||||||
|
if (count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (x86_read_msr(IA32_MSR_MTRR_DEFAULT_TYPE) & IA32_MTRR_ENABLE) {
|
if (x86_read_msr(IA32_MSR_MTRR_DEFAULT_TYPE) & IA32_MTRR_ENABLE) {
|
||||||
TRACE(("MTRR enabled\n"));
|
TRACE(("MTRR enabled\n"));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user