blob: 96b3da47e8edd71a3496152207e3b91a3a1e8feb [file] [log] [blame]
Heinrich Schuchardt47c5e192020-12-09 19:42:44 +01001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright 2020, Heinrich Schuchardt <xypron.glpk@gmx.de>
4 */
5
Heinrich Schuchardt47c5e192020-12-09 19:42:44 +01006#include <cpu_func.h>
Simon Glass567b62c2024-11-27 11:17:19 -06007#include <mapmem.h>
Heinrich Schuchardt47c5e192020-12-09 19:42:44 +01008#include <asm/state.h>
9
10void flush_cache(unsigned long addr, unsigned long size)
11{
Simon Glass567b62c2024-11-27 11:17:19 -060012 void *ptr;
13
14 ptr = map_sysmem(addr, size);
15
Heinrich Schuchardt47c5e192020-12-09 19:42:44 +010016 /* Clang uses (char *) parameters, GCC (void *) */
Simon Glass567b62c2024-11-27 11:17:19 -060017 __builtin___clear_cache(map_sysmem(addr, size), ptr + size);
18 unmap_sysmem(ptr);
Heinrich Schuchardt47c5e192020-12-09 19:42:44 +010019}
20
21void invalidate_icache_all(void)
22{
23 struct sandbox_state *state = state_get_current();
24
25 /* Clang uses (char *) parameters, GCC (void *) */
26 __builtin___clear_cache((void *)state->ram_buf,
27 (void *)(state->ram_buf + state->ram_size));
28}