1*f1badf16SMarouene Boubakri /* SPDX-License-Identifier: BSD-2-Clause */ 2*f1badf16SMarouene Boubakri /* 3*f1badf16SMarouene Boubakri * Copyright (c) 2017, Linaro Limited 4*f1badf16SMarouene Boubakri */ 5*f1badf16SMarouene Boubakri 6*f1badf16SMarouene Boubakri #ifndef __KERNEL_CACHE_HELPERS_H 7*f1badf16SMarouene Boubakri #define __KERNEL_CACHE_HELPERS_H 8*f1badf16SMarouene Boubakri 9*f1badf16SMarouene Boubakri #ifndef __ASSEMBLER__ 10*f1badf16SMarouene Boubakri #include <kernel/cache_helpers_arch.h> 11*f1badf16SMarouene Boubakri #include <types_ext.h> 12*f1badf16SMarouene Boubakri #endif 13*f1badf16SMarouene Boubakri 14*f1badf16SMarouene Boubakri /* Data Cache set/way op type defines */ 15*f1badf16SMarouene Boubakri #define DCACHE_OP_INV 0x0 16*f1badf16SMarouene Boubakri #define DCACHE_OP_CLEAN_INV 0x1 17*f1badf16SMarouene Boubakri #define DCACHE_OP_CLEAN 0x2 18*f1badf16SMarouene Boubakri 19*f1badf16SMarouene Boubakri #ifndef __ASSEMBLER__ 20*f1badf16SMarouene Boubakri void dcache_cleaninv_range(void *addr, size_t size); 21*f1badf16SMarouene Boubakri void dcache_clean_range(void *addr, size_t size); 22*f1badf16SMarouene Boubakri void dcache_inv_range(void *addr, size_t size); 23*f1badf16SMarouene Boubakri void dcache_clean_range_pou(void *addr, size_t size); 24*f1badf16SMarouene Boubakri 25*f1badf16SMarouene Boubakri void icache_inv_all(void); 26*f1badf16SMarouene Boubakri void icache_inv_range(void *addr, size_t size); 27*f1badf16SMarouene Boubakri void icache_inv_user_range(void *addr, size_t size); 28*f1badf16SMarouene Boubakri 29*f1badf16SMarouene Boubakri void dcache_op_louis(unsigned long op_type); 30*f1badf16SMarouene Boubakri void dcache_op_all(unsigned long op_type); 31*f1badf16SMarouene Boubakri 32*f1badf16SMarouene Boubakri void dcache_op_level1(unsigned long op_type); 33*f1badf16SMarouene Boubakri void dcache_op_level2(unsigned long op_type); 34*f1badf16SMarouene Boubakri void dcache_op_level3(unsigned long op_type); 35*f1badf16SMarouene Boubakri 36*f1badf16SMarouene Boubakri /* 37*f1badf16SMarouene Boubakri * Get system maximum cache line size. 38*f1badf16SMarouene Boubakri */ cache_get_max_line_size(void)39*f1badf16SMarouene Boubakristatic inline unsigned int cache_get_max_line_size(void) 40*f1badf16SMarouene Boubakri { 41*f1badf16SMarouene Boubakri return 1 << CFG_MAX_CACHE_LINE_SHIFT; 42*f1badf16SMarouene Boubakri } 43*f1badf16SMarouene Boubakri #endif /*!__ASSEMBLER__*/ 44*f1badf16SMarouene Boubakri 45*f1badf16SMarouene Boubakri #endif /*__KERNEL_CACHE_HELPERS_H*/ 46