summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2009-12-21 13:52:08 +0100
committerAurelien Jarno <aurelien@aurel32.net>2009-12-21 13:52:08 +0100
commitb711de9565d3c8f758956dfa96b648cc321577b6 (patch)
tree75cfacb2e5563a009e6cc7e6618f476dd45c0845
parente3ea652962383a2ffc05b2f1b10a0e97542eb6f8 (diff)
PPC64: Fix alternate timebase
Fix the alternate time base the same way as the default timebase. SPR_ATBL should return a 64-bit value on 64 bit implementations. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
-rw-r--r--darwin-user/main.c4
-rw-r--r--hw/ppc.c4
-rw-r--r--linux-user/main.c4
-rw-r--r--target-ppc/cpu.h2
-rw-r--r--target-ppc/op_helper.c2
5 files changed, 8 insertions, 8 deletions
diff --git a/darwin-user/main.c b/darwin-user/main.c
index 2f4a0f827b..d83e1c172e 100644
--- a/darwin-user/main.c
+++ b/darwin-user/main.c
@@ -92,9 +92,9 @@ uint32_t cpu_ppc_load_tbu (CPUState *env)
return cpu_ppc_get_tb(env) >> 32;
}
-uint32_t cpu_ppc_load_atbl (CPUState *env)
+uint64_t cpu_ppc_load_atbl (CPUState *env)
{
- return cpu_ppc_get_tb(env) & 0xFFFFFFFF;
+ return cpu_ppc_get_tb(env);
}
uint32_t cpu_ppc_load_atbu (CPUState *env)
diff --git a/hw/ppc.c b/hw/ppc.c
index b4bf2d37a2..c917ae6698 100644
--- a/hw/ppc.c
+++ b/hw/ppc.c
@@ -463,7 +463,7 @@ void cpu_ppc_store_tbu (CPUState *env, uint32_t value)
_cpu_ppc_store_tbu(env, value);
}
-uint32_t cpu_ppc_load_atbl (CPUState *env)
+uint64_t cpu_ppc_load_atbl (CPUState *env)
{
ppc_tb_t *tb_env = env->tb_env;
uint64_t tb;
@@ -471,7 +471,7 @@ uint32_t cpu_ppc_load_atbl (CPUState *env)
tb = cpu_ppc_get_tb(tb_env, qemu_get_clock(vm_clock), tb_env->atb_offset);
LOG_TB("%s: tb %016" PRIx64 "\n", __func__, tb);
- return tb & 0xFFFFFFFF;
+ return tb;
}
uint32_t cpu_ppc_load_atbu (CPUState *env)
diff --git a/linux-user/main.c b/linux-user/main.c
index 5aa9daceb6..445bfc76b6 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -1078,9 +1078,9 @@ uint32_t cpu_ppc_load_tbu (CPUState *env)
return cpu_ppc_get_tb(env) >> 32;
}
-uint32_t cpu_ppc_load_atbl (CPUState *env)
+uint64_t cpu_ppc_load_atbl (CPUState *env)
{
- return cpu_ppc_get_tb(env) & 0xFFFFFFFF;
+ return cpu_ppc_get_tb(env);
}
uint32_t cpu_ppc_load_atbu (CPUState *env)
diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
index 2dc301d1e3..ac93df115c 100644
--- a/target-ppc/cpu.h
+++ b/target-ppc/cpu.h
@@ -745,7 +745,7 @@ uint64_t cpu_ppc_load_tbl (CPUPPCState *env);
uint32_t cpu_ppc_load_tbu (CPUPPCState *env);
void cpu_ppc_store_tbu (CPUPPCState *env, uint32_t value);
void cpu_ppc_store_tbl (CPUPPCState *env, uint32_t value);
-uint32_t cpu_ppc_load_atbl (CPUPPCState *env);
+uint64_t cpu_ppc_load_atbl (CPUPPCState *env);
uint32_t cpu_ppc_load_atbu (CPUPPCState *env);
void cpu_ppc_store_atbl (CPUPPCState *env, uint32_t value);
void cpu_ppc_store_atbu (CPUPPCState *env, uint32_t value);
diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
index e7bcd71f97..cb191933ae 100644
--- a/target-ppc/op_helper.c
+++ b/target-ppc/op_helper.c
@@ -78,7 +78,7 @@ target_ulong helper_load_tbu (void)
target_ulong helper_load_atbl (void)
{
- return cpu_ppc_load_atbl(env);
+ return (target_ulong)cpu_ppc_load_atbl(env);
}
target_ulong helper_load_atbu (void)