diff options
-rw-r--r-- | arch/parisc/lib/lusercopy.S | 27 |
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 |
220 | 20: ldb,ma 1(srcspc,src),t1 | 220 | 20: ldb,ma 1(srcspc,src),t1 |
221 | 21: stb,ma t1,1(dstspc,dst) | 221 | 21: 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 |
271 | 20: ldb,ma 1(srcspc,src),t1 | 272 | 20: ldb,ma 1(srcspc,src),t1 |
272 | 21: stb,ma t1,1(dstspc,dst) | 273 | 21: 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 | ||
283 | 10: ldw 0(srcspc,src),t1 | 284 | 10: 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 |
328 | 20: ldb 0(srcspc,src),t1 | 329 | 20: ldb 0(srcspc,src),t1 |
329 | ldo 1(src),src | 330 | ldo 1(src),src |
330 | 21: stb,ma t1,1(dstspc,dst) | 331 | 21: 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 | ||
368 | 1: ldw,ma 4(srcspc,src), a3 | 369 | 1: ldw,ma 4(srcspc,src), a3 |
@@ -376,7 +377,7 @@ ENTRY_CFI(pa_memcpy) | |||
376 | 1: ldw,ma 4(srcspc,src), a3 | 377 | 1: 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: |
381 | 1: ldw,ma 4(srcspc,src), a0 | 382 | 1: 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) | |||
402 | 1: stw,ma t0, 4(dstspc,dst) | 403 | 1: 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: |
439 | 10: b .Lcopy_done | 440 | b .Lcopy_done |
440 | std,ma t1,8(dstspc,dst) | 441 | 10: 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: |
445 | 10: b .Lcopy_done | 446 | b .Lcopy_done |
446 | stw,ma t1,4(dstspc,dst) | 447 | 10: 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 |