mirror of https://github.com/xemu-project/xemu.git
target/arm/vfp_helper: Restrict the SoftFloat use to TCG
This code is specific to the SoftFloat floating-point implementation, which is only used by TCG. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20190701132516.26392-18-philmd@redhat.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
0c6ad94809
commit
4a15527c9f
|
@ -18,17 +18,20 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "qemu/log.h"
|
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
#include "exec/helper-proto.h"
|
#include "exec/helper-proto.h"
|
||||||
#include "fpu/softfloat.h"
|
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
|
#ifdef CONFIG_TCG
|
||||||
|
#include "qemu/log.h"
|
||||||
|
#include "fpu/softfloat.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* VFP support. We follow the convention used for VFP instructions:
|
/* VFP support. We follow the convention used for VFP instructions:
|
||||||
Single precision routines have a "s" suffix, double precision a
|
Single precision routines have a "s" suffix, double precision a
|
||||||
"d" suffix. */
|
"d" suffix. */
|
||||||
|
|
||||||
|
#ifdef CONFIG_TCG
|
||||||
|
|
||||||
/* Convert host exception flags to vfp form. */
|
/* Convert host exception flags to vfp form. */
|
||||||
static inline int vfp_exceptbits_from_host(int host_bits)
|
static inline int vfp_exceptbits_from_host(int host_bits)
|
||||||
{
|
{
|
||||||
|
@ -145,6 +148,19 @@ static void vfp_set_fpscr_to_host(CPUARMState *env, uint32_t val)
|
||||||
set_float_exception_flags(0, &env->vfp.standard_fp_status);
|
set_float_exception_flags(0, &env->vfp.standard_fp_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static uint32_t vfp_get_fpscr_from_host(CPUARMState *env)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void vfp_set_fpscr_to_host(CPUARMState *env, uint32_t val)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t HELPER(vfp_get_fpscr)(CPUARMState *env)
|
uint32_t HELPER(vfp_get_fpscr)(CPUARMState *env)
|
||||||
{
|
{
|
||||||
uint32_t i, fpscr;
|
uint32_t i, fpscr;
|
||||||
|
@ -210,6 +226,8 @@ void vfp_set_fpscr(CPUARMState *env, uint32_t val)
|
||||||
HELPER(vfp_set_fpscr)(env, val);
|
HELPER(vfp_set_fpscr)(env, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TCG
|
||||||
|
|
||||||
#define VFP_HELPER(name, p) HELPER(glue(glue(vfp_,name),p))
|
#define VFP_HELPER(name, p) HELPER(glue(glue(vfp_,name),p))
|
||||||
|
|
||||||
#define VFP_BINOP(name) \
|
#define VFP_BINOP(name) \
|
||||||
|
@ -1303,3 +1321,5 @@ float64 HELPER(frint64_d)(float64 f, void *fpst)
|
||||||
{
|
{
|
||||||
return frint_d(f, fpst, 64);
|
return frint_d(f, fpst, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue