summaryrefslogtreecommitdiff
path: root/src/arch/ppc/lib
diff options
context:
space:
mode:
authorEric Biederman <ebiederm@xmission.com>2004-10-27 08:53:57 +0000
committerEric Biederman <ebiederm@xmission.com>2004-10-27 08:53:57 +0000
commit6e53f50082cfac4ec2d06d2ff6515781190ad1c0 (patch)
treec352bf640df56343a303c5e5d04042ae2f90ebc8 /src/arch/ppc/lib
parent20fc678d65b4cdf6b24bdff45ef04933c538e2e8 (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.c44
-rw-r--r--src/arch/ppc/lib/cpuid.c82
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);
}