Ranged cache invalidation

This commit is contained in:
Lynn
2017-02-16 18:18:29 +00:00
committed by Merry
parent d9c69ad997
commit fd068ed6b8
11 changed files with 188 additions and 31 deletions

View File

@@ -0,0 +1,33 @@
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* This software may be used and distributed according to the terms of the GNU
* General Public License version 2 or any later version.
*/
#pragma once
#include <cstddef>
#include <boost/variant.hpp>
#include "common/common_types.h"
namespace Dynarmic {
namespace Common {
struct FullAddressRange {};
struct AddressInterval {
u32 start_address;
std::size_t length;
// Does this interval overlap with [from, to)?
bool Overlaps(u32 from, u32 to) const {
return start_address <= to && from <= start_address + length;
}
};
using AddressRange = boost::variant<FullAddressRange, AddressInterval>;
} // namespace Common
} // namespace Dynarmic