aboutsummaryrefslogtreecommitdiff
path: root/hw/alpha_palcode.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2009-12-11 09:38:23 -0800
committerAurelien Jarno <aurelien@aurel32.net>2009-12-13 21:36:16 +0100
commitab471ade02d6bd3f82473a0560d76dd20c91cbb5 (patch)
treea1d9bb22df72ed454264dbc0c2451e1ca214a458 /hw/alpha_palcode.c
parent73651cce62738f7f8732028a7b84f3484511eede (diff)
target-alpha: Implement RD/WRUNIQUE in the translator
When emulating user-mode only, there's no reason to exit the translation block to effect a call_pal. We can generate a move to/from the unique slot directly. Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'hw/alpha_palcode.c')
-rw-r--r--hw/alpha_palcode.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/hw/alpha_palcode.c b/hw/alpha_palcode.c
index c48a2976b5..edec01815a 100644
--- a/hw/alpha_palcode.c
+++ b/hw/alpha_palcode.c
@@ -1060,7 +1060,6 @@ void call_pal (CPUState *env, int palcode)
{
target_long ret;
- qemu_log("%s: palcode %02x\n", __func__, palcode);
switch (palcode) {
case 0x83:
/* CALLSYS */
@@ -1078,14 +1077,14 @@ void call_pal (CPUState *env, int palcode)
break;
case 0x9E:
/* RDUNIQUE */
- env->ir[IR_V0] = env->unique;
qemu_log("RDUNIQUE: " TARGET_FMT_lx "\n", env->unique);
- break;
+ /* Handled in the translator for usermode. */
+ abort();
case 0x9F:
/* WRUNIQUE */
- env->unique = env->ir[IR_A0];
- qemu_log("WRUNIQUE: " TARGET_FMT_lx "\n", env->unique);
- break;
+ qemu_log("WRUNIQUE: " TARGET_FMT_lx "\n", env->ir[IR_A0]);
+ /* Handled in the translator for usermode. */
+ abort();
default:
qemu_log("%s: unhandled palcode %02x\n",
__func__, palcode);