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(); | ... | ... |