git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1849 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Yinghai Lu 2005-01-10 22:20:51 +00:00
parent 20a2a57092
commit 3a23863a3a
14 changed files with 71 additions and 83 deletions

View File

@ -137,23 +137,18 @@ static void main(unsigned long bist)
}; };
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
amd_early_mtrr_init(); amd_early_mtrr_init();
enable_lapic(); enable_lapic();
init_timer(); init_timer();
if (cpu_init_detected()) { nodeid = lapicid() & 0xf;
#if 1 if (cpu_init_detected(nodeid)) {
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,14 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
unsigned nodeid;
/* Make cerain my local apic is useable */ /* Make cerain my local apic is useable */
enable_lapic(); enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {

View File

@ -165,24 +165,20 @@ static void main(unsigned long bist)
}; };
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
amd_early_mtrr_init(); amd_early_mtrr_init();
enable_lapic(); enable_lapic();
init_timer(); init_timer();
nodeid = lapicid() & 0xf;
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
#if 1
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,14 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
unsigned nodeid;
/* Make cerain my local apic is useable */ /* Make cerain my local apic is useable */
enable_lapic(); enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {

View File

@ -160,24 +160,20 @@ static void main(unsigned long bist)
#endif #endif
}; };
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
amd_early_mtrr_init(); amd_early_mtrr_init();
enable_lapic(); enable_lapic();
init_timer(); init_timer();
nodeid = lapicid() & 0xf;
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
#if 1
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,15 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
unsigned nodeid;
/* Make cerain my local apic is useable */ /* Make cerain my local apic is useable */
enable_lapic(); enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {

View File

@ -161,23 +161,20 @@ static void main(unsigned long bist)
#endif #endif
}; };
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
amd_early_mtrr_init(); amd_early_mtrr_init();
enable_lapic(); enable_lapic();
init_timer(); init_timer();
if (cpu_init_detected()) { nodeid = lapicid() & 0xf;
#if 1
if (cpu_init_detected(nodeid)) {
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,14 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
unsigned nodeid;
/* Make cerain my local apic is useable */ /* Make cerain my local apic is useable */
enable_lapic(); enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {

View File

@ -167,6 +167,7 @@ static void main(unsigned long bist)
}; };
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
@ -174,17 +175,12 @@ static void main(unsigned long bist)
enable_lapic(); enable_lapic();
init_timer(); init_timer();
if (cpu_init_detected()) { nodeid = lapicid() & 0xf;
#if 1
if (cpu_init_detected(nodeid)) {
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,14 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
/* Make cerain my local apic is useable */ unsigned nodeid;
enable_lapic(); /* Make cerain my local apic is useable */
enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {

View File

@ -178,30 +178,20 @@ static void main(unsigned long bist)
}; };
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
amd_early_mtrr_init(); amd_early_mtrr_init();
enable_lapic(); enable_lapic();
init_timer(); init_timer();
nodeid = lapicid() & 0xf;
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
#if 1
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
/* So we don't need to
1. jmp to __cpu_reset
2. jmp to __main to copy ROM to ram (It costs some time)
3. call hardwaremain(), it will according to boot_complete to issue hard_reset in southbridge.
(Actually it is soft2_reset(); --- without call hard_reset, the memory is corrupted.
We will call soft2_reset directly to spare time in 1 and 2 and 3.2
*/
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,14 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
/* Make cerain my local apic is useable */ unsigned nodeid;
enable_lapic(); /* Make cerain my local apic is useable */
enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {

View File

@ -228,6 +228,7 @@ static void main(unsigned long bist)
}; };
int i; int i;
int needs_reset; int needs_reset;
unsigned nodeid;
if (bist == 0) { if (bist == 0) {
/* Skip this if there was a built in self test failure */ /* Skip this if there was a built in self test failure */
@ -235,17 +236,12 @@ static void main(unsigned long bist)
enable_lapic(); enable_lapic();
init_timer(); init_timer();
if (cpu_init_detected()) { nodeid = lapicid() & 0xf;
#if 1
if (cpu_init_detected(nodeid)) {
asm volatile ("jmp __cpu_reset"); asm volatile ("jmp __cpu_reset");
#else
/* cpu reset also reset the memtroller ????
need soft_reset to reset all except keep HT link freq and width */
distinguish_cpu_resets();
soft2_reset();
#endif
} }
distinguish_cpu_resets(); distinguish_cpu_resets(nodeid);
if (!boot_cpu()) { if (!boot_cpu()) {
stop_this_cpu(); stop_this_cpu();
} }

View File

@ -13,11 +13,14 @@
static unsigned long main(unsigned long bist) static unsigned long main(unsigned long bist)
{ {
/* Make cerain my local apic is useable */ unsigned nodeid;
enable_lapic(); /* Make cerain my local apic is useable */
enable_lapic();
nodeid = lapicid() & 0xf;
/* Is this a cpu only reset? */ /* Is this a cpu only reset? */
if (cpu_init_detected()) { if (cpu_init_detected(nodeid)) {
if (last_boot_normal()) { if (last_boot_normal()) {
goto normal_image; goto normal_image;
} else { } else {