aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/parisc/lib/lusercopy.S27
1 files changed, 14 insertions, 13 deletions
diff --git a/arch/parisc/lib/lusercopy.S b/arch/parisc/lib/lusercopy.S
index f01188c044ee..85c28bb80fb7 100644
--- a/arch/parisc/lib/lusercopy.S
+++ b/arch/parisc/lib/lusercopy.S
@@ -201,7 +201,7 @@ ENTRY_CFI(pa_memcpy)
201 add dst,len,end 201 add dst,len,end
202 202
203 /* short copy with less than 16 bytes? */ 203 /* short copy with less than 16 bytes? */
204 cmpib,>>=,n 15,len,.Lbyte_loop 204 cmpib,COND(>>=),n 15,len,.Lbyte_loop
205 205
206 /* same alignment? */ 206 /* same alignment? */
207 xor src,dst,t0 207 xor src,dst,t0
@@ -216,7 +216,7 @@ ENTRY_CFI(pa_memcpy)
216 /* loop until we are 64-bit aligned */ 216 /* loop until we are 64-bit aligned */
217.Lalign_loop64: 217.Lalign_loop64:
218 extru dst,31,3,t1 218 extru dst,31,3,t1
219 cmpib,=,n 0,t1,.Lcopy_loop_16 219 cmpib,=,n 0,t1,.Lcopy_loop_16_start
22020: ldb,ma 1(srcspc,src),t1 22020: ldb,ma 1(srcspc,src),t1
22121: stb,ma t1,1(dstspc,dst) 22121: stb,ma t1,1(dstspc,dst)
222 b .Lalign_loop64 222 b .Lalign_loop64
@@ -225,6 +225,7 @@ ENTRY_CFI(pa_memcpy)
225 ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done) 225 ASM_EXCEPTIONTABLE_ENTRY(20b,.Lcopy_done)
226 ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done) 226 ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)
227 227
228.Lcopy_loop_16_start:
228 ldi 31,t0 229 ldi 31,t0
229.Lcopy_loop_16: 230.Lcopy_loop_16:
230 cmpb,COND(>>=),n t0,len,.Lword_loop 231 cmpb,COND(>>=),n t0,len,.Lword_loop
@@ -267,7 +268,7 @@ ENTRY_CFI(pa_memcpy)
267 /* loop until we are 32-bit aligned */ 268 /* loop until we are 32-bit aligned */
268.Lalign_loop32: 269.Lalign_loop32:
269 extru dst,31,2,t1 270 extru dst,31,2,t1
270 cmpib,=,n 0,t1,.Lcopy_loop_4 271 cmpib,=,n 0,t1,.Lcopy_loop_8
27120: ldb,ma 1(srcspc,src),t1 27220: ldb,ma 1(srcspc,src),t1
27221: stb,ma t1,1(dstspc,dst) 27321: stb,ma t1,1(dstspc,dst)
273 b .Lalign_loop32 274 b .Lalign_loop32
@@ -277,7 +278,7 @@ ENTRY_CFI(pa_memcpy)
277 ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done) 278 ASM_EXCEPTIONTABLE_ENTRY(21b,.Lcopy_done)
278 279
279 280
280.Lcopy_loop_4: 281.Lcopy_loop_8:
281 cmpib,COND(>>=),n 15,len,.Lbyte_loop 282 cmpib,COND(>>=),n 15,len,.Lbyte_loop
282 283
28310: ldw 0(srcspc,src),t1 28410: ldw 0(srcspc,src),t1
@@ -299,7 +300,7 @@ ENTRY_CFI(pa_memcpy)
299 ASM_EXCEPTIONTABLE_ENTRY(16b,.Lcopy_done) 300 ASM_EXCEPTIONTABLE_ENTRY(16b,.Lcopy_done)
300 ASM_EXCEPTIONTABLE_ENTRY(17b,.Lcopy_done) 301 ASM_EXCEPTIONTABLE_ENTRY(17b,.Lcopy_done)
301 302
302 b .Lcopy_loop_4 303 b .Lcopy_loop_8
303 ldo -16(len),len 304 ldo -16(len),len
304 305
305.Lbyte_loop: 306.Lbyte_loop:
@@ -324,7 +325,7 @@ ENTRY_CFI(pa_memcpy)
324.Lunaligned_copy: 325.Lunaligned_copy:
325 /* align until dst is 32bit-word-aligned */ 326 /* align until dst is 32bit-word-aligned */
326 extru dst,31,2,t1 327 extru dst,31,2,t1
327 cmpib,COND(=),n 0,t1,.Lcopy_dstaligned 328 cmpib,=,n 0,t1,.Lcopy_dstaligned
32820: ldb 0(srcspc,src),t1 32920: ldb 0(srcspc,src),t1
329 ldo 1(src),src 330 ldo 1(src),src
33021: stb,ma t1,1(dstspc,dst) 33121: stb,ma t1,1(dstspc,dst)
@@ -362,7 +363,7 @@ ENTRY_CFI(pa_memcpy)
362 cmpiclr,<> 1,t0,%r0 363 cmpiclr,<> 1,t0,%r0
363 b,n .Lcase1 364 b,n .Lcase1
364.Lcase0: 365.Lcase0:
365 cmpb,= %r0,len,.Lcda_finish 366 cmpb,COND(=) %r0,len,.Lcda_finish
366 nop 367 nop
367 368
3681: ldw,ma 4(srcspc,src), a3 3691: ldw,ma 4(srcspc,src), a3
@@ -376,7 +377,7 @@ ENTRY_CFI(pa_memcpy)
3761: ldw,ma 4(srcspc,src), a3 3771: ldw,ma 4(srcspc,src), a3
377 ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault) 378 ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)
378 ldo -1(len),len 379 ldo -1(len),len
379 cmpb,=,n %r0,len,.Ldo0 380 cmpb,COND(=),n %r0,len,.Ldo0
380.Ldo4: 381.Ldo4:
3811: ldw,ma 4(srcspc,src), a0 3821: ldw,ma 4(srcspc,src), a0
382 ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault) 383 ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcda_rdfault)
@@ -402,7 +403,7 @@ ENTRY_CFI(pa_memcpy)
4021: stw,ma t0, 4(dstspc,dst) 4031: stw,ma t0, 4(dstspc,dst)
403 ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done) 404 ASM_EXCEPTIONTABLE_ENTRY(1b,.Lcopy_done)
404 ldo -4(len),len 405 ldo -4(len),len
405 cmpb,<> %r0,len,.Ldo4 406 cmpb,COND(<>) %r0,len,.Ldo4
406 nop 407 nop
407.Ldo0: 408.Ldo0:
408 shrpw a2, a3, %sar, t0 409 shrpw a2, a3, %sar, t0
@@ -436,14 +437,14 @@ ENTRY_CFI(pa_memcpy)
436 /* fault exception fixup handlers: */ 437 /* fault exception fixup handlers: */
437#ifdef CONFIG_64BIT 438#ifdef CONFIG_64BIT
438.Lcopy16_fault: 439.Lcopy16_fault:
43910: b .Lcopy_done 440 b .Lcopy_done
440 std,ma t1,8(dstspc,dst) 44110: std,ma t1,8(dstspc,dst)
441 ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done) 442 ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done)
442#endif 443#endif
443 444
444.Lcopy8_fault: 445.Lcopy8_fault:
44510: b .Lcopy_done 446 b .Lcopy_done
446 stw,ma t1,4(dstspc,dst) 44710: stw,ma t1,4(dstspc,dst)
447 ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done) 448 ASM_EXCEPTIONTABLE_ENTRY(10b,.Lcopy_done)
448 449
449 .exit 450 .exit