diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2011-05-25 14:51:48 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2011-06-22 15:01:31 +0000 |
commit | ae1857eca22b58d430941730bd097e95a484652c (patch) | |
tree | 9ab2f0bc829beedd76af56b037ea694a9cb08e29 /target-arm/translate.c | |
parent | 5aaebd13da29a7157b757590284664dc42ea6a69 (diff) |
target-arm: Make VFP binop helpers take pointer to fpstatus, not CPUState
Make the VFP binop helper functions take a pointer to the fp status, not
the entire CPUState. This will allow us to use them for Neon operations too.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target-arm/translate.c')
-rw-r--r-- | target-arm/translate.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/target-arm/translate.c b/target-arm/translate.c index e9d1549224..9ed747f36d 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -909,10 +909,13 @@ static TCGv_ptr get_fpstatus_ptr(int neon) #define VFP_OP2(name) \ static inline void gen_vfp_##name(int dp) \ { \ - if (dp) \ - gen_helper_vfp_##name##d(cpu_F0d, cpu_F0d, cpu_F1d, cpu_env); \ - else \ - gen_helper_vfp_##name##s(cpu_F0s, cpu_F0s, cpu_F1s, cpu_env); \ + TCGv_ptr fpst = get_fpstatus_ptr(0); \ + if (dp) { \ + gen_helper_vfp_##name##d(cpu_F0d, cpu_F0d, cpu_F1d, fpst); \ + } else { \ + gen_helper_vfp_##name##s(cpu_F0s, cpu_F0s, cpu_F1s, fpst); \ + } \ + tcg_temp_free_ptr(fpst); \ } VFP_OP2(add) @@ -925,11 +928,13 @@ VFP_OP2(div) static inline void gen_vfp_F1_mul(int dp) { /* Like gen_vfp_mul() but put result in F1 */ + TCGv_ptr fpst = get_fpstatus_ptr(0); if (dp) { - gen_helper_vfp_muld(cpu_F1d, cpu_F0d, cpu_F1d, cpu_env); + gen_helper_vfp_muld(cpu_F1d, cpu_F0d, cpu_F1d, fpst); } else { - gen_helper_vfp_muls(cpu_F1s, cpu_F0s, cpu_F1s, cpu_env); + gen_helper_vfp_muls(cpu_F1s, cpu_F0s, cpu_F1s, fpst); } + tcg_temp_free_ptr(fpst); } static inline void gen_vfp_F1_neg(int dp) |