source: rtems/bsps/arm/shared/cache/cache-v7m.c @ ba619b7f

Last change on this file since ba619b7f was ba619b7f, checked in by Joel Sherrill <joel@…>, on 03/01/22 at 21:38:20

bsps/arm/: Scripted embedded brains header file clean up

Updates #4625.

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/*
2 * Copyright (c) 2016 embedded brains GmbH.  All rights reserved.
3 *
4 * The license and distribution terms for this file may be
5 * found in the file LICENSE in this distribution or at
6 * http://www.rtems.org/license/LICENSE.
7 */
8
9#include <rtems.h>
10#include <chip.h>
11
12#define CPU_DATA_CACHE_ALIGNMENT 32
13
14#define CPU_INSTRUCTION_CACHE_ALIGNMENT 32
15
16#define CPU_CACHE_SUPPORT_PROVIDES_RANGE_FUNCTIONS
17
18static inline void _CPU_cache_flush_data_range(
19  const void *d_addr,
20  size_t n_bytes
21)
22{
23  SCB_CleanInvalidateDCache_by_Addr(
24    RTEMS_DECONST(uint32_t *, (const uint32_t *) d_addr),
25    n_bytes
26  );
27}
28
29static inline void _CPU_cache_invalidate_data_range(
30  const void *d_addr,
31  size_t n_bytes
32)
33{
34  SCB_InvalidateDCache_by_Addr(
35    RTEMS_DECONST(uint32_t *, (const uint32_t *) d_addr),
36    n_bytes
37  );
38}
39
40static inline void _CPU_cache_freeze_data(void)
41{
42  /* TODO */
43}
44
45static inline void _CPU_cache_unfreeze_data(void)
46{
47  /* TODO */
48}
49
50static inline void _CPU_cache_invalidate_instruction_range(
51  const void *i_addr,
52  size_t n_bytes
53)
54{
55  rtems_interrupt_level level;
56
57  rtems_interrupt_disable(level);
58  SCB_InvalidateICache();
59  rtems_interrupt_enable(level);
60}
61
62static inline void _CPU_cache_freeze_instruction(void)
63{
64  /* TODO */
65}
66
67static inline void _CPU_cache_unfreeze_instruction(void)
68{
69  /* TODO */
70}
71
72static inline void _CPU_cache_flush_entire_data(void)
73{
74  rtems_interrupt_level level;
75
76  rtems_interrupt_disable(level);
77  SCB_CleanDCache();
78  rtems_interrupt_enable(level);
79}
80
81static inline void _CPU_cache_invalidate_entire_data(void)
82{
83  rtems_interrupt_level level;
84
85  rtems_interrupt_disable(level);
86  SCB_InvalidateDCache();
87  rtems_interrupt_enable(level);
88}
89
90static inline void _CPU_cache_enable_data(void)
91{
92  rtems_interrupt_level level;
93
94  rtems_interrupt_disable(level);
95  SCB_EnableDCache();
96  rtems_interrupt_enable(level);
97}
98
99static inline void _CPU_cache_disable_data(void)
100{
101  rtems_interrupt_level level;
102
103  rtems_interrupt_disable(level);
104  SCB_DisableDCache();
105  rtems_interrupt_enable(level);
106}
107
108static inline void _CPU_cache_invalidate_entire_instruction(void)
109{
110  rtems_interrupt_level level;
111
112  rtems_interrupt_disable(level);
113  SCB_InvalidateICache();
114  rtems_interrupt_enable(level);
115}
116
117static inline void _CPU_cache_enable_instruction(void)
118{
119  rtems_interrupt_level level;
120
121  rtems_interrupt_disable(level);
122  SCB_EnableICache();
123  rtems_interrupt_enable(level);
124}
125
126static inline void _CPU_cache_disable_instruction(void)
127{
128  rtems_interrupt_level level;
129
130  rtems_interrupt_disable(level);
131  SCB_DisableICache();
132  rtems_interrupt_enable(level);
133}
134
135#include "../../shared/cache/cacheimpl.h"
Note: See TracBrowser for help on using the repository browser.