Skip to content

Commit

Permalink
powerpc: Fix string library functions
Browse files Browse the repository at this point in the history
The powerpc strncmp implementation does not correctly handle a zero
length, despite the claim in 0119536
(Add hand-coded assembly strcmp).

Additionally, all the length arguments are size_t, not int, so use
PPC_LCMPI and eq instead of cmpwi and le throughout.

Signed-off-by: Andreas Schwab <[email protected]>
Acked-by: Paul Mackerras <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
  • Loading branch information
andreas-schwab authored and ozbenh committed May 21, 2010
1 parent 7358650 commit ca5d067
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions arch/powerpc/lib/string.S
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ _GLOBAL(strcpy)
/* This clears out any unused part of the destination buffer,
just as the libc version does. -- paulus */
_GLOBAL(strncpy)
cmpwi 0,r5,0
PPC_LCMPI 0,r5,0
beqlr
mtctr r5
addi r6,r3,-1
Expand All @@ -39,7 +39,7 @@ _GLOBAL(strncpy)
bdnzf 2,1b /* dec ctr, branch if ctr != 0 && !cr0.eq */
bnelr /* if we didn't hit a null char, we're done */
mfctr r5
cmpwi 0,r5,0 /* any space left in destination buffer? */
PPC_LCMPI 0,r5,0 /* any space left in destination buffer? */
beqlr /* we know r0 == 0 here */
2: stbu r0,1(r6) /* clear it out if so */
bdnz 2b
Expand Down Expand Up @@ -70,8 +70,8 @@ _GLOBAL(strcmp)
blr

_GLOBAL(strncmp)
PPC_LCMPI r5,0
ble- 2f
PPC_LCMPI 0,r5,0
beq- 2f
mtctr r5
addi r5,r3,-1
addi r4,r4,-1
Expand All @@ -94,8 +94,8 @@ _GLOBAL(strlen)
blr

_GLOBAL(memcmp)
cmpwi 0,r5,0
ble- 2f
PPC_LCMPI 0,r5,0
beq- 2f
mtctr r5
addi r6,r3,-1
addi r4,r4,-1
Expand All @@ -108,8 +108,8 @@ _GLOBAL(memcmp)
blr

_GLOBAL(memchr)
cmpwi 0,r5,0
ble- 2f
PPC_LCMPI 0,r5,0
beq- 2f
mtctr r5
addi r3,r3,-1
1: lbzu r0,1(r3)
Expand Down

0 comments on commit ca5d067

Please sign in to comment.