Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20200725' int…
Browse files Browse the repository at this point in the history
…o staging

Fix some cputlb commentary
Fix an hppa temporary leak
Fix an i386 translation issue with loop insns

# gpg: Signature made Sat 25 Jul 2020 17:03:59 BST
# gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Richard Henderson <[email protected]>" [full]
# Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A  05C0 64DF 38E8 AF7E 215F

* remotes/rth/tags/pull-tcg-20200725:
  target/i386: Save cc_op before loop insns
  target/hppa: Free some temps in do_sub
  tcg: update comments for save_iotlb_data in cputlb

Signed-off-by: Peter Maydell <[email protected]>
  • Loading branch information
pm215 committed Jul 26, 2020
2 parents 57cdde4 + 3cb3a77 commit 194f8ca
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
11 changes: 5 additions & 6 deletions accel/tcg/cputlb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1075,10 +1075,8 @@ static uint64_t io_readx(CPUArchState *env, CPUIOTLBEntry *iotlbentry,

/*
* Save a potentially trashed IOTLB entry for later lookup by plugin.
*
* We also need to track the thread storage address because the RCU
* cleanup that runs when we leave the critical region (the current
* execution) is actually in a different thread.
* This is read by tlb_plugin_lookup if the iotlb entry doesn't match
* because of the side effect of io_writex changing memory layout.
*/
static void save_iotlb_data(CPUState *cs, hwaddr addr,
MemoryRegionSection *section, hwaddr mr_offset)
Expand Down Expand Up @@ -1408,8 +1406,9 @@ void *tlb_vaddr_to_host(CPUArchState *env, abi_ptr addr,
* This almost never fails as the memory access being instrumented
* should have just filled the TLB. The one corner case is io_writex
* which can cause TLB flushes and potential resizing of the TLBs
* loosing the information we need. In those cases we need to recover
* data from a copy of the io_tlb entry.
* losing the information we need. In those cases we need to recover
* data from a copy of the iotlbentry. As long as this always occurs
* from the same thread (which a mem callback will be) this is safe.
*/

bool tlb_plugin_lookup(CPUState *cpu, target_ulong addr, int mmu_idx,
Expand Down
2 changes: 2 additions & 0 deletions target/hppa/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -1294,6 +1294,8 @@ static void do_sub(DisasContext *ctx, unsigned rt, TCGv_reg in1,
save_or_nullify(ctx, cpu_psw_cb_msb, cb_msb);
save_gpr(ctx, rt, dest);
tcg_temp_free(dest);
tcg_temp_free(cb);
tcg_temp_free(cb_msb);

/* Install the new nullification. */
cond_free(&ctx->null_cond);
Expand Down
1 change: 1 addition & 0 deletions target/i386/translate.c
Original file line number Diff line number Diff line change
Expand Up @@ -7148,6 +7148,7 @@ static target_ulong disas_insn(DisasContext *s, CPUState *cpu)
l1 = gen_new_label();
l2 = gen_new_label();
l3 = gen_new_label();
gen_update_cc_op(s);
b &= 3;
switch(b) {
case 0: /* loopnz */
Expand Down

0 comments on commit 194f8ca

Please sign in to comment.