diff --git a/src/system/libroot/posix/string/arch/arm/arch_string.S b/src/system/libroot/posix/string/arch/arm/arch_string.S index 5826ce9dea..7ff32e5ec1 100644 --- a/src/system/libroot/posix/string/arch/arm/arch_string.S +++ b/src/system/libroot/posix/string/arch/arm/arch_string.S @@ -115,16 +115,16 @@ FUNCTION(memcpy): msr CPSR_f, r12 // move into NZCV fields in CPSR // move as many bytes as necessary to get the dst aligned - ldrvsb r3, [r1], #1 // V set - ldrcsh r4, [r1], #2 // C set + ldrbvs r3, [r1], #1 // V set + ldrhcs r4, [r1], #2 // C set ldreq r5, [r1], #4 // Z set - strvsb r3, [r0], #1 - strcsh r4, [r0], #2 + strbvs r3, [r0], #1 + strhcs r4, [r0], #2 streq r5, [r0], #4 - ldmmiia r1!, {r3-r4} // N set - stmmiia r0!, {r3-r4} + ldmiami r1!, {r3-r4} // N set + stmiami r0!, {r3-r4} // fix the remaining len sub r2, r2, r12, lsr #28