diff options
Diffstat (limited to 'target-sparc')
-rw-r--r-- | target-sparc/exec.h | 5 | ||||
-rw-r--r-- | target-sparc/op_helper.c | 17 |
2 files changed, 21 insertions, 1 deletions
diff --git a/target-sparc/exec.h b/target-sparc/exec.h index db19da6f66..54c824ee87 100644 --- a/target-sparc/exec.h +++ b/target-sparc/exec.h @@ -71,13 +71,14 @@ void do_fcmpes(void); void do_fcmped(void); #if defined(CONFIG_USER_ONLY) void do_fitoq(void); -void do_fabsq(void); void do_fsqrtq(void); void do_fcmpq(void); void do_fcmpeq(void); #endif #ifdef TARGET_SPARC64 void do_fabsd(void); +void do_fxtos(void); +void do_fxtod(void); void do_fcmps_fcc1(void); void do_fcmpd_fcc1(void); void do_fcmps_fcc2(void); @@ -91,6 +92,8 @@ void do_fcmped_fcc2(void); void do_fcmpes_fcc3(void); void do_fcmped_fcc3(void); #if defined(CONFIG_USER_ONLY) +void do_fabsq(void); +void do_fxtoq(void); void do_fcmpq_fcc1(void); void do_fcmpq_fcc2(void); void do_fcmpq_fcc3(void); diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c index 48f5fc6004..a71c9da370 100644 --- a/target-sparc/op_helper.c +++ b/target-sparc/op_helper.c @@ -70,6 +70,14 @@ void do_fitod(void) { DT0 = int32_to_float64(*((int32_t *)&FT1), &env->fp_status); } + +#if defined(CONFIG_USER_ONLY) +void do_fitoq(void) +{ + QT0 = int32_to_float128(*((int32_t *)&FT1), &env->fp_status); +} +#endif + #ifdef TARGET_SPARC64 void do_fxtos(void) { @@ -84,6 +92,15 @@ void do_fxtod(void) DT0 = int64_to_float64(*((int64_t *)&DT1), &env->fp_status); check_ieee_exceptions(); } + +#if defined(CONFIG_USER_ONLY) +void do_fxtoq(void) +{ + set_float_exception_flags(0, &env->fp_status); + QT0 = int64_to_float128(*((int32_t *)&DT1), &env->fp_status); + check_ieee_exceptions(); +} +#endif #endif #endif |