unicorn/qemu/include/exec
David Hildenbrand de513617c8 accel/tcg: allow to invalidate a write TLB entry immediately
Background: s390x implements Low-Address Protection (LAP). If LAP is
enabled, writing to effective addresses (before any translation)
0-511 and 4096-4607 triggers a protection exception.

So we have subpage protection on the first two pages of every address
space (where the lowcore - the CPU private data resides).

By immediately invalidating the write entry but allowing the caller to
continue, we force every write access onto these first two pages into
the slow path. we will get a tlb fault with the specific accessed
addresses and can then evaluate if protection applies or not.

We have to make sure to ignore the invalid bit if tlb_fill() succeeds.

Backports commit f52bfb12143e29d7c8bd827bdb751aee47a9694e from qemu
2020-01-14 07:14:10 -05:00
..
address-spaces.h Clean up header guards that don't match their file name 2018-02-25 04:18:42 -05:00
cpu-all.h accel/tcg: allow to invalidate a write TLB entry immediately 2020-01-14 07:14:10 -05:00
cpu-common.h cpu: Introduce a wrapper for tlb_flush() that can be used in common code 2018-03-03 21:24:55 -05:00
cpu-defs.h include/exec/cpu-defs.h: fix typo 2019-11-28 02:38:15 -05:00
cpu_ldst.h tcg: Use tlb_fill probe from tlb_vaddr_to_host 2019-05-16 18:27:03 -04:00
cpu_ldst_template.h cpu_ldst_template.h: Drop unused cpu_ldfq/stfq/ldfl/stfl accessors 2019-04-22 07:21:03 -04:00
cpu_ldst_useronly_template.h cpu_ldst.h: Use inline functions for usermode cpu_ld/st accessors 2019-04-22 07:08:39 -04:00
cputlb.h exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
exec-all.h tcg: Factor out probe_write() logic into probe_access() 2020-01-14 07:07:54 -05:00
gen-icount.h cpu: Move icount_decr to CPUNegativeOffsetState 2019-06-13 15:34:28 -04:00
helper-gen.h target/arm: Implement SVE Integer Multiply-Add Group 2018-05-20 04:35:36 -04:00
helper-head.h exec/helper-*: Synchronize with qemu 2019-04-22 08:22:49 -04:00
helper-proto.h tcg: Allow 6 arguments to TCG helpers 2018-03-17 18:29:04 -04:00
helper-tcg.h exec/helper-*: Synchronize with qemu 2019-04-22 08:22:49 -04:00
hwaddr.h qemu-common: push cpu.h inclusion out of qemu-common.h 2018-02-24 01:50:56 -05:00
ioport.h hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
memattrs.h cputlb: Byte swap memory transaction attribute 2020-01-07 19:15:33 -05:00
memop.h cputlb: Replace size and endian operands for MemOp 2020-01-07 19:03:51 -05:00
memory-internal.h memory: Rename mem_begin/mem_commit/mem_add helpers 2018-03-11 21:36:50 -04:00
memory.h memory: Access MemoryRegion with endianness 2020-01-07 18:54:11 -05:00
ram_addr.h exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
ramlist.h memory: RCU ram_list.dirty_memory[] for safe RAM hotplug 2018-02-22 15:38:03 -05:00
semihost.h exec: Add semihosting stubs 2018-02-17 15:23:33 -05:00
tb-context.h tcg: allocate TB structs before the corresponding translated code 2018-03-03 17:05:49 -05:00
tb-hash.h tcg: define CF_PARALLEL and use it for TB hashing along with CF_COUNT_MASK 2019-05-04 22:22:06 -04:00
tb-lookup.h tcg: define CF_PARALLEL and use it for TB hashing along with CF_COUNT_MASK 2019-05-04 22:22:06 -04:00
translator.h tcg: Hoist max_insns computation to tb_gen_code 2019-04-30 09:49:57 -04:00