Loading target-sparc/exec.h +2 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ void helper_st_asi(int asi, int size, int sign); void helper_rett(void); void helper_ldfsr(void); void set_cwp(int new_cwp); void do_fitos(void); void do_fitod(void); void do_fabss(void); void do_fsqrts(void); void do_fsqrtd(void); Loading target-sparc/op.c +15 −3 Original line number Diff line number Diff line Loading @@ -932,20 +932,32 @@ void OPPROTO op_fcmpd(void) do_fcmpd(); } #ifdef USE_INT_TO_FLOAT_HELPERS void OPPROTO op_fitos(void) { FT0 = (float) *((int32_t *)&FT1); do_fitos(); } void OPPROTO op_fdtos(void) void OPPROTO op_fitod(void) { FT0 = (float) DT1; do_fitod(); } #else void OPPROTO op_fitos(void) { FT0 = (float) *((int32_t *)&FT1); } void OPPROTO op_fitod(void) { DT0 = (double) *((int32_t *)&FT1); } #endif void OPPROTO op_fdtos(void) { FT0 = (float) DT1; } void OPPROTO op_fstod(void) { Loading target-sparc/op_helper.c +20 −8 Original line number Diff line number Diff line Loading @@ -2,22 +2,34 @@ #include <fenv.h> #include "exec.h" void OPPROTO do_fabss(void) #ifdef USE_INT_TO_FLOAT_HELPERS void do_fitos(void) { FT0 = (float) *((int32_t *)&FT1); } void do_fitod(void) { DT0 = (double) *((int32_t *)&FT1); } #endif void do_fabss(void) { FT0 = fabsf(FT1); } void OPPROTO do_fsqrts(void) void do_fsqrts(void) { FT0 = sqrtf(FT1); } void OPPROTO do_fsqrtd(void) void do_fsqrtd(void) { DT0 = sqrt(DT1); } void OPPROTO do_fcmps (void) void do_fcmps (void) { if (isnan(FT0) || isnan(FT1)) { T0 = FSR_FCC1 | FSR_FCC0; Loading @@ -31,7 +43,7 @@ void OPPROTO do_fcmps (void) env->fsr = T0; } void OPPROTO do_fcmpd (void) void do_fcmpd (void) { if (isnan(DT0) || isnan(DT1)) { T0 = FSR_FCC1 | FSR_FCC0; Loading @@ -45,7 +57,7 @@ void OPPROTO do_fcmpd (void) env->fsr = T0; } void OPPROTO helper_ld_asi(int asi, int size, int sign) void helper_ld_asi(int asi, int size, int sign) { switch(asi) { case 3: /* MMU probe */ Loading Loading @@ -76,7 +88,7 @@ void OPPROTO helper_ld_asi(int asi, int size, int sign) } } void OPPROTO helper_st_asi(int asi, int size, int sign) void helper_st_asi(int asi, int size, int sign) { switch(asi) { case 3: /* MMU flush */ Loading Loading @@ -125,7 +137,7 @@ void do_ldd_kernel(uint32_t addr) #endif #endif void OPPROTO helper_rett() void helper_rett() { int cwp; env->psret = 1; Loading target-sparc/translate.c +4 −1 Original line number Diff line number Diff line Loading @@ -291,7 +291,10 @@ GEN32(gen_op_store_DT2_fpr, gen_op_store_DT2_fpr_fprf); #if defined(CONFIG_USER_ONLY) #define gen_op_ldst(name) gen_op_##name##_raw() #define OP_LD_TABLE(width) #define OP_LD_TABLE(width) \ static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \ { \ } #define supervisor(dc) 0 #else #define gen_op_ldst(name) (*gen_op_##name[dc->mem_idx])() Loading Loading
target-sparc/exec.h +2 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ void helper_st_asi(int asi, int size, int sign); void helper_rett(void); void helper_ldfsr(void); void set_cwp(int new_cwp); void do_fitos(void); void do_fitod(void); void do_fabss(void); void do_fsqrts(void); void do_fsqrtd(void); Loading
target-sparc/op.c +15 −3 Original line number Diff line number Diff line Loading @@ -932,20 +932,32 @@ void OPPROTO op_fcmpd(void) do_fcmpd(); } #ifdef USE_INT_TO_FLOAT_HELPERS void OPPROTO op_fitos(void) { FT0 = (float) *((int32_t *)&FT1); do_fitos(); } void OPPROTO op_fdtos(void) void OPPROTO op_fitod(void) { FT0 = (float) DT1; do_fitod(); } #else void OPPROTO op_fitos(void) { FT0 = (float) *((int32_t *)&FT1); } void OPPROTO op_fitod(void) { DT0 = (double) *((int32_t *)&FT1); } #endif void OPPROTO op_fdtos(void) { FT0 = (float) DT1; } void OPPROTO op_fstod(void) { Loading
target-sparc/op_helper.c +20 −8 Original line number Diff line number Diff line Loading @@ -2,22 +2,34 @@ #include <fenv.h> #include "exec.h" void OPPROTO do_fabss(void) #ifdef USE_INT_TO_FLOAT_HELPERS void do_fitos(void) { FT0 = (float) *((int32_t *)&FT1); } void do_fitod(void) { DT0 = (double) *((int32_t *)&FT1); } #endif void do_fabss(void) { FT0 = fabsf(FT1); } void OPPROTO do_fsqrts(void) void do_fsqrts(void) { FT0 = sqrtf(FT1); } void OPPROTO do_fsqrtd(void) void do_fsqrtd(void) { DT0 = sqrt(DT1); } void OPPROTO do_fcmps (void) void do_fcmps (void) { if (isnan(FT0) || isnan(FT1)) { T0 = FSR_FCC1 | FSR_FCC0; Loading @@ -31,7 +43,7 @@ void OPPROTO do_fcmps (void) env->fsr = T0; } void OPPROTO do_fcmpd (void) void do_fcmpd (void) { if (isnan(DT0) || isnan(DT1)) { T0 = FSR_FCC1 | FSR_FCC0; Loading @@ -45,7 +57,7 @@ void OPPROTO do_fcmpd (void) env->fsr = T0; } void OPPROTO helper_ld_asi(int asi, int size, int sign) void helper_ld_asi(int asi, int size, int sign) { switch(asi) { case 3: /* MMU probe */ Loading Loading @@ -76,7 +88,7 @@ void OPPROTO helper_ld_asi(int asi, int size, int sign) } } void OPPROTO helper_st_asi(int asi, int size, int sign) void helper_st_asi(int asi, int size, int sign) { switch(asi) { case 3: /* MMU flush */ Loading Loading @@ -125,7 +137,7 @@ void do_ldd_kernel(uint32_t addr) #endif #endif void OPPROTO helper_rett() void helper_rett() { int cwp; env->psret = 1; Loading
target-sparc/translate.c +4 −1 Original line number Diff line number Diff line Loading @@ -291,7 +291,10 @@ GEN32(gen_op_store_DT2_fpr, gen_op_store_DT2_fpr_fprf); #if defined(CONFIG_USER_ONLY) #define gen_op_ldst(name) gen_op_##name##_raw() #define OP_LD_TABLE(width) #define OP_LD_TABLE(width) \ static void gen_op_##width##a(int insn, int is_ld, int size, int sign) \ { \ } #define supervisor(dc) 0 #else #define gen_op_ldst(name) (*gen_op_##name[dc->mem_idx])() Loading