mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
accel/tcg: Rebuild full flags in tlb_reset_dirty_range_locked
Undo the split between inline and slow flags before masking. Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
970354edc0
commit
f05d251906
1 changed files with 3 additions and 2 deletions
|
@ -886,9 +886,10 @@ static void tlb_reset_dirty_range_locked(CPUTLBEntryFull *full, CPUTLBEntry *ent
|
||||||
uintptr_t start, uintptr_t length)
|
uintptr_t start, uintptr_t length)
|
||||||
{
|
{
|
||||||
const uintptr_t addr = ent->addr_write;
|
const uintptr_t addr = ent->addr_write;
|
||||||
|
int flags = addr | full->slow_flags[MMU_DATA_STORE];
|
||||||
|
|
||||||
if ((addr & (TLB_INVALID_MASK | TLB_MMIO |
|
flags &= TLB_INVALID_MASK | TLB_MMIO | TLB_DISCARD_WRITE | TLB_NOTDIRTY;
|
||||||
TLB_DISCARD_WRITE | TLB_NOTDIRTY)) == 0) {
|
if (flags == 0) {
|
||||||
uintptr_t host = (addr & TARGET_PAGE_MASK) + ent->addend;
|
uintptr_t host = (addr & TARGET_PAGE_MASK) + ent->addend;
|
||||||
if ((host - start) < length) {
|
if ((host - start) < length) {
|
||||||
qatomic_set(&ent->addr_write, addr | TLB_NOTDIRTY);
|
qatomic_set(&ent->addr_write, addr | TLB_NOTDIRTY);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue