Commit 8c0ab41f4abdd2e7f47a5cf54a242573e09b96e2
1 parent
aefbc83e
Revert "target-mips: fix call to check_*() functions"
This reverts commit r7127, r7132 is a better fix for that. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7133 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
12 additions
and
24 deletions
target-mips/translate.c
| ... | ... | @@ -6378,13 +6378,10 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
| 6378 | 6378 | TCGv_i32 fp0 = tcg_temp_new_i32(); |
| 6379 | 6379 | TCGv_i32 fp1 = tcg_temp_new_i32(); |
| 6380 | 6380 | |
| 6381 | - if (ctx->opcode & (1 << 6)) { | |
| 6382 | - check_cop1x(ctx); | |
| 6383 | - } | |
| 6384 | - | |
| 6385 | 6381 | gen_load_fpr32(fp0, fs); |
| 6386 | 6382 | gen_load_fpr32(fp1, ft); |
| 6387 | 6383 | if (ctx->opcode & (1 << 6)) { |
| 6384 | + check_cop1x(ctx); | |
| 6388 | 6385 | gen_cmpabs_s(func-48, fp0, fp1, cc); |
| 6389 | 6386 | opn = condnames_abs[func-48]; |
| 6390 | 6387 | } else { |
| ... | ... | @@ -6743,17 +6740,16 @@ static void gen_farith (DisasContext *ctx, uint32_t op1, |
| 6743 | 6740 | { |
| 6744 | 6741 | TCGv_i64 fp0 = tcg_temp_new_i64(); |
| 6745 | 6742 | TCGv_i64 fp1 = tcg_temp_new_i64(); |
| 6746 | - if (ctx->opcode & (1 << 6)) { | |
| 6747 | - check_cop1x(ctx); | |
| 6748 | - } | |
| 6749 | - check_cp1_registers(ctx, fs | ft); | |
| 6750 | 6743 | |
| 6751 | 6744 | gen_load_fpr64(ctx, fp0, fs); |
| 6752 | 6745 | gen_load_fpr64(ctx, fp1, ft); |
| 6753 | 6746 | if (ctx->opcode & (1 << 6)) { |
| 6747 | + check_cop1x(ctx); | |
| 6748 | + check_cp1_registers(ctx, fs | ft); | |
| 6754 | 6749 | gen_cmpabs_d(func-48, fp0, fp1, cc); |
| 6755 | 6750 | opn = condnames_abs[func-48]; |
| 6756 | 6751 | } else { |
| 6752 | + check_cp1_registers(ctx, fs | ft); | |
| 6757 | 6753 | gen_cmp_d(func-48, fp0, fp1, cc); |
| 6758 | 6754 | opn = condnames[func-48]; |
| 6759 | 6755 | } |
| ... | ... | @@ -7222,22 +7218,6 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7222 | 7218 | int store = 0; |
| 7223 | 7219 | TCGv t0 = tcg_temp_new(); |
| 7224 | 7220 | |
| 7225 | - switch (opc) { | |
| 7226 | - case OPC_LWXC1: | |
| 7227 | - case OPC_SWXC1: | |
| 7228 | - check_cop1x(ctx); | |
| 7229 | - break; | |
| 7230 | - case OPC_LDXC1: | |
| 7231 | - case OPC_SDXC1: | |
| 7232 | - check_cop1x(ctx); | |
| 7233 | - check_cp1_registers(ctx, fd); | |
| 7234 | - break; | |
| 7235 | - case OPC_LUXC1: | |
| 7236 | - case OPC_SUXC1: | |
| 7237 | - check_cp1_64bitmode(ctx); | |
| 7238 | - break; | |
| 7239 | - } | |
| 7240 | - | |
| 7241 | 7221 | if (base == 0) { |
| 7242 | 7222 | gen_load_gpr(t0, index); |
| 7243 | 7223 | } else if (index == 0) { |
| ... | ... | @@ -7251,6 +7231,7 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7251 | 7231 | save_cpu_state(ctx, 0); |
| 7252 | 7232 | switch (opc) { |
| 7253 | 7233 | case OPC_LWXC1: |
| 7234 | + check_cop1x(ctx); | |
| 7254 | 7235 | { |
| 7255 | 7236 | TCGv_i32 fp0 = tcg_temp_new_i32(); |
| 7256 | 7237 | |
| ... | ... | @@ -7262,6 +7243,8 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7262 | 7243 | opn = "lwxc1"; |
| 7263 | 7244 | break; |
| 7264 | 7245 | case OPC_LDXC1: |
| 7246 | + check_cop1x(ctx); | |
| 7247 | + check_cp1_registers(ctx, fd); | |
| 7265 | 7248 | { |
| 7266 | 7249 | TCGv_i64 fp0 = tcg_temp_new_i64(); |
| 7267 | 7250 | |
| ... | ... | @@ -7272,6 +7255,7 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7272 | 7255 | opn = "ldxc1"; |
| 7273 | 7256 | break; |
| 7274 | 7257 | case OPC_LUXC1: |
| 7258 | + check_cp1_64bitmode(ctx); | |
| 7275 | 7259 | tcg_gen_andi_tl(t0, t0, ~0x7); |
| 7276 | 7260 | { |
| 7277 | 7261 | TCGv_i64 fp0 = tcg_temp_new_i64(); |
| ... | ... | @@ -7283,6 +7267,7 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7283 | 7267 | opn = "luxc1"; |
| 7284 | 7268 | break; |
| 7285 | 7269 | case OPC_SWXC1: |
| 7270 | + check_cop1x(ctx); | |
| 7286 | 7271 | { |
| 7287 | 7272 | TCGv_i32 fp0 = tcg_temp_new_i32(); |
| 7288 | 7273 | TCGv t1 = tcg_temp_new(); |
| ... | ... | @@ -7297,6 +7282,8 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7297 | 7282 | store = 1; |
| 7298 | 7283 | break; |
| 7299 | 7284 | case OPC_SDXC1: |
| 7285 | + check_cop1x(ctx); | |
| 7286 | + check_cp1_registers(ctx, fs); | |
| 7300 | 7287 | { |
| 7301 | 7288 | TCGv_i64 fp0 = tcg_temp_new_i64(); |
| 7302 | 7289 | |
| ... | ... | @@ -7308,6 +7295,7 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7308 | 7295 | store = 1; |
| 7309 | 7296 | break; |
| 7310 | 7297 | case OPC_SUXC1: |
| 7298 | + check_cp1_64bitmode(ctx); | |
| 7311 | 7299 | tcg_gen_andi_tl(t0, t0, ~0x7); |
| 7312 | 7300 | { |
| 7313 | 7301 | TCGv_i64 fp0 = tcg_temp_new_i64(); | ... | ... |