target/loongarch: Fix macros SET_FPU_* in cpu.h
The macros SET_FPU_* are used to set corresponding bits of fcsr. Unfortunately it forgets to set the result and it causes fcsr's "CAUSE" never being updated. This patch is to fix this bug. Signed-off-by: Qi Hu <huqi@loongson.cn> Reviewed-by: Song Gao <gaosong@loongson.cn> Message-Id: <20220804132450.314329-1-huqi@loongson.cn> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
09ed077d7f
commit
00952d93e0
@ -47,11 +47,23 @@ FIELD(FCSR0, FLAGS, 16, 5)
|
||||
FIELD(FCSR0, CAUSE, 24, 5)
|
||||
|
||||
#define GET_FP_CAUSE(REG) FIELD_EX32(REG, FCSR0, CAUSE)
|
||||
#define SET_FP_CAUSE(REG, V) FIELD_DP32(REG, FCSR0, CAUSE, V)
|
||||
#define SET_FP_CAUSE(REG, V) \
|
||||
do { \
|
||||
(REG) = FIELD_DP32(REG, FCSR0, CAUSE, V); \
|
||||
} while (0)
|
||||
|
||||
#define GET_FP_ENABLES(REG) FIELD_EX32(REG, FCSR0, ENABLES)
|
||||
#define SET_FP_ENABLES(REG, V) FIELD_DP32(REG, FCSR0, ENABLES, V)
|
||||
#define SET_FP_ENABLES(REG, V) \
|
||||
do { \
|
||||
(REG) = FIELD_DP32(REG, FCSR0, ENABLES, V); \
|
||||
} while (0)
|
||||
|
||||
#define GET_FP_FLAGS(REG) FIELD_EX32(REG, FCSR0, FLAGS)
|
||||
#define SET_FP_FLAGS(REG, V) FIELD_DP32(REG, FCSR0, FLAGS, V)
|
||||
#define SET_FP_FLAGS(REG, V) \
|
||||
do { \
|
||||
(REG) = FIELD_DP32(REG, FCSR0, FLAGS, V); \
|
||||
} while (0)
|
||||
|
||||
#define UPDATE_FP_FLAGS(REG, V) \
|
||||
do { \
|
||||
(REG) |= FIELD_DP32(0, FCSR0, FLAGS, V); \
|
||||
|
Loading…
Reference in New Issue
Block a user