diff options
author | Richard Henderson <rth@twiddle.net> | 2009-12-11 09:38:23 -0800 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2009-12-13 21:36:16 +0100 |
commit | ab471ade02d6bd3f82473a0560d76dd20c91cbb5 (patch) | |
tree | a1d9bb22df72ed454264dbc0c2451e1ca214a458 /hw/alpha_palcode.c | |
parent | 73651cce62738f7f8732028a7b84f3484511eede (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.c | 11 |
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); |