]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/kernel/setup_64.c
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-serial
[linux-2.6-omap-h63xx.git] / arch / powerpc / kernel / setup_64.c
index cc26530145db6e4f0c51286c8b172a23394d1390..fd1785e4c9bbeec4607af81a10e88a95bc7ee722 100644 (file)
@@ -12,7 +12,6 @@
 
 #undef DEBUG
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/string.h>
 #include <linux/sched.h>
@@ -149,6 +148,13 @@ early_param("smt-enabled", early_smt_enabled);
 #define check_smt_enabled()
 #endif /* CONFIG_SMP */
 
+/* Put the paca pointer into r13 and SPRG3 */
+void __init setup_paca(int cpu)
+{
+       local_paca = &paca[cpu];
+       mtspr(SPRN_SPRG3, local_paca);
+}
+
 /*
  * Early initialization entry point. This is called by head.S
  * with MMU translation disabled. We rely on the "feature" of
@@ -170,6 +176,9 @@ early_param("smt-enabled", early_smt_enabled);
 
 void __init early_setup(unsigned long dt_ptr)
 {
+       /* Assume we're on cpu 0 for now. Don't write to the paca yet! */
+       setup_paca(0);
+
        /* Enable early debugging if any specified (see udbg.h) */
        udbg_early_init();
 
@@ -183,7 +192,7 @@ void __init early_setup(unsigned long dt_ptr)
        early_init_devtree(__va(dt_ptr));
 
        /* Now we know the logical id of our boot cpu, setup the paca. */
-       setup_boot_paca();
+       setup_paca(boot_cpuid);
 
        /* Fix up paca fields required for the boot cpu */
        get_paca()->cpu_start = 1;
@@ -352,12 +361,15 @@ void __init setup_system(void)
 
        /*
         * Fill the ppc64_caches & systemcfg structures with informations
-        * retrieved from the device-tree. Need to be called before
-        * finish_device_tree() since the later requires some of the
-        * informations filled up here to properly parse the interrupt tree.
+        * retrieved from the device-tree.
         */
        initialize_cache_info();
 
+       /*
+        * Initialize irq remapping subsystem
+        */
+       irq_early_init();
+
 #ifdef CONFIG_PPC_RTAS
        /*
         * Initialize RTAS if available
@@ -384,12 +396,6 @@ void __init setup_system(void)
         */
        find_legacy_serial_ports();
 
-       /*
-        * "Finish" the device-tree, that is do the actual parsing of
-        * some of the properties like the interrupt map
-        */
-       finish_device_tree();
-
        /*
         * Initialize xmon
         */
@@ -418,8 +424,6 @@ void __init setup_system(void)
 
        printk("-----------------------------------------------------\n");
        printk("ppc64_pft_size                = 0x%lx\n", ppc64_pft_size);
-       printk("ppc64_interrupt_controller    = 0x%ld\n",
-              ppc64_interrupt_controller);
        printk("physicalMemorySize            = 0x%lx\n", lmb_phys_mem_size());
        printk("ppc64_caches.dcache_line_size = 0x%x\n",
               ppc64_caches.dline_size);