Revision e6bf7d70

b/target-sparc/helper.c
742 742
        return;
743 743
    }
744 744
#endif
745
    if (env->tl < MAXTL - 1) {
746
        env->tl++;
747
    } else {
748
        env->pstate |= PS_RED;
749
        if (env->tl != MAXTL)
750
            env->tl++;
751
    }
752
    env->tsptr = &env->ts[env->tl];
745 753
    env->tsptr->tstate = ((uint64_t)GET_CCR(env) << 32) |
746 754
        ((env->asi & 0xff) << 24) | ((env->pstate & 0xf3f) << 8) |
747 755
        GET_CWP64(env);
......
758 766
        cpu_set_cwp(env, cpu_cwp_inc(env, env->cwp + 1));
759 767
    env->tbr &= ~0x7fffULL;
760 768
    env->tbr |= ((env->tl > 1) ? 1 << 14 : 0) | (intno << 5);
761
    if (env->tl < MAXTL - 1) {
762
        env->tl++;
763
    } else {
764
        env->pstate |= PS_RED;
765
        if (env->tl != MAXTL)
766
            env->tl++;
767
    }
768
    env->tsptr = &env->ts[env->tl];
769 769
    env->pc = env->tbr;
770 770
    env->npc = env->pc + 4;
771 771
    env->exception_index = 0;
b/target-sparc/op_helper.c
2680 2680

  
2681 2681
void helper_done(void)
2682 2682
{
2683
    env->tl--;
2684
    env->tsptr = &env->ts[env->tl];
2685 2683
    env->pc = env->tsptr->tpc;
2686 2684
    env->npc = env->tsptr->tnpc + 4;
2687 2685
    PUT_CCR(env, env->tsptr->tstate >> 32);
2688 2686
    env->asi = (env->tsptr->tstate >> 24) & 0xff;
2689 2687
    change_pstate((env->tsptr->tstate >> 8) & 0xf3f);
2690 2688
    PUT_CWP64(env, env->tsptr->tstate & 0xff);
2689
    env->tl--;
2690
    env->tsptr = &env->ts[env->tl];
2691 2691
}
2692 2692

  
2693 2693
void helper_retry(void)
2694 2694
{
2695
    env->tl--;
2696
    env->tsptr = &env->ts[env->tl];
2697 2695
    env->pc = env->tsptr->tpc;
2698 2696
    env->npc = env->tsptr->tnpc;
2699 2697
    PUT_CCR(env, env->tsptr->tstate >> 32);
2700 2698
    env->asi = (env->tsptr->tstate >> 24) & 0xff;
2701 2699
    change_pstate((env->tsptr->tstate >> 8) & 0xf3f);
2702 2700
    PUT_CWP64(env, env->tsptr->tstate & 0xff);
2701
    env->tl--;
2702
    env->tsptr = &env->ts[env->tl];
2703 2703
}
2704 2704
#endif
2705 2705

  

Also available in: Unified diff