BALATON Zoltan
dcdf98a901
hw/pci-host: Add emulation of Marvell MV64361 PPC system controller
...
The Marvell Discovery II aka. MV64361 is a PowerPC system controller
chip that is used on the pegasos2 PPC board. This adds emulation of it
that models the device enough to boot guests on this board. The
mv643xx.h header with register definitions is taken from Linux 4.15.10
only fixing white space errors, removing not needed parts and changing
formatting for QEMU coding style.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Message-Id: <79545ebd03bfe0665b73d2d7cbc74fdf3d62629e.1616680239.git.balaton@eik.bme.hu >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
BALATON Zoltan
f9f0c9e2fa
vt82c686: Add emulation of VT8231 south bridge
...
Add emulation of VT8231 south bridge ISA part based on the similar
VT82C686B but implemented in a separate subclass that holds the
differences while reusing parts that can be shared.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <10abc9f89854e7c980b9731c33d25a2e307e9c4f.1616680239.git.balaton@eik.bme.hu >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
BALATON Zoltan
2e84e107a0
vt82c686: Introduce abstract TYPE_VIA_ISA and base vt82c686b_isa on it
...
To allow reusing ISA bridge emulation for vt8231_isa move the device
state of vt82c686b_isa emulation in an abstract via_isa class. This
change breaks migration back compatibility but this is not an issue
for Fuloong2E machine which is not versioned or migration supported.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <0cb8fc69c7aaa555589181931b881335fecd2ef3.1616680239.git.balaton@eik.bme.hu >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
BALATON Zoltan
ab74864fed
vt82c686: Add VT8231_SUPERIO based on VIA_SUPERIO
...
The VT8231 south bridge is very similar to VT82C686B but there are
some differences in register addresses and functionality, e.g. the
VT8231 only has one serial port. This commit adds VT8231_SUPERIO
subclass based on the abstract VIA_SUPERIO class to emulate the
superio part of VT8231.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <8108809321f9ecf3fb1aea22ddaeccc7c3a57c8e.1616680239.git.balaton@eik.bme.hu >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
BALATON Zoltan
f028c2ded2
vt82c686: QOM-ify superio related functionality
...
Collect superio functionality and its controlling config registers
handling in an abstract VIA_SUPERIO class that is a subclass of
ISA_SUPERIO and put vt82c686b specific parts in a subclass of this
abstract class.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Message-Id: <fbcc8cc8baf83f327612a1ef1c14bcbcdb0e7edb.1616680239.git.balaton@eik.bme.hu >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
Richard Henderson
2da8a6bcdc
target/ppc: Validate hflags with CONFIG_DEBUG_TCG
...
Verify that hflags was updated correctly whenever we change
cpu state that is used by hflags.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-11-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
Richard Henderson
75da499733
linux-user/ppc: Fix msr updates for signal handling
...
In save_user_regs, there are two bugs where we OR in a bit number
instead of the bit, clobbering the low bits of MSR. However:
The MSR_VR and MSR_SPE bits control the availability of the insns.
If the bits were not already set in MSR, then any attempt to access
those registers would result in SIGILL.
For linux-user, we always initialize MSR to the capabilities
of the cpu. We *could* add checks vs MSR where we currently
check insn_flags and insn_flags2, but we know they match.
Also, there's a stray cut-and-paste comment in restore.
Then, do not force little-endian binaries into big-endian mode.
Finally, use ppc_store_msr for the update to affect hflags.
Which is the reason none of these bugs were previously noticed.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-10-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
Richard Henderson
d764184ddb
target/ppc: Remove env->immu_idx and env->dmmu_idx
...
We weren't recording MSR_GS in hflags, which means that BookE
memory accesses were essentially random vs Guest State.
Instead of adding this bit directly, record the completed mmu
indexes instead. This makes it obvious that we are recording
exactly the information that we need.
This also means that we can stop directly recording MSR_IR.
Reviewed-by: David Gibson <david@gibson.dropbear.id.au >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-9-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:25 +10:00
Richard Henderson
0e6bac3edb
target/ppc: Remove MSR_SA and MSR_AP from hflags
...
Nothing within the translator -- or anywhere else for that
matter -- checks MSR_SA or MSR_AP on the 602. This may be
a mistake. However, for the moment, we need not record these
bits in hflags.
This allows us to simplify HFLAGS_VSX computation by moving
it to overlap with MSR_VSX.
Reviewed-by: David Gibson <david@gibson.dropbear.id.au >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-8-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
f03de3b44b
target/ppc: Put LPCR[GTSE] in hflags
...
Because this bit was not in hflags, the privilege check
for tlb instructions was essentially random.
Recompute hflags when storing to LPCR.
Reviewed-by: David Gibson <david@gibson.dropbear.id.au >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-7-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
f43520e5b2
target/ppc: Create helper_scv
...
Perform the test against FSCR_SCV at runtime, in the helper.
This means we can remove the incorrect set against SCV in
ppc_tr_init_disas_context and do not need to add an HFLAGS bit.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-6-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
7da31f260d
target/ppc: Put dbcr0 single-step bits into hflags
...
Because these bits were not in hflags, the code generated
for single-stepping on BookE was essentially random.
Recompute hflags when storing to dbcr0.
Reviewed-by: David Gibson <david@gibson.dropbear.id.au >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-5-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
26c55599b8
target/ppc: Reduce env->hflags to uint32_t
...
It will be stored in tb->flags, which is also uint32_t,
so let's use the correct size.
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Reviewed-by: David Gibson <david@gibson.dropbear.id.au >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-4-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
2df4fe7abe
target/ppc: Disconnect hflags from MSR
...
Copying flags directly from msr has drawbacks: (1) msr bits
mean different things per cpu, (2) msr has 64 bits on 64 cpus
while tb->flags has only 32 bits.
Create a enum to define these bits. Document the origin of each bit
and validate those bits that must match MSR. This fixes the
truncation of env->hflags to tb->flags, because we no longer
have hflags bits set above bit 31.
Most of the code in ppc_tr_init_disas_context is moved over to
hreg_compute_hflags. Some of it is simple extractions from msr,
some requires examining other cpu flags. Anything that is moved
becomes a simple extract from hflags in ppc_tr_init_disas_context.
Several existing bugs are left in ppc_tr_init_disas_context, where
additional changes are required -- to be addressed in future patches.
Remove a broken #if 0 block.
Reported-by: Ivan Warren <ivan@vmfacility.fr >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-3-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
edece45d4a
target/ppc: Extract post_load_update_msr
...
Extract post_load_update_msr to share between cpu_load_old
and cpu_post_load in updating the msr.
Suggested-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210323184340.619757-2-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
e81f17a3f6
hw/ppc/spapr_rtas: Update hflags after setting msr
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-16-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
bd4160bc6a
hw/ppc/pnv_core: Update hflags after setting msr
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-15-richard.henderson@linaro.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
56ced49760
target/ppc: Fix comment for MSR_FE{0,1}
...
As per hreg_compute_hflags:
We 'forget' FE0 & FE1: we'll never generate imprecise exceptions
remove the hflags marker from the respective comments.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-7-richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
f7a7b6525c
target/ppc: Retain hflags_nmsr only for migration
...
We have eliminated all normal uses of hflags_nmsr. We need
not even compute it except when we want to migrate. Rename
the field to emphasize this.
Remove the fixme comment for migrating access_type. This value
is only ever used with the current executing instruction, and
is never live when the cpu is halted for migration.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-6-richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
da77d2b037
target/ppc: Do not call hreg_compute_mem_idx after ppc_store_msr
...
In ppc_store_msr we call hreg_compute_hflags, which itself
calls hreg_compute_mem_idx. Rely on ppc_store_msr to update
everything required by the msr update.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-5-richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
dafe299cf0
target/ppc: Properly sync cpu state with new msr in cpu_load_old
...
Match cpu_post_load in using ppc_store_msr to set all of
the cpu state implied by the value of msr. Do not restore
hflags or hflags_nmsr, as we recompute them in ppc_store_msr.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-4-richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
1828504672
target/ppc: Move 601 hflags adjustment to hreg_compute_hflags
...
Keep all hflags computation in one place, as this will be
especially important later.
Introduce a new POWERPC_FLAG_HID0_LE bit to indicate when
LE should be taken from HID0. This appears to be set if
and only if POWERPC_FLAG_RTC_CLK is set, but we're not
short of bits and having both names will avoid confusion.
Note that this was the only user of hflags_nmsr, so we can
perform a straight assignment rather than mask and set.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-3-richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Richard Henderson
8a05fd9a22
target/ppc: Move helper_regs.h functions out-of-line
...
Move the functions to a new file, helper_regs.c.
Note int_helper.c was relying on helper_regs.h to
indirectly include qemu/log.h.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20210315184615.1985590-2-richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Philippe Mathieu-Daudé
03b3542ac9
hw/ppc/mac_newworld: Restrict RAM to 2 GiB
...
On Mac99 and newer machines, the Uninorth PCI host bridge maps
the PCI hole region at 2GiB, so the RAM area beside 2GiB is not
accessible by the CPU. Restrict the memory to 2GiB to avoid
problems such the one reported in the buglink.
Buglink: https://bugs.launchpad.net/qemu/+bug/1922391
Reported-by: Håvard Eidnes <he@NetBSD.org >
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Message-Id: <20210406084842.2859664-1-f4bug@amsat.org >
Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu >
Signed-off-by: David Gibson <david@gibson.dropbear.id.au >
2021-05-04 11:41:24 +10:00
Peter Maydell
15106f7dc3
Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-hex-20210502' into staging
...
Minor cleanups.
Finish the rest of the hexagon integer instructions.
# gpg: Signature made Sun 02 May 2021 15:38:17 BST
# gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg: issuer "richard.henderson@linaro.org "
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org >" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A 05C0 64DF 38E8 AF7E 215F
* remotes/rth-gitlab/tags/pull-hex-20210502: (31 commits)
Hexagon (target/hexagon) CABAC decode bin
Hexagon (target/hexagon) load into shifted register instructions
Hexagon (target/hexagon) load and unpack bytes instructions
Hexagon (target/hexagon) bit reverse (brev) addressing
Hexagon (target/hexagon) circular addressing
Hexagon (target/hexagon) add A4_addp_c/A4_subp_c
Hexagon (target/hexagon) add A6_vminub_RdP
Hexagon (target/hexagon) add A5_ACS (vacsh)
Hexagon (target/hexagon) add F2_sfinvsqrta
Hexagon (target/hexagon) add F2_sfrecipa instruction
Hexagon (target/hexagon) compile all debug code
Hexagon (target/hexagon) move QEMU_GENERATE to only be on during macros.h
Hexagon (target/hexagon) cleanup reg_field_info definition
Hexagon (target/hexagon) cleanup ternary operators in semantics
Hexagon (target/hexagon) use softfloat for float-to-int conversions
Hexagon (target/hexagon) replace float32_mul_pow2 with float32_scalbn
Hexagon (target/hexagon) use softfloat default NaN and tininess
Hexagon (target/hexagon) change type of softfloat_roundingmodes
Hexagon (target/hexagon) remove unused carry_from_add64 function
Hexagon (target/hexagon) change variables from int to bool when appropriate
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2021-05-02 16:23:05 +01:00
Peter Maydell
53c5433e84
Merge remote-tracking branch 'remotes/rth-gitlab/tags/pull-tcg-20210501' into staging
...
Include cleanups.
Decodetree enhancements for power10.
# gpg: Signature made Sat 01 May 2021 19:50:22 BST
# gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg: issuer "richard.henderson@linaro.org "
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org >" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A 05C0 64DF 38E8 AF7E 215F
* remotes/rth-gitlab/tags/pull-tcg-20210501:
decodetree: Extend argument set syntax to allow types
decodetree: Add support for 64-bit instructions
decodetree: More use of f-strings
decodetree: Introduce whex and whexC helpers
exec: Remove accel/tcg/ from include paths
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2021-05-02 12:02:46 +01:00
Taylor Simpson
e628c0156b
Hexagon (target/hexagon) CABAC decode bin
...
The following instruction is added
S2_cabacdecbin Rdd32=decbin(Rss32,Rtt32)
Test cases added to tests/tcg/hexagon/misc.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-27-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 16:06:11 -07:00
Taylor Simpson
7aa9ffab79
Hexagon (target/hexagon) load into shifted register instructions
...
The following instructions are added
L2_loadalignb_io Ryy32 = memb_fifo(Rs32+#s11:1)
L2_loadalignh_io Ryy32 = memh_fifo(Rs32+#s11:1)
L4_loadalignb_ur Ryy32 = memb_fifo(Rt32<<#u2+#U6)
L4_loadalignh_ur Ryy32 = memh_fifo(Rt32<<#u2+#U6)
L4_loadalignb_ap Ryy32 = memb_fifo(Re32=#U6)
L4_loadalignh_ap Ryy32 = memh_fifo(Re32=#U6)
L2_loadalignb_pr Ryy32 = memb_fifo(Rx32++Mu2)
L2_loadalignh_pr Ryy32 = memh_fifo(Rx32++Mu2)
L2_loadalignb_pbr Ryy32 = memb_fifo(Rx32++Mu2:brev)
L2_loadalignh_pbr Ryy32 = memh_fifo(Rx32++Mu2:brev)
L2_loadalignb_pi Ryy32 = memb_fifo(Rx32++#s4:1)
L2_loadalignh_pi Ryy32 = memh_fifo(Rx32++#s4:1)
L2_loadalignb_pci Ryy32 = memb_fifo(Rx32++#s4:1:circ(Mu2))
L2_loadalignh_pci Ryy32 = memh_fifo(Rx32++#s4:1:circ(Mu2))
L2_loadalignb_pcr Ryy32 = memb_fifo(Rx32++I:circ(Mu2))
L2_loadalignh_pcr Ryy32 = memh_fifo(Rx32++I:circ(Mu2))
Test cases in tests/tcg/hexagon/load_align.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-26-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 16:06:11 -07:00
Taylor Simpson
0d0b91a804
Hexagon (target/hexagon) load and unpack bytes instructions
...
The following instructions are added
L2_loadbzw2_io Rd32 = memubh(Rs32+#s11:1)
L2_loadbzw4_io Rdd32 = memubh(Rs32+#s11:1)
L2_loadbsw2_io Rd32 = membh(Rs32+#s11:1)
L2_loadbsw4_io Rdd32 = membh(Rs32+#s11:1)
L4_loadbzw2_ur Rd32 = memubh(Rt32<<#u2+#U6)
L4_loadbzw4_ur Rdd32 = memubh(Rt32<<#u2+#U6)
L4_loadbsw2_ur Rd32 = membh(Rt32<<#u2+#U6)
L4_loadbsw4_ur Rdd32 = membh(Rt32<<#u2+#U6)
L4_loadbzw2_ap Rd32 = memubh(Re32=#U6)
L4_loadbzw4_ap Rdd32 = memubh(Re32=#U6)
L4_loadbsw2_ap Rd32 = membh(Re32=#U6)
L4_loadbsw4_ap Rdd32 = membh(Re32=#U6)
L2_loadbzw2_pr Rd32 = memubh(Rx32++Mu2)
L2_loadbzw4_pr Rdd32 = memubh(Rx32++Mu2)
L2_loadbsw2_pr Rd32 = membh(Rx32++Mu2)
L2_loadbsw4_pr Rdd32 = membh(Rx32++Mu2)
L2_loadbzw2_pbr Rd32 = memubh(Rx32++Mu2:brev)
L2_loadbzw4_pbr Rdd32 = memubh(Rx32++Mu2:brev)
L2_loadbsw2_pbr Rd32 = membh(Rx32++Mu2:brev)
L2_loadbsw4_pbr Rdd32 = membh(Rx32++Mu2:brev)
L2_loadbzw2_pi Rd32 = memubh(Rx32++#s4:1)
L2_loadbzw4_pi Rdd32 = memubh(Rx32++#s4:1)
L2_loadbsw2_pi Rd32 = membh(Rx32++#s4:1)
L2_loadbsw4_pi Rdd32 = membh(Rx32++#s4:1)
L2_loadbzw2_pci Rd32 = memubh(Rx32++#s4:1:circ(Mu2))
L2_loadbzw4_pci Rdd32 = memubh(Rx32++#s4:1:circ(Mu2))
L2_loadbsw2_pci Rd32 = membh(Rx32++#s4:1:circ(Mu2))
L2_loadbsw4_pci Rdd32 = membh(Rx32++#s4:1:circ(Mu2))
L2_loadbzw2_pcr Rd32 = memubh(Rx32++I:circ(Mu2))
L2_loadbzw4_pcr Rdd32 = memubh(Rx32++I:circ(Mu2))
L2_loadbsw2_pcr Rd32 = membh(Rx32++I:circ(Mu2))
L2_loadbsw4_pcr Rdd32 = membh(Rx32++I:circ(Mu2))
Test cases in tests/tcg/hexagon/load_unpack.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-25-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 16:06:09 -07:00
Taylor Simpson
af7f182127
Hexagon (target/hexagon) bit reverse (brev) addressing
...
The following instructions are added
L2_loadrub_pbr Rd32 = memub(Rx32++Mu2:brev)
L2_loadrb_pbr Rd32 = memb(Rx32++Mu2:brev)
L2_loadruh_pbr Rd32 = memuh(Rx32++Mu2:brev)
L2_loadrh_pbr Rd32 = memh(Rx32++Mu2:brev)
L2_loadri_pbr Rd32 = memw(Rx32++Mu2:brev)
L2_loadrd_pbr Rdd32 = memd(Rx32++Mu2:brev)
S2_storerb_pbr memb(Rx32++Mu2:brev).=.Rt32
S2_storerh_pbr memh(Rx32++Mu2:brev).=.Rt32
S2_storerf_pbr memh(Rx32++Mu2:brev).=.Rt.H32
S2_storeri_pbr memw(Rx32++Mu2:brev).=.Rt32
S2_storerd_pbr memd(Rx32++Mu2:brev).=.Rt32
S2_storerinew_pbr memw(Rx32++Mu2:brev).=.Nt8.new
S2_storerbnew_pbr memw(Rx32++Mu2:brev).=.Nt8.new
S2_storerhnew_pbr memw(Rx32++Mu2:brev).=.Nt8.new
Test cases in tests/tcg/hexagon/brev.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-24-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 16:03:10 -07:00
Taylor Simpson
46ef47e2a7
Hexagon (target/hexagon) circular addressing
...
The following instructions are added
L2_loadrub_pci Rd32 = memub(Rx32++#s4:0:circ(Mu2))
L2_loadrb_pci Rd32 = memb(Rx32++#s4:0:circ(Mu2))
L2_loadruh_pci Rd32 = memuh(Rx32++#s4:1:circ(Mu2))
L2_loadrh_pci Rd32 = memh(Rx32++#s4:1:circ(Mu2))
L2_loadri_pci Rd32 = memw(Rx32++#s4:2:circ(Mu2))
L2_loadrd_pci Rdd32 = memd(Rx32++#s4:3:circ(Mu2))
S2_storerb_pci memb(Rx32++#s4:0:circ(Mu2)) = Rt32
S2_storerh_pci memh(Rx32++#s4:1:circ(Mu2)) = Rt32
S2_storerf_pci memh(Rx32++#s4:1:circ(Mu2)) = Rt.H32
S2_storeri_pci memw(Rx32++#s4:2:circ(Mu2)) = Rt32
S2_storerd_pci memd(Rx32++#s4:3:circ(Mu2)) = Rtt32
S2_storerbnew_pci memb(Rx32++#s4:0:circ(Mu2)) = Nt8.new
S2_storerhnew_pci memw(Rx32++#s4:1:circ(Mu2)) = Nt8.new
S2_storerinew_pci memw(Rx32++#s4:2:circ(Mu2)) = Nt8.new
L2_loadrub_pcr Rd32 = memub(Rx32++I:circ(Mu2))
L2_loadrb_pcr Rd32 = memb(Rx32++I:circ(Mu2))
L2_loadruh_pcr Rd32 = memuh(Rx32++I:circ(Mu2))
L2_loadrh_pcr Rd32 = memh(Rx32++I:circ(Mu2))
L2_loadri_pcr Rd32 = memw(Rx32++I:circ(Mu2))
L2_loadrd_pcr Rdd32 = memd(Rx32++I:circ(Mu2))
S2_storerb_pcr memb(Rx32++I:circ(Mu2)) = Rt32
S2_storerh_pcr memh(Rx32++I:circ(Mu2)) = Rt32
S2_storerf_pcr memh(Rx32++I:circ(Mu2)) = Rt32.H32
S2_storeri_pcr memw(Rx32++I:circ(Mu2)) = Rt32
S2_storerd_pcr memd(Rx32++I:circ(Mu2)) = Rtt32
S2_storerbnew_pcr memb(Rx32++I:circ(Mu2)) = Nt8.new
S2_storerhnew_pcr memh(Rx32++I:circ(Mu2)) = Nt8.new
S2_storerinew_pcr memw(Rx32++I:circ(Mu2)) = Nt8.new
Test cases in tests/tcg/hexagon/circ.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-23-git-send-email-tsimpson@quicinc.com >
[rth: Squash <1619667142-29636-1-git-send-email-tsimpson@quicinc.com >
removing gen_read_reg and gen_set_byte to avoid clang Werror.]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 16:01:39 -07:00
Richard Henderson
af93ccacc7
decodetree: Extend argument set syntax to allow types
...
Rather than force all structure members to be 'int',
allow the type of the member to be specified.
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 11:45:35 -07:00
Luis Fernando Fujita Pires
60c425f328
decodetree: Add support for 64-bit instructions
...
Allow '64' to be specified for the instruction width command line params
and use the appropriate extract and deposit functions in that case.
This will be used to implement the new 64-bit Power ISA 3.1 instructions.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Luis Pires <luis.pires@eldorado.org.br >
Message-Id: <CP2PR80MB3668E123E2EFDB0ACD3A46F1DA759@CP2PR80MB3668.lamprd80.prod.outlook.com >
[rth: Drop the change to the field type; use bitop_width instead of separate
variables for extract/deposit; use "ull" for 64-bit constants.]
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 11:45:19 -07:00
Richard Henderson
9f6e2b4d34
decodetree: More use of f-strings
...
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 11:45:02 -07:00
Richard Henderson
c7cefe6c66
decodetree: Introduce whex and whexC helpers
...
Form a hex constant of the appropriate insnwidth.
Begin using f-strings on changed lines.
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 11:44:56 -07:00
Philippe Mathieu-Daudé
db647703ba
exec: Remove accel/tcg/ from include paths
...
When TCG is enabled, the accel/tcg/ include path is added to the
project global include search list. This accel/tcg/ directory
contains a header named "internal.h" which, while intented to
be internal to accel/tcg/, is accessible by all files compiled
when TCG is enabled. This might lead to problem with other
directories using the same "internal.h" header name:
$ git ls-files | fgrep /internal.h
accel/tcg/internal.h
include/hw/ide/internal.h
target/hexagon/internal.h
target/mips/internal.h
target/ppc/internal.h
target/s390x/internal.h
As we don't need to expose accel/tcg/ internals to the rest of
the code base, simplify by removing it from the include search
list, and include the accel/tcg/ public headers relative to the
project root search path (which is already in the generic include
search path).
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Claudio Fontana <cfontana@suse.de >
Message-Id: <20210413081008.3409459-1-f4bug@amsat.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 11:44:13 -07:00
Taylor Simpson
57d352ac29
Hexagon (target/hexagon) add A4_addp_c/A4_subp_c
...
Rdd32 = add(Rss32, Rtt32, Px4):carry
Add with carry
Rdd32 = sub(Rss32, Rtt32, Px4):carry
Sub with carry
Test cases in tests/tcg/hexagon/multi_result.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-22-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
0a65d28693
Hexagon (target/hexagon) add A6_vminub_RdP
...
Rdd32,Pe4 = vminub(Rtt32, Rss32)
Vector min of bytes
Test cases in tests/tcg/hexagon/multi_result.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-21-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
da74cd2dce
Hexagon (target/hexagon) add A5_ACS (vacsh)
...
Rxx32,Pe4 = vacsh(Rss32, Rtt32)
Add compare and select elements of two vectors
Test cases in tests/tcg/hexagon/multi_result.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-20-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
dd8705bdf5
Hexagon (target/hexagon) add F2_sfinvsqrta
...
Rd32,Pe4 = sfinvsqrta(Rs32)
Square root approx
The helper packs the 2 32-bit results into a 64-bit value,
and the fGEN_TCG override unpacks them into the proper results.
Test cases in tests/tcg/hexagon/multi_result.c
FP exception tests added to tests/tcg/hexagon/fpstuff.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-19-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
d934c16d8a
Hexagon (target/hexagon) add F2_sfrecipa instruction
...
Rd32,Pe4 = sfrecipa(Rs32, Rt32)
Recripocal approx
Test cases in tests/tcg/hexagon/multi_result.c
FP exception tests added to tests/tcg/hexagon/fpstuff.c
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-18-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
85580a6557
Hexagon (target/hexagon) compile all debug code
...
Change #if HEX_DEBUG to if (HEX_DEBUG) so the debug code doesn't bit rot
Suggested-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-17-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
a33872eb53
Hexagon (target/hexagon) move QEMU_GENERATE to only be on during macros.h
...
Suggested-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-16-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
80be682844
Hexagon (target/hexagon) cleanup reg_field_info definition
...
Include size in declaration
Remove {0, 0} entry
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-15-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
9fe33c0e70
Hexagon (target/hexagon) cleanup ternary operators in semantics
...
Change (cond ? (res = x) : (res = y)) to res = (cond ? x : y)
This makes the semnatics easier to for idef-parser to deal with
The following instructions are impacted
C2_any8
C2_all8
C2_mux
C2_muxii
C2_muxir
C2_muxri
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-14-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
b3f37abdd3
Hexagon (target/hexagon) use softfloat for float-to-int conversions
...
Use the proper return for helpers that convert to unsigned
Remove target/hexagon/conv_emu.[ch]
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-13-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
1cb532fe45
Hexagon (target/hexagon) replace float32_mul_pow2 with float32_scalbn
...
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-12-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
c0336c87b7
Hexagon (target/hexagon) use softfloat default NaN and tininess
...
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-11-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
8c36752435
Hexagon (target/hexagon) change type of softfloat_roundingmodes
...
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-10-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00
Taylor Simpson
85511161f7
Hexagon (target/hexagon) remove unused carry_from_add64 function
...
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Taylor Simpson <tsimpson@quicinc.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <1617930474-31979-9-git-send-email-tsimpson@quicinc.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2021-05-01 08:31:43 -07:00