Hi, On Mon, Feb 20, 2017 at 11:42:58AM +0800, jianchao.wang wrote: > l_exc_copy() is usually to be used like this: > 1 EXC( LOAD t0, UNIT(0)(src), l_exc) > 2 EXC( LOAD t1, UNIT(1)(src), l_exc_copy) > 3 EXC( LOAD t2, UNIT(2)(src), l_exc_copy) > 4 EXC( LOAD t3, UNIT(3)(src), l_exc_copy) > When the fault occurs on row 4, l_exc_copy will get the bad > addr through THREAD_BUADDR(), complete the copy of row > 1,2 and 3, and then return the len that has not been copied. > l_exc_copy assumes the src is smaller thann the bad addr.It will > increase src by 1 until reach the bad addr. > > octeon-memcpy.S use the l_exc_copy with wrong way which make src > could be greater than bad addr. We will fix it in this patch. > We add the max offset of LOAD to 15 here to fix the issue without > adding new commands . Howerver, the side effect is that, when LOAD > fails in few case, l_exc_copy has to copy more. Is this trying to fix the same issue as the following patch? https://patchwork.linux-mips.org/patch/14978/ Thanks James
Attachment:
signature.asc
Description: Digital signature