mirror of
https://github.com/yuzu-emu/unicorn
synced 2024-11-25 11:28:57 +00:00
target-mips: fix to clear MSACSR.Cause
MSACSR.Cause bits are needed to be cleared before a vector floating-point instructions. FEXDO.df, FEXUPL.df and FEXUPR.df were missed out. Backports commit d4f4f0d5d9e74c19614479592c8bc865d92773d0 from qemu
This commit is contained in:
parent
424b6eee4e
commit
6fac3fee4e
1 changed files with 6 additions and 0 deletions
|
@ -2639,6 +2639,8 @@ void helper_msa_fexdo_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
|
|||
wr_t *pwt = &(env->active_fpu.fpr[wt].wr);
|
||||
uint32_t i;
|
||||
|
||||
clear_msacsr_cause(env);
|
||||
|
||||
switch (df) {
|
||||
case DF_WORD:
|
||||
for (i = 0; i < DF_ELEMENTS(DF_WORD); i++) {
|
||||
|
@ -3189,6 +3191,8 @@ void helper_msa_fexupl_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
|
|||
wr_t *pws = &(env->active_fpu.fpr[ws].wr);
|
||||
uint32_t i;
|
||||
|
||||
clear_msacsr_cause(env);
|
||||
|
||||
switch (df) {
|
||||
case DF_WORD:
|
||||
for (i = 0; i < DF_ELEMENTS(DF_WORD); i++) {
|
||||
|
@ -3221,6 +3225,8 @@ void helper_msa_fexupr_df(CPUMIPSState *env, uint32_t df, uint32_t wd,
|
|||
wr_t *pws = &(env->active_fpu.fpr[ws].wr);
|
||||
uint32_t i;
|
||||
|
||||
clear_msacsr_cause(env);
|
||||
|
||||
switch (df) {
|
||||
case DF_WORD:
|
||||
for (i = 0; i < DF_ELEMENTS(DF_WORD); i++) {
|
||||
|
|
Loading…
Reference in a new issue