# # MN10300 CPU cache options # choice prompt "CPU Caching mode" default MN10300_CACHE_WBACK help This option determines the caching mode for the kernel. Write-Back caching mode involves the all reads and writes causing the affected cacheline to be read into the cache first before being operated upon. Memory is not then updated by a write until the cache is filled and a cacheline needs to be displaced from the cache to make room. Only at that point is it written back. Write-Through caching only fetches cachelines from memory on a read. Writes always get written directly to memory. If the affected cacheline is also in cache, it will be updated too. The final option is to turn of caching entirely. config MN10300_CACHE_WBACK bool "Write-Back" help The dcache operates in delayed write-back mode. It must be manually flushed if writes are made that subsequently need to be executed or to be DMA'd by a device. config MN10300_CACHE_WTHRU bool "Write-Through" help The dcache operates in immediate write-through mode. Writes are committed to RAM immediately in addition to being stored in the cache. This means that the written data is immediately available for execution or DMA. This is not available for use with an SMP kernel if cache flushing and invalidation by automatic purge register is not selected. config MN10300_CACHE_DISABLED bool "Disabled" help The icache and dcache are disabled. endchoice config MN10300_CACHE_ENABLED def_bool y if !MN10300_CACHE_DISABLED choice prompt "CPU cache flush/invalidate method" default MN10300_CACHE_MANAGE_BY_TAG if !AM34_2 default MN10300_CACHE_MANAGE_BY_REG if AM34_2 depends on MN10300_CACHE_ENABLED help This determines the method by which CPU cache flushing and invalidation is performed. config MN10300_CACHE_MANAGE_BY_TAG bool "Use the cache tag registers directly" depends on !(SMP && MN10300_CACHE_WTHRU) config MN10300_CACHE_MANAGE_BY_REG bool "Flush areas by way of automatic purge registers (AM34 only)" depends on AM34_2 endchoice config MN10300_CACHE_INV_BY_TAG def_bool y if MN10300_CACHE_MANAGE_BY_TAG && MN10300_CACHE_ENABLED config MN10300_CACHE_INV_BY_REG def_bool y if MN10300_CACHE_MANAGE_BY_REG && MN10300_CACHE_ENABLED config MN10300_CACHE_FLUSH_BY_TAG def_bool y if MN10300_CACHE_MANAGE_BY_TAG && MN10300_CACHE_WBACK config MN10300_CACHE_FLUSH_BY_REG def_bool y if MN10300_CACHE_MANAGE_BY_REG && MN10300_CACHE_WBACK config MN10300_HAS_CACHE_SNOOP def_bool n config MN10300_CACHE_SNOOP bool "Use CPU Cache Snooping" depends on MN10300_CACHE_ENABLED && MN10300_HAS_CACHE_SNOOP default y config MN10300_CACHE_FLUSH_ICACHE def_bool y if MN10300_CACHE_WBACK && !MN10300_CACHE_SNOOP help Set if we need the dcache flushing before the icache is invalidated. config MN10300_CACHE_INV_ICACHE def_bool y if MN10300_CACHE_WTHRU && !MN10300_CACHE_SNOOP help Set if we need the icache to be invalidated, even if the dcache is in write-through mode and doesn't need flushing. # # The kernel debugger gets its own separate cache flushing functions # config MN10300_DEBUGGER_CACHE_FLUSH_BY_TAG def_bool y if KERNEL_DEBUGGER && \ MN10300_CACHE_WBACK && \ !MN10300_CACHE_SNOOP && \ MN10300_CACHE_MANAGE_BY_TAG help Set if the debugger needs to flush the dcache and invalidate the icache using the cache tag registers to make breakpoints work. config MN10300_DEBUGGER_CACHE_FLUSH_BY_REG def_bool y if KERNEL_DEBUGGER && \ MN10300_CACHE_WBACK && \ !MN10300_CACHE_SNOOP && \ MN10300_CACHE_MANAGE_BY_REG help Set if the debugger needs to flush the dcache and invalidate the icache using automatic purge registers to make breakpoints work. config MN10300_DEBUGGER_CACHE_INV_BY_TAG def_bool y if KERNEL_DEBUGGER && \ MN10300_CACHE_WTHRU && \ !MN10300_CACHE_SNOOP && \ MN10300_CACHE_MANAGE_BY_TAG help Set if the debugger needs to invalidate the icache using the cache tag registers to make breakpoints work. config MN10300_DEBUGGER_CACHE_INV_BY_REG def_bool y if KERNEL_DEBUGGER && \ MN10300_CACHE_WTHRU && \ !MN10300_CACHE_SNOOP && \ MN10300_CACHE_MANAGE_BY_REG help Set if the debugger needs to invalidate the icache using automatic purge registers to make breakpoints work. config MN10300_DEBUGGER_CACHE_NO_FLUSH def_bool y if KERNEL_DEBUGGER && \ (MN10300_CACHE_DISABLED || MN10300_CACHE_SNOOP) help Set if the debugger does not need to flush the dcache and/or invalidate the icache to make breakpoints work.