From 7ce8c54e2ba89059d28790550a8f74907b54b916 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Fri, 2 Dec 2005 21:52:30 +0000 Subject: 1201_ht_bus0_dev0_fidvid_core.diff https://openbios.org/roundup/linuxbios/issue41 Lord have mercy upon us. git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2118 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/cpu/x86/16bit/reset16.lds | 3 ++- src/cpu/x86/32bit/entry32.lds | 14 -------------- src/cpu/x86/lapic/lapic_cpu_init.c | 20 +++++++++----------- 3 files changed, 11 insertions(+), 26 deletions(-) (limited to 'src/cpu/x86') diff --git a/src/cpu/x86/16bit/reset16.lds b/src/cpu/x86/16bit/reset16.lds index f32597c00c..0ba54c9487 100644 --- a/src/cpu/x86/16bit/reset16.lds +++ b/src/cpu/x86/16bit/reset16.lds @@ -5,7 +5,8 @@ SECTIONS { /* Trigger an error if I have an unuseable start address */ - _ROMTOP = (_start >= 0xffff0000) ? 0xfffffff0 : 0xfffffff8; + _bogus = ASSERT(_start >= 0xffff0000, "_start to low please decrease ROM_IMAGE_SIZE"); + _ROMTOP = 0xfffffff0; . = _ROMTOP; .reset . : { *(.reset) diff --git a/src/cpu/x86/32bit/entry32.lds b/src/cpu/x86/32bit/entry32.lds index 37a75ba6ae..e69de29bb2 100644 --- a/src/cpu/x86/32bit/entry32.lds +++ b/src/cpu/x86/32bit/entry32.lds @@ -1,14 +0,0 @@ -/* - _cache_ram_seg_base = DEFINED(CACHE_RAM_BASE)? CACHE_RAM_BASE - _rodata : 0; - _cache_ram_seg_base_low = (_cache_ram_seg_base) & 0xffff; - _cache_ram_seg_base_middle = (_cache_ram_seg_base >> 16) & 0xff; - _cache_ram_seg_base_high = (_cache_ram_seg_base >> 24) & 0xff; - - _rom_code_seg_base = _ltext - _text; - _rom_code_seg_base_low = (_rom_code_seg_base) & 0xffff; - _rom_code_seg_base_middle = (_rom_code_seg_base >> 16) & 0xff; - _rom_code_seg_base_high = (_rom_code_seg_base >> 24) & 0xff; -*/ - - - diff --git a/src/cpu/x86/lapic/lapic_cpu_init.c b/src/cpu/x86/lapic/lapic_cpu_init.c index 7f348790e5..4e7e696c47 100644 --- a/src/cpu/x86/lapic/lapic_cpu_init.c +++ b/src/cpu/x86/lapic/lapic_cpu_init.c @@ -227,24 +227,19 @@ int start_cpu(device_t cpu) } /* C entry point of secondary cpus */ - -// secondary_cpu_lock is used to serialize initialization of secondary CPUs -// This can be used to avoid interleaved debugging messages. - -static spinlock_t secondary_cpu_lock = SPIN_LOCK_UNLOCKED; - void secondary_cpu_init(void) { atomic_inc(&active_cpus); - #if SERIAL_CPU_INIT == 1 - spin_lock(&secondary_cpu_lock); + #if CONFIG_MAX_CPUS>2 + spin_lock(&start_cpu_lock); + #endif #endif - cpu_initialize(); - #if SERIAL_CPU_INIT == 1 - spin_unlock(&secondary_cpu_lock); + #if CONFIG_MAX_CPUS>2 + spin_unlock(&start_cpu_lock); + #endif #endif atomic_dec(&active_cpus); @@ -260,12 +255,15 @@ static void initialize_other_cpus(struct bus *cpu_bus) if (cpu->path.type != DEVICE_PATH_APIC) { continue; } + if (!cpu->enabled) { continue; } + if (cpu->initialized) { continue; } + if (!start_cpu(cpu)) { /* Record the error in cpu? */ printk_err("CPU %u would not start!\n", -- cgit v1.2.3