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