--- zzzz-none-000/linux-2.6.19.2/include/asm-i386/uaccess.h 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/include/asm-i386/uaccess.h 2007-01-19 14:42:56.000000000 +0000 @@ -9,6 +9,8 @@ #include #include #include +#include +#include #define VERIFY_READ 0 #define VERIFY_WRITE 1 @@ -29,7 +31,8 @@ #define get_ds() (KERNEL_DS) #define get_fs() (current_thread_info()->addr_limit) -#define set_fs(x) (current_thread_info()->addr_limit = (x)) +void __set_fs(mm_segment_t x, int cpu); +void set_fs(mm_segment_t x); #define segment_eq(a,b) ((a).seg == (b).seg) @@ -280,9 +283,12 @@ #define __put_user_u64(x, addr, err) \ __asm__ __volatile__( \ - "1: movl %%eax,0(%2)\n" \ - "2: movl %%edx,4(%2)\n" \ + " movw %w5,%%ds\n" \ + "1: movl %%eax,%%ds:0(%2)\n" \ + "2: movl %%edx,%%ds:4(%2)\n" \ "3:\n" \ + " pushl %%ss\n" \ + " popl %%ds\n" \ ".section .fixup,\"ax\"\n" \ "4: movl %3,%0\n" \ " jmp 3b\n" \ @@ -293,7 +299,8 @@ " .long 2b,4b\n" \ ".previous" \ : "=r"(err) \ - : "A" (x), "r" (addr), "i"(-EFAULT), "0"(err)) + : "A" (x), "r" (addr), "i"(-EFAULT), "0"(err), \ + "r"(__USER_DS)) #ifdef CONFIG_X86_WP_WORKS_OK @@ -332,8 +339,11 @@ */ #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret) \ __asm__ __volatile__( \ - "1: mov"itype" %"rtype"1,%2\n" \ + " movw %w5,%%ds\n" \ + "1: mov"itype" %"rtype"1,%%ds:%2\n" \ "2:\n" \ + " pushl %%ss\n" \ + " popl %%ds\n" \ ".section .fixup,\"ax\"\n" \ "3: movl %3,%0\n" \ " jmp 2b\n" \ @@ -343,7 +353,8 @@ " .long 1b,3b\n" \ ".previous" \ : "=r"(err) \ - : ltype (x), "m"(__m(addr)), "i"(errret), "0"(err)) + : ltype (x), "m"(__m(addr)), "i"(errret), "0"(err), \ + "r"(__USER_DS)) #define __get_user_nocheck(x,ptr,size) \ @@ -371,8 +382,11 @@ #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret) \ __asm__ __volatile__( \ - "1: mov"itype" %2,%"rtype"1\n" \ + " movw %w5,%%ds\n" \ + "1: mov"itype" %%ds:%2,%"rtype"1\n" \ "2:\n" \ + " pushl %%ss\n" \ + " popl %%ds\n" \ ".section .fixup,\"ax\"\n" \ "3: movl %3,%0\n" \ " xor"itype" %"rtype"1,%"rtype"1\n" \ @@ -383,7 +397,7 @@ " .long 1b,3b\n" \ ".previous" \ : "=r"(err), ltype (x) \ - : "m"(__m(addr)), "i"(errret), "0"(err)) + : "m"(__m(addr)), "i"(errret), "0"(err), "r"(__USER_DS)) unsigned long __must_check __copy_to_user_ll(void __user *to,