]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
microblaze: cache: introduce Kconfig options for icache/dcache sizes
authorOvidiu Panait <ovpanait@gmail.com>
Tue, 31 May 2022 18:14:29 +0000 (21:14 +0300)
committerMichal Simek <michal.simek@amd.com>
Fri, 24 Jun 2022 12:16:00 +0000 (14:16 +0200)
Replace XILINX_DCACHE_BYTE_SIZE macro with two Kconfig symbols for
instruction and data caches sizes, respectively:
CONFIG_XILINX_MICROBLAZE0_ICACHE_SIZE
CONFIG_XILINX_MICROBLAZE0_DCACHE_SIZE

Also, get rid of the hardcoded value in icache_disable().

Signed-off-by: Ovidiu Panait <ovpanait@gmail.com>
Link: https://lore.kernel.org/r/20220531181435.3473549-8-ovpanait@gmail.com
Signed-off-by: Michal Simek <michal.simek@amd.com> (s/bralid/brlid/g)
arch/microblaze/cpu/cache.c
arch/microblaze/cpu/start.S
arch/microblaze/lib/bootm.c
board/xilinx/microblaze-generic/Kconfig
include/configs/microblaze-generic.h

index e362a34a7969823e94f9145de68687c20fa6d6c6..d5c0afd9355d1d8539e6a82cb11fa3401a8371a2 100644 (file)
@@ -65,8 +65,7 @@ void icache_enable(void)
 
 void icache_disable(void)
 {
-       /* we are not generate ICACHE size -> flush whole cache */
-       __invalidate_icache(0, 32768);
+       __invalidate_icache(0, CONFIG_XILINX_MICROBLAZE0_ICACHE_SIZE);
 
        MSRCLR(0x20);
 }
@@ -78,7 +77,7 @@ void dcache_enable(void)
 
 void dcache_disable(void)
 {
-       __flush_dcache(0, XILINX_DCACHE_BYTE_SIZE);
+       __flush_dcache(0, CONFIG_XILINX_MICROBLAZE0_DCACHE_SIZE);
 
        MSRCLR(0x80);
 }
index cd47b0f95bd22347fd8965545f000b232afbddd9..6e3ffafa5fd3f583f249cad3e82797f0fe23a746 100644 (file)
@@ -99,7 +99,7 @@ uboot_sym_start:
 
        /* Flush cache before enable cache */
        addik   r5, r0, 0
-       addik   r6, r0, XILINX_DCACHE_BYTE_SIZE
+       addik   r6, r0, CONFIG_XILINX_MICROBLAZE0_DCACHE_SIZE
        brlid   r15, flush_cache
        nop
 
@@ -350,7 +350,7 @@ relocate_code:
 
        /* Flush caches to ensure consistency */
        addik   r5, r0, 0
-       addik   r6, r0, XILINX_DCACHE_BYTE_SIZE
+       addik   r6, r0, CONFIG_XILINX_MICROBLAZE0_DCACHE_SIZE
        brlid   r15, flush_cache
        nop
 
index dba6226ce56654b6d925eebb6b920169aeaaf035..48e05333a67653c29050e3eefb5f0aaba1682415 100644 (file)
@@ -57,7 +57,7 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
               "(fake run for tracing)" : "");
        bootstage_mark_name(BOOTSTAGE_ID_BOOTM_HANDOFF, "start_kernel");
 
-       flush_cache(0, XILINX_DCACHE_BYTE_SIZE);
+       flush_cache(0, CONFIG_XILINX_MICROBLAZE0_DCACHE_SIZE);
 
        if (!fake) {
                /*
index 98b4814b95a648138bf77e8b555e43162e1dda2f..a6743cadf45ee5461aa7a30fa5b994291b76a381 100644 (file)
@@ -85,4 +85,20 @@ config SPL_XILINX_MICROBLAZE0_USE_WIC
        bool
        default XILINX_MICROBLAZE0_USE_WIC
 
+config XILINX_MICROBLAZE0_DCACHE_SIZE
+       int "Default data cache size"
+       default 32768
+       help
+         This fallback size will be used when no dcache info can be found in
+         the device tree, or when the data cache is flushed very early in the
+         boot process, before device tree is available.
+
+config XILINX_MICROBLAZE0_ICACHE_SIZE
+       int "Default instruction cache size"
+       default 32768
+       help
+         This fallback size will be used when no icache info can be found in
+         the device tree, or when the instruction cache is flushed very early
+         in the boot process, before device tree is available.
+
 endif
index 60ceb2c817e984722db6be718b2581e3c380aee5..bae0f284fdca73ce3e07d857227348e0516d4224 100644 (file)
 # define CONFIG_SYS_MAX_FLASH_SECT     2048
 #endif
 
-#ifndef XILINX_DCACHE_BYTE_SIZE
-#define XILINX_DCACHE_BYTE_SIZE        32768
-#endif
-
 /* size of console buffer */
 #define        CONFIG_SYS_CBSIZE       512
 /* max number of command args */