| 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); |
| -} |