Revision c9bac22c

b/target-m68k/translate.c
51 51
    uint32_t fpcr;
52 52
    struct TranslationBlock *tb;
53 53
    int singlestep_enabled;
54
    int is_mem;
54 55
} DisasContext;
55 56

  
56 57
#define DISAS_JUMP_NEXT 4
......
129 130
static inline int gen_load(DisasContext * s, int opsize, int addr, int sign)
130 131
{
131 132
    int tmp;
133
    s->is_mem = 1;
132 134
    switch(opsize) {
133 135
    case OS_BYTE:
134 136
        tmp = gen_new_qreg(QMODE_I32);
......
166 168
/* Generate a store.  */
167 169
static inline void gen_store(DisasContext *s, int opsize, int addr, int val)
168 170
{
171
    s->is_mem = 1;
169 172
    switch(opsize) {
170 173
    case OS_BYTE:
171 174
        gen_st(s, 8, addr, val);
......
2205 2208
        dest = QREG_F0;
2206 2209
        while (mask) {
2207 2210
            if (ext & mask) {
2211
                s->is_mem = 1;
2208 2212
                if (ext & (1 << 13)) {
2209 2213
                    /* store */
2210 2214
                    gen_st(s, f64, addr, dest);
......
3169 3173
    dc->singlestep_enabled = env->singlestep_enabled;
3170 3174
    dc->fpcr = env->fpcr;
3171 3175
    dc->user = (env->sr & SR_S) == 0;
3176
    dc->is_mem = 0;
3172 3177
    nb_gen_labels = 0;
3173 3178
    lj = -1;
3174 3179
    do {
......
3199 3204
        last_cc_op = dc->cc_op;
3200 3205
        dc->insn_pc = dc->pc;
3201 3206
	disas_m68k_insn(env, dc);
3207

  
3208
        /* Terminate the TB on memory ops if watchpoints are present.  */
3209
        /* FIXME: This should be replacd by the deterministic execution
3210
         * IRQ raising bits.  */
3211
        if (dc->is_mem && env->nb_watchpoints)
3212
            break;
3202 3213
    } while (!dc->is_jmp && gen_opc_ptr < gen_opc_end &&
3203 3214
             !env->singlestep_enabled &&
3204 3215
             (pc_offset) < (TARGET_PAGE_SIZE - 32));

Also available in: Unified diff