]> git.proxmox.com Git - mirror_qemu.git/commitdiff
PPC64: Fix alternate timebase
authorAurelien Jarno <aurelien@aurel32.net>
Mon, 21 Dec 2009 12:52:08 +0000 (13:52 +0100)
committerAurelien Jarno <aurelien@aurel32.net>
Mon, 21 Dec 2009 12:52:08 +0000 (13:52 +0100)
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>
darwin-user/main.c
hw/ppc.c
linux-user/main.c
target-ppc/cpu.h
target-ppc/op_helper.c

index 2f4a0f827bb07d82475bb2db4e5a246658365719..d83e1c172ed031bc71aa821547a56e8443157e69 100644 (file)
@@ -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)
index b4bf2d37a2f56810516376c974a12fae24755ed4..c917ae66989dc19795704a18c4834d4d1f00b2a7 100644 (file)
--- 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)
index 5aa9daceb6d35e3fa7f2c4adfa3566768349dd7e..445bfc76b657fb1dac34933166a515d35dba9535 100644 (file)
@@ -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)
index 2dc301d1e32b3354be18e98d949bf7a4a94bf2e4..ac93df115c67906db6f4d37d19ea9e2d6f175cd4 100644 (file)
@@ -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);
index e7bcd71f97080fec714be1aa751ff1eb031ef4e9..cb191933ae6c96549db6c5b5df8da7208677d5ef 100644 (file)
@@ -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)