diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2008-10-29 04:48:44 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2008-10-29 04:48:44 +0000 |
commit | 00a889c8aabd7b731622d5ff0e765f69e158de2b (patch) | |
tree | fb10bfbf6a71bcc8ad583feb6b0c706abb86b6fa /src/cpu/x86 | |
parent | debb11fc1fe5f5560015ab9905f1ccc2e08c73e0 (diff) | |
download | coreboot-00a889c8aabd7b731622d5ff0e765f69e158de2b.tar.xz |
Support for Intel Core Duo and Core 2 Duo (tm) CPUs.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Ronald G. Minnich <rminnich@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3702 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/cpu/x86')
-rw-r--r-- | src/cpu/x86/car/copy_and_run.c | 2 | ||||
-rw-r--r-- | src/cpu/x86/lapic/lapic_cpu_init.c | 14 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/cpu/x86/car/copy_and_run.c b/src/cpu/x86/car/copy_and_run.c index ac2b7b0ca7..bd2662e0c0 100644 --- a/src/cpu/x86/car/copy_and_run.c +++ b/src/cpu/x86/car/copy_and_run.c @@ -72,7 +72,7 @@ static void copy_and_run(unsigned cpu_reset) __asm__ volatile ( "cli\n\t" "leal _iseg, %edi\n\t" - "jmp %edi\n\t" + "jmp *%edi\n\t" ); } diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c index 022d3722be..033f789442 100644 --- a/src/cpu/x86/lapic/lapic_cpu_init.c +++ b/src/cpu/x86/lapic/lapic_cpu_init.c @@ -437,6 +437,10 @@ static void wait_other_cpus_stop(struct bus *cpu_bus) #define cpus_ready_for_init() do {} while(0) #endif +#if HAVE_SMI_HANDLER +void smm_init(void); +#endif + void initialize_cpus(struct bus *cpu_bus) { struct device_path cpu_path; @@ -457,14 +461,18 @@ void initialize_cpus(struct bus *cpu_bus) cpu_path.type = DEVICE_PATH_CPU; cpu_path.u.cpu.id = 0; #endif - + /* Find the device structure for the boot cpu */ info->cpu = alloc_find_dev(cpu_bus, &cpu_path); #if CONFIG_SMP == 1 copy_secondary_start_to_1m_below(); // why here? In case some day we can start core1 in amd_sibling_init #endif - + +#if HAVE_SMI_HANDLER + smm_init(); +#endif + cpus_ready_for_init(); #if CONFIG_SMP == 1 @@ -477,7 +485,6 @@ void initialize_cpus(struct bus *cpu_bus) /* Initialize the bootstrap processor */ cpu_initialize(); - #if CONFIG_SMP == 1 #if SERIAL_CPU_INIT == 1 start_other_cpus(cpu_bus, info->cpu); @@ -486,6 +493,5 @@ void initialize_cpus(struct bus *cpu_bus) /* Now wait the rest of the cpus stop*/ wait_other_cpus_stop(cpu_bus); #endif - } |