Remove duplicated files to stop the linker from complaining about duplicate 
 | 
symbols 
 | 
  
 | 
Signed-off-by: Alexandre Belloni <abelloni@adeneo-embedded.com> 
 | 
--- 
 | 
--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sysapi_timer.c    2011-10-05 19:10:37.000000000 +0200 
 | 
+++ /dev/null    2012-01-01 16:39:47.918907000 +0100 
 | 
@@ -1,212 +0,0 @@ 
 | 
-/*********************************************************************** 
 | 
- * $Id:: sysapi_timer.c 3394 2010-05-06 17:56:27Z usb10132             $ 
 | 
- * 
 | 
- * Project: Time support functions 
 | 
- * 
 | 
- * Description: 
 | 
- *     Implements the following functions required for the S1L API 
 | 
- *         time_init 
 | 
- *         time_reset 
 | 
- *         time_start 
 | 
- *         time_stop 
 | 
- *         time_get 
 | 
- *         time_get_rate 
 | 
- * 
 | 
- *********************************************************************** 
 | 
- * Software that is described herein is for illustrative purposes only   
 | 
- * which provides customers with programming information regarding the   
 | 
- * products. This software is supplied "AS IS" without any warranties.   
 | 
- * NXP Semiconductors assumes no responsibility or liability for the  
 | 
- * use of the software, conveys no license or title under any patent,  
 | 
- * copyright, or mask work right to the product. NXP Semiconductors  
 | 
- * reserves the right to make changes in the software without  
 | 
- * notification. NXP Semiconductors also make no representation or  
 | 
- * warranty that such application will be suitable for the specified  
 | 
- * use without further testing or modification.  
 | 
- **********************************************************************/ 
 | 
- 
 | 
-#include "s1l_sys_inf.h" 
 | 
-#include "lpc32xx_intc_driver.h" 
 | 
-#include "lpc32xx_timer_driver.h" 
 | 
- 
 | 
-static UNS_64 base_rate; 
 | 
-static INT_32 tdev = 0; 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: time_init 
 | 
- * 
 | 
- * Purpose: Initializes time system 
 | 
- * 
 | 
- * Processing: Initializes the system timer. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: 0 if the init failed, otherwise non-zero 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-INT_32 time_init(void) 
 | 
