Commit 5b2808bfc06279db6a56942f3f6119c23ae07f42
1 parent
50cfa95c
Fix MIPS MT GPR accesses, thanks Stefan Weil.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4307 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
10 additions
and
10 deletions
target-mips/op.c
| ... | ... | @@ -2300,7 +2300,7 @@ void op_mftgpr(void) |
| 2300 | 2300 | { |
| 2301 | 2301 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2302 | 2302 | |
| 2303 | - T0 = env->gpr[PARAM1][other_tc]; | |
| 2303 | + T0 = env->gpr[other_tc][PARAM1]; | |
| 2304 | 2304 | FORCE_RET(); |
| 2305 | 2305 | } |
| 2306 | 2306 | |
| ... | ... | @@ -2308,7 +2308,7 @@ void op_mftlo(void) |
| 2308 | 2308 | { |
| 2309 | 2309 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2310 | 2310 | |
| 2311 | - T0 = env->LO[PARAM1][other_tc]; | |
| 2311 | + T0 = env->LO[other_tc][PARAM1]; | |
| 2312 | 2312 | FORCE_RET(); |
| 2313 | 2313 | } |
| 2314 | 2314 | |
| ... | ... | @@ -2316,7 +2316,7 @@ void op_mfthi(void) |
| 2316 | 2316 | { |
| 2317 | 2317 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2318 | 2318 | |
| 2319 | - T0 = env->HI[PARAM1][other_tc]; | |
| 2319 | + T0 = env->HI[other_tc][PARAM1]; | |
| 2320 | 2320 | FORCE_RET(); |
| 2321 | 2321 | } |
| 2322 | 2322 | |
| ... | ... | @@ -2324,7 +2324,7 @@ void op_mftacx(void) |
| 2324 | 2324 | { |
| 2325 | 2325 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2326 | 2326 | |
| 2327 | - T0 = env->ACX[PARAM1][other_tc]; | |
| 2327 | + T0 = env->ACX[other_tc][PARAM1]; | |
| 2328 | 2328 | FORCE_RET(); |
| 2329 | 2329 | } |
| 2330 | 2330 | |
| ... | ... | @@ -2340,7 +2340,7 @@ void op_mttgpr(void) |
| 2340 | 2340 | { |
| 2341 | 2341 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2342 | 2342 | |
| 2343 | - T0 = env->gpr[PARAM1][other_tc]; | |
| 2343 | + T0 = env->gpr[other_tc][PARAM1]; | |
| 2344 | 2344 | FORCE_RET(); |
| 2345 | 2345 | } |
| 2346 | 2346 | |
| ... | ... | @@ -2348,7 +2348,7 @@ void op_mttlo(void) |
| 2348 | 2348 | { |
| 2349 | 2349 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2350 | 2350 | |
| 2351 | - T0 = env->LO[PARAM1][other_tc]; | |
| 2351 | + T0 = env->LO[other_tc][PARAM1]; | |
| 2352 | 2352 | FORCE_RET(); |
| 2353 | 2353 | } |
| 2354 | 2354 | |
| ... | ... | @@ -2356,7 +2356,7 @@ void op_mtthi(void) |
| 2356 | 2356 | { |
| 2357 | 2357 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2358 | 2358 | |
| 2359 | - T0 = env->HI[PARAM1][other_tc]; | |
| 2359 | + T0 = env->HI[other_tc][PARAM1]; | |
| 2360 | 2360 | FORCE_RET(); |
| 2361 | 2361 | } |
| 2362 | 2362 | |
| ... | ... | @@ -2364,7 +2364,7 @@ void op_mttacx(void) |
| 2364 | 2364 | { |
| 2365 | 2365 | int other_tc = env->CP0_VPEControl & (0xff << CP0VPECo_TargTC); |
| 2366 | 2366 | |
| 2367 | - T0 = env->ACX[PARAM1][other_tc]; | |
| 2367 | + T0 = env->ACX[other_tc][PARAM1]; | |
| 2368 | 2368 | FORCE_RET(); |
| 2369 | 2369 | } |
| 2370 | 2370 | ... | ... |
target-mips/op_template.c
| ... | ... | @@ -52,13 +52,13 @@ void glue(op_load_gpr_T2_gpr, REG) (void) |
| 52 | 52 | |
| 53 | 53 | void glue(op_load_srsgpr_T0_gpr, REG) (void) |
| 54 | 54 | { |
| 55 | - T0 = env->gpr[REG][(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf]; | |
| 55 | + T0 = env->gpr[(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf][REG]; | |
| 56 | 56 | FORCE_RET(); |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | void glue(op_store_T0_srsgpr_gpr, REG) (void) |
| 60 | 60 | { |
| 61 | - env->gpr[REG][(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf] = T0; | |
| 61 | + env->gpr[(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf][REG] = T0; | |
| 62 | 62 | FORCE_RET(); |
| 63 | 63 | } |
| 64 | 64 | #endif | ... | ... |