]> git.ipfire.org Git - thirdparty/qemu.git/commit - target/ppc/translate.c
target/ppc: add external PID support
authorRoman Kapl <rka@sysgo.com>
Fri, 21 Sep 2018 06:59:07 +0000 (08:59 +0200)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 8 Nov 2018 01:04:40 +0000 (12:04 +1100)
commit50728199c549467b01609ddbb831237f72c8f3f6
treeb34cccca349829897bdc60c7251e801e3bb38962
parent4de6bb0c02ad3f0ec48f0f84ba1a65ab06e81b86
target/ppc: add external PID support

External PID is a mechanism present on BookE 2.06 that enables application to
store/load data from different address spaces. There are special version of some
instructions, which operate on alternate address space, which is specified in
the EPLC/EPSC regiser.

This implementation uses two additional MMU modes (mmu_idx) to provide the
address space for the load and store instructions. The QEMU TLB fill code was
modified to recognize these MMU modes and use the values in EPLC/EPSC to find
the proper entry in he PPC TLB. These two QEMU TLBs are also flushed on each
write to EPLC/EPSC.

Following instructions are implemented: dcbfep dcbstep dcbtep dcbtstep dcbzep
dcbzlep icbiep lbepx ldepx lfdepx lhepx lwepx stbepx stdepx stfdepx sthepx
stwepx.

Following vector instructions are not: evlddepx evstddepx lvepx lvepxl stvepx
stvepxl.

Signed-off-by: Roman Kapl <rka@sysgo.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
target/ppc/cpu.h
target/ppc/helper.h
target/ppc/mem_helper.c
target/ppc/mmu_helper.c
target/ppc/translate.c
target/ppc/translate/fp-impl.inc.c
target/ppc/translate/fp-ops.inc.c
target/ppc/translate_init.inc.c