diff --git a/bsp/ls1bdev/applications/startup.c b/bsp/ls1bdev/applications/startup.c index bfd821402786d598c6e670eb48fefda02871d0ca..f5c8eddc080c3a0899428c8e97d70a1004f15edf 100644 --- a/bsp/ls1bdev/applications/startup.c +++ b/bsp/ls1bdev/applications/startup.c @@ -32,6 +32,9 @@ extern int rt_application_init(void); extern void tlb_refill_exception(void); extern void general_exception(void); extern void irq_exception(void); +extern void rt_hw_cache_init(void); +extern void invalidate_writeback_dcache_all(void); +extern void invalidate_icache_all(void); /** * This function will startup RT-Thread RTOS. diff --git a/bsp/ls1cdev/applications/startup.c b/bsp/ls1cdev/applications/startup.c index 5c78776f84fde8309491a46d0dd4545be36afd0b..ed2854e97e43895a08550cad08a3274e244a4e8c 100644 --- a/bsp/ls1cdev/applications/startup.c +++ b/bsp/ls1cdev/applications/startup.c @@ -33,6 +33,9 @@ extern int rt_application_init(void); extern void tlb_refill_exception(void); extern void general_exception(void); extern void irq_exception(void); +extern void rt_hw_cache_init(void); +extern void invalidate_writeback_dcache_all(void); +extern void invalidate_icache_all(void); /** * This function will startup RT-Thread RTOS. @@ -52,6 +55,9 @@ void rtthread_startup(void) rt_memcpy((void *)(A_K0BASE + 0x180), general_exception, 0x20); rt_memcpy((void *)(A_K0BASE + 0x200), irq_exception, 0x20); + invalidate_writeback_dcache_all(); + invalidate_icache_all(); + /* init board */ rt_hw_board_init(); diff --git a/libcpu/mips/loongson_1b/cache.c b/libcpu/mips/loongson_1b/cache.c index 9b3dfde44daded4013fa5641252107aac3dcdac3..842f392cb773526a90c0c671949396518bdb14a0 100644 --- a/libcpu/mips/loongson_1b/cache.c +++ b/libcpu/mips/loongson_1b/cache.c @@ -13,6 +13,7 @@ * 2011-08-08 lgnq modified for LS1B */ +#include #include "../common/mipsregs.h" #define K0BASE 0x80000000 @@ -23,6 +24,7 @@ extern void Invalidate_Icache_Ls1b(unsigned int); extern void Invalidate_Dcache_ClearTag_Ls1b(unsigned int); extern void Invalidate_Dcache_Fill_Ls1b(unsigned int); extern void Writeback_Invalidate_Dcache(unsigned int); +extern void enable_cpu_cache(void); typedef struct cacheinfo_t { @@ -151,7 +153,7 @@ void invalidate_dcache_all(void) unsigned int end = (start + pcacheinfo->dcache_size); while (start icacheline_size; } } diff --git a/libcpu/mips/loongson_1c/cache.c b/libcpu/mips/loongson_1c/cache.c index 79ab5308d255d0502de153300ab8ee3bfe2122be..bf97db9b4e11b6c4648f97d0b31b05b7d6e613f1 100644 --- a/libcpu/mips/loongson_1c/cache.c +++ b/libcpu/mips/loongson_1c/cache.c @@ -14,6 +14,7 @@ * 2015-07-08 chinesebear modified for loongson 1c */ +#include #include "../common/mipsregs.h" #define K0BASE 0x80000000 @@ -24,6 +25,7 @@ extern void Invalidate_Icache_Ls1c(unsigned int); extern void Invalidate_Dcache_ClearTag_Ls1c(unsigned int); extern void Invalidate_Dcache_Fill_Ls1c(unsigned int); extern void Writeback_Invalidate_Dcache(unsigned int); +extern void enable_cpu_cache(void); typedef struct cacheinfo_t { @@ -152,7 +154,7 @@ void invalidate_dcache_all(void) unsigned int end = (start + pcacheinfo->dcache_size); while (start icacheline_size; } }