Skip to content

Commit

Permalink
Arm32: correct string.h functions for "int" -> "unsigned char" conver…
Browse files Browse the repository at this point in the history
…sion

While Arm64 does so uniformly, for Arm32 only strchr() currently handles
this properly. Add the necessary conversion also to strrchr(), memchr(),
and memset().

As to the placement in memset(): Putting the new insn at the beginning
of the function is apparently deemed more "obvious". It could be placed
later, as the code reachable without ever making it to the "1" label
only ever does byte stores.

Signed-off-by: Jan Beulich <[email protected]>
Reviewed-by: Bertrand Marquis <[email protected]>
  • Loading branch information
jbeulich authored and Julien Grall committed Aug 25, 2022
1 parent c3bd0b8 commit cbb35e7
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 0 deletions.
1 change: 1 addition & 0 deletions xen/arch/arm/arm32/lib/memchr.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
.text
.align 5
ENTRY(memchr)
and r1, r1, #0xff
1: subs r2, r2, #1
bmi 2f
ldrb r3, [r0], #1
Expand Down
1 change: 1 addition & 0 deletions xen/arch/arm/arm32/lib/memset.S
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
.align 5

ENTRY(memset)
and r1, r1, #0xff
ands r3, r0, #3 @ 1 unaligned?
mov ip, r0 @ preserve r0 as return value
bne 6f @ 1
Expand Down
1 change: 1 addition & 0 deletions xen/arch/arm/arm32/lib/strrchr.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
.text
.align 5
ENTRY(strrchr)
and r1, r1, #0xff
mov r3, #0
1: ldrb r2, [r0], #1
teq r2, r1
Expand Down

0 comments on commit cbb35e7

Please sign in to comment.