Revision 1a14026e target-sparc/op_helper.c
b/target-sparc/op_helper.c | ||
---|---|---|
2178 | 2178 |
raise_exception(TT_ILL_INSN); |
2179 | 2179 |
|
2180 | 2180 |
env->psret = 1; |
2181 |
cwp = (env->cwp + 1) & (NWINDOWS - 1);
|
|
2181 |
cwp = cpu_cwp_inc(env, env->cwp + 1) ;
|
|
2182 | 2182 |
if (env->wim & (1 << cwp)) { |
2183 | 2183 |
raise_exception(TT_WIN_UNF); |
2184 | 2184 |
} |
... | ... | |
2399 | 2399 |
{ |
2400 | 2400 |
uint32_t cwp; |
2401 | 2401 |
|
2402 |
cwp = (env->cwp - 1) & (NWINDOWS - 1);
|
|
2402 |
cwp = cpu_cwp_dec(env, env->cwp - 1);
|
|
2403 | 2403 |
if (env->wim & (1 << cwp)) { |
2404 | 2404 |
raise_exception(TT_WIN_OVF); |
2405 | 2405 |
} |
... | ... | |
2410 | 2410 |
{ |
2411 | 2411 |
uint32_t cwp; |
2412 | 2412 |
|
2413 |
cwp = (env->cwp + 1) & (NWINDOWS - 1);
|
|
2413 |
cwp = cpu_cwp_inc(env, env->cwp + 1);
|
|
2414 | 2414 |
if (env->wim & (1 << cwp)) { |
2415 | 2415 |
raise_exception(TT_WIN_UNF); |
2416 | 2416 |
} |
... | ... | |
2419 | 2419 |
|
2420 | 2420 |
void helper_wrpsr(target_ulong new_psr) |
2421 | 2421 |
{ |
2422 |
if ((new_psr & PSR_CWP) >= NWINDOWS)
|
|
2422 |
if ((new_psr & PSR_CWP) >= env->nwindows)
|
|
2423 | 2423 |
raise_exception(TT_ILL_INSN); |
2424 | 2424 |
else |
2425 | 2425 |
PUT_PSR(env, new_psr); |
... | ... | |
2437 | 2437 |
{ |
2438 | 2438 |
uint32_t cwp; |
2439 | 2439 |
|
2440 |
cwp = (env->cwp - 1) & (NWINDOWS - 1);
|
|
2440 |
cwp = cpu_cwp_dec(env, env->cwp - 1);
|
|
2441 | 2441 |
if (env->cansave == 0) { |
2442 | 2442 |
raise_exception(TT_SPILL | (env->otherwin != 0 ? |
2443 | 2443 |
(TT_WOTHER | ((env->wstate & 0x38) >> 1)): |
... | ... | |
2458 | 2458 |
{ |
2459 | 2459 |
uint32_t cwp; |
2460 | 2460 |
|
2461 |
cwp = (env->cwp + 1) & (NWINDOWS - 1);
|
|
2461 |
cwp = cpu_cwp_inc(env, env->cwp + 1);
|
|
2462 | 2462 |
if (env->canrestore == 0) { |
2463 | 2463 |
raise_exception(TT_FILL | (env->otherwin != 0 ? |
2464 | 2464 |
(TT_WOTHER | ((env->wstate & 0x38) >> 1)): |
... | ... | |
2472 | 2472 |
|
2473 | 2473 |
void helper_flushw(void) |
2474 | 2474 |
{ |
2475 |
if (env->cansave != NWINDOWS - 2) {
|
|
2475 |
if (env->cansave != env->nwindows - 2) {
|
|
2476 | 2476 |
raise_exception(TT_SPILL | (env->otherwin != 0 ? |
2477 | 2477 |
(TT_WOTHER | ((env->wstate & 0x38) >> 1)): |
2478 | 2478 |
((env->wstate & 0x7) << 2))); |
... | ... | |
2491 | 2491 |
void helper_restored(void) |
2492 | 2492 |
{ |
2493 | 2493 |
env->canrestore++; |
2494 |
if (env->cleanwin < NWINDOWS - 1)
|
|
2494 |
if (env->cleanwin < env->nwindows - 1)
|
|
2495 | 2495 |
env->cleanwin++; |
2496 | 2496 |
if (env->otherwin == 0) |
2497 | 2497 |
env->cansave--; |
... | ... | |
2622 | 2622 |
void cpu_set_cwp(CPUState *env1, int new_cwp) |
2623 | 2623 |
{ |
2624 | 2624 |
/* put the modified wrap registers at their proper location */ |
2625 |
if (env1->cwp == (NWINDOWS - 1))
|
|
2626 |
memcpy32(env1->regbase, env1->regbase + NWINDOWS * 16);
|
|
2625 |
if (env1->cwp == env->nwindows - 1)
|
|
2626 |
memcpy32(env1->regbase, env1->regbase + env->nwindows * 16);
|
|
2627 | 2627 |
env1->cwp = new_cwp; |
2628 | 2628 |
/* put the wrap registers at their temporary location */ |
2629 |
if (new_cwp == (NWINDOWS - 1))
|
|
2630 |
memcpy32(env1->regbase + NWINDOWS * 16, env1->regbase);
|
|
2629 |
if (new_cwp == env->nwindows - 1)
|
|
2630 |
memcpy32(env1->regbase + env->nwindows * 16, env1->regbase);
|
|
2631 | 2631 |
env1->regwptr = env1->regbase + (new_cwp * 16); |
2632 | 2632 |
} |
2633 | 2633 |
|
Also available in: Unified diff