summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/mips/mmu-mips.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/firmware/target/mips/mmu-mips.h b/firmware/target/mips/mmu-mips.h
index f96ddcc28d..b54807f060 100644
--- a/firmware/target/mips/mmu-mips.h
+++ b/firmware/target/mips/mmu-mips.h
@@ -24,29 +24,37 @@
24 24
25#include "system-target.h" 25#include "system-target.h"
26 26
27/* By default the cache management functions go in .icode so they can be
28 * called safely eg. by the bootloader or RoLo, which need to flush the
29 * cache before jumping to the loaded binary.
30 */
31#ifndef MIPS_CACHEFUNC_ATTR
32# define MIPS_CACHEFUNC_ATTR __attribute__((section(".icode")))
33#endif
34
27void map_address(unsigned long virtual, unsigned long physical, 35void map_address(unsigned long virtual, unsigned long physical,
28 unsigned long length, unsigned int cache_flags); 36 unsigned long length, unsigned int cache_flags);
29void mmu_init(void); 37void mmu_init(void);
30 38
31/* Commits entire DCache */ 39/* Commits entire DCache */
32void commit_dcache(void); 40void commit_dcache(void) MIPS_CACHEFUNC_ATTR;
33/* Commit and discard entire DCache, will do writeback */ 41/* Commit and discard entire DCache, will do writeback */
34void commit_discard_dcache(void); 42void commit_discard_dcache(void) MIPS_CACHEFUNC_ATTR;
35 43
36/* Write DCache back to RAM for the given range and remove cache lines 44/* Write DCache back to RAM for the given range and remove cache lines
37 * from DCache afterwards */ 45 * from DCache afterwards */
38void commit_discard_dcache_range(const void *base, unsigned int size); 46void commit_discard_dcache_range(const void *base, unsigned int size) MIPS_CACHEFUNC_ATTR;
39 47
40/* Write DCache back to RAM for the given range */ 48/* Write DCache back to RAM for the given range */
41void commit_dcache_range(const void *base, unsigned int size); 49void commit_dcache_range(const void *base, unsigned int size) MIPS_CACHEFUNC_ATTR;
42 50
43/* 51/*
44 * Remove cache lines for the given range from DCache 52 * Remove cache lines for the given range from DCache
45 * will *NOT* do write back except for buffer edges not on a line boundary 53 * will *NOT* do write back except for buffer edges not on a line boundary
46 */ 54 */
47void discard_dcache_range(const void *base, unsigned int size); 55void discard_dcache_range(const void *base, unsigned int size) MIPS_CACHEFUNC_ATTR;
48 56
49/* Discards the entire ICache, and commit+discards the entire DCache */ 57/* Discards the entire ICache, and commit+discards the entire DCache */
50void commit_discard_idcache(void); 58void commit_discard_idcache(void) MIPS_CACHEFUNC_ATTR;
51 59
52#endif /* __MMU_MIPS_INCLUDE_H */ 60#endif /* __MMU_MIPS_INCLUDE_H */