Author: dchagin
Date: Sat Jan  9 18:19:18 2016
New Revision: 293604
URL: https://svnweb.freebsd.org/changeset/base/293604

Log:
  MFC r284159:
  
  Futex is an aligned 32-bit integer. Use the proper instruction and
  operand when dereferencing futex pointer.

Modified:
  stable/10/sys/amd64/linux/linux_support.s
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/amd64/linux/linux_support.s
==============================================================================
--- stable/10/sys/amd64/linux/linux_support.s   Sat Jan  9 18:17:58 2016        
(r293603)
+++ stable/10/sys/amd64/linux/linux_support.s   Sat Jan  9 18:19:18 2016        
(r293604)
@@ -45,9 +45,9 @@ ENTRY(futex_xchgl)
        movq    $VM_MAXUSER_ADDRESS-4,%rax
        cmpq    %rax,%rsi
        ja      futex_fault
-       xchgq   %rdi,(%rsi)
-       movq    %rdi,(%rdx)
-       xorq    %rax,%rax
+       xchgl   %edi,(%rsi)
+       movl    %edi,(%rdx)
+       xorl    %eax,%eax
        movq    %rax,PCB_ONFAULT(%r8)
        ret
 
@@ -60,9 +60,9 @@ ENTRY(futex_addl)
 #ifdef SMP
        lock
 #endif
-       xaddq   %rdi,(%rsi)
-       movq    %rdi,(%rdx)
-       xorq    %rax,%rax
+       xaddl   %edi,(%rsi)
+       movl    %edi,(%rdx)
+       xorl    %eax,%eax
        movq    %rax,PCB_ONFAULT(%r8)
        ret
 
@@ -72,16 +72,16 @@ ENTRY(futex_orl)
        movq    $VM_MAXUSER_ADDRESS-4,%rax
        cmpq    %rax,%rsi
        ja      futex_fault
-       movq    (%rsi),%rax
-1:     movq    %rax,%rcx
-       orq     %rdi,%rcx
+       movl    (%rsi),%eax
+1:     movl    %eax,%ecx
+       orl     %edi,%ecx
 #ifdef SMP
        lock
 #endif
-       cmpxchgq %rcx,(%rsi)
+       cmpxchgl %ecx,(%rsi)
        jnz     1b
-       movq    %rax,(%rdx)
-       xorq    %rax,%rax
+       movl    %eax,(%rdx)
+       xorl    %eax,%eax
        movq    %rax,PCB_ONFAULT(%r8)
        ret
 
@@ -91,16 +91,16 @@ ENTRY(futex_andl)
        movq    $VM_MAXUSER_ADDRESS-4,%rax
        cmpq    %rax,%rsi
        ja      futex_fault
-       movq    (%rsi),%rax
-1:     movq    %rax,%rcx
-       andq    %rdi,%rcx
+       movl    (%rsi),%eax
+1:     movl    %eax,%ecx
+       andl    %edi,%ecx
 #ifdef SMP
        lock
 #endif
-       cmpxchgq %rcx,(%rsi)
+       cmpxchgl %ecx,(%rsi)
        jnz     1b
-       movq    %rax,(%rdx)
-       xorq    %rax,%rax
+       movl    %eax,(%rdx)
+       xorl    %eax,%eax
        movq    %rax,PCB_ONFAULT(%r8)
        ret
 
@@ -110,15 +110,15 @@ ENTRY(futex_xorl)
        movq    $VM_MAXUSER_ADDRESS-4,%rax
        cmpq    %rax,%rsi
        ja      futex_fault
-       movq    (%rsi),%rax
-1:     movq    %rax,%rcx
-       xorq    %rdi,%rcx
+       movl    (%rsi),%eax
+1:     movl    %eax,%ecx
+       xorl    %edi,%ecx
 #ifdef SMP
        lock
 #endif
-       cmpxchgq %rcx,(%rsi)
+       cmpxchgl %ecx,(%rsi)
        jnz     1b
-       movq    %rax,(%rdx)
-       xorq    %rax,%rax
+       movl    %eax,(%rdx)
+       xorl    %eax,%eax
        movq    %rax,PCB_ONFAULT(%r8)
        ret
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "[email protected]"

Reply via email to