diff options
author | Eric Biederman <ebiederm@xmission.com> | 2004-10-27 08:53:57 +0000 |
---|---|---|
committer | Eric Biederman <ebiederm@xmission.com> | 2004-10-27 08:53:57 +0000 |
commit | 6e53f50082cfac4ec2d06d2ff6515781190ad1c0 (patch) | |
tree | c352bf640df56343a303c5e5d04042ae2f90ebc8 /src/arch/ppc/lib | |
parent | 20fc678d65b4cdf6b24bdff45ef04933c538e2e8 (diff) |
sizeram removal/conversion.
- mem.h and sizeram.h and all includes killed because the are no longer needed.
- linuxbios_table.c updated to directly look at the device tree for occupied memory areas.
- first very incomplete stab a converting the ppc code to work with the dynamic device tree
- Ignore resources before we have read them from devices, (if the device is disabled ignore it's resources).
- First stab at Pentium-M support
- add part/init_timer.h making init_timer conditional until there is a better way of handling it.
- Converted all of the x86 sizeram to northbridge set_resources functions.
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1722 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch/ppc/lib')
-rw-r--r-- | src/arch/ppc/lib/cpu.c | 44 | ||||
-rw-r--r-- | src/arch/ppc/lib/cpuid.c | 82 |
2 files changed, 70 insertions, 56 deletions
diff --git a/src/arch/ppc/lib/cpu.c b/src/arch/ppc/lib/cpu.c index 7a8e46f5cd..efb914b059 100644 --- a/src/arch/ppc/lib/cpu.c +++ b/src/arch/ppc/lib/cpu.c @@ -1,35 +1,49 @@ #include <console/console.h> -#include <mem.h> #include <arch/io.h> #include <string.h> #include <cpu/cpu.h> #include <cpu/ppc/cpuid.h> #include <smp/start_stop.h> +#include "ppc.h" +#include "ppcreg.h" -static void cache_on(struct mem_range *mem) -{ -} - -static void interrupts_on() -{ -} +#error "FIXME what should call cpu_initialize?" -unsigned long cpu_initialize(struct mem_range *mem) +void cpu_initialize(void) { /* Because we busy wait at the printk spinlock. * It is important to keep the number of printed messages * from secondary cpus to a minimum, when debugging is * disabled. */ - unsigned long processor_id = this_processors_id(); - printk_notice("Initializing CPU #%d\n", processor_id); + struct device *cpu; + struct cpu_info *info; + info = cpu_info(); + + printk_notice("Initializing CPU #%d\n", info->index); + + cpu = info->cpu; + if (!cpu) { + die("CPU: missing cpu device structure"); + } - /* Turn on caching if we haven't already */ - cache_on(mem); + /* Find what type of cpu we are dealing with */ + cpu->vendor 0; /* PPC cpus do not have a vendor field */ + cpu->device = ppc_getpvr(); + display_cpuid(cpu); - display_cpuid(); +#if 0 + /* Lookup the cpu's operations */ + set_cpu_ops(cpu); - interrupts_on(); + /* Initialize the cpu */ + if (cpu->ops && cpu->ops->init) { + cpu->enabled = 1; + cpu->initialized = 1; + cpu->ops->init(); + } +#endif + /* Turn on caching if we haven't already */ printk_info("CPU #%d Initialized\n", processor_id); return processor_id; diff --git a/src/arch/ppc/lib/cpuid.c b/src/arch/ppc/lib/cpuid.c index 09a7865b1b..0ff12774bd 100644 --- a/src/arch/ppc/lib/cpuid.c +++ b/src/arch/ppc/lib/cpuid.c @@ -5,62 +5,62 @@ #include "ppcreg.h" #include <console/console.h> -void display_cpuid(void) +void display_cpuid(struct device *cpu) { - unsigned type = ppc_getpvr() >> 16; - unsigned version = ppc_getpvr() & 0xffff; - const char *cpu_string = 0; - switch(type) { + unsigned type = cpu->device >> 16; + unsigned version = cpu->device & 0xffff; + const char *cpu_string = 0; + switch(type) { case 0x0001: - cpu_string = "601"; - break; + cpu_string = "601"; + break; case 0x0003: - cpu_string = "603"; - break; + cpu_string = "603"; + break; case 0x0004: - cpu_string = "604"; - break; + cpu_string = "604"; + break; case 0x0006: - cpu_string = "603e"; - break; + cpu_string = "603e"; + break; case 0x0007: - cpu_string = "603ev"; - break; + cpu_string = "603ev"; + break; case 0x0008: - cpu_string = "750"; - break; + cpu_string = "750"; + break; case 0x0009: - cpu_string = "604e"; - break; + cpu_string = "604e"; + break; case 0x000a: - cpu_string = "604ev5 (MachV)"; - break; + cpu_string = "604ev5 (MachV)"; + break; case 0x000c: - cpu_string = "7400"; - break; + cpu_string = "7400"; + break; case 0x0032: - cpu_string = "821"; - break; + cpu_string = "821"; + break; case 0x0050: - cpu_string = "860"; - break; + cpu_string = "860"; + break; case 0x4011: - cpu_string = "405GP"; - break; + cpu_string = "405GP"; + break; case 0x5091: - cpu_string = "405GPr"; - break; + cpu_string = "405GPr"; + break; case 0x5121: - cpu_string = "405EP"; - break; + cpu_string = "405EP"; + break; case 0x800c: - cpu_string = "7410"; - break; - } - if (cpu_string) - printk_info("PowerPC %s", cpu_string); - else - printk_info("PowerPC unknown (0x%x)", type); - printk_info(" CPU, version %d.%d\n", version >> 8, version & 0xff); + cpu_string = "7410"; + break; + } + if (cpu_string) + printk_info("PowerPC %s", cpu_string); + else + printk_info("PowerPC unknown (0x%x)", type); + printk_info(" CPU, version %d.%d\n", version >> 8, version & 0xff); } |