On 6/23/20 9:35 PM, Clement Leger wrote: > Before booting, we must make sure the I-cache is synchronized with the > D-cache to execute loaded instructions. In order to do that, add a > function which execute a fence to ensure every memory accesses have > been committed out of processor pipeline to memory and then invalidate > I-cache to reload from memory. Moreover add a D-cache invalidation > routine to cleanup cache before booting. > > Signed-off-by: Clement Leger <cleger@xxxxxxxxx> > --- > arch/kvx/include/asm/cache.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > create mode 100644 arch/kvx/include/asm/cache.h > > diff --git a/arch/kvx/include/asm/cache.h b/arch/kvx/include/asm/cache.h > new file mode 100644 > index 000000000..efda37ebd > --- /dev/null > +++ b/arch/kvx/include/asm/cache.h > @@ -0,0 +1,24 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * Copyright (C) 2019 Kalray Inc. > + */ > + > +#ifndef __KVX_CACHE_H > +#define __KVX_CACHE_H > + > +#include <linux/types.h> > + > +static inline void sync_dcache_icache(void) > +{ > + __builtin_kvx_fence(); > + __builtin_kvx_iinval(); > + __builtin_kvx_barrier(); > +} ARCH=arm calls this sync_caches_for_execution. Using the same name sounds like a good idea IMHO. > + > +static inline void dcache_inval(void) > +{ > + __builtin_kvx_fence(); > + __builtin_kvx_dinval(); > +} > + > +#endif /* __KVX_CACHE_H */ > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox