mirror of https://github.com/xqemu/xqemu.git
target-alpha: Add placeholders for missing userspace PALcalls.
Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
ab3aee26c4
commit
fe57ca82b0
|
@ -1061,6 +1061,16 @@ void call_pal (CPUState *env, int palcode)
|
||||||
target_long ret;
|
target_long ret;
|
||||||
|
|
||||||
switch (palcode) {
|
switch (palcode) {
|
||||||
|
case 0x80:
|
||||||
|
/* BPT */
|
||||||
|
qemu_log("BPT\n");
|
||||||
|
/* FIXME: Sends SIGTRAP, si_code=TRAP_BRKPT. */
|
||||||
|
exit(1);
|
||||||
|
case 0x81:
|
||||||
|
/* BUGCHK */
|
||||||
|
qemu_log("BUGCHK\n");
|
||||||
|
/* FIXME: Sends SIGTRAP, si_code=SI_FAULT. */
|
||||||
|
exit(1);
|
||||||
case 0x83:
|
case 0x83:
|
||||||
/* CALLSYS */
|
/* CALLSYS */
|
||||||
qemu_log("CALLSYS n " TARGET_FMT_ld "\n", env->ir[0]);
|
qemu_log("CALLSYS n " TARGET_FMT_ld "\n", env->ir[0]);
|
||||||
|
@ -1075,6 +1085,14 @@ void call_pal (CPUState *env, int palcode)
|
||||||
env->ir[IR_V0] = -ret;
|
env->ir[IR_V0] = -ret;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 0x86:
|
||||||
|
/* IMB */
|
||||||
|
qemu_log("IMB\n");
|
||||||
|
/* ??? We can probably elide the code using page_unprotect that is
|
||||||
|
checking for self-modifying code. Instead we could simply call
|
||||||
|
tb_flush here. Until we work out the changes required to turn
|
||||||
|
off the extra write protection, this can be a no-op. */
|
||||||
|
break;
|
||||||
case 0x9E:
|
case 0x9E:
|
||||||
/* RDUNIQUE */
|
/* RDUNIQUE */
|
||||||
qemu_log("RDUNIQUE: " TARGET_FMT_lx "\n", env->unique);
|
qemu_log("RDUNIQUE: " TARGET_FMT_lx "\n", env->unique);
|
||||||
|
@ -1085,9 +1103,19 @@ void call_pal (CPUState *env, int palcode)
|
||||||
qemu_log("WRUNIQUE: " TARGET_FMT_lx "\n", env->ir[IR_A0]);
|
qemu_log("WRUNIQUE: " TARGET_FMT_lx "\n", env->ir[IR_A0]);
|
||||||
/* Handled in the translator for usermode. */
|
/* Handled in the translator for usermode. */
|
||||||
abort();
|
abort();
|
||||||
|
case 0xAA:
|
||||||
|
/* GENTRAP */
|
||||||
|
qemu_log("GENTRAP: " TARGET_FMT_lx "\n", env->ir[IR_A0]);
|
||||||
|
/* FIXME: This is supposed to send a signal:
|
||||||
|
SIGFPE:
|
||||||
|
GEN_INTOVF, GEN_INTDIV, GEN_FLTOVF, GEN_FLTDIV,
|
||||||
|
GEN_FLTUND, GEN_FLTINV, GEN_FLTINE, GEN_ROPRAND
|
||||||
|
SIGTRAP:
|
||||||
|
others
|
||||||
|
with various settings of si_code. */
|
||||||
|
exit(1);
|
||||||
default:
|
default:
|
||||||
qemu_log("%s: unhandled palcode %02x\n",
|
qemu_log("%s: unhandled palcode %02x\n", __func__, palcode);
|
||||||
__func__, palcode);
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue