__copy_user_zeroing

原创文章,转载请注明出处.转载自: Li Haifeng's Blog
本文链接地址: __copy_user_zeroing

2.6内核和2.4相比,又加入了一个异常修复地址
#define __copy_user_zeroing(to,from,size)              
do {                                  
   int __d0, __d1, __d2;                      
   __asm__ __volatile__(                      
       ”   cmp $7,%0n”                  
       ”   jbe 1fn”                  
       ”   movl %1,%0n”                  
       ”   negl %0n”                  
       ”   andl $7,%0n”                  
       ”   subl %0,%3n”                  
       “4:   rep; movsbn”                  
       ”   movl %3,%0n”                  
       ”   shrl $2,%0n”                  
       ”   andl $3,%3n”                  
       ”   .align 2,0x90n”              
       “0:   rep; movsln”                  
       ”   movl %3,%0n”                  
       “1:   rep; movsbn”                   也是字节数
       “2:n”                          
       “.section .fixup,”ax”n”              
       “5:   addl %3,%0n”                  
       ”   jmp 6fn”                  
       “3:   lea 0(%3,%0,4),%0n”               计算复制失败后剩余的字节数
       “6:   pushl %0n”                  
       ”   pushl %%eaxn”                  
       ”   xorl %%eax,%%eaxn”               将eax清零
       ”   rep; stosbn”                    将AL的值复制到esx:edi中
       ”   popl %%eaxn”                  
       ”   popl %0n”                  
       ”   jmp 2bn”                  
       “.previousn”                      
       “.section __ex_table,”a”n”              
       ”   .align 4n”                  
       ”   .long 4b,5bn”                  
       ”   .long 0b,3bn”                  
       ”   .long 1b,6bn”                  
       “.previous”                      
       : “=&c”(size), “=&D” (__d0), “=&S” (__d1), “=r”(__d2)  
       : “3”(size), “0”(size), “1”(to), “2”(from)      
       : “memory”);                      
} while (0)




From Li Haifeng's Blog, post __copy_user_zeroing

Post Footer automatically generated by wp-posturl plugin for wordpress.

分享到: