Revision f41c52f1 target-mips/op.c
b/target-mips/op.c | ||
---|---|---|
1360 | 1360 |
no 64bit addressing implemented. */ |
1361 | 1361 |
val = (int32_t)T0 & 0xF878FF17; |
1362 | 1362 |
old = env->CP0_Status; |
1363 |
if (!(val & (1 << CP0St_EXL)) && |
|
1364 |
!(val & (1 << CP0St_ERL)) && |
|
1365 |
!(env->hflags & MIPS_HFLAG_DM) && |
|
1366 |
(val & (1 << CP0St_UM))) |
|
1367 |
env->hflags |= MIPS_HFLAG_UM; |
|
1363 | 1368 |
env->CP0_Status = val; |
1364 |
if (loglevel & CPU_LOG_TB_IN_ASM)
|
|
1365 |
CALL_FROM_TB2(do_mtc0_status_debug, old, val); |
|
1369 |
if (loglevel & CPU_LOG_EXEC)
|
|
1370 |
CALL_FROM_TB2(do_mtc0_status_debug, old, val);
|
|
1366 | 1371 |
CALL_FROM_TB1(cpu_mips_update_irq, env); |
1367 | 1372 |
RETURN(); |
1368 | 1373 |
} |
... | ... | |
2077 | 2082 |
RETURN(); |
2078 | 2083 |
} |
2079 | 2084 |
|
2080 |
void debug_eret (void); |
|
2085 |
void debug_pre_eret (void); |
|
2086 |
void debug_post_eret (void); |
|
2081 | 2087 |
void op_eret (void) |
2082 | 2088 |
{ |
2083 |
CALL_FROM_TB0(debug_eret); |
|
2089 |
if (loglevel & CPU_LOG_EXEC) |
|
2090 |
CALL_FROM_TB0(debug_pre_eret); |
|
2084 | 2091 |
if (env->CP0_Status & (1 << CP0St_ERL)) { |
2085 | 2092 |
env->PC = env->CP0_ErrorEPC; |
2086 | 2093 |
env->CP0_Status &= ~(1 << CP0St_ERL); |
... | ... | |
2093 | 2100 |
!(env->hflags & MIPS_HFLAG_DM) && |
2094 | 2101 |
(env->CP0_Status & (1 << CP0St_UM))) |
2095 | 2102 |
env->hflags |= MIPS_HFLAG_UM; |
2103 |
if (loglevel & CPU_LOG_EXEC) |
|
2104 |
CALL_FROM_TB0(debug_post_eret); |
|
2096 | 2105 |
env->CP0_LLAddr = 1; |
2097 | 2106 |
RETURN(); |
2098 | 2107 |
} |
2099 | 2108 |
|
2100 | 2109 |
void op_deret (void) |
2101 | 2110 |
{ |
2102 |
CALL_FROM_TB0(debug_eret); |
|
2111 |
if (loglevel & CPU_LOG_EXEC) |
|
2112 |
CALL_FROM_TB0(debug_pre_eret); |
|
2103 | 2113 |
env->PC = env->CP0_DEPC; |
2104 | 2114 |
env->hflags |= MIPS_HFLAG_DM; |
2105 | 2115 |
if (!(env->CP0_Status & (1 << CP0St_EXL)) && |
... | ... | |
2107 | 2117 |
!(env->hflags & MIPS_HFLAG_DM) && |
2108 | 2118 |
(env->CP0_Status & (1 << CP0St_UM))) |
2109 | 2119 |
env->hflags |= MIPS_HFLAG_UM; |
2120 |
if (loglevel & CPU_LOG_EXEC) |
|
2121 |
CALL_FROM_TB0(debug_post_eret); |
|
2110 | 2122 |
env->CP0_LLAddr = 1; |
2111 | 2123 |
RETURN(); |
2112 | 2124 |
} |
Also available in: Unified diff