Merge tag 'xfs-4.21-merge-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[linux-2.6-microblaze.git] / arch / powerpc / kernel / entry_64.S
index 7b1693a..435927f 100644 (file)
@@ -54,6 +54,9 @@
 SYS_CALL_TABLE:
        .tc sys_call_table[TC],sys_call_table
 
+COMPAT_SYS_CALL_TABLE:
+       .tc compat_sys_call_table[TC],compat_sys_call_table
+
 /* This value is used to mark exception frames on the stack. */
 exception_marker:
        .tc     ID_EXC_MARKER[TC],STACK_FRAME_REGS_MARKER
@@ -80,6 +83,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_TM)
        std     r0,GPR0(r1)
        std     r10,GPR1(r1)
        beq     2f                      /* if from kernel mode */
+#ifdef CONFIG_PPC_FSL_BOOK3E
+START_BTB_FLUSH_SECTION
+       BTB_FLUSH(r10)
+END_BTB_FLUSH_SECTION
+#endif
        ACCOUNT_CPU_USER_ENTRY(r13, r10, r11)
 2:     std     r2,GPR2(r1)
        std     r3,GPR3(r1)
@@ -173,7 +181,7 @@ system_call:                        /* label this so stack traces look sane */
        ld      r11,SYS_CALL_TABLE@toc(2)
        andis.  r10,r10,_TIF_32BIT@h
        beq     15f
-       addi    r11,r11,8       /* use 32-bit syscall entries */
+       ld      r11,COMPAT_SYS_CALL_TABLE@toc(2)
        clrldi  r3,r3,32
        clrldi  r4,r4,32
        clrldi  r5,r5,32
@@ -181,7 +189,7 @@ system_call:                        /* label this so stack traces look sane */
        clrldi  r7,r7,32
        clrldi  r8,r8,32
 15:
-       slwi    r0,r0,4
+       slwi    r0,r0,3
 
        barrier_nospec_asm
        /*
@@ -286,6 +294,10 @@ BEGIN_FTR_SECTION
        HMT_MEDIUM_LOW
 END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
 
+#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
+       std     r8, PACATMSCRATCH(r13)
+#endif
+
        ld      r13,GPR13(r1)   /* only restore r13 if returning to usermode */
        ld      r2,GPR2(r1)
        ld      r1,GPR1(r1)