parisc: use long branch in fork_like macro
[sfrench/cifs-2.6.git] / arch / parisc / kernel / entry.S
index f33201bf8977208358b87c92911cb149a68f618a..36f4f1dcb7786c8a21d320aabf3e0c1cc87a04f7 100644 (file)
 #if PT_NLEVELS == 3
        extru           \va,31-ASM_PMD_SHIFT,ASM_BITS_PER_PMD,\index
 #else
+# if defined(CONFIG_64BIT)
+       extrd,u         \va,63-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
+  #else
+  # if PAGE_SIZE > 4096
+       extru           \va,31-ASM_PGDIR_SHIFT,32-ASM_PGDIR_SHIFT,\index
+  # else
        extru           \va,31-ASM_PGDIR_SHIFT,ASM_BITS_PER_PGD,\index
+  # endif
+# endif
 #endif
        dep             %r0,31,PAGE_SHIFT,\pmd  /* clear offset */
        copy            %r0,\pte
 
        .text
 
-       .align  PAGE_SIZE
+       .align 4096
 
 ENTRY(fault_vector_20)
        /* First vector is invalid (0) */
@@ -1694,7 +1702,8 @@ ENTRY(sys_\name\()_wrapper)
        ldo     TASK_REGS(%r1),%r1
        reg_save %r1
        mfctl   %cr27, %r28
-       b       sys_\name
+       ldil    L%sys_\name, %r31
+       be      R%sys_\name(%sr4,%r31)
        STREG   %r28, PT_CR27(%r1)
 ENDPROC(sys_\name\()_wrapper)
        .endm