mirror of https://github.com/xemu-project/xemu.git
SH4: final conversion to TCG
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5125 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
cc4ba6a982
commit
7fdf924fdd
|
@ -1427,10 +1427,8 @@ case "$target_cpu" in
|
||||||
;;
|
;;
|
||||||
sh4|sh4eb)
|
sh4|sh4eb)
|
||||||
echo "TARGET_ARCH=sh4" >> $config_mak
|
echo "TARGET_ARCH=sh4" >> $config_mak
|
||||||
echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
|
|
||||||
echo "#define TARGET_ARCH \"sh4\"" >> $config_h
|
echo "#define TARGET_ARCH \"sh4\"" >> $config_h
|
||||||
echo "#define TARGET_SH4 1" >> $config_h
|
echo "#define TARGET_SH4 1" >> $config_h
|
||||||
echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
|
|
||||||
bflt="yes"
|
bflt="yes"
|
||||||
;;
|
;;
|
||||||
sparc)
|
sparc)
|
||||||
|
|
|
@ -37,6 +37,7 @@ DEF_HELPER(uint32_t, helper_float_FT, (uint32_t))
|
||||||
DEF_HELPER(uint64_t, helper_float_DT, (uint32_t))
|
DEF_HELPER(uint64_t, helper_float_DT, (uint32_t))
|
||||||
DEF_HELPER(uint32_t, helper_fmul_FT, (uint32_t, uint32_t))
|
DEF_HELPER(uint32_t, helper_fmul_FT, (uint32_t, uint32_t))
|
||||||
DEF_HELPER(uint64_t, helper_fmul_DT, (uint64_t, uint64_t))
|
DEF_HELPER(uint64_t, helper_fmul_DT, (uint64_t, uint64_t))
|
||||||
|
DEF_HELPER(uint32_t, helper_fneg_T, (uint32_t))
|
||||||
DEF_HELPER(uint32_t, helper_fsub_FT, (uint32_t, uint32_t))
|
DEF_HELPER(uint32_t, helper_fsub_FT, (uint32_t, uint32_t))
|
||||||
DEF_HELPER(uint64_t, helper_fsub_DT, (uint64_t, uint64_t))
|
DEF_HELPER(uint64_t, helper_fsub_DT, (uint64_t, uint64_t))
|
||||||
DEF_HELPER(uint32_t, helper_fsqrt_FT, (uint32_t))
|
DEF_HELPER(uint32_t, helper_fsqrt_FT, (uint32_t))
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* SH4 emulation
|
|
||||||
*
|
|
||||||
* Copyright (c) 2005 Samuel Tardieu
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
#include "exec.h"
|
|
||||||
|
|
||||||
void OPPROTO op_fneg_frN(void)
|
|
||||||
{
|
|
||||||
env->fregs[PARAM1] = float32_chs(env->fregs[PARAM1]);
|
|
||||||
RETURN();
|
|
||||||
}
|
|
||||||
|
|
|
@ -489,6 +489,12 @@ uint64_t helper_fmul_DT(uint64_t t0, uint64_t t1)
|
||||||
return *(uint64_t*)(&ret);
|
return *(uint64_t*)(&ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t helper_fneg_T(uint32_t t0)
|
||||||
|
{
|
||||||
|
float32 ret = float32_chs(*(float32*)&t0);
|
||||||
|
return *(uint32_t*)(&ret);
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t helper_fsqrt_FT(uint32_t t0)
|
uint32_t helper_fsqrt_FT(uint32_t t0)
|
||||||
{
|
{
|
||||||
float32 ret = float32_sqrt(*(float32*)&t0, &env->fp_status);
|
float32 ret = float32_sqrt(*(float32*)&t0, &env->fp_status);
|
||||||
|
|
|
@ -1593,7 +1593,13 @@ void _decode_opc(DisasContext * ctx)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case 0xf04d: /* fneg FRn/DRn - FPSCR: Nothing */
|
case 0xf04d: /* fneg FRn/DRn - FPSCR: Nothing */
|
||||||
gen_op_fneg_frN(FREG(B11_8));
|
{
|
||||||
|
TCGv fp = tcg_temp_new(TCG_TYPE_I32);
|
||||||
|
gen_load_fpr32(fp, FREG(B11_8));
|
||||||
|
tcg_gen_helper_1_1(helper_fneg_T, fp, fp);
|
||||||
|
gen_store_fpr32(fp, FREG(B11_8));
|
||||||
|
tcg_temp_free(fp);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
case 0xf05d: /* fabs FRn/DRn */
|
case 0xf05d: /* fabs FRn/DRn */
|
||||||
if (ctx->fpscr & FPSCR_PR) {
|
if (ctx->fpscr & FPSCR_PR) {
|
||||||
|
|
Loading…
Reference in New Issue