diff options
author | Alexander Graf <agraf@suse.de> | 2009-12-21 12:24:17 +0100 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2009-12-21 13:42:37 +0100 |
commit | e3ea652962383a2ffc05b2f1b10a0e97542eb6f8 (patch) | |
tree | 7ce782d8d043830083b0aed139da7f28ea591383 /linux-user | |
parent | c4b3be39661d158b3480ad6982dfdee36ec67c7a (diff) | |
download | qemu-e3ea652962383a2ffc05b2f1b10a0e97542eb6f8.zip qemu-e3ea652962383a2ffc05b2f1b10a0e97542eb6f8.tar.gz qemu-e3ea652962383a2ffc05b2f1b10a0e97542eb6f8.tar.bz2 |
PPC64: Fix timebase
On PPC we have a 64-bit time base. Usually (PPC32) this is accessed using
two separate 32 bit SPR accesses to SPR_TBU and SPR_TBL.
On PPC64 the SPR_TBL register acts as 64 bit though, so we get the full
64 bits as return value. If we only take the lower ones, fine. But Linux
wants to see all 64 bits or it breaks.
This patch makes PPC64 Linux work even after TB crossed the 32-bit boundary,
which usually happened a few seconds after bootup.
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/linux-user/main.c b/linux-user/main.c index 12502ad..5aa9dac 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -1068,9 +1068,9 @@ static inline uint64_t cpu_ppc_get_tb (CPUState *env) return 0; } -uint32_t cpu_ppc_load_tbl (CPUState *env) +uint64_t cpu_ppc_load_tbl (CPUState *env) { - return cpu_ppc_get_tb(env) & 0xFFFFFFFF; + return cpu_ppc_get_tb(env); } uint32_t cpu_ppc_load_tbu (CPUState *env) |