aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/parisc/kernel/pacache.S37
1 files changed, 22 insertions, 15 deletions
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index 985e06da37f5..1b39a2acaadf 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -96,7 +96,7 @@ fitmanyloop: /* Loop if LOOP >= 2 */
96 96
97fitmanymiddle: /* Loop if LOOP >= 2 */ 97fitmanymiddle: /* Loop if LOOP >= 2 */
98 addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */ 98 addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */
99 pitlbe 0(%sr1, %r28) 99 pitlbe %r0(%sr1, %r28)
100 pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */ 100 pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */
101 addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */ 101 addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */
102 copy %arg3, %r31 /* Re-init inner loop count */ 102 copy %arg3, %r31 /* Re-init inner loop count */
@@ -139,7 +139,7 @@ fdtmanyloop: /* Loop if LOOP >= 2 */
139 139
140fdtmanymiddle: /* Loop if LOOP >= 2 */ 140fdtmanymiddle: /* Loop if LOOP >= 2 */
141 addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */ 141 addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */
142 pdtlbe 0(%sr1, %r28) 142 pdtlbe %r0(%sr1, %r28)
143 pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */ 143 pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */
144 addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */ 144 addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */
145 copy %arg3, %r31 /* Re-init inner loop count */ 145 copy %arg3, %r31 /* Re-init inner loop count */
@@ -626,12 +626,12 @@ ENTRY_CFI(copy_user_page_asm)
626 /* Purge any old translations */ 626 /* Purge any old translations */
627 627
628#ifdef CONFIG_PA20 628#ifdef CONFIG_PA20
629 pdtlb,l 0(%r28) 629 pdtlb,l %r0(%r28)
630 pdtlb,l 0(%r29) 630 pdtlb,l %r0(%r29)
631#else 631#else
632 tlb_lock %r20,%r21,%r22 632 tlb_lock %r20,%r21,%r22
633 pdtlb 0(%r28) 633 pdtlb %r0(%r28)
634 pdtlb 0(%r29) 634 pdtlb %r0(%r29)
635 tlb_unlock %r20,%r21,%r22 635 tlb_unlock %r20,%r21,%r22
636#endif 636#endif
637 637
@@ -774,10 +774,10 @@ ENTRY_CFI(clear_user_page_asm)
774 /* Purge any old translation */ 774 /* Purge any old translation */
775 775
776#ifdef CONFIG_PA20 776#ifdef CONFIG_PA20
777 pdtlb,l 0(%r28) 777 pdtlb,l %r0(%r28)
778#else 778#else
779 tlb_lock %r20,%r21,%r22 779 tlb_lock %r20,%r21,%r22
780 pdtlb 0(%r28) 780 pdtlb %r0(%r28)
781 tlb_unlock %r20,%r21,%r22 781 tlb_unlock %r20,%r21,%r22
782#endif 782#endif
783 783
@@ -858,10 +858,10 @@ ENTRY_CFI(flush_dcache_page_asm)
858 /* Purge any old translation */ 858 /* Purge any old translation */
859 859
860#ifdef CONFIG_PA20 860#ifdef CONFIG_PA20
861 pdtlb,l 0(%r28) 861 pdtlb,l %r0(%r28)
862#else 862#else
863 tlb_lock %r20,%r21,%r22 863 tlb_lock %r20,%r21,%r22
864 pdtlb 0(%r28) 864 pdtlb %r0(%r28)
865 tlb_unlock %r20,%r21,%r22 865 tlb_unlock %r20,%r21,%r22
866#endif 866#endif
867 867
@@ -898,10 +898,10 @@ ENTRY_CFI(flush_dcache_page_asm)
898 sync 898 sync
899 899
900#ifdef CONFIG_PA20 900#ifdef CONFIG_PA20
901 pdtlb,l 0(%r25) 901 pdtlb,l %r0(%r25)
902#else 902#else
903 tlb_lock %r20,%r21,%r22 903 tlb_lock %r20,%r21,%r22
904 pdtlb 0(%r25) 904 pdtlb %r0(%r25)
905 tlb_unlock %r20,%r21,%r22 905 tlb_unlock %r20,%r21,%r22
906#endif 906#endif
907 907
@@ -931,13 +931,18 @@ ENTRY_CFI(flush_icache_page_asm)
931 depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */ 931 depwi 0, 31,PAGE_SHIFT, %r28 /* Clear any offset bits */
932#endif 932#endif
933 933
934 /* Purge any old translation */ 934 /* Purge any old translation. Note that the FIC instruction
935 * may use either the instruction or data TLB. Given that we
936 * have a flat address space, it's not clear which TLB will be
937 * used. So, we purge both entries. */
935 938
936#ifdef CONFIG_PA20 939#ifdef CONFIG_PA20
940 pdtlb,l %r0(%r28)
937 pitlb,l %r0(%sr4,%r28) 941 pitlb,l %r0(%sr4,%r28)
938#else 942#else
939 tlb_lock %r20,%r21,%r22 943 tlb_lock %r20,%r21,%r22
940 pitlb (%sr4,%r28) 944 pdtlb %r0(%r28)
945 pitlb %r0(%sr4,%r28)
941 tlb_unlock %r20,%r21,%r22 946 tlb_unlock %r20,%r21,%r22
942#endif 947#endif
943 948
@@ -976,10 +981,12 @@ ENTRY_CFI(flush_icache_page_asm)
976 sync 981 sync
977 982
978#ifdef CONFIG_PA20 983#ifdef CONFIG_PA20
984 pdtlb,l %r0(%r28)
979 pitlb,l %r0(%sr4,%r25) 985 pitlb,l %r0(%sr4,%r25)
980#else 986#else
981 tlb_lock %r20,%r21,%r22 987 tlb_lock %r20,%r21,%r22
982 pitlb (%sr4,%r25) 988 pdtlb %r0(%r28)
989 pitlb %r0(%sr4,%r25)
983 tlb_unlock %r20,%r21,%r22 990 tlb_unlock %r20,%r21,%r22
984#endif 991#endif
985 992