summaryrefslogtreecommitdiffstats
path: root/src/core/memory.h
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2022-11-12 17:02:07 +0100
committerLiam <byteslice@airmail.cc>2022-11-12 17:27:04 +0100
commit651f6598ac8a980700c330f382d711f7429571a8 (patch)
tree4dcc480763f706a8584d113d27862d68d10aebc4 /src/core/memory.h
parentcommon: add cache management functions (diff)
downloadyuzu-651f6598ac8a980700c330f382d711f7429571a8.tar
yuzu-651f6598ac8a980700c330f382d711f7429571a8.tar.gz
yuzu-651f6598ac8a980700c330f382d711f7429571a8.tar.bz2
yuzu-651f6598ac8a980700c330f382d711f7429571a8.tar.lz
yuzu-651f6598ac8a980700c330f382d711f7429571a8.tar.xz
yuzu-651f6598ac8a980700c330f382d711f7429571a8.tar.zst
yuzu-651f6598ac8a980700c330f382d711f7429571a8.zip
Diffstat (limited to '')
-rw-r--r--src/core/memory.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/core/memory.h b/src/core/memory.h
index 81eac448b..31fe699d8 100644
--- a/src/core/memory.h
+++ b/src/core/memory.h
@@ -7,6 +7,7 @@
#include <memory>
#include <string>
#include "common/common_types.h"
+#include "core/hle/result.h"
namespace Common {
struct PageTable;
@@ -450,6 +451,39 @@ public:
void ZeroBlock(const Kernel::KProcess& process, VAddr dest_addr, std::size_t size);
/**
+ * Invalidates a range of bytes within the current process' address space at the specified
+ * virtual address.
+ *
+ * @param process The process that will have data invalidated within its address space.
+ * @param dest_addr The destination virtual address to invalidate the data from.
+ * @param size The size of the range to invalidate, in bytes.
+ *
+ */
+ Result InvalidateDataCache(const Kernel::KProcess& process, VAddr dest_addr, std::size_t size);
+
+ /**
+ * Stores a range of bytes within the current process' address space at the specified
+ * virtual address.
+ *
+ * @param process The process that will have data stored within its address space.
+ * @param dest_addr The destination virtual address to store the data from.
+ * @param size The size of the range to store, in bytes.
+ *
+ */
+ Result StoreDataCache(const Kernel::KProcess& process, VAddr dest_addr, std::size_t size);
+
+ /**
+ * Flushes a range of bytes within the current process' address space at the specified
+ * virtual address.
+ *
+ * @param process The process that will have data flushed within its address space.
+ * @param dest_addr The destination virtual address to flush the data from.
+ * @param size The size of the range to flush, in bytes.
+ *
+ */
+ Result FlushDataCache(const Kernel::KProcess& process, VAddr dest_addr, std::size_t size);
+
+ /**
* Marks each page within the specified address range as cached or uncached.
*
* @param vaddr The virtual address indicating the start of the address range.