
The softfloat (i.e. TCG) specific handling for the FPCR and FPSR is abstracted behind five functions: arm_set_default_fp_behaviours arm_set_ah_fp_behaviours vfp_get_fpsr_from_host vfp_clear_float_status_exc_flags vfp_set_fpsr_to_host Currently we rely on the first two calling softfloat functions that work even in a KVM-only compile because they're defined as inline in the softfloat header file, and we provide stub versions of the last three in arm/vfp_helper.c if CONFIG_TCG isn't defined. Move the softfloat-specific versions of these functions to tcg/vfp_helper.c, and provide the non-TCG stub versions in tcg-stubs.c. This lets us drop the softfloat header include and the last set of CONFIG_TCG ifdefs from arm/vfp_helper.c. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20250221190957.811948-4-peter.maydell@linaro.org
55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
/*
|
|
* QEMU ARM stubs for some TCG helper functions
|
|
*
|
|
* Copyright 2021 SUSE LLC
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "cpu.h"
|
|
#include "internals.h"
|
|
|
|
void write_v7m_exception(CPUARMState *env, uint32_t new_exc)
|
|
{
|
|
g_assert_not_reached();
|
|
}
|
|
|
|
void raise_exception_ra(CPUARMState *env, uint32_t excp, uint32_t syndrome,
|
|
uint32_t target_el, uintptr_t ra)
|
|
{
|
|
g_assert_not_reached();
|
|
}
|
|
/* Temporarily while cpu_get_tb_cpu_state() is still in common code */
|
|
void assert_hflags_rebuild_correctly(CPUARMState *env)
|
|
{
|
|
}
|
|
|
|
/* TLBI insns are only used by TCG, so we don't need to do anything for KVM */
|
|
void define_tlb_insn_regs(ARMCPU *cpu)
|
|
{
|
|
}
|
|
|
|
/* With KVM, we never use float_status, so these can be no-ops */
|
|
void arm_set_default_fp_behaviours(float_status *s)
|
|
{
|
|
}
|
|
|
|
void arm_set_ah_fp_behaviours(float_status *s)
|
|
{
|
|
}
|
|
|
|
uint32_t vfp_get_fpsr_from_host(CPUARMState *env)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void vfp_clear_float_status_exc_flags(CPUARMState *env)
|
|
{
|
|
}
|
|
|
|
void vfp_set_fpcr_to_host(CPUARMState *env, uint32_t val, uint32_t mask)
|
|
{
|
|
}
|