- Timestamp:
- Jan 27, 2018, 1:37:51 PM (3 years ago)
- Branches:
- 5, master
- Children:
- 05015dc1
- Parents:
- d8d6a08
- git-author:
- Sebastian Huber <sebastian.huber@…> (01/27/18 13:37:51)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (01/31/18 11:49:09)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
bsps/bfin/shared/cache/cache.c
rd8d6a08 r4cf93658 13 13 #include <bsp.h> 14 14 #include <libcpu/memoryRegs.h> 15 #include "cache_.h"16 15 16 #define CPU_DATA_CACHE_ALIGNMENT 32 17 #define CPU_INSTRUCTION_CACHE_ALIGNMENT 32 18 19 #ifdef BSP_DATA_CACHE_CONFIG 20 #define LIBCPU_DATA_CACHE_CONFIG BSP_DATA_CACHE_CONFIG 21 #else 22 /* use 16K of each SRAM bank */ 23 #define LIBCPU_DATA_CACHE_CONFIG (3 << DMEM_CONTROL_DMC_SHIFT) 24 #endif 17 25 18 26 /* There are many syncs in the following code because they should be … … 22 30 23 31 24 void _CPU_cache_flush_1_data_line(const void *d_addr) {32 static void _CPU_cache_flush_1_data_line(const void *d_addr) { 25 33 26 34 __asm__ __volatile__ ("ssync; flush [%0]; ssync" :: "a" (d_addr)); … … 33 41 way to insure the dirty line hadn't been written out anyway prior 34 42 to the invalidate. */ 35 void _CPU_cache_invalidate_1_data_line(const void *d_addr) {43 static void _CPU_cache_invalidate_1_data_line(const void *d_addr) { 36 44 37 45 __asm__ __volatile__ ("ssync; flushinv [%0]; ssync" :: "a" (d_addr)); 38 46 } 39 47 40 void _CPU_cache_freeze_data(void) {48 static void _CPU_cache_freeze_data(void) { 41 49 } 42 50 43 void _CPU_cache_unfreeze_data(void) {51 static void _CPU_cache_unfreeze_data(void) { 44 52 } 45 53 46 void _CPU_cache_invalidate_1_instruction_line(const void *d_addr) {54 static void _CPU_cache_invalidate_1_instruction_line(const void *d_addr) { 47 55 48 56 __asm__ __volatile__ ("ssync; iflush [%0]; ssync" :: "a" (d_addr)); 49 57 } 50 58 51 void _CPU_cache_freeze_instruction(void) {59 static void _CPU_cache_freeze_instruction(void) { 52 60 } 53 61 54 void _CPU_cache_unfreeze_instruction(void) {62 static void _CPU_cache_unfreeze_instruction(void) { 55 63 } 56 64 … … 60 68 seen on those is a bit sketchy, and I sure wouldn't want to get it 61 69 wrong. */ 62 void _CPU_cache_flush_entire_data(void) {70 static void _CPU_cache_flush_entire_data(void) { 63 71 uint32_t i; 64 72 … … 72 80 } 73 81 74 void _CPU_cache_invalidate_entire_data(void) {82 static void _CPU_cache_invalidate_entire_data(void) { 75 83 uint32_t dmemControl; 76 84 … … 84 92 /* this does not actually enable data cache unless CPLBs are also enabled. 85 93 LIBCPU_DATA_CACHE_CONFIG contains the DMEM_CONTROL_DMC bits to set. */ 86 void _CPU_cache_enable_data(void) {94 static void _CPU_cache_enable_data(void) { 87 95 88 96 __asm__ __volatile__ ("ssync"); … … 91 99 } 92 100 93 void _CPU_cache_disable_data(void) {101 static void _CPU_cache_disable_data(void) { 94 102 95 103 __asm__ __volatile__ ("ssync"); … … 98 106 } 99 107 100 void _CPU_cache_invalidate_entire_instruction(void) {108 static void _CPU_cache_invalidate_entire_instruction(void) { 101 109 uint32_t imemControl; 102 110 … … 110 118 /* this only actually enables the instruction cache if the CPLBs are also 111 119 enabled. */ 112 void _CPU_cache_enable_instruction(void) {120 static void _CPU_cache_enable_instruction(void) { 113 121 114 122 __asm__ __volatile__ ("ssync"); … … 117 125 } 118 126 119 void _CPU_cache_disable_instruction(void) {127 static void _CPU_cache_disable_instruction(void) { 120 128 121 129 __asm__ __volatile__ ("ssync"); … … 124 132 } 125 133 134 #include "../../../shared/cache/cacheimpl.h"
Note: See TracChangeset
for help on using the changeset viewer.