Revision e6bf7d70 target-sparc/helper.c
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; |
Also available in: Unified diff