diff options
Diffstat (limited to 'src/mainboard/arima/hdama/auto.c')
-rw-r--r-- | src/mainboard/arima/hdama/auto.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/mainboard/arima/hdama/auto.c b/src/mainboard/arima/hdama/auto.c index c493e02cc0..7790b3ea50 100644 --- a/src/mainboard/arima/hdama/auto.c +++ b/src/mainboard/arima/hdama/auto.c @@ -22,7 +22,6 @@ #include "superio/NSC/pc87360/pc87360_early_serial.c" #include "cpu/amd/mtrr/amd_earlymtrr.c" #include "cpu/x86/bist.h" -#include "cpu/amd/dualcore/dualcore.c" #define SERIAL_DEV PNP_DEV(0x2e, PC87360_SP1) @@ -136,7 +135,7 @@ static unsigned int generate_row(uint8_t node, uint8_t row, uint8_t maxnodes) }; if (maxnodes > 2) { - print_spew("this mainboard is only designed for 2 cpus\r\n"); + print_debug("this mainboard is only designed for 2 cpus\r\n"); maxnodes = 2; } @@ -166,8 +165,6 @@ static inline int spd_read_byte(unsigned device, unsigned address) #define FIRST_CPU 1 #define SECOND_CPU 1 #define TOTAL_CPUS (FIRST_CPU + SECOND_CPU) - - static void main(unsigned long bist) { static const struct mem_controller cpu[] = { @@ -197,7 +194,21 @@ static void main(unsigned long bist) int needs_reset; if (bist == 0) { - k8_init_and_stop_secondaries(); + unsigned nodeid; + /* Skip this if there was a built in self test failure */ + amd_early_mtrr_init(); + enable_lapic(); + init_timer(); + nodeid = lapicid() & 0xf; + + /* Has this cpu already booted? */ + if (cpu_init_detected(nodeid)) { + asm volatile ("jmp __cpu_reset"); + } + distinguish_cpu_resets(nodeid); + if (!boot_cpu()) { + stop_this_cpu(); + } } /* Setup the console */ pc87360_enable_serial(SERIAL_DEV, TTYS0_BASE); @@ -224,13 +235,12 @@ static void main(unsigned long bist) memreset_setup(); sdram_initialize(sizeof(cpu)/sizeof(cpu[0]), cpu); - + #if 0 dump_pci_devices(); #endif #if 0 dump_pci_device(PCI_DEV(0, 0x18, 2)); - dump_pci_device(PCI_DEV(0, 0x18, 3)); #endif #if 0 |