qemu/target/ppc
Suraj Jitindar Singh a8dafa5251 target/ppc: Implement large decrementer support for TCG
Prior to POWER9 the decrementer was a 32-bit register which decremented
with each tick of the timebase. From POWER9 onwards the decrementer can
be set to operate in a mode called large decrementer where it acts as a
n-bit decrementing register which is visible as a 64-bit register, that
is the value of the decrementer is sign extended to 64 bits (where n is
implementation dependant).

The mode in which the decrementer operates is controlled by the LPCR_LD
bit in the logical paritition control register (LPCR).

>From POWER9 onwards the HDEC (hypervisor decrementer) was enlarged to
h-bits, also sign extended to 64 bits (where h is implementation
dependant). Note this isn't configurable and is always enabled.

On POWER9 the large decrementer and hdec are both 56 bits, as
represented by the lrg_decr_bits cpu class property. Since they are the
same size we only add one property for now, which could be extended in
the case they ever differ in the future.

We also add the lrg_decr_bits property for POWER5+/7/8 since it is used
to determine the size of the hdec, which is only generated on the
POWER5+ processor and later. On these processors it is 32 bits.

Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-Id: <20190301024317.22137-2-sjitindarsingh@gmail.com>
[dwg: Small style fixes]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-03-12 12:07:49 +11:00
..
translate target/ppc: convert vmin* and vmax* to vector operations 2019-02-18 11:00:44 +11:00
arch_dump.c target/ppc: Add helper_mfvscr 2019-02-18 11:00:44 +11:00
compat.c target/ppc: Allow cpu compatiblity checks based on type, not instance 2018-06-21 21:22:53 +10:00
cpu-models.c target/ppc/cpu-models: Re-group the 970 CPUs together again 2018-09-25 11:12:25 +10:00
cpu-models.h target/ppc: Add POWER9 DD2.0 model information 2017-10-17 10:34:00 +11:00
cpu-qom.h target/ppc: Implement large decrementer support for TCG 2019-03-12 12:07:49 +11:00
cpu.c
cpu.h target/ppc: Implement large decrementer support for TCG 2019-03-12 12:07:49 +11:00
dfp_helper.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
excp_helper.c target/ppc: Add support for LPCR:HEIC on POWER9 2019-02-26 09:21:25 +11:00
fpu_helper.c target/ppc: Split out float_invalid_cvt 2018-11-08 12:04:40 +11:00
gdbstub.c target/ppc: Enable reporting of SPRs to GDB 2019-02-17 21:54:02 +11:00
helper_regs.h target/ppc: Fix synchronization of mttcg with broadcast TLB flushes 2019-02-26 09:21:25 +11:00
helper.h target/ppc: Flush the TLB locally when the LPIDR is written 2019-02-26 09:21:25 +11:00
int_helper.c target/ppc: convert vmin* and vmax* to vector operations 2019-02-18 11:00:44 +11:00
internal.h target/ppc: implement complete set of Vsr* macros 2019-02-04 18:44:18 +11:00
kvm_ppc.h ppc/spapr_caps: Add SPAPR_CAP_NESTED_KVM_HV 2018-11-08 13:08:35 +11:00
kvm-stub.c openpic: move KVM-specific declarations into separate openpic_kvm.h file 2018-03-06 13:16:29 +11:00
kvm.c target/ppc/kvm: Drop useless include directive 2019-02-04 18:44:17 +11:00
machine.c target/ppc: Use mtvscr/mfvscr for vmstate 2019-02-18 11:00:44 +11:00
Makefile.objs
mem_helper.c target/ppc: add external PID support 2018-11-08 12:04:40 +11:00
mfrom_table_gen.c Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
mfrom_table.inc.c rename included C files to foo.inc.c, remove osdep.h 2018-05-11 14:33:40 +02:00
misc_helper.c target/ppc: Flush the TLB locally when the LPIDR is written 2019-02-26 09:21:25 +11:00
mmu_helper.c target/ppc/mmu: Use LPCR:HR to chose radix vs. hash translation 2019-02-26 09:21:25 +11:00
mmu-book3s-v3.c target/ppc: Support for POWER9 native hash 2019-02-26 09:21:25 +11:00
mmu-book3s-v3.h target/ppc: Support for POWER9 native hash 2019-02-26 09:21:25 +11:00
mmu-hash32.c target/ppc: Fix ordering of hash MMU accesses 2019-02-26 09:21:25 +11:00
mmu-hash32.h target/ppc: Manage external HPT via virtual hypervisor 2017-03-01 11:23:39 +11:00
mmu-hash64.c target/ppc: Implement large decrementer support for TCG 2019-03-12 12:07:49 +11:00
mmu-hash64.h target/ppc: Support for POWER9 native hash 2019-02-26 09:21:25 +11:00
mmu-radix64.c target/ppc: Basic POWER9 bare-metal radix MMU support 2019-02-26 09:21:25 +11:00
mmu-radix64.h target/ppc: Rename PATB/PATBE -> PATE 2019-02-26 09:21:25 +11:00
monitor.c target/ppc: move FP and VMX registers into aligned vsr register array 2019-01-09 09:28:14 +11:00
timebase_helper.c
trace-events
translate_init.inc.c target/ppc: Implement large decrementer support for TCG 2019-03-12 12:07:49 +11:00
translate.c target/ppc: Implement large decrementer support for TCG 2019-03-12 12:07:49 +11:00
user_only_helper.c accel/tcg: add size paremeter in tlb_fill() 2018-01-25 16:02:24 +01:00