summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Henderson2011-05-20 23:14:44 +0200
committerRichard Henderson2011-05-31 19:18:05 +0200
commitbba9bdcee8d4acc4e5f243f40d015a5a30493faa (patch)
treec512d089524c5a78eb5e9000a784e3dea0204901
parenttarget-alpha: Add various symbolic constants. (diff)
downloadqemu-bba9bdcee8d4acc4e5f243f40d015a5a30493faa.tar.gz
qemu-bba9bdcee8d4acc4e5f243f40d015a5a30493faa.tar.xz
qemu-bba9bdcee8d4acc4e5f243f40d015a5a30493faa.zip
target-alpha: Use kernel mmu_idx for pal_mode.
Signed-off-by: Richard Henderson <rth@twiddle.net>
-rw-r--r--target-alpha/cpu.h8
-rw-r--r--target-alpha/translate.c6
2 files changed, 9 insertions, 5 deletions
diff --git a/target-alpha/cpu.h b/target-alpha/cpu.h
index 4407b32509..a59b39a6da 100644
--- a/target-alpha/cpu.h
+++ b/target-alpha/cpu.h
@@ -341,7 +341,13 @@ enum {
static inline int cpu_mmu_index(CPUState *env)
{
- return (env->ps & PS_USER_MODE) != 0;
+ if (env->pal_mode) {
+ return MMU_KERNEL_IDX;
+ } else if (env->ps & PS_USER_MODE) {
+ return MMU_USER_IDX;
+ } else {
+ return MMU_KERNEL_IDX;
+ }
}
enum {
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 2f3c637b68..a937356cbf 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -3098,10 +3098,8 @@ static inline void gen_intermediate_code_internal(CPUState *env,
ctx.env = env;
ctx.pc = pc_start;
ctx.amask = env->amask;
-#if defined (CONFIG_USER_ONLY)
- ctx.mem_idx = 0;
-#else
- ctx.mem_idx = ((env->ps >> 3) & 3);
+ ctx.mem_idx = cpu_mmu_index(env);
+#if !defined (CONFIG_USER_ONLY)
ctx.pal_mode = env->pal_mode;
#endif