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
target-mips/op.c
... | ... | @@ -1158,7 +1158,7 @@ void op_mfc0_prid (void) |
1158 | 1158 | |
1159 | 1159 | void op_mfc0_ebase (void) |
1160 | 1160 | { |
1161 | - T0 = (int32_t)env->CP0_EBase; | |
1161 | + T0 = env->CP0_EBase; | |
1162 | 1162 | RETURN(); |
1163 | 1163 | } |
1164 | 1164 | |
... | ... | @@ -1423,7 +1423,7 @@ void op_mtc0_ebase (void) |
1423 | 1423 | { |
1424 | 1424 | /* vectored interrupts not implemented */ |
1425 | 1425 | /* Multi-CPU not implemented */ |
1426 | - env->CP0_EBase = (int32_t)0x80000000 | (T0 & 0x3FFFF000); | |
1426 | + env->CP0_EBase = 0x80000000 | (T0 & 0x3FFFF000); | |
1427 | 1427 | RETURN(); |
1428 | 1428 | } |
1429 | 1429 | |
... | ... | @@ -1563,12 +1563,6 @@ void op_dmfc0_epc (void) |
1563 | 1563 | RETURN(); |
1564 | 1564 | } |
1565 | 1565 | |
1566 | -void op_dmfc0_ebase (void) | |
1567 | -{ | |
1568 | - T0 = env->CP0_EBase; | |
1569 | - RETURN(); | |
1570 | -} | |
1571 | - | |
1572 | 1566 | void op_dmfc0_lladdr (void) |
1573 | 1567 | { |
1574 | 1568 | T0 = env->CP0_LLAddr >> 4; |
... | ... | @@ -1627,15 +1621,6 @@ void op_dmtc0_epc (void) |
1627 | 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 | 1624 | void op_dmtc0_watchlo0 (void) |
1640 | 1625 | { |
1641 | 1626 | env->CP0_WatchLo = T0; | ... | ... |
target-mips/translate.c
... | ... | @@ -3099,7 +3099,7 @@ static void gen_dmfc0 (DisasContext *ctx, int reg, int sel) |
3099 | 3099 | rn = "PRid"; |
3100 | 3100 | break; |
3101 | 3101 | case 1: |
3102 | - gen_op_dmfc0_ebase(); | |
3102 | + gen_op_mfc0_ebase(); | |
3103 | 3103 | rn = "EBase"; |
3104 | 3104 | break; |
3105 | 3105 | default: |
... | ... | @@ -3683,7 +3683,7 @@ static void gen_dmtc0 (DisasContext *ctx, int reg, int sel) |
3683 | 3683 | rn = "PRid"; |
3684 | 3684 | break; |
3685 | 3685 | case 1: |
3686 | - gen_op_dmtc0_ebase(); | |
3686 | + gen_op_mtc0_ebase(); | |
3687 | 3687 | rn = "EBase"; |
3688 | 3688 | break; |
3689 | 3689 | default: |
... | ... | @@ -5305,7 +5305,7 @@ void cpu_reset (CPUMIPSState *env) |
5305 | 5305 | #endif |
5306 | 5306 | env->CP0_Wired = 0; |
5307 | 5307 | /* SMP not implemented */ |
5308 | - env->CP0_EBase = (int32_t)0x80000000; | |
5308 | + env->CP0_EBase = 0x80000000; | |
5309 | 5309 | env->CP0_Config0 = MIPS_CONFIG0; |
5310 | 5310 | env->CP0_Config1 = MIPS_CONFIG1; |
5311 | 5311 | env->CP0_Config2 = MIPS_CONFIG2; | ... | ... |