aboutsummaryrefslogtreecommitdiff
path: root/arch/sandbox/cpu/cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sandbox/cpu/cache.c')
-rw-r--r--arch/sandbox/cpu/cache.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/sandbox/cpu/cache.c b/arch/sandbox/cpu/cache.c
new file mode 100644
index 0000000..46c62c0
--- /dev/null
+++ b/arch/sandbox/cpu/cache.c
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2020, Heinrich Schuchardt <xypron.glpk@gmx.de>
+ */
+
+#include <common.h>
+#include <cpu_func.h>
+#include <asm/state.h>
+
+void flush_cache(unsigned long addr, unsigned long size)
+{
+ /* Clang uses (char *) parameters, GCC (void *) */
+ __builtin___clear_cache((void *)addr, (void *)(addr + size));
+}
+
+void invalidate_icache_all(void)
+{
+ struct sandbox_state *state = state_get_current();
+
+ /* Clang uses (char *) parameters, GCC (void *) */
+ __builtin___clear_cache((void *)state->ram_buf,
+ (void *)(state->ram_buf + state->ram_size));
+}