[PUSHED] riscv: don't do misaligned access with !_HAVE_HW_MISALIGNED_ACCESS

Message ID 20260522130313.930052-1-kito.cheng@sifive.com
State New
Headers
Series [PUSHED] riscv: don't do misaligned access with !_HAVE_HW_MISALIGNED_ACCESS |

Commit Message

Kito Cheng May 22, 2026, 1:03 p.m. UTC
  Respsect _HAVE_HW_MISALIGNED_ACCESS for riscv string functions
---
 newlib/libc/machine/riscv/rv_string.h | 3 ++-
 newlib/libc/machine/riscv/strcmp.S    | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
  

Patch

diff --git a/newlib/libc/machine/riscv/rv_string.h b/newlib/libc/machine/riscv/rv_string.h
index dc2a26daf..754e2b577 100644
--- a/newlib/libc/machine/riscv/rv_string.h
+++ b/newlib/libc/machine/riscv/rv_string.h
@@ -13,6 +13,7 @@ 
 #define _RV_STRING_H
 
 #include <stdbool.h>
+#include "newlib.h"
 #include "xlenint.h"
 
 #if __riscv_zbb
@@ -67,7 +68,7 @@  static __inline char *__libc_strcpy(char *dst, const char *src, bool ret_start)
   char *dst0 = dst;
 
 #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__)
-#if !(__riscv_misaligned_slow || __riscv_misaligned_fast)
+#if !_HAVE_HW_MISALIGNED_ACCESS
   int misaligned = ((uintxlen_t)dst | (uintxlen_t)src) & (sizeof (uintxlen_t) - 1);
   if (__builtin_expect(!misaligned, 1))
 #endif
diff --git a/newlib/libc/machine/riscv/strcmp.S b/newlib/libc/machine/riscv/strcmp.S
index 18ac9a981..49b999c0f 100644
--- a/newlib/libc/machine/riscv/strcmp.S
+++ b/newlib/libc/machine/riscv/strcmp.S
@@ -10,6 +10,7 @@ 
 */
 
 #include <sys/asm.h>
+#include "newlib.h"
 
 .text
 .globl strcmp
@@ -36,7 +37,7 @@  strcmp:
 #else
   li    t2, -1
 
-#if !(__riscv_misaligned_slow || __riscv_misaligned_fast)
+#if !_HAVE_HW_MISALIGNED_ACCESS
   or    a4, a0, a1
   and   a4, a4, SZREG-1
   bnez  a4, .Lmisaligned