- First stab at running linuxbios without the old static device tree.
Things are close but not quite there yet. git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1681 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
@@ -37,12 +37,21 @@
|
||||
|
||||
#include "crt0_includes.h"
|
||||
|
||||
/* uses: esp, ebx, ax, dx */
|
||||
#define __CONSOLE_TX_STRING(string) \
|
||||
mov string, %ebx ; \
|
||||
CALLSP(console_tx_string)
|
||||
|
||||
#if ASM_CONSOLE_LOGLEVEL > BIOS_DEBUG
|
||||
#define CONSOLE_DEBUG_TX_STRING(string) __CONSOLE_TX_STRING(string)
|
||||
#else
|
||||
#define CONSOLE_DEBUG_TX_STRING(string)
|
||||
#endif
|
||||
|
||||
/* clear boot_complete flag */
|
||||
xorl %ebp, %ebp
|
||||
__main:
|
||||
mov $str_copying_to_ram, %ebx
|
||||
CALLSP(console_tx_string)
|
||||
CONSOLE_DEBUG_TX_STRING($str_copying_to_ram)
|
||||
|
||||
/*
|
||||
* Copy data into RAM and clear the BSS. Since these segments
|
||||
@@ -149,8 +158,7 @@ decompr_end_n2b:
|
||||
movl %esp, %ebp
|
||||
#endif
|
||||
|
||||
mov $str_pre_main, %ebx
|
||||
CALLSP(console_tx_string)
|
||||
CONSOLE_DEBUG_TX_STRING($str_pre_main)
|
||||
leal _iseg, %edi
|
||||
jmp %edi
|
||||
|
||||
@@ -159,12 +167,9 @@ decompr_end_n2b:
|
||||
hlt
|
||||
jmp .Lhlt
|
||||
|
||||
|
||||
#if ASM_CONSOLE_LOGLEVEL > BIOS_DEBUG
|
||||
/* Uses esp, ebx, ax, dx */
|
||||
console_tx_string:
|
||||
#if ASM_CONSOLE_LOGLEVEL <= BIOS_DEBUG
|
||||
RETSP
|
||||
#else
|
||||
mov (%ebx), %al
|
||||
inc %ebx
|
||||
cmp $0, %al
|
||||
@@ -210,4 +215,3 @@ str_pre_main: .string "Jumping to LinuxBIOS.\r\n"
|
||||
.previous
|
||||
|
||||
#endif /* ASM_CONSOLE_LOGLEVEL > BIOS_DEBUG */
|
||||
|
@@ -1,4 +1,6 @@
|
||||
#include <console/console.h>
|
||||
#include <device/device.h>
|
||||
#include <device/path.h>
|
||||
#include <cpu/cpu.h>
|
||||
#include <arch/smp/mpspec.h>
|
||||
#include <string.h>
|
||||
@@ -101,14 +103,17 @@ void smp_write_processors(struct mp_config_table *mc)
|
||||
unsigned cpu_feature_flags;
|
||||
struct cpuid_result result;
|
||||
device_t cpu;
|
||||
|
||||
boot_apic_id = lapicid();
|
||||
apic_version = lapic_read(LAPIC_LVR) & 0xff;
|
||||
result = cpuid(1);
|
||||
cpu_features = result.eax;
|
||||
cpu_feature_flags = result.edx;
|
||||
for(cpu = dev_root.link[1].children; cpu; cpu = cpu->sibling) {
|
||||
for(cpu = all_devices; cpu; cpu = cpu->next) {
|
||||
unsigned long cpu_flag;
|
||||
if (cpu->path.type != DEVICE_PATH_APIC) {
|
||||
if ((cpu->path.type != DEVICE_PATH_APIC) ||
|
||||
(cpu->bus->dev->path.type != DEVICE_PATH_APIC_CLUSTER))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!cpu->enabled) {
|
||||
|
Reference in New Issue
Block a user