mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
MIPS fixes (Daniel Jacobowitz)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1690 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
6810e15490
commit
4ad40f366f
8 changed files with 232 additions and 105 deletions
|
@ -207,7 +207,7 @@ void op_addo (void)
|
|||
tmp = T0;
|
||||
T0 += T1;
|
||||
if ((T0 >> 31) ^ (T1 >> 31) ^ (tmp >> 31)) {
|
||||
CALL_FROM_TB1(do_raise_exception, EXCP_OVERFLOW);
|
||||
CALL_FROM_TB1(do_raise_exception_direct, EXCP_OVERFLOW);
|
||||
}
|
||||
RETURN();
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ void op_subo (void)
|
|||
tmp = T0;
|
||||
T0 = (int32_t)T0 - (int32_t)T1;
|
||||
if (!((T0 >> 31) ^ (T1 >> 31) ^ (tmp >> 31))) {
|
||||
CALL_FROM_TB1(do_raise_exception, EXCP_OVERFLOW);
|
||||
CALL_FROM_TB1(do_raise_exception_direct, EXCP_OVERFLOW);
|
||||
}
|
||||
RETURN();
|
||||
}
|
||||
|
@ -364,7 +364,7 @@ static inline void set_HILO (uint64_t HILO)
|
|||
|
||||
void op_mult (void)
|
||||
{
|
||||
set_HILO((int64_t)T0 * (int64_t)T1);
|
||||
set_HILO((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1);
|
||||
RETURN();
|
||||
}
|
||||
|
||||
|
@ -378,7 +378,7 @@ void op_madd (void)
|
|||
{
|
||||
int64_t tmp;
|
||||
|
||||
tmp = ((int64_t)T0 * (int64_t)T1);
|
||||
tmp = ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1);
|
||||
set_HILO((int64_t)get_HILO() + tmp);
|
||||
RETURN();
|
||||
}
|
||||
|
@ -396,7 +396,7 @@ void op_msub (void)
|
|||
{
|
||||
int64_t tmp;
|
||||
|
||||
tmp = ((int64_t)T0 * (int64_t)T1);
|
||||
tmp = ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1);
|
||||
set_HILO((int64_t)get_HILO() - tmp);
|
||||
RETURN();
|
||||
}
|
||||
|
@ -595,11 +595,16 @@ void op_pmon (void)
|
|||
void op_trap (void)
|
||||
{
|
||||
if (T0) {
|
||||
CALL_FROM_TB1(do_raise_exception, EXCP_TRAP);
|
||||
CALL_FROM_TB1(do_raise_exception_direct, EXCP_TRAP);
|
||||
}
|
||||
RETURN();
|
||||
}
|
||||
|
||||
void op_debug (void)
|
||||
{
|
||||
CALL_FROM_TB1(do_raise_exception_direct, EXCP_DEBUG);
|
||||
}
|
||||
|
||||
void op_set_lladdr (void)
|
||||
{
|
||||
env->CP0_LLAddr = T2;
|
||||
|
@ -654,3 +659,8 @@ void op_exit_tb (void)
|
|||
EXIT_TB();
|
||||
}
|
||||
|
||||
void op_wait (void)
|
||||
{
|
||||
env->halted = 1;
|
||||
CALL_FROM_TB1(do_raise_exception, EXCP_HLT);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue