aboutsummaryrefslogtreecommitdiff
path: root/src/arch/ppc/lib/cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/ppc/lib/cpu.c')
-rw-r--r--src/arch/ppc/lib/cpu.c44
1 files changed, 29 insertions, 15 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;