tcg-hppa: Compute is_write in cpu_signal_handler.
Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
af92284bec
commit
f57040be4c
38
cpu-exec.c
38
cpu-exec.c
@ -1197,15 +1197,39 @@ int cpu_signal_handler(int host_signum, void *pinfo,
|
||||
{
|
||||
struct siginfo *info = pinfo;
|
||||
struct ucontext *uc = puc;
|
||||
unsigned long pc;
|
||||
int is_write;
|
||||
unsigned long pc = uc->uc_mcontext.sc_iaoq[0];
|
||||
uint32_t insn = *(uint32_t *)pc;
|
||||
int is_write = 0;
|
||||
|
||||
/* XXX: need kernel patch to get write flag faster. */
|
||||
switch (insn >> 26) {
|
||||
case 0x1a: /* STW */
|
||||
case 0x19: /* STH */
|
||||
case 0x18: /* STB */
|
||||
case 0x1b: /* STWM */
|
||||
is_write = 1;
|
||||
break;
|
||||
|
||||
case 0x09: /* CSTWX, FSTWX, FSTWS */
|
||||
case 0x0b: /* CSTDX, FSTDX, FSTDS */
|
||||
/* Distinguish from coprocessor load ... */
|
||||
is_write = (insn >> 9) & 1;
|
||||
break;
|
||||
|
||||
case 0x03:
|
||||
switch ((insn >> 6) & 15) {
|
||||
case 0xa: /* STWS */
|
||||
case 0x9: /* STHS */
|
||||
case 0x8: /* STBS */
|
||||
case 0xe: /* STWAS */
|
||||
case 0xc: /* STBYS */
|
||||
is_write = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
pc = uc->uc_mcontext.sc_iaoq[0];
|
||||
/* FIXME: compute is_write */
|
||||
is_write = 0;
|
||||
return handle_cpu_signal(pc, (unsigned long)info->si_addr,
|
||||
is_write,
|
||||
&uc->uc_sigmask, puc);
|
||||
is_write, &uc->uc_sigmask, puc);
|
||||
}
|
||||
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user