]> Pileus Git - ~andy/linux/blobdiff - arch/sparc64/kernel/setup.c
[SPARC64]: Add initial code to twiddle %gl on trap entry/exit.
[~andy/linux] / arch / sparc64 / kernel / setup.c
index 2918ed3eb1ba1638d3f697862461e4b23e660c24..aaab319ad885e3bd0c9cb19dd4d48f32d6294920 100644 (file)
@@ -545,6 +545,24 @@ static void __init per_cpu_patch(void)
 #endif
 }
 
+static void __init gl_patch(void)
+{
+       struct gl_1insn_patch_entry *p;
+
+       if (tlb_type != hypervisor)
+               return;
+
+       p = &__gl_1insn_patch;
+       while (p < &__gl_1insn_patch_end) {
+               unsigned long addr = p->addr;
+
+               *(unsigned int *) (addr +  0) = p->insn;
+               __asm__ __volatile__("flush     %0" : : "r" (addr +  0));
+
+               p++;
+       }
+}
+
 void __init setup_arch(char **cmdline_p)
 {
        /* Initialize PROM console and command line. */
@@ -567,6 +585,8 @@ void __init setup_arch(char **cmdline_p)
         */
        per_cpu_patch();
 
+       gl_patch();
+
        boot_flags_init(*cmdline_p);
 
        idprom_init();