| summaryrefslogtreecommitdiff |
| tag name | rpm-2.6.16.60-0.30-dirty (d33fabd0be4ed653a3a8f426628675440f92c5a0) |
| tag date | 2009-06-17 23:02:48 (GMT) |
| tagged by | Kernel Build Daemon <kbuild@suse.de> |
| tagged object | commit b827b91786... |
Released kernel-2.6.16.60-0.30 with the following manual change:
diff -ruN -x CVS -x '*.changes' git/kernel-source/patches.fixes/fix-string-ops.diff package/patches.fixes/fix-string-ops.diff
--- git/kernel-source/patches.fixes/fix-string-ops.diff 2008-08-28 11:26:55.000000000 +0200
+++ package/patches.fixes/fix-string-ops.diff 2008-09-15 15:40:32.000000000 +0200
@@ -9,46 +9,62 @@
Signed-off-by: Pavel Machek <pavel@suse.cz>
Patch-mainline: 2.6.26
---- a/arch/x86_64/lib/copy_user.S.orig 2006-03-20 06:53:29.000000000 +0100
-+++ b/arch/x86_64/lib/copy_user.S 2008-08-19 11:08:09.000000000 +0200
-@@ -281,21 +281,31 @@
+diff -ur linux-2.6.16-SLES10_SP2_BRANCH/arch/x86_64/lib/copy_user.S linux/arch/x86_64/lib/copy_user.S
+--- linux-2.6.16-SLES10_SP2_BRANCH/arch/x86_64/lib/copy_user.S 2008-09-10 17:08:43.000000000 +0200
++++ linux/arch/x86_64/lib/copy_user.S 2008-09-10 17:08:31.000000000 +0200
+@@ -280,22 +280,48 @@
+ * And more would be dangerous because both Intel and AMD have
* errata with rep movsq > 4GB. If someone feels the need to fix
* this please consider this.
- */
+- */
-copy_user_generic_c:
-+ copy_user_generic_c:
-+ xorq %rax,%rax
++ */
++copy_user_generic_c:
++
++ movl $1,%r8d /* save zero flag */
movl %edx,%ecx
shrl $3,%ecx
-- andl $7,%edx
--1: rep
-+ andl $7,%edx
-+.Lc1: rep
+ andl $7,%edx
++ jz 10f
+ 1: rep
movsq
movl %edx,%ecx
--2: rep
-+.Lc2: rep
+ 2: rep
movsb
-4: movl %ecx,%eax
++9: movl %ecx,%eax
ret
-3: lea (%rdx,%rcx,8),%rax
+
-+.Lc1e: movq %rcx,%rsi
-+.Lc3: rep
-+ stosq
-+.Lc2e: movl %edx,%ecx
-+.Lc4: rep
-+ stosb
-+.Lc3e: leaq (%rdx,%rsi,8),%rax
++ /* multiple of 8 byte */
++10: rep
++ movsq
++ xor %eax,%eax
ret
++ /* exception handling */
++3: lea (%rdx,%rcx,8),%rax /* exception on quad loop */
++ jmp 6f
++5: movl %ecx,%eax /* exception on byte loop */
++ /* eax: left over bytes */
++6: testl %r8d,%r8d /* zero flag set? */
++ jz 7f
++ movl %eax,%ecx /* initialize x86 loop counter */
++ push %rax
++ xorl %eax,%eax
++8: rep
++ stosb /* zero the rest */
++11: pop %rax
++7: ret
++
++
++
.section __ex_table,"a"
-- .quad 1b,3b
+ .quad 1b,3b
- .quad 2b,4b
-+ .align 8
-+ .quad .Lc1,.Lc1e
-+ .quad .Lc2,.Lc2e
-+ .quad .Lc3,.Lc3e
-+ .quad .Lc4,.Lc3e
++ .quad 2b,5b
++ .quad 8b,11b
++ .quad 10b,3b
.previous
-
+Only in linux/arch/x86_64/lib: copy_user.S.orig
+Only in linux/arch/x86_64/lib: copy_user.S~