xref: /optee_os/core/include/kernel/cache_helpers.h (revision f1badf16676103c6270ebcaf85fb02c37f53da28)
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 Boubakri static 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