aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86/lib/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/lib/cpu.c')
-rw-r--r--src/arch/x86/lib/cpu.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/arch/x86/lib/cpu.c b/src/arch/x86/lib/cpu.c
index 7cd955ebb3..98ede068ef 100644
--- a/src/arch/x86/lib/cpu.c
+++ b/src/arch/x86/lib/cpu.c
@@ -9,7 +9,6 @@
#include <device/path.h>
#include <device/device.h>
#include <smp/spinlock.h>
-#include <cpu/x86/lapic.h>
/* Standard macro to see if a specific flag is changeable */
static inline int flag_is_changeable_p(uint32_t flag)
@@ -235,7 +234,7 @@ static void set_cpu_ops(struct device *cpu)
cpu->ops = driver ? driver->ops : NULL;
}
-void cpu_initialize(struct bus *cpu_bus, int index)
+void cpu_initialize(void)
{
/* Because we busy wait at the printk spinlock.
* It is important to keep the number of printed messages
@@ -243,17 +242,17 @@ void cpu_initialize(struct bus *cpu_bus, int index)
* disabled.
*/
struct device *cpu;
+ struct cpu_info *info;
struct cpuinfo_x86 c;
- struct device_path cpu_path;
- unsigned char id = lapicid();
- cpu_path.type = DEVICE_PATH_APIC;
- cpu_path.apic.apic_id = id;
+ info = cpu_info();
- cpu = alloc_find_dev(cpu_bus, &cpu_path);
- cpu->path.apic.index = index;
+ printk(BIOS_INFO, "Initializing CPU #%ld\n", info->index);
- printk(BIOS_DEBUG, "Initializing CPU #%d\n", id);
+ cpu = info->cpu;
+ if (!cpu) {
+ die("CPU: missing cpu device structure");
+ }
/* Find what type of cpu we are dealing with */
identify_cpu(cpu);
@@ -277,6 +276,7 @@ void cpu_initialize(struct bus *cpu_bus, int index)
printk(BIOS_DEBUG, "Using generic cpu ops (good)\n");
}
+
/* Initialize the cpu */
if (cpu->ops && cpu->ops->init) {
cpu->enabled = 1;
@@ -284,7 +284,7 @@ void cpu_initialize(struct bus *cpu_bus, int index)
cpu->ops->init(cpu);
}
- printk(BIOS_INFO, "CPU #%d initialized\n", id);
+ printk(BIOS_INFO, "CPU #%ld initialized\n", info->index);
return;
}