source: SVN/cambria/redboot/packages/redboot/current/src/caches.c @ 1

Last change on this file since 1 was 1, checked in by Tim Harvey, 2 years ago

restored latest version of files from server backup

Signed-off-by: Tim Harvey <tharvey@…>

File size: 3.6 KB
Line 
1//==========================================================================
2//
3//      caches.c
4//
5//      RedBoot cache control functions
6//
7//==========================================================================
8//####ECOSGPLCOPYRIGHTBEGIN####
9// -------------------------------------------
10// This file is part of eCos, the Embedded Configurable Operating System.
11// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12// Copyright (C) 2002 Gary Thomas
13//
14// eCos is free software; you can redistribute it and/or modify it under
15// the terms of the GNU General Public License as published by the Free
16// Software Foundation; either version 2 or (at your option) any later version.
17//
18// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19// WARRANTY; without even the implied warranty of MERCHANTABILITY or
20// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21// for more details.
22//
23// You should have received a copy of the GNU General Public License along
24// with eCos; if not, write to the Free Software Foundation, Inc.,
25// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26//
27// As a special exception, if other files instantiate templates or use macros
28// or inline functions from this file, or you compile this file and link it
29// with other works to produce a work based on this file, this file does not
30// by itself cause the resulting work to be covered by the GNU General Public
31// License. However the source code for this file must still be made available
32// in accordance with section (3) of the GNU General Public License.
33//
34// This exception does not invalidate any other reasons why a work based on
35// this file might be covered by the GNU General Public License.
36//
37// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
38// at http://sources.redhat.com/ecos/ecos-license/
39// -------------------------------------------
40//####ECOSGPLCOPYRIGHTEND####
41//==========================================================================
42//#####DESCRIPTIONBEGIN####
43//
44// Author(s):    gthomas
45// Contributors: gthomas
46// Date:         2002-08-06
47// Purpose:     
48// Description: 
49//             
50// This code is part of RedBoot (tm).
51//
52//####DESCRIPTIONEND####
53//
54//==========================================================================
55
56#include <redboot.h>
57#include <cyg/hal/hal_arch.h>
58#include <cyg/hal/hal_intr.h>
59#include <cyg/hal/hal_cache.h>
60
61RedBoot_cmd("cache", 
62            "Manage machine caches", 
63            "[ON | OFF]",
64            do_caches
65    );
66
67void
68do_caches(int argc, char *argv[])
69{
70    unsigned long oldints;
71    int dcache_on=0, icache_on=0;
72
73    if (argc == 2) {
74        if (strcasecmp(argv[1], "on") == 0) {
75            HAL_DISABLE_INTERRUPTS(oldints);
76            HAL_ICACHE_ENABLE();
77            HAL_DCACHE_ENABLE();
78            HAL_RESTORE_INTERRUPTS(oldints);
79        } else if (strcasecmp(argv[1], "off") == 0) {
80            HAL_DISABLE_INTERRUPTS(oldints);
81            HAL_DCACHE_SYNC();
82            HAL_ICACHE_DISABLE();
83            HAL_DCACHE_DISABLE();
84            HAL_DCACHE_SYNC();
85            HAL_ICACHE_INVALIDATE_ALL();
86            HAL_DCACHE_INVALIDATE_ALL();
87            HAL_RESTORE_INTERRUPTS(oldints);
88        } else {
89            diag_printf("Invalid cache mode: %s\n", argv[1]);
90        }
91    } else {
92#ifdef HAL_DCACHE_IS_ENABLED
93        HAL_DCACHE_IS_ENABLED(dcache_on);
94#endif
95#ifdef HAL_ICACHE_IS_ENABLED
96        HAL_ICACHE_IS_ENABLED(icache_on);
97#endif
98        diag_printf("Data cache: %s, Instruction cache: %s\n", 
99                    dcache_on?"On":"Off", icache_on?"On":"Off");
100    }
101}
Note: See TracBrowser for help on using the repository browser.