-{ 
 | 
-    TMR_PSCALE_SETUP_T pscale; 
 | 
- 
 | 
-    /* Open timer driver */ 
 | 
-    if (tdev == 0) 
 | 
-    { 
 | 
-        tdev = timer_open((void *) TIMER_CNTR0, 0); 
 | 
-        if (tdev != 0) 
 | 
-        { 
 | 
-            /* Use a prescale count to 100000 */ 
 | 
-            pscale.ps_tick_val = 100000; 
 | 
-            pscale.ps_us_val = 0; /* Not needed when ps_tick_val != 0 */ 
 | 
-            timer_ioctl(tdev, TMR_SETUP_PSCALE, (INT_32) &pscale); 
 | 
- 
 | 
-            /* Get timer clock rate */ 
 | 
-            base_rate = (UNS_64) timer_ioctl(tdev, TMR_GET_STATUS, 
 | 
-                TMR_GET_CLOCK); 
 | 
-        } 
 | 
-    } 
 | 
- 
 | 
-    return tdev; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: time_reset 
 | 
- * 
 | 
- * Purpose: Resets system timer 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: Nothing 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-void time_reset(void) 
 | 
-{ 
 | 
-    if (tdev != 0) 
 | 
-    { 
 | 
-        timer_ioctl(tdev, TMR_RESET, 1); 
 | 
-    } 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: time_start 
 | 
- * 
 | 
- * Purpose: Starts system timer 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: Nothing 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-void time_start(void) 
 | 
-{ 
 | 
-    if (tdev != 0) 
 | 
-    { 
 | 
-        timer_ioctl(tdev, TMR_ENABLE, 1); 
 | 
-    } 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: time_stop 
 | 
- * 
 | 
- * Purpose: Stops system timer 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: Nothing 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-void time_stop(void) 
 | 
-{ 
 | 
-    if (tdev != 0) 
 | 
-    { 
 | 
-        timer_ioctl(tdev, TMR_ENABLE, 0); 
 | 
-    } 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: time_get 
 | 
- * 
 | 
- * Purpose: Returns current system time value 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: The number of ticks of the timer counter 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-UNS_64 time_get(void) 
 | 
-{ 
 | 
-    TMR_COUNTS_T tcounts; 
 | 
-    UNS_64 ticks = 0; 
 | 
- 
 | 
-    if (tdev != 0) 
 | 
-    { 
 | 
-        timer_ioctl(tdev, TMR_GET_COUNTS, (INT_32) &tcounts); 
 | 
- 
 | 
-        /* Compute number of timer ticks */ 
 | 
-        ticks = (UNS_64) tcounts.count_val * 100000; 
 | 
-        ticks = ticks + (UNS_64) tcounts.ps_count_val; 
 | 
-    } 
 | 
- 
 | 
-    return ticks; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: time_get_rate 
 | 
- * 
 | 
- * Purpose: 
 | 
- *     Returns base tick rate (ticks per second) of the time counter 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: The timer tick rate (in ticks per second) 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-UNS_64 time_get_rate(void) 
 | 
-{ 
 | 
-    return base_rate; 
 | 
-} 
 | 
- 
 | 
--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sys_mmu_cmd_group.c    2011-10-05 19:10:37.000000000 +0200 
 | 
+++ /dev/null    2012-01-01 16:39:47.918907000 +0100 
 | 
@@ -1,746 +0,0 @@ 
 | 
-/*********************************************************************** 
 | 
- * $Id:: sys_mmu_cmd_group.c 3430 2010-05-07 17:39:08Z usb10132        $ 
 | 
- * 
 | 
- * Project: Command processor for peek, poke, dump, and fill 
 | 
- * 
 | 
- * Description: 
 | 
- *     Processes commands from the command prompt 
 | 
- * 
 | 
- *********************************************************************** 
 | 
- * Software that is described herein is for illustrative purposes only   
 | 
- * which provides customers with programming information regarding the   
 | 
- * products. This software is supplied "AS IS" without any warranties.   
 | 
- * NXP Semiconductors assumes no responsibility or liability for the  
 | 
- * use of the software, conveys no license or title under any patent,  
 | 
- * copyright, or mask work right to the product. NXP Semiconductors  
 | 
- * reserves the right to make changes in the software without  
 | 
- * notification. NXP Semiconductors also make no representation or  
 | 
- * warranty that such application will be suitable for the specified  
 | 
- * use without further testing or modification.  
 | 
- **********************************************************************/ 
 | 
- 
 | 
-#include "lpc_arm922t_cp15_driver.h" 
 | 
-#include "lpc_string.h" 
 | 
-#include "startup.h" 
 | 
-#include "s1l_cmds.h" 
 | 
-#include "s1l_sys_inf.h" 
 | 
- 
 | 
-/* dcache command */ 
 | 
-BOOL_32 cmd_dcache(void); 
 | 
-static UNS_32 cmd_dcache_plist[] = 
 | 
-{ 
 | 
-    (PARSE_TYPE_STR), /* The "dcache" command */ 
 | 
-    (PARSE_TYPE_DEC | PARSE_TYPE_END) 
 | 
-}; 
 | 
-static CMD_ROUTE_T core_dcache_cmd = 
 | 
-{ 
 | 
-    (UNS_8 *) "dcache", 
 | 
-    cmd_dcache, 
 | 
-    (UNS_8 *) "Enables, disables, or flushes data cache", 
 | 
-    (UNS_8 *) "dcache [0(disable), 1(enable), 2(flush)]", 
 | 
-    cmd_dcache_plist, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-/* icache command */ 
 | 
-BOOL_32 cmd_icache(void); 
 | 
-static UNS_32 cmd_icache_plist[] = 
 | 
-{ 
 | 
-    (PARSE_TYPE_STR), /* The "icache" command */ 
 | 
-    (PARSE_TYPE_DEC | PARSE_TYPE_END) 
 | 
-}; 
 | 
-static CMD_ROUTE_T core_icache_cmd = 
 | 
-{ 
 | 
-    (UNS_8 *) "icache", 
 | 
-    cmd_icache, 
 | 
-    (UNS_8 *) "Enables or disables instruction cache", 
 | 
-    (UNS_8 *) "icache [0(disable), 1(enable)]", 
 | 
-    cmd_icache_plist, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-/* inval command */ 
 | 
-BOOL_32 cmd_inval(void); 
 | 
-static UNS_32 cmd_inval_plist[] = 
 | 
-{ 
 | 
-    (PARSE_TYPE_STR | PARSE_TYPE_END) /* The "inval" command */ 
 | 
-}; 
 | 
-static CMD_ROUTE_T core_inval_cmd = 
 | 
-{ 
 | 
-    (UNS_8 *) "inval", 
 | 
-    cmd_inval, 
 | 
-    (UNS_8 *) "Flushes data cache and invalidates instruction cache", 
 | 
-    (UNS_8 *) "inval", 
 | 
-    cmd_inval_plist, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-/* mmuenab command */ 
 | 
-BOOL_32 cmd_mmuenab(void); 
 | 
-static UNS_32 cmd_mmuenab_plist[] = 
 | 
-{ 
 | 
-    (PARSE_TYPE_STR), /* The "mmuenab" command */ 
 | 
-    (PARSE_TYPE_DEC | PARSE_TYPE_END) 
 | 
-}; 
 | 
-static CMD_ROUTE_T core_mmuenab_cmd = 
 | 
-{ 
 | 
-    (UNS_8 *) "mmuenab", 
 | 
-    cmd_mmuenab, 
 | 
-    (UNS_8 *) "Enables or disables the MMU", 
 | 
-    (UNS_8 *) "mmuenab [0(disable), 1(enable)]", 
 | 
-    cmd_mmuenab_plist, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-/* map command */ 
 | 
-BOOL_32 cmd_map(void); 
 | 
-static UNS_32 cmd_map_plist[] = 
 | 
-{ 
 | 
-    (PARSE_TYPE_STR), /* The "map" command */ 
 | 
-    (PARSE_TYPE_HEX), 
 | 
-    (PARSE_TYPE_HEX), 
 | 
-    (PARSE_TYPE_DEC), 
 | 
-    (PARSE_TYPE_DEC | PARSE_TYPE_END), 
 | 
-}; 
 | 
-static CMD_ROUTE_T core_map_cmd = 
 | 
-{ 
 | 
-    (UNS_8 *) "map", 
 | 
-    cmd_map, 
 | 
-    (UNS_8 *) "Maps a range of physical address sections to virtual addresses", 
 | 
-    (UNS_8 *) "map [virt hex addr][phy hex addr][sections][0(uncached), 1(cached), 2(unmap)]", 
 | 
-    cmd_map_plist, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-/* mmuinfo command */ 
 | 
-static BOOL_32 cmd_mmuinfo(void); 
 | 
-static UNS_32 cmd_mmuinfo_plist[] = 
 | 
-{ 
 | 
-    (PARSE_TYPE_STR | PARSE_TYPE_END) /* The "mmuinfo" command */ 
 | 
-}; 
 | 
-static CMD_ROUTE_T core_mmuinfo_cmd = 
 | 
-{ 
 | 
-    (UNS_8 *) "mmuinfo", 
 | 
-    cmd_mmuinfo, 
 | 
-    (UNS_8 *) "Dumps page table and MMU info", 
 | 
-    (UNS_8 *) "mmuinfo", 
 | 
-    cmd_mmuinfo_plist, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-/* MMU group */ 
 | 
-static GROUP_LIST_T mmu_group = 
 | 
-{ 
 | 
-    (UNS_8 *) "mmu", /* mmu group */ 
 | 
-    (UNS_8 *) "MMU command group", 
 | 
-    NULL, 
 | 
-    NULL 
 | 
-}; 
 | 
- 
 | 
-static UNS_8 enabled_msg [] =" enabled"; 
 | 
-static UNS_8 disabled_msg [] =" disabled"; 
 | 
-static UNS_8 dcache_msg[] = "Data cache"; 
 | 
-static UNS_8 icache_msg[] = "Instruction cache"; 
 | 
-static UNS_8 pagetab_msg[] = "Page table at address: "; 
 | 
-static UNS_8 slist_msg[] = "Type        Virt       Phy        fl Size"; 
 | 
-static UNS_8 mmu_msg [] ="MMU"; 
 | 
-static UNS_8 cpage_msg[] = "Coarse page:"; 
 | 
-static UNS_8 fpage_msg[] = "Fine page  :"; 
 | 
-static UNS_8 sect_msg[] =  "Section    :"; 
 | 
-static UNS_8 mbytes_msg[] = "M"; 
 | 
-static UNS_8 map1_err_msg[] = 
 | 
-    "Error : section addresses must be aligned on a 32-bit boundary"; 
 | 
-static UNS_8 map2_err_msg[] = 
 | 
-    "Error : Number of sections exceeds address range of device"; 
 | 
-static UNS_8 phya_msg[] = "Virtual address "; 
 | 
-static UNS_8 mapped_msg[] = " mapped to physical address "; 
 | 
-static UNS_8 unmapped_msg[] = " unmapped from physical address "; 
 | 
-static UNS_8 cached_msg[] = " (cached)"; 
 | 
-static UNS_8 inval_msg[] = " invalidated"; 
 | 
-static UNS_8 caches_msg [] ="Caches"; 
 | 
-static UNS_8 flushed_msg[] = " flushed"; 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: show_section 
 | 
- * 
 | 
- * Purpose: Display section information 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function. 
 | 
- * 
 | 
- * Parameters: 
 | 
- *     mmu_reg   : MMU settings for this section 
 | 
- *     virt_addr : Starting virtual address for this section 
 | 
- *     segs      : Number of 1M segments for this section 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: Nothing 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-static void show_section(UNS_32 mmu_reg, 
 | 
-                         UNS_32 virt_addr, 
 | 
-                         UNS_32 segs)  
 | 
-{ 
 | 
-    UNS_8 straddr [16]; 
 | 
-    UNS_32 mmu_phy; 
 | 
- 
 | 
-    if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) != 
 | 
-        ARM922T_L1D_TYPE_FAULT)  
 | 
-    { 
 | 
-        if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == 
 | 
-            ARM922T_L1D_TYPE_CPAGE)  
 | 
-        { 
 | 
-            term_dat_out(cpage_msg); 
 | 
-        } 
 | 
-        else if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == 
 | 
-            ARM922T_L1D_TYPE_FPAGE)  
 | 
-        { 
 | 
-            term_dat_out(fpage_msg); 
 | 
-        } 
 | 
-        else 
 | 
-        { 
 | 
-            term_dat_out(sect_msg); 
 | 
-        } 
 | 
- 
 | 
-        /* Compute virtual address */ 
 | 
-        str_makehex(straddr, virt_addr, 8); 
 | 
-        term_dat_out(straddr); 
 | 
-        term_dat_out((UNS_8 *) " "); 
 | 
- 
 | 
-        /* Compute mapped physical address */ 
 | 
-        if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == 
 | 
-        ARM922T_L1D_TYPE_SECTION)  
 | 
-        { 
 | 
-            mmu_phy = mmu_reg & 0xFFF00000; 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            /* Don't compute addresses for non-sections */ 
 | 
-            mmu_phy = 0; 
 | 
-        } 
 | 
-        str_makehex(straddr, mmu_phy, 8); 
 | 
-        term_dat_out(straddr); 
 | 
-        term_dat_out((UNS_8 *) " "); 
 | 
- 
 | 
-        /* MMU flags */ 
 | 
-        if ((mmu_reg & ARM922T_L1D_BUFFERABLE) != 0)  
 | 
-        { 
 | 
-            term_dat_out((UNS_8 *) "b"); 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            term_dat_out((UNS_8 *) " "); 
 | 
-        } 
 | 
-        if ((mmu_reg & ARM922T_L1D_CACHEABLE) != 0)  
 | 
-        { 
 | 
-            term_dat_out((UNS_8 *) "c"); 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            term_dat_out((UNS_8 *) " "); 
 | 
-        } 
 | 
-        term_dat_out((UNS_8 *) " "); 
 | 
- 
 | 
-        /* Displays used megabytes */ 
 | 
-        str_makedec(straddr, segs); 
 | 
-        term_dat_out(straddr); 
 | 
-        term_dat_out_crlf(mbytes_msg); 
 | 
-    } 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: mmu_dumpinfo 
 | 
- * 
 | 
- * Purpose: Display MMU info 
 | 
- * 
 | 
- * Processing: 
 | 
- *     Display the MMU information, including enable status, cache 
 | 
- *     status, and page table. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-static BOOL_32 mmu_dumpinfo(void)  
 | 
-{ 
 | 
-    UNS_32 segsz, last_mmu_reg, mmu_vrt, mmu_reg, mmu_vrtsav = 0, *pt; 
 | 
-    UNS_32 mlast_mmu_reg, mmmu_reg; 
 | 
-    int idx; 
 | 
-    UNS_8 hexaddr [16]; 
 | 
- 
 | 
-    term_dat_out(mmu_msg); 
 | 
-    if (cp15_mmu_enabled() == FALSE)  
 | 
-    { 
 | 
-        term_dat_out_crlf(disabled_msg); 
 | 
-    } 
 | 
-    else  
 | 
-    { 
 | 
-        term_dat_out_crlf(enabled_msg); 
 | 
- 
 | 
-        /* Get MMU control register word */ 
 | 
-          mmu_reg = cp15_get_mmu_control_reg(); 
 | 
- 
 | 
-        /* Instruction cache status */ 
 | 
-        term_dat_out(icache_msg); 
 | 
-        if ((mmu_reg & ARM922T_MMU_CONTROL_I) == 0)  
 | 
-        { 
 | 
-            term_dat_out_crlf(disabled_msg); 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            term_dat_out_crlf(enabled_msg); 
 | 
-        } 
 | 
- 
 | 
-        /* Data cache status */ 
 | 
-        term_dat_out(dcache_msg); 
 | 
-        if ((mmu_reg & ARM922T_MMU_CONTROL_C) == 0)  
 | 
-        { 
 | 
-            term_dat_out_crlf(disabled_msg); 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            term_dat_out_crlf(enabled_msg); 
 | 
-        } 
 | 
- 
 | 
-        term_dat_out(pagetab_msg); 
 | 
-        mmu_reg = (UNS_32) cp15_get_ttb(); 
 | 
-        str_makehex(hexaddr, mmu_reg, 8); 
 | 
-        term_dat_out_crlf(hexaddr); 
 | 
-        term_dat_out_crlf(slist_msg); 
 | 
- 
 | 
-        /* Process MMU table - assume that the physical and 
 | 
-           virtual locations of table are the same */ 
 | 
-        pt = (UNS_32 *) mmu_reg; 
 | 
-        mmu_vrt = 0x0; 
 | 
-        segsz = 0xFFFFFFFF; 
 | 
-        last_mmu_reg = mlast_mmu_reg = 0xFFFFFFFF; 
 | 
-        for (idx = 0; idx < 4096; idx++)  
 | 
-        { 
 | 
-            mmu_reg = *pt; 
 | 
-            mmmu_reg = (mmu_reg & (ARM922T_L1D_TYPE_PG_SN_MASK | 
 | 
-                ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE)); 
 | 
-            segsz = segsz + 1; 
 | 
- 
 | 
-            if ((last_mmu_reg != 0xFFFFFFFF) && 
 | 
-                (mlast_mmu_reg != mmmu_reg)) 
 | 
-            { 
 | 
-                show_section(last_mmu_reg, mmu_vrtsav, segsz); 
 | 
-                segsz = 0; 
 | 
-            } 
 | 
- 
 | 
-            if (mlast_mmu_reg != mmmu_reg)  
 | 
-            { 
 | 
-                mmu_vrtsav = mmu_vrt; 
 | 
-                last_mmu_reg = mmu_reg; 
 | 
-                mlast_mmu_reg = mmmu_reg; 
 | 
-            } 
 | 
- 
 | 
-            pt++; 
 | 
-            mmu_vrt += 0x00100000; 
 | 
-        } 
 | 
-    } 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: mmu_dumpmap 
 | 
- * 
 | 
- * Purpose: Map a virtual address range to a physical range 
 | 
- * 
 | 
- * Processing: 
 | 
- *     From the input addresses and number of sections, generate the 
 | 
- *     appropriate entries in the page table. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-static BOOL_32 mmu_dumpmap(UNS_32 vrt, 
 | 
-                           UNS_32 phy, 
 | 
-                           UNS_32 sections, 
 | 
-                           UNS_32 cache)  
 | 
-{ 
 | 
-    BOOL_32 processed = FALSE; 
 | 
-    UNS_32 mmu_phy, mmu_vrt, tmp1 = 0, tmp2, *pt; 
 | 
-    UNS_8 hexaddr [16]; 
 | 
- 
 | 
-    /* Verify address boundaries are sectional */ 
 | 
-    mmu_vrt = vrt & ~ARM922T_L2D_SN_BASE_MASK; 
 | 
-    mmu_phy = phy & ~ARM922T_L2D_SN_BASE_MASK; 
 | 
-    if ((mmu_vrt != 0) || (mmu_phy != 0))  
 | 
-    { 
 | 
-        term_dat_out_crlf(map1_err_msg); 
 | 
-    } 
 | 
-    else  
 | 
-    { 
 | 
-        /* Verify that address range and section count will not 
 | 
-           exceed address range of device */ 
 | 
-        tmp1 = vrt >> 20; 
 | 
-        tmp1 = (tmp1 + sections) - 1; 
 | 
-        tmp2 = phy >> 20; 
 | 
-        tmp2 = (tmp2 + sections) - 1; 
 | 
-        if ((tmp1 < 4096) && (tmp2 < 4096))  
 | 
-        { 
 | 
-            /* Good address range and good section count */ 
 | 
-            processed = TRUE; 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            term_dat_out_crlf(map2_err_msg); 
 | 
-        } 
 | 
-    } 
 | 
-     
 | 
-    /* Generate static part of MMU word */ 
 | 
-    if (cache == 0)  
 | 
-    { 
 | 
-        /* Section mapped with cache disabled */ 
 | 
-        tmp1 = ARM922T_L1D_TYPE_SECTION; 
 | 
-    } 
 | 
-    else if (cache == 1) 
 | 
-    { 
 | 
-        /* Section mapped with cache enabled */ 
 | 
-        tmp1 = (ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE | 
 | 
-            ARM922T_L1D_TYPE_SECTION); 
 | 
-    } 
 | 
-    else if (cache == 2) 
 | 
-    { 
 | 
-        /* Section unmapped */ 
 | 
-        tmp1 = ARM922T_L1D_TYPE_FAULT; 
 | 
-    } 
 | 
-    tmp1 |= ARM922T_L1D_AP_ALL; 
 | 
- 
 | 
-    /* Offset into page table for virtual address */ 
 | 
-    tmp2 = (vrt >> 20); 
 | 
-    pt = cp15_get_ttb() + tmp2; 
 | 
- 
 | 
-    /* Loop until all sections are complete */ 
 | 
-    while ((sections > 0) && (processed == TRUE))  
 | 
-    { 
 | 
-        /* Add in physical address */ 
 | 
-        tmp2 = tmp1 | (phy & ARM922T_L2D_SN_BASE_MASK); 
 | 
- 
 | 
-        /* Save new section descriptor for virtual address */ 
 | 
-        *pt = tmp2; 
 | 
- 
 | 
-        /* Output message shown the map */ 
 | 
-        term_dat_out(phya_msg); 
 | 
-        str_makehex(hexaddr, phy, 8); 
 | 
-        term_dat_out(hexaddr); 
 | 
-        if (cache == 2)  
 | 
-        { 
 | 
-            term_dat_out(unmapped_msg); 
 | 
-        } 
 | 
-        else  
 | 
-        { 
 | 
-            term_dat_out(mapped_msg); 
 | 
-        } 
 | 
-        str_makehex(hexaddr, vrt, 8); 
 | 
-        term_dat_out(hexaddr); 
 | 
-        if (cache == 1)  
 | 
-        { 
 | 
-            term_dat_out(cached_msg); 
 | 
-        } 
 | 
-        term_dat_out_crlf((UNS_8 *) ""); 
 | 
- 
 | 
-        /* Next section and page table entry*/ 
 | 
-        phy += 0x00100000; 
 | 
-        vrt += 0x00100000; 
 | 
-        pt++; 
 | 
-        sections--; 
 | 
-    } 
 | 
- 
 | 
-    return processed; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: cmd_mmuinfo 
 | 
- * 
 | 
- * Purpose: Display MMU information 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function.  
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-static BOOL_32 cmd_mmuinfo(void)  
 | 
-{ 
 | 
-    mmu_dumpinfo(); 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: cmd_map 
 | 
- * 
 | 
- * Purpose: Map a physical address region to a virtual region 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function.  
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-BOOL_32 cmd_map(void)  
 | 
-{ 
 | 
-    UNS_32 phy, virt, sects, ce = 0; 
 | 
- 
 | 
-    /* Get arguments */ 
 | 
-    virt = cmd_get_field_val(1); 
 | 
-    phy = cmd_get_field_val(2); 
 | 
-    sects = cmd_get_field_val(3); 
 | 
-    ce = cmd_get_field_val(4); 
 | 
- 
 | 
-    if (ce <= 2)  
 | 
-    { 
 | 
-        mmu_dumpmap(virt, phy, sects, ce); 
 | 
-    } 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: cmd_inval 
 | 
- * 
 | 
- * Purpose: MMU cache flush and invalidate 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function.  
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-BOOL_32 cmd_inval(void)  
 | 
-{ 
 | 
-    dcache_flush(); 
 | 
-    icache_inval(); 
 | 
-    term_dat_out(caches_msg); 
 | 
-    term_dat_out(inval_msg); 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: cmd_dcache 
 | 
- * 
 | 
- * Purpose: MMU data cache enable and disable 
 | 
- * 
 | 
- * Processing: 
 | 
- *     If the value passed in the parser is 1, enable the data cache, 
 | 
- *     otherwise disable the data cache. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-BOOL_32 cmd_dcache(void)  
 | 
-{ 
 | 
-    UNS_32 cenable; 
 | 
-    UNS_8 *ppar; 
 | 
- 
 | 
-    /* Get argument */ 
 | 
-    cenable = cmd_get_field_val(1); 
 | 
- 
 | 
-    switch (cenable) 
 | 
-    { 
 | 
-        case 0: 
 | 
-            dcache_flush(); 
 | 
-            cp15_set_dcache(0); 
 | 
-            ppar = disabled_msg; 
 | 
-            break; 
 | 
- 
 | 
-        case 1: 
 | 
-            cp15_invalidate_cache(); 
 | 
-            cp15_set_dcache(1); 
 | 
-            ppar = enabled_msg; 
 | 
-            break; 
 | 
- 
 | 
-        case 2: 
 | 
-        default: 
 | 
-            dcache_flush(); 
 | 
-            ppar = flushed_msg; 
 | 
-            break; 
 | 
-    } 
 | 
- 
 | 
-    term_dat_out(dcache_msg); 
 | 
-    term_dat_out_crlf(ppar); 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: cmd_icache 
 | 
- * 
 | 
- * Purpose: MMU instruction cache enable and disable 
 | 
- * 
 | 
- * Processing: 
 | 
- *     If the value passed in the parser is 1, enable the instruction 
 | 
- *     cache, otherwise disable the instruction cache. 
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-BOOL_32 cmd_icache(void) 
 | 
-{ 
 | 
-    UNS_32 cenable; 
 | 
-    UNS_8 *ppar; 
 | 
- 
 | 
-    /* Get argument */ 
 | 
-    cenable = cmd_get_field_val(1); 
 | 
- 
 | 
-    if (cenable == 1)  
 | 
-    { 
 | 
-        dcache_flush(); 
 | 
-        cp15_invalidate_cache(); 
 | 
-        cp15_set_icache(1); 
 | 
-        ppar = enabled_msg; 
 | 
-    } 
 | 
-    else 
 | 
-    { 
 | 
-        cp15_set_icache(0); 
 | 
-        ppar = disabled_msg; 
 | 
-    } 
 | 
- 
 | 
-    term_dat_out(icache_msg); 
 | 
-    term_dat_out_crlf(ppar); 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: cmd_mmuenab 
 | 
- * 
 | 
- * Purpose: Enable or disable MMU 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function.  
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: TRUE if the command was processed, otherwise FALSE 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-BOOL_32 cmd_mmuenab(void)  
 | 
-{ 
 | 
-    UNS_8 *ppar; 
 | 
-    UNS_32 cenable; 
 | 
- 
 | 
-    term_dat_out_crlf((UNS_8 *) "Warning: Changing MMU status on " 
 | 
-        " cached and buffered code can cause system crashes."); 
 | 
- 
 | 
-    /* Get argument */ 
 | 
-    cenable = cmd_get_field_val(1); 
 | 
- 
 | 
-    if (cenable == 1)  
 | 
-    { 
 | 
-        if ((cp15_get_mmu_control_reg() & ARM922T_MMU_CONTROL_C) != 0) 
 | 
-        { 
 | 
-            cp15_invalidate_cache(); 
 | 
-        } 
 | 
- 
 | 
-        cp15_set_mmu(1); 
 | 
-        ppar = enabled_msg; 
 | 
-    } 
 | 
-    else 
 | 
-    { 
 | 
-        cp15_dcache_flush(); 
 | 
-        cp15_write_buffer_flush(); 
 | 
-        cp15_invalidate_cache(); 
 | 
-        cp15_set_mmu(0); 
 | 
-        ppar = disabled_msg; 
 | 
-    } 
 | 
- 
 | 
-    term_dat_out(mmu_msg); 
 | 
-    term_dat_out_crlf(ppar); 
 | 
- 
 | 
-    return TRUE; 
 | 
-} 
 | 
- 
 | 
-/*********************************************************************** 
 | 
- * 
 | 
- * Function: mmu_cmd_group_init 
 | 
- * 
 | 
- * Purpose: Initialize MMU command group 
 | 
- * 
 | 
- * Processing: 
 | 
- *     See function.  
 | 
- * 
 | 
- * Parameters: None 
 | 
- * 
 | 
- * Outputs: None 
 | 
- * 
 | 
- * Returns: Nothin 
 | 
- * 
 | 
- * Notes: None 
 | 
- * 
 | 
- **********************************************************************/ 
 | 
-void mmu_cmd_group_init(void) 
 | 
-{ 
 | 
-    /* Add MMU group */ 
 | 
-    cmd_add_group(&mmu_group); 
 | 
- 
 | 
-    /* Add commands to the MMU group */ 
 | 
-    cmd_add_new_command(&mmu_group, &core_dcache_cmd); 
 | 
-    cmd_add_new_command(&mmu_group, &core_icache_cmd); 
 | 
-    cmd_add_new_command(&mmu_group, &core_inval_cmd); 
 | 
-    cmd_add_new_command(&mmu_group, &core_mmuenab_cmd); 
 | 
-    cmd_add_new_command(&mmu_group, &core_map_cmd); 
 | 
-    cmd_add_new_command(&mmu_group, &core_mmuinfo_cmd); 
 | 
-} 
 |