1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2006-09-06 XuXinming first version 9*10465441SEvalZero */ 10*10465441SEvalZero 11*10465441SEvalZero #include <rtthread.h> 12*10465441SEvalZero #include "s3c44b0.h" 13*10465441SEvalZero 14*10465441SEvalZero /** 15*10465441SEvalZero * @addtogroup S3C44B0 16*10465441SEvalZero */ 17*10465441SEvalZero /*@{*/ 18*10465441SEvalZero 19*10465441SEvalZero /** 20*10465441SEvalZero * This function will enable I-Cache of CPU 21*10465441SEvalZero * 22*10465441SEvalZero */ rt_hw_cpu_icache_enable()23*10465441SEvalZerovoid rt_hw_cpu_icache_enable() 24*10465441SEvalZero { 25*10465441SEvalZero rt_base_t reg; 26*10465441SEvalZero 27*10465441SEvalZero volatile int i; 28*10465441SEvalZero /* flush cycle */ 29*10465441SEvalZero for(i = 0x10002000; i < 0x10004800; i+=16) 30*10465441SEvalZero { 31*10465441SEvalZero *((int *)i)=0x0; 32*10465441SEvalZero } 33*10465441SEvalZero 34*10465441SEvalZero /* 35*10465441SEvalZero * Init cache 36*10465441SEvalZero * Non-cacheable area (everything outside RAM) 37*10465441SEvalZero * 0x0000:0000 - 0x0C00:0000 38*10465441SEvalZero */ 39*10465441SEvalZero NCACHBE0 = 0xC0000000; 40*10465441SEvalZero NCACHBE1 = 0x00000000; 41*10465441SEvalZero 42*10465441SEvalZero /* 43*10465441SEvalZero Enable chache 44*10465441SEvalZero */ 45*10465441SEvalZero reg = SYSCFG; 46*10465441SEvalZero reg |= 0x00000006; /* 8kB */ 47*10465441SEvalZero SYSCFG = reg; 48*10465441SEvalZero } 49*10465441SEvalZero 50*10465441SEvalZero /** 51*10465441SEvalZero * This function will disable I-Cache of CPU 52*10465441SEvalZero * 53*10465441SEvalZero */ rt_hw_cpu_icache_disable()54*10465441SEvalZerovoid rt_hw_cpu_icache_disable() 55*10465441SEvalZero { 56*10465441SEvalZero rt_base_t reg; 57*10465441SEvalZero 58*10465441SEvalZero reg = SYSCFG; 59*10465441SEvalZero reg &= ~0x00000006; /* 8kB */ 60*10465441SEvalZero SYSCFG = reg; 61*10465441SEvalZero } 62*10465441SEvalZero 63*10465441SEvalZero /** 64*10465441SEvalZero * this function will get the status of I-Cache 65*10465441SEvalZero * 66*10465441SEvalZero */ rt_hw_cpu_icache_status()67*10465441SEvalZerort_base_t rt_hw_cpu_icache_status() 68*10465441SEvalZero { 69*10465441SEvalZero return 0; 70*10465441SEvalZero } 71*10465441SEvalZero 72*10465441SEvalZero /** 73*10465441SEvalZero * this function will enable D-Cache of CPU 74*10465441SEvalZero * 75*10465441SEvalZero */ rt_hw_cpu_dcache_enable()76*10465441SEvalZerovoid rt_hw_cpu_dcache_enable() 77*10465441SEvalZero { 78*10465441SEvalZero rt_hw_cpu_icache_enable(); 79*10465441SEvalZero } 80*10465441SEvalZero 81*10465441SEvalZero /** 82*10465441SEvalZero * this function will disable D-Cache of CPU 83*10465441SEvalZero * 84*10465441SEvalZero */ rt_hw_cpu_dcache_disable()85*10465441SEvalZerovoid rt_hw_cpu_dcache_disable() 86*10465441SEvalZero { 87*10465441SEvalZero rt_hw_cpu_icache_disable(); 88*10465441SEvalZero } 89*10465441SEvalZero 90*10465441SEvalZero /** 91*10465441SEvalZero * this function will get the status of D-Cache 92*10465441SEvalZero * 93*10465441SEvalZero */ rt_hw_cpu_dcache_status()94*10465441SEvalZerort_base_t rt_hw_cpu_dcache_status() 95*10465441SEvalZero { 96*10465441SEvalZero return rt_hw_cpu_icache_status(); 97*10465441SEvalZero } 98*10465441SEvalZero 99*10465441SEvalZero /** 100*10465441SEvalZero * this function will reset CPU 101*10465441SEvalZero * 102*10465441SEvalZero */ rt_hw_cpu_reset()103*10465441SEvalZerovoid rt_hw_cpu_reset() 104*10465441SEvalZero { 105*10465441SEvalZero } 106*10465441SEvalZero 107*10465441SEvalZero /** 108*10465441SEvalZero * this function will shutdown CPU 109*10465441SEvalZero * 110*10465441SEvalZero */ rt_hw_cpu_shutdown()111*10465441SEvalZerovoid rt_hw_cpu_shutdown() 112*10465441SEvalZero { 113*10465441SEvalZero rt_kprintf("shutdown...\n"); 114*10465441SEvalZero 115*10465441SEvalZero while (1); 116*10465441SEvalZero } 117*10465441SEvalZero 118*10465441SEvalZero /*@}*/ 119