Переглянути джерело

[SPARC64]: Kill BRANCH_IF_ANY_CHEETAH() from copy page.

Just patch the branch at boot time instead.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 19 роки тому
батько
коміт
dbd2fdf549
2 змінених файлів з 14 додано та 2 видалено
  1. 2 1
      arch/sparc64/kernel/head.S
  2. 12 1
      arch/sparc64/lib/copy_page.S

+ 2 - 1
arch/sparc64/kernel/head.S

@@ -538,11 +538,12 @@ cheetah_tlb_fixup:
 	 nop
 	call	cheetah_plus_patch_winfixup
 	 nop
-	
 
 2:	/* Patch copy/page operations to cheetah optimized versions. */
 	call	cheetah_patch_copyops
 	 nop
+	call	cheetah_patch_copy_page
+	 nop
 	call	cheetah_patch_cachetlbops
 	 nop
 

+ 12 - 1
arch/sparc64/lib/copy_page.S

@@ -87,7 +87,7 @@ copy_user_page:		/* %o0=dest, %o1=src, %o2=vaddr */
 	membar		#Sync
 	wrpr		%o2, 0x0, %pstate
 
-	BRANCH_IF_ANY_CHEETAH(g3,o2,1f)
+cheetah_copy_page_insn:
 	ba,pt		%xcc, 9f
 	 nop
 
@@ -240,3 +240,14 @@ copy_user_page:		/* %o0=dest, %o1=src, %o2=vaddr */
 	 stw		%o4, [%g6 + TI_PRE_COUNT]
 
 	.size		copy_user_page, .-copy_user_page
+
+	.globl		cheetah_patch_copy_page
+cheetah_patch_copy_page:
+	sethi		%hi(0x01000000), %o1	! NOP
+	sethi		%hi(cheetah_copy_page_insn), %o0
+	or		%o0, %lo(cheetah_copy_page_insn), %o0
+	stw		%o1, [%o0]
+	membar		#StoreStore
+	flush		%o0
+	retl
+	 nop