On 10/26/2012 05:05:29 PM, York Sun wrote:
diff --git a/arch/powerpc/cpu/mpc85xx/release.S b/arch/powerpc/cpu/mpc85xx/release.S
index 4ba44a9..b68272b 100644
--- a/arch/powerpc/cpu/mpc85xx/release.S
+++ b/arch/powerpc/cpu/mpc85xx/release.S
@@ -351,6 +351,13 @@ __secondary_reset_vector:
        .align L1_CACHE_SHIFT
        .global __second_half_boot_page
 __second_half_boot_page:
+#ifdef CONFIG_PPC_SPINTABLE_COMPATIBLE
+       lis r3,(spin_table_compat - __second_half_boot_page)@h
+       ori r3,r3,(spin_table_compat - __second_half_boot_page)@l
+ add r3,r3,r11 /* r11 has the address of __second_half_boot_page */
+       lwz r14,0(r3)
+#endif

Please tab after the mnemonic.

 #define EPAPR_MAGIC            0x45504150
 #define ENTRY_ADDR_UPPER       0
 #define ENTRY_ADDR_LOWER       4
@@ -383,7 +390,24 @@ __second_half_boot_page:
        stw     r8,ENTRY_ADDR_LOWER(r10)

        /* spin waiting for addr */
-3:     lwz     r4,ENTRY_ADDR_LOWER(r10)
+3:
+/*
+ * To comply with ePAPR 1.1, the spin table has been moved to cache-enabled + * memory. Old OS may not work with this change. A patch is waiting to be + * accepted for Linux kernel. Other OS needs similar fix to spin table. + * For OSes with old spin table code, we can enable this temporary fix by + * setting environmental variable "spin_table_compat". For new OSes, set + * "spin_table_compat=no". After all OSes are fixed, we can remove this macro
+ * and related code. For now, it is enabled by default.
+ */

Let's be realistic -- s/all OSes are fixed/Linux is fixed/

+
+#ifdef CONFIG_PPC_SPINTABLE_COMPATIBLE
+       .align L1_CACHE_SHIFT
+       .global spin_table_compat
+spin_table_compat:
+       .long 1
+#endif

Tab after .long

+
 __spin_table_end:
        .space 4096 - (__spin_table_end - __spin_table)
diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
index 03baaee..29833bb 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++ b/arch/powerpc/include/asm/config_mpc85xx.h
@@ -27,6 +27,13 @@
#error "Do not define CONFIG_SYS_CCSRBAR_DEFAULT in the board header file."
 #endif

+/*
+ * This macro should be removed when we no longer care about backwards + * compatibility with older operating systems. Cacheable spin table support
+ * will be added in Linux 3.8.
+ */
+#define CONFIG_PPC_SPINTABLE_COMPATIBLE

Put the crystal ball away -- we don't know it will be in 3.8 (though
hopefully it will be).  We just know it won't make it any sooner than
that (unless Kumar can push it as a bug fix, which seems unlikely).

-Scott
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to