1# 2# MN10300 CPU cache options 3# 4 5choice 6 prompt "CPU Caching mode" 7 default MN10300_CACHE_WBACK 8 help 9 This option determines the caching mode for the kernel. 10 11 Write-Back caching mode involves the all reads and writes causing 12 the affected cacheline to be read into the cache first before being 13 operated upon. Memory is not then updated by a write until the cache 14 is filled and a cacheline needs to be displaced from the cache to 15 make room. Only at that point is it written back. 16 17 Write-Through caching only fetches cachelines from memory on a 18 read. Writes always get written directly to memory. If the affected 19 cacheline is also in cache, it will be updated too. 20 21 The final option is to turn of caching entirely. 22 23config MN10300_CACHE_WBACK 24 bool "Write-Back" 25 help 26 The dcache operates in delayed write-back mode. It must be manually 27 flushed if writes are made that subsequently need to be executed or 28 to be DMA'd by a device. 29 30config MN10300_CACHE_WTHRU 31 bool "Write-Through" 32 help 33 The dcache operates in immediate write-through mode. Writes are 34 committed to RAM immediately in addition to being stored in the 35 cache. This means that the written data is immediately available for 36 execution or DMA. 37 38 This is not available for use with an SMP kernel if cache flushing 39 and invalidation by automatic purge register is not selected. 40 41config MN10300_CACHE_DISABLED 42 bool "Disabled" 43 help 44 The icache and dcache are disabled. 45 46endchoice 47 48config MN10300_CACHE_ENABLED 49 def_bool y if !MN10300_CACHE_DISABLED 50 51 52choice 53 prompt "CPU cache flush/invalidate method" 54 default MN10300_CACHE_MANAGE_BY_TAG if !AM34_2 55 default MN10300_CACHE_MANAGE_BY_REG if AM34_2 56 depends on MN10300_CACHE_ENABLED 57 help 58 This determines the method by which CPU cache flushing and 59 invalidation is performed. 60 61config MN10300_CACHE_MANAGE_BY_TAG 62 bool "Use the cache tag registers directly" 63 depends on !(SMP && MN10300_CACHE_WTHRU) 64 65config MN10300_CACHE_MANAGE_BY_REG 66 bool "Flush areas by way of automatic purge registers (AM34 only)" 67 depends on AM34_2 68 69endchoice 70 71config MN10300_CACHE_INV_BY_TAG 72 def_bool y if MN10300_CACHE_MANAGE_BY_TAG && MN10300_CACHE_ENABLED 73 74config MN10300_CACHE_INV_BY_REG 75 def_bool y if MN10300_CACHE_MANAGE_BY_REG && MN10300_CACHE_ENABLED 76 77config MN10300_CACHE_FLUSH_BY_TAG 78 def_bool y if MN10300_CACHE_MANAGE_BY_TAG && MN10300_CACHE_WBACK 79 80config MN10300_CACHE_FLUSH_BY_REG 81 def_bool y if MN10300_CACHE_MANAGE_BY_REG && MN10300_CACHE_WBACK 82 83 84config MN10300_HAS_CACHE_SNOOP 85 def_bool n 86 87config MN10300_CACHE_SNOOP 88 bool "Use CPU Cache Snooping" 89 depends on MN10300_CACHE_ENABLED && MN10300_HAS_CACHE_SNOOP 90 default y 91 92config MN10300_CACHE_FLUSH_ICACHE 93 def_bool y if MN10300_CACHE_WBACK && !MN10300_CACHE_SNOOP 94 help 95 Set if we need the dcache flushing before the icache is invalidated. 96 97config MN10300_CACHE_INV_ICACHE 98 def_bool y if MN10300_CACHE_WTHRU && !MN10300_CACHE_SNOOP 99 help 100 Set if we need the icache to be invalidated, even if the dcache is in 101 write-through mode and doesn't need flushing. 102 103# 104# The kernel debugger gets its own separate cache flushing functions 105# 106config MN10300_DEBUGGER_CACHE_FLUSH_BY_TAG 107 def_bool y if KERNEL_DEBUGGER && \ 108 MN10300_CACHE_WBACK && \ 109 !MN10300_CACHE_SNOOP && \ 110 MN10300_CACHE_MANAGE_BY_TAG 111 help 112 Set if the debugger needs to flush the dcache and invalidate the 113 icache using the cache tag registers to make breakpoints work. 114 115config MN10300_DEBUGGER_CACHE_FLUSH_BY_REG 116 def_bool y if KERNEL_DEBUGGER && \ 117 MN10300_CACHE_WBACK && \ 118 !MN10300_CACHE_SNOOP && \ 119 MN10300_CACHE_MANAGE_BY_REG 120 help 121 Set if the debugger needs to flush the dcache and invalidate the 122 icache using automatic purge registers to make breakpoints work. 123 124config MN10300_DEBUGGER_CACHE_INV_BY_TAG 125 def_bool y if KERNEL_DEBUGGER && \ 126 MN10300_CACHE_WTHRU && \ 127 !MN10300_CACHE_SNOOP && \ 128 MN10300_CACHE_MANAGE_BY_TAG 129 help 130 Set if the debugger needs to invalidate the icache using the cache 131 tag registers to make breakpoints work. 132 133config MN10300_DEBUGGER_CACHE_INV_BY_REG 134 def_bool y if KERNEL_DEBUGGER && \ 135 MN10300_CACHE_WTHRU && \ 136 !MN10300_CACHE_SNOOP && \ 137 MN10300_CACHE_MANAGE_BY_REG 138 help 139 Set if the debugger needs to invalidate the icache using automatic 140 purge registers to make breakpoints work. 141 142config MN10300_DEBUGGER_CACHE_NO_FLUSH 143 def_bool y if KERNEL_DEBUGGER && \ 144 (MN10300_CACHE_DISABLED || MN10300_CACHE_SNOOP) 145 help 146 Set if the debugger does not need to flush the dcache and/or 147 invalidate the icache to make breakpoints work. 148