aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/intel/model_206ax/model_206ax_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/intel/model_206ax/model_206ax_init.c')
-rw-r--r--src/cpu/intel/model_206ax/model_206ax_init.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/cpu/intel/model_206ax/model_206ax_init.c b/src/cpu/intel/model_206ax/model_206ax_init.c
index 74ad0e8372..2028af0196 100644
--- a/src/cpu/intel/model_206ax/model_206ax_init.c
+++ b/src/cpu/intel/model_206ax/model_206ax_init.c
@@ -35,6 +35,9 @@
#include <pc80/mc146818rtc.h>
#include "model_206ax.h"
#include "chip.h"
+#include <cpu/intel/smm/gen1/smi.h>
+
+#define CORE_THREAD_COUNT_MSR 0x35
/*
* List of supported C-states in this processor
@@ -473,6 +476,20 @@ static void configure_mca(void)
wrmsr(IA32_MC0_STATUS + (i * 4), msr);
}
+int cpu_get_apic_id_map(int *apic_id_map)
+{
+ msr_t msr;
+ int num_cpus, i;
+
+ msr = rdmsr(CORE_THREAD_COUNT_MSR);
+ num_cpus = msr.lo & 0xffff;
+
+ for (i = 0; i < num_cpus && i < CONFIG_MAX_CPUS; i++)
+ apic_id_map[i] = i;
+
+ return num_cpus;
+}
+
/*
* Initialize any extra cores/threads in this package.
*/