From a375c9ac38e72dc5b0a6710c8da89245d154b435 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 9 May 2019 12:40:03 +0200 Subject: [PATCH] libc: fix return value for arm64 memset() and memove() --- sys/src/ape/lib/ap/arm64/memmove.s | 9 +++++---- sys/src/ape/lib/ap/arm64/memset.s | 9 +++++---- sys/src/libc/arm64/memmove.s | 9 +++++---- sys/src/libc/arm64/memset.s | 9 +++++---- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/sys/src/ape/lib/ap/arm64/memmove.s b/sys/src/ape/lib/ap/arm64/memmove.s index 0def257e9..b19b736da 100644 --- a/sys/src/ape/lib/ap/arm64/memmove.s +++ b/sys/src/ape/lib/ap/arm64/memmove.s @@ -8,6 +8,7 @@ TEXT memmove(SB), $-4 BLT _backward _forward: + MOV R0, R7 ADD R0, R2, R3 BIC $15, R2, R4 CBZ R4, _floop1 @@ -15,15 +16,15 @@ _forward: _floop16: MOVP (R1)16!, R5, R6 - MOVP R5, R6, (R0)16! - CMP R4, R0 + MOVP R5, R6, (R7)16! + CMP R4, R7 BNE _floop16 _floop1: - CMP R3, R0 + CMP R3, R7 BEQ _done MOVBU (R1)1!, R5 - MOVBU R5, (R0)1! + MOVBU R5, (R7)1! B _floop1 _done: diff --git a/sys/src/ape/lib/ap/arm64/memset.s b/sys/src/ape/lib/ap/arm64/memset.s index 0a7e1761f..486b32cb9 100644 --- a/sys/src/ape/lib/ap/arm64/memset.s +++ b/sys/src/ape/lib/ap/arm64/memset.s @@ -2,6 +2,7 @@ TEXT memset(SB), $-4 MOVBU c+8(FP), R1 MOVWU n+16(FP), R2 + MOV R0, R5 ADD R0, R2, R3 BIC $15, R2, R4 CBZ R4, _loop1 @@ -12,15 +13,15 @@ TEXT memset(SB), $-4 ORR R1<<32, R1 _loop16: - MOVP R1, R1, (R0)16! - CMP R4, R0 + MOVP R1, R1, (R5)16! + CMP R4, R5 BNE _loop16 _loop1: - CMP R3, R0 + CMP R3, R5 BEQ _done - MOVBU R1, (R0)1! + MOVBU R1, (R5)1! B _loop1 _done: diff --git a/sys/src/libc/arm64/memmove.s b/sys/src/libc/arm64/memmove.s index 0def257e9..b19b736da 100644 --- a/sys/src/libc/arm64/memmove.s +++ b/sys/src/libc/arm64/memmove.s @@ -8,6 +8,7 @@ TEXT memmove(SB), $-4 BLT _backward _forward: + MOV R0, R7 ADD R0, R2, R3 BIC $15, R2, R4 CBZ R4, _floop1 @@ -15,15 +16,15 @@ _forward: _floop16: MOVP (R1)16!, R5, R6 - MOVP R5, R6, (R0)16! - CMP R4, R0 + MOVP R5, R6, (R7)16! + CMP R4, R7 BNE _floop16 _floop1: - CMP R3, R0 + CMP R3, R7 BEQ _done MOVBU (R1)1!, R5 - MOVBU R5, (R0)1! + MOVBU R5, (R7)1! B _floop1 _done: diff --git a/sys/src/libc/arm64/memset.s b/sys/src/libc/arm64/memset.s index 0a7e1761f..486b32cb9 100644 --- a/sys/src/libc/arm64/memset.s +++ b/sys/src/libc/arm64/memset.s @@ -2,6 +2,7 @@ TEXT memset(SB), $-4 MOVBU c+8(FP), R1 MOVWU n+16(FP), R2 + MOV R0, R5 ADD R0, R2, R3 BIC $15, R2, R4 CBZ R4, _loop1 @@ -12,15 +13,15 @@ TEXT memset(SB), $-4 ORR R1<<32, R1 _loop16: - MOVP R1, R1, (R0)16! - CMP R4, R0 + MOVP R1, R1, (R5)16! + CMP R4, R5 BNE _loop16 _loop1: - CMP R3, R0 + CMP R3, R5 BEQ _done - MOVBU R1, (R0)1! + MOVBU R1, (R5)1! B _loop1 _done: -- 2.44.0