diff options
author | Song Gao <gaosong@loongson.cn> | 2023-05-04 20:28:09 +0800 |
---|---|---|
committer | Song Gao <gaosong@loongson.cn> | 2023-05-06 11:19:50 +0800 |
commit | 4854bbbe015ccb07959103b1fd816581f00f4397 (patch) | |
tree | 978494bc8e1568efcce2909b6ceb7d5a9d502cf6 /target/loongarch/translate.c | |
parent | 29bb5d727ff8434218ad03a16a4be24a5eee59bd (diff) | |
download | qemu-4854bbbe015ccb07959103b1fd816581f00f4397.zip qemu-4854bbbe015ccb07959103b1fd816581f00f4397.tar.gz qemu-4854bbbe015ccb07959103b1fd816581f00f4397.tar.bz2 |
target/loongarch: Use {set/get}_gpr replace to cpu_fpr
Introduce set_fpr() and get_fpr() and remove cpu_fpr.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Song Gao <gaosong@loongson.cn>
Message-Id: <20230504122810.4094787-44-gaosong@loongson.cn>
Diffstat (limited to 'target/loongarch/translate.c')
-rw-r--r-- | target/loongarch/translate.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/target/loongarch/translate.c b/target/loongarch/translate.c index c04ed75..ae53f5e 100644 --- a/target/loongarch/translate.c +++ b/target/loongarch/translate.c @@ -23,7 +23,6 @@ /* Global register indices */ TCGv cpu_gpr[32], cpu_pc; static TCGv cpu_lladdr, cpu_llval; -TCGv_i64 cpu_fpr[32]; #include "exec/gen-icount.h" @@ -191,6 +190,20 @@ static void gen_set_gpr(int reg_num, TCGv t, DisasExtend dst_ext) } } +static TCGv get_fpr(DisasContext *ctx, int reg_num) +{ + TCGv t = tcg_temp_new(); + tcg_gen_ld_i64(t, cpu_env, + offsetof(CPULoongArchState, fpr[reg_num].vreg.D(0))); + return t; +} + +static void set_fpr(int reg_num, TCGv val) +{ + tcg_gen_st_i64(val, cpu_env, + offsetof(CPULoongArchState, fpr[reg_num].vreg.D(0))); +} + #include "decode-insns.c.inc" #include "insn_trans/trans_arith.c.inc" #include "insn_trans/trans_shift.c.inc" @@ -285,11 +298,6 @@ void loongarch_translate_init(void) regnames[i]); } - for (i = 0; i < 32; i++) { - int off = offsetof(CPULoongArchState, fpr[i]); - cpu_fpr[i] = tcg_global_mem_new_i64(cpu_env, off, fregnames[i]); - } - cpu_pc = tcg_global_mem_new(cpu_env, offsetof(CPULoongArchState, pc), "pc"); cpu_lladdr = tcg_global_mem_new(cpu_env, offsetof(CPULoongArchState, lladdr), "lladdr"); |