Commit b29a0341d7ed7e7df4bf77a41db8e614f1ddb645
1 parent
4de9b249
EBase is limited to KSEG0/KSEG1 even on 64bit CPUs.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2351 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
6 additions
and
21 deletions
target-mips/cpu.h
| @@ -162,7 +162,7 @@ struct CPUMIPSState { | @@ -162,7 +162,7 @@ struct CPUMIPSState { | ||
| 162 | #define CP0Ca_EC 2 | 162 | #define CP0Ca_EC 2 |
| 163 | target_ulong CP0_EPC; | 163 | target_ulong CP0_EPC; |
| 164 | int32_t CP0_PRid; | 164 | int32_t CP0_PRid; |
| 165 | - target_ulong CP0_EBase; | 165 | + int32_t CP0_EBase; |
| 166 | int32_t CP0_Config0; | 166 | int32_t CP0_Config0; |
| 167 | #define CP0C0_M 31 | 167 | #define CP0C0_M 31 |
| 168 | #define CP0C0_K23 28 | 168 | #define CP0C0_K23 28 |
target-mips/op.c
| @@ -1158,7 +1158,7 @@ void op_mfc0_prid (void) | @@ -1158,7 +1158,7 @@ void op_mfc0_prid (void) | ||
| 1158 | 1158 | ||
| 1159 | void op_mfc0_ebase (void) | 1159 | void op_mfc0_ebase (void) |
| 1160 | { | 1160 | { |
| 1161 | - T0 = (int32_t)env->CP0_EBase; | 1161 | + T0 = env->CP0_EBase; |
| 1162 | RETURN(); | 1162 | RETURN(); |
| 1163 | } | 1163 | } |
| 1164 | 1164 | ||
| @@ -1423,7 +1423,7 @@ void op_mtc0_ebase (void) | @@ -1423,7 +1423,7 @@ void op_mtc0_ebase (void) | ||
| 1423 | { | 1423 | { |
| 1424 | /* vectored interrupts not implemented */ | 1424 | /* vectored interrupts not implemented */ |
| 1425 | /* Multi-CPU not implemented */ | 1425 | /* Multi-CPU not implemented */ |
| 1426 | - env->CP0_EBase = (int32_t)0x80000000 | (T0 & 0x3FFFF000); | 1426 | + env->CP0_EBase = 0x80000000 | (T0 & 0x3FFFF000); |
| 1427 | RETURN(); | 1427 | RETURN(); |
| 1428 | } | 1428 | } |
| 1429 | 1429 | ||
| @@ -1563,12 +1563,6 @@ void op_dmfc0_epc (void) | @@ -1563,12 +1563,6 @@ void op_dmfc0_epc (void) | ||
| 1563 | RETURN(); | 1563 | RETURN(); |
| 1564 | } | 1564 | } |
| 1565 | 1565 | ||
| 1566 | -void op_dmfc0_ebase (void) | ||
| 1567 | -{ | ||
| 1568 | - T0 = env->CP0_EBase; | ||
| 1569 | - RETURN(); | ||
| 1570 | -} | ||
| 1571 | - | ||
| 1572 | void op_dmfc0_lladdr (void) | 1566 | void op_dmfc0_lladdr (void) |
| 1573 | { | 1567 | { |
| 1574 | T0 = env->CP0_LLAddr >> 4; | 1568 | T0 = env->CP0_LLAddr >> 4; |
| @@ -1627,15 +1621,6 @@ void op_dmtc0_epc (void) | @@ -1627,15 +1621,6 @@ void op_dmtc0_epc (void) | ||
| 1627 | RETURN(); | 1621 | RETURN(); |
| 1628 | } | 1622 | } |
| 1629 | 1623 | ||
| 1630 | -void op_dmtc0_ebase (void) | ||
| 1631 | -{ | ||
| 1632 | - /* vectored interrupts not implemented */ | ||
| 1633 | - /* Multi-CPU not implemented */ | ||
| 1634 | - /* XXX: 64bit addressing broken */ | ||
| 1635 | - env->CP0_EBase = (int32_t)0x80000000 | (T0 & 0x3FFFF000); | ||
| 1636 | - RETURN(); | ||
| 1637 | -} | ||
| 1638 | - | ||
| 1639 | void op_dmtc0_watchlo0 (void) | 1624 | void op_dmtc0_watchlo0 (void) |
| 1640 | { | 1625 | { |
| 1641 | env->CP0_WatchLo = T0; | 1626 | env->CP0_WatchLo = T0; |
target-mips/translate.c
| @@ -3099,7 +3099,7 @@ static void gen_dmfc0 (DisasContext *ctx, int reg, int sel) | @@ -3099,7 +3099,7 @@ static void gen_dmfc0 (DisasContext *ctx, int reg, int sel) | ||
| 3099 | rn = "PRid"; | 3099 | rn = "PRid"; |
| 3100 | break; | 3100 | break; |
| 3101 | case 1: | 3101 | case 1: |
| 3102 | - gen_op_dmfc0_ebase(); | 3102 | + gen_op_mfc0_ebase(); |
| 3103 | rn = "EBase"; | 3103 | rn = "EBase"; |
| 3104 | break; | 3104 | break; |
| 3105 | default: | 3105 | default: |
| @@ -3683,7 +3683,7 @@ static void gen_dmtc0 (DisasContext *ctx, int reg, int sel) | @@ -3683,7 +3683,7 @@ static void gen_dmtc0 (DisasContext *ctx, int reg, int sel) | ||
| 3683 | rn = "PRid"; | 3683 | rn = "PRid"; |
| 3684 | break; | 3684 | break; |
| 3685 | case 1: | 3685 | case 1: |
| 3686 | - gen_op_dmtc0_ebase(); | 3686 | + gen_op_mtc0_ebase(); |
| 3687 | rn = "EBase"; | 3687 | rn = "EBase"; |
| 3688 | break; | 3688 | break; |
| 3689 | default: | 3689 | default: |
| @@ -5305,7 +5305,7 @@ void cpu_reset (CPUMIPSState *env) | @@ -5305,7 +5305,7 @@ void cpu_reset (CPUMIPSState *env) | ||
| 5305 | #endif | 5305 | #endif |
| 5306 | env->CP0_Wired = 0; | 5306 | env->CP0_Wired = 0; |
| 5307 | /* SMP not implemented */ | 5307 | /* SMP not implemented */ |
| 5308 | - env->CP0_EBase = (int32_t)0x80000000; | 5308 | + env->CP0_EBase = 0x80000000; |
| 5309 | env->CP0_Config0 = MIPS_CONFIG0; | 5309 | env->CP0_Config0 = MIPS_CONFIG0; |
| 5310 | env->CP0_Config1 = MIPS_CONFIG1; | 5310 | env->CP0_Config1 = MIPS_CONFIG1; |
| 5311 | env->CP0_Config2 = MIPS_CONFIG2; | 5311 | env->CP0_Config2 = MIPS_CONFIG2; |