summaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
authorRonald G. Minnich <rminnich@chromium.org>2012-06-05 14:41:27 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-11-13 16:07:45 +0100
commit8b93059eccedc528443c06eb86c58bd320dca203 (patch)
tree65b3dd93170d53a6ba8dfb9ce63a347e95339f5b /src/arch/x86
parent455f4b432835828e82531adf967b9c7d8fc812dc (diff)
Pass the CPU index as a parameter to startup.
This addition is in support of future multicore support in coreboot. It also will allow us to remove some asssembly code. The CPU "index" -- i.e., its order in the sequence in which cores are brought up, NOT its APIC id -- is passed into the secondary start. We modify the function to specify regparm(0). We also take this opportunity to do some cleanup: indexes become unsigned ints, not unsigned longs, for example. Build and boot on a multicore system, with pcserial enabled. Capture the output. Observe that the messages Initializing CPU #0 Initializing CPU #1 Initializing CPU #2 Initializing CPU #3 appear exactly as they do prior to this change. Change-Id: I5854d8d957c414f75fdd63fb017d2249330f955d Signed-off-by: Ronald G. Minnich <rminnich@chromium.org> Reviewed-on: http://review.coreboot.org/1820 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/include/arch/cpu.h2
-rw-r--r--src/arch/x86/lib/cpu.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h
index 0dc92fba9e..aa0412fc49 100644
--- a/src/arch/x86/include/arch/cpu.h
+++ b/src/arch/x86/include/arch/cpu.h
@@ -160,7 +160,7 @@ struct cpu_driver *find_cpu_driver(struct device *cpu);
struct cpu_info {
device_t cpu;
- unsigned long index;
+ unsigned int index;
};
static inline struct cpu_info *cpu_info(void)
diff --git a/src/arch/x86/lib/cpu.c b/src/arch/x86/lib/cpu.c
index 98ede068ef..be8e38da13 100644
--- a/src/arch/x86/lib/cpu.c
+++ b/src/arch/x86/lib/cpu.c
@@ -234,7 +234,7 @@ static void set_cpu_ops(struct device *cpu)
cpu->ops = driver ? driver->ops : NULL;
}
-void cpu_initialize(void)
+void cpu_initialize(unsigned int index)
{
/* Because we busy wait at the printk spinlock.
* It is important to keep the number of printed messages
@@ -247,7 +247,7 @@ void cpu_initialize(void)
info = cpu_info();
- printk(BIOS_INFO, "Initializing CPU #%ld\n", info->index);
+ printk(BIOS_INFO, "Initializing CPU #%d\n", index);
cpu = info->cpu;
if (!cpu) {
@@ -284,7 +284,7 @@ void cpu_initialize(void)
cpu->ops->init(cpu);
}
- printk(BIOS_INFO, "CPU #%ld initialized\n", info->index);
+ printk(BIOS_INFO, "CPU #%d initialized\n", index);
return;
}