Revision 060718c1 target-sparc/translate.c
b/target-sparc/translate.c | ||
---|---|---|
79 | 79 |
int mem_idx; |
80 | 80 |
int fpu_enabled; |
81 | 81 |
int address_mask_32bit; |
82 |
int singlestep; |
|
82 | 83 |
uint32_t cc_op; /* current CC operation */ |
83 | 84 |
struct TranslationBlock *tb; |
84 | 85 |
sparc_def_t *def; |
... | ... | |
234 | 235 |
|
235 | 236 |
tb = s->tb; |
236 | 237 |
if ((pc & TARGET_PAGE_MASK) == (tb->pc & TARGET_PAGE_MASK) && |
237 |
(npc & TARGET_PAGE_MASK) == (tb->pc & TARGET_PAGE_MASK)) { |
|
238 |
(npc & TARGET_PAGE_MASK) == (tb->pc & TARGET_PAGE_MASK) && |
|
239 |
!s->singlestep) { |
|
238 | 240 |
/* jump to same page: we can use a direct jump */ |
239 | 241 |
tcg_gen_goto_tb(tb_num); |
240 | 242 |
tcg_gen_movi_tl(cpu_pc, pc); |
... | ... | |
4694 | 4696 |
#ifdef TARGET_SPARC64 |
4695 | 4697 |
dc->address_mask_32bit = env->pstate & PS_AM; |
4696 | 4698 |
#endif |
4699 |
dc->singlestep = (env->singlestep_enabled || singlestep); |
|
4697 | 4700 |
gen_opc_end = gen_opc_buf + OPC_MAX_SIZE; |
4698 | 4701 |
|
4699 | 4702 |
cpu_tmp0 = tcg_temp_new(); |
... | ... | |
4754 | 4757 |
break; |
4755 | 4758 |
/* if single step mode, we generate only one instruction and |
4756 | 4759 |
generate an exception */ |
4757 |
if (env->singlestep_enabled || singlestep) { |
|
4758 |
tcg_gen_movi_tl(cpu_pc, dc->pc); |
|
4759 |
tcg_gen_exit_tb(0); |
|
4760 |
if (dc->singlestep) { |
|
4760 | 4761 |
break; |
4761 | 4762 |
} |
4762 | 4763 |
} while ((gen_opc_ptr < gen_opc_end) && |
Also available in: Unified diff