Revision a315a145 linux-user/signal.c

b/linux-user/signal.c
131 131
    d->sig[0] = target_sigmask;
132 132
    d->sig[1] = sigmask >> 32;
133 133
#else
134
#error host_to_target_sigset
134
#warning host_to_target_sigset
135 135
#endif
136 136
}
137 137

  
......
165 165
#elif TARGET_LONG_BITS == 32 && HOST_LONG_BITS == 64 && TARGET_NSIG_WORDS == 2
166 166
    ((unsigned long *)d)[0] = sigmask | ((unsigned long)(s->sig[1]) << 32);
167 167
#else
168
#error target_to_host_sigset
168
#warning target_to_host_sigset
169 169
#endif /* TARGET_LONG_BITS */
170 170
}
171 171

  
......
1391 1391
	err |= __put_user(env->pc, &si->si_regs.pc);
1392 1392
	err |= __put_user(env->npc, &si->si_regs.npc);
1393 1393
	err |= __put_user(env->y, &si->si_regs.y);
1394
	for (i=0; i < 7; i++) {
1394
	for (i=0; i < 8; i++) {
1395 1395
		err |= __put_user(env->gregs[i], &si->si_regs.u_regs[i]);
1396 1396
	}
1397
	for (i=0; i < 7; i++) {
1397
	for (i=0; i < 8; i++) {
1398 1398
		err |= __put_user(env->regwptr[UREG_I0 + i], &si->si_regs.u_regs[i+8]);
1399 1399
	}
1400 1400
	err |= __put_user(mask, &si->si_mask);
......
1452 1452
		err |= __put_user(set->sig[i + 1], &sf->extramask[i]);
1453 1453
	}
1454 1454

  
1455
	for (i = 0; i < 7; i++) {
1455
	for (i = 0; i < 8; i++) {
1456 1456
	  	err |= __put_user(env->regwptr[i + UREG_L0], &sf->ss.locals[i]);
1457 1457
	}
1458
	for (i = 0; i < 7; i++) {
1458
	for (i = 0; i < 8; i++) {
1459 1459
	  	err |= __put_user(env->regwptr[i + UREG_I0], &sf->ss.ins[i]);
1460 1460
	}
1461 1461
	if (err)
......
1488 1488
		//flush_sig_insns(current->mm, (unsigned long) &(sf->insns[0]));
1489 1489
                //		tb_flush(env);
1490 1490
	}
1491
	//cpu_dump_state(env, stderr, fprintf, 0);
1492 1491
	return;
1493 1492

  
1494 1493
        //sigill_and_return:
......
1569 1568
        err = __get_user(pc,  &sf->info.si_regs.pc);
1570 1569
        err |= __get_user(npc, &sf->info.si_regs.npc);
1571 1570

  
1572
        //	fprintf(stderr, "pc: %lx npc %lx\n", pc, npc);
1573 1571
        if ((pc | npc) & 3)
1574 1572
                goto segv_and_exit;
1575 1573

  
......
1577 1575
        err |= __get_user(up_psr, &sf->info.si_regs.psr);
1578 1576

  
1579 1577
        /* User can only change condition codes and FPU enabling in %psr. */
1580
        env->psr = (up_psr & ~(PSR_ICC /* | PSR_EF */))
1581
                  | (env->psr & (PSR_ICC /* | PSR_EF */));
1582
	fprintf(stderr, "psr: %x\n", env->psr);
1583
	env->pc = pc-4;
1584
	env->npc = pc;
1578
        env->psr = (up_psr & (PSR_ICC /* | PSR_EF */))
1579
                  | (env->psr & ~(PSR_ICC /* | PSR_EF */));
1580

  
1581
	env->pc = pc;
1582
	env->npc = npc;
1585 1583
        err |= __get_user(env->y, &sf->info.si_regs.y);
1586
	for (i=0; i < 7; i++) {
1584
	for (i=0; i < 8; i++) {
1587 1585
		err |= __get_user(env->gregs[i], &sf->info.si_regs.u_regs[i]);
1588 1586
	}
1589
	for (i=0; i < 7; i++) {
1587
	for (i=0; i < 8; i++) {
1590 1588
		err |= __get_user(env->regwptr[i + UREG_I0], &sf->info.si_regs.u_regs[i+8]);
1591 1589
	}
1592 1590

  
......
1609 1607
        if (err)
1610 1608
                goto segv_and_exit;
1611 1609

  
1612
        //	fprintf(stderr, "returning %lx\n", env->regwptr[0]);
1613 1610
        return env->regwptr[0];
1614 1611

  
1615 1612
segv_and_exit:

Also available in: Unified diff