mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
command/cmd_cache.c: Add optional flush arguments
It might be desirable to have the ability to flush icache/dcache within u-boot, this patch gives each arch the ability to provide a flush_dcache/flush_icache function to let u-boot flush caches from the prompt Signed-off-by: Matthew McClintock <msm@freescale.com>
This commit is contained in:
parent
0e0996ef4f
commit
d0c4c33850
1 changed files with 28 additions and 9 deletions
|
@ -26,18 +26,27 @@
|
|||
*/
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
static int on_off (const char *);
|
||||
static int parse_argv(const char *);
|
||||
|
||||
void __weak flush_icache(void)
|
||||
{
|
||||
/* please define arch specific flush_icache */
|
||||
puts("No arch specific flush_icache available!\n");
|
||||
}
|
||||
|
||||
int do_icache ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
switch (argc) {
|
||||
case 2: /* on / off */
|
||||
switch (on_off(argv[1])) {
|
||||
switch (parse_argv(argv[1])) {
|
||||
case 0: icache_disable();
|
||||
break;
|
||||
case 1: icache_enable ();
|
||||
break;
|
||||
case 2: flush_icache();
|
||||
break;
|
||||
}
|
||||
/* FALL TROUGH */
|
||||
case 1: /* get status */
|
||||
|
@ -50,15 +59,23 @@ int do_icache ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
return 0;
|
||||
}
|
||||
|
||||
void __weak flush_dcache(void)
|
||||
{
|
||||
puts("No arch specific flush_dcache available!\n");
|
||||
/* please define arch specific flush_dcache */
|
||||
}
|
||||
|
||||
int do_dcache ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
switch (argc) {
|
||||
case 2: /* on / off */
|
||||
switch (on_off(argv[1])) {
|
||||
switch (parse_argv(argv[1])) {
|
||||
case 0: dcache_disable();
|
||||
break;
|
||||
case 1: dcache_enable ();
|
||||
break;
|
||||
case 2: flush_dcache();
|
||||
break;
|
||||
}
|
||||
/* FALL TROUGH */
|
||||
case 1: /* get status */
|
||||
|
@ -72,9 +89,11 @@ int do_dcache ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||
|
||||
}
|
||||
|
||||
static int on_off (const char *s)
|
||||
static int parse_argv(const char *s)
|
||||
{
|
||||
if (strcmp(s, "on") == 0) {
|
||||
if (strcmp(s, "flush") == 0) {
|
||||
return (2);
|
||||
} else if (strcmp(s, "on") == 0) {
|
||||
return (1);
|
||||
} else if (strcmp(s, "off") == 0) {
|
||||
return (0);
|
||||
|
@ -86,13 +105,13 @@ static int on_off (const char *s)
|
|||
U_BOOT_CMD(
|
||||
icache, 2, 1, do_icache,
|
||||
"enable or disable instruction cache",
|
||||
"[on, off]\n"
|
||||
" - enable or disable instruction cache"
|
||||
"[on, off, flush]\n"
|
||||
" - enable, disable, or flush instruction cache"
|
||||
);
|
||||
|
||||
U_BOOT_CMD(
|
||||
dcache, 2, 1, do_dcache,
|
||||
"enable or disable data cache",
|
||||
"[on, off]\n"
|
||||
" - enable or disable data (writethrough) cache"
|
||||
"[on, off, flush]\n"
|
||||
" - enable, disable, or flush data (writethrough) cache"
|
||||
);
|
||||
|
|
Loading…
Reference in a new issue