aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/lib
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-12 02:28:40 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:12:29 -0500
commit6241e5cc6afe2c5b75b51e1c890df18f05838cf6 (patch)
tree557eb4d7f530b9229a87c0a8d9f6013b9987f6f5 /arch/sparc64/lib
parent1a7a242c898dd131f2df005c492e9b44fb8900e0 (diff)
[SPARC64]: Fix branch signedness bug in all code patching.
The bug that hit SUN4V TLB patching exists elsewhere. Make sure we cure all such cases. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/lib')
-rw-r--r--arch/sparc64/lib/NGpage.S3
-rw-r--r--arch/sparc64/lib/NGpatch.S3
-rw-r--r--arch/sparc64/lib/U3patch.S3
3 files changed, 6 insertions, 3 deletions
diff --git a/arch/sparc64/lib/NGpage.S b/arch/sparc64/lib/NGpage.S
index 0e6152c28b01..7d7c3bb8dcbf 100644
--- a/arch/sparc64/lib/NGpage.S
+++ b/arch/sparc64/lib/NGpage.S
@@ -75,7 +75,8 @@ NGclear_user_page: /* %o0=dest, %o1=vaddr */
75 or %g2, %lo(OLD), %g2; \ 75 or %g2, %lo(OLD), %g2; \
76 sub %g1, %g2, %g1; \ 76 sub %g1, %g2, %g1; \
77 sethi %hi(BRANCH_ALWAYS), %g3; \ 77 sethi %hi(BRANCH_ALWAYS), %g3; \
78 srl %g1, 2, %g1; \ 78 sll %g1, 11, %g1; \
79 srl %g1, 11 + 2, %g1; \
79 or %g3, %lo(BRANCH_ALWAYS), %g3; \ 80 or %g3, %lo(BRANCH_ALWAYS), %g3; \
80 or %g3, %g1, %g3; \ 81 or %g3, %g1, %g3; \
81 stw %g3, [%g2]; \ 82 stw %g3, [%g2]; \
diff --git a/arch/sparc64/lib/NGpatch.S b/arch/sparc64/lib/NGpatch.S
index f13ec9e4c8a3..3b0674fc3366 100644
--- a/arch/sparc64/lib/NGpatch.S
+++ b/arch/sparc64/lib/NGpatch.S
@@ -12,7 +12,8 @@
12 or %g2, %lo(OLD), %g2; \ 12 or %g2, %lo(OLD), %g2; \
13 sub %g1, %g2, %g1; \ 13 sub %g1, %g2, %g1; \
14 sethi %hi(BRANCH_ALWAYS), %g3; \ 14 sethi %hi(BRANCH_ALWAYS), %g3; \
15 srl %g1, 2, %g1; \ 15 sll %g1, 11, %g1; \
16 srl %g1, 11 + 2, %g1; \
16 or %g3, %lo(BRANCH_ALWAYS), %g3; \ 17 or %g3, %lo(BRANCH_ALWAYS), %g3; \
17 or %g3, %g1, %g3; \ 18 or %g3, %g1, %g3; \
18 stw %g3, [%g2]; \ 19 stw %g3, [%g2]; \
diff --git a/arch/sparc64/lib/U3patch.S b/arch/sparc64/lib/U3patch.S
index e2b6c5e4b95a..ecc302619a6e 100644
--- a/arch/sparc64/lib/U3patch.S
+++ b/arch/sparc64/lib/U3patch.S
@@ -12,7 +12,8 @@
12 or %g2, %lo(OLD), %g2; \ 12 or %g2, %lo(OLD), %g2; \
13 sub %g1, %g2, %g1; \ 13 sub %g1, %g2, %g1; \
14 sethi %hi(BRANCH_ALWAYS), %g3; \ 14 sethi %hi(BRANCH_ALWAYS), %g3; \
15 srl %g1, 2, %g1; \ 15 sll %g1, 11, %g1; \
16 srl %g1, 11 + 2, %g1; \
16 or %g3, %lo(BRANCH_ALWAYS), %g3; \ 17 or %g3, %lo(BRANCH_ALWAYS), %g3; \
17 or %g3, %g1, %g3; \ 18 or %g3, %g1, %g3; \
18 stw %g3, [%g2]; \ 19 stw %g3, [%g2]; \