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