From 0d40aeb9b85db87e4a502a530db5b89027d1a3b6 Mon Sep 17 00:00:00 2001
From: Kito Cheng <kito.cheng@sifive.com>
Date: Thu, 29 Jun 2023 16:13:45 +0800
Subject: [PATCH] RISC-V: Handle rouding mode correctly on zfinx

Zfinx has provide fcsr like F, so rouding mode should use fcsr instead
of `soft` fenv.

libgcc/ChangeLog:

	* config/riscv/sfp-machine.h (FP_INIT_ROUNDMODE): Check zfinx.
	(FP_HANDLE_EXCEPTIONS): Ditto.
---
 libgcc/config/riscv/sfp-machine.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libgcc/config/riscv/sfp-machine.h b/libgcc/config/riscv/sfp-machine.h
index ded594d75d87..38e2817bffa2 100644
--- a/libgcc/config/riscv/sfp-machine.h
+++ b/libgcc/config/riscv/sfp-machine.h
@@ -113,7 +113,7 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
 
 #define _FP_TININESS_AFTER_ROUNDING 1
 
-#ifdef __riscv_flen
+#if defined(__riscv_flen) || defined(__riscv_zfinx)
 #define FP_INIT_ROUNDMODE			\
 do {						\
   __asm__ volatile ("frrm %0" : "=r" (_frm));	\
-- 
GitLab