non-temporal copyin/copyout?

Andrew Gallatin gallatin at cs.duke.edu
Sat Feb 18 14:04:20 PST 2006


Joseph Koshy writes:
 > The code in question "/usr/src/sys/amd64/amd64/support.S" has:
 >     216         ENTRY(copyout)
 >     ...
 >     249         shrq    $3,%rcx
 >     250         cld
 >     251         rep
 >     252         movsq
 >     253         movb    %dl,%cl
 >     254         andb    $7,%cl
 >     255         rep
 >     256         movsb
 > 
 > i.e., it doesn't handle the case where the `from_kernel'
 > or `to_user' addresses are misaligned to their natural
 > boundaries.  IIRC `rep movsq' works best if both the source
 > and destination addresses are 8-byte aligned.
 > 
 > If we are going to use `movntq' then we may as well take
 > care of alignment issues too.

Is this just a matter as adding code to get the bulk
of the copy aligned before entering the tight loop?
If you can do a patch, I'd be happy to test it.

Drew


More information about the freebsd-amd64 mailing list