From b711de9565d3c8f758956dfa96b648cc321577b6 Mon Sep 17 00:00:00 2001 From: Aurelien Jarno Date: Mon, 21 Dec 2009 13:52:08 +0100 Subject: [PATCH] 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 --- darwin-user/main.c | 4 ++-- hw/ppc.c | 4 ++-- linux-user/main.c | 4 ++-- target-ppc/cpu.h | 2 +- target-ppc/op_helper.c | 2 +- 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)