mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
tcg: TCGMemOp is now accelerator independent MemOp
Preparation for collapsing the two byte swaps, adjust_endianness and handle_bswap, along the I/O path. Target dependant attributes are conditionalized upon NEED_CPU_H. Signed-off-by: Tony Nguyen <tony.nguyen@bt.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Acked-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <81d9cd7d7f5aaadfa772d6c48ecee834e9cf7882.1566466906.git.tony.nguyen@bt.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
fec105c2ab
commit
14776ab5a1
39 changed files with 418 additions and 396 deletions
|
@ -2019,7 +2019,7 @@ static inline void gen_ne_fop_QD(DisasContext *dc, int rd, int rs,
|
|||
}
|
||||
|
||||
static void gen_swap(DisasContext *dc, TCGv dst, TCGv src,
|
||||
TCGv addr, int mmu_idx, TCGMemOp memop)
|
||||
TCGv addr, int mmu_idx, MemOp memop)
|
||||
{
|
||||
gen_address_mask(dc, addr);
|
||||
tcg_gen_atomic_xchg_tl(dst, addr, src, mmu_idx, memop);
|
||||
|
@ -2050,10 +2050,10 @@ typedef struct {
|
|||
ASIType type;
|
||||
int asi;
|
||||
int mem_idx;
|
||||
TCGMemOp memop;
|
||||
MemOp memop;
|
||||
} DisasASI;
|
||||
|
||||
static DisasASI get_asi(DisasContext *dc, int insn, TCGMemOp memop)
|
||||
static DisasASI get_asi(DisasContext *dc, int insn, MemOp memop)
|
||||
{
|
||||
int asi = GET_FIELD(insn, 19, 26);
|
||||
ASIType type = GET_ASI_HELPER;
|
||||
|
@ -2267,7 +2267,7 @@ static DisasASI get_asi(DisasContext *dc, int insn, TCGMemOp memop)
|
|||
}
|
||||
|
||||
static void gen_ld_asi(DisasContext *dc, TCGv dst, TCGv addr,
|
||||
int insn, TCGMemOp memop)
|
||||
int insn, MemOp memop)
|
||||
{
|
||||
DisasASI da = get_asi(dc, insn, memop);
|
||||
|
||||
|
@ -2305,7 +2305,7 @@ static void gen_ld_asi(DisasContext *dc, TCGv dst, TCGv addr,
|
|||
}
|
||||
|
||||
static void gen_st_asi(DisasContext *dc, TCGv src, TCGv addr,
|
||||
int insn, TCGMemOp memop)
|
||||
int insn, MemOp memop)
|
||||
{
|
||||
DisasASI da = get_asi(dc, insn, memop);
|
||||
|
||||
|
@ -2511,7 +2511,7 @@ static void gen_ldf_asi(DisasContext *dc, TCGv addr,
|
|||
case GET_ASI_BLOCK:
|
||||
/* Valid for lddfa on aligned registers only. */
|
||||
if (size == 8 && (rd & 7) == 0) {
|
||||
TCGMemOp memop;
|
||||
MemOp memop;
|
||||
TCGv eight;
|
||||
int i;
|
||||
|
||||
|
@ -2625,7 +2625,7 @@ static void gen_stf_asi(DisasContext *dc, TCGv addr,
|
|||
case GET_ASI_BLOCK:
|
||||
/* Valid for stdfa on aligned registers only. */
|
||||
if (size == 8 && (rd & 7) == 0) {
|
||||
TCGMemOp memop;
|
||||
MemOp memop;
|
||||
TCGv eight;
|
||||
int i;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue