diff options
author | Yao Qi <yao@codesourcery.com> | 2013-10-31 16:50:15 +0800 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2013-11-20 11:40:51 +0800 |
commit | 68c765e263432b1aa5f5a54edc358eba302be4ca (patch) | |
tree | 132882f55aaaad1d6b6b0373fa7b3862010cafc0 /gdb/target-dcache.c | |
parent | f2de978509eb51f85410eab04696725f0bccf9c3 (diff) | |
download | gdb-68c765e263432b1aa5f5a54edc358eba302be4ca.zip gdb-68c765e263432b1aa5f5a54edc358eba302be4ca.tar.gz gdb-68c765e263432b1aa5f5a54edc358eba302be4ca.tar.bz2 |
Move target-dcache out of target.c
This patch moves target_dcache related code out of target.c.
gdb:
2013-11-20 Yao Qi <yao@codesourcery.com>
* Makefile.in (SFILES):Add target-dcache.c.
(HFILES_NO_SRCDIR): Add target-dcache.h.
(COMMON_OBS): Add target-dcache.o.
* dcache.c: Remove inclusion to "target.h". Include
"target-dcache.h".
* memattr.c: Include "target-dcache.h".
* top.c: Likewise.
* tracepoint.c: Likewise.
* target.c: (stack_cache_enabled_p_1): Move to
target-dcache.c.
(stack_cache_enabled_p): Likewise.
(set_stack_cache_enabled_p): Likewise.
(show_stack_cache_enabled_p): Likewise.
(target_dcache, target_dcache_init_p): Likewise.
(target_dcache_invalidate): Likewise.
(target_dcache_get, target_dcache_get_or_init): Likewise.
(memory_xfer_partial_1): Call function stack_cache_enabled.
(initialize_target): Move code to target-dcache.c.
* target.h (target_dcache_invalidate): Move to
target-dcache.h.
(target_dcache_get): Likewise.
* target-dcache.c: New.
* target-dcache.h: New.
Diffstat (limited to 'gdb/target-dcache.c')
-rw-r--r-- | gdb/target-dcache.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/gdb/target-dcache.c b/gdb/target-dcache.c new file mode 100644 index 0000000..bf04679 --- /dev/null +++ b/gdb/target-dcache.c @@ -0,0 +1,116 @@ +/* Copyright (C) 1992-2013 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "defs.h" +#include "target-dcache.h" +#include "gdbcmd.h" + +/* Cache of memory operations, to speed up remote access. */ +static DCACHE *target_dcache; + +/* Target dcache is initialized or not. */ + +int +target_dcache_init_p (void) +{ + return (target_dcache != NULL); +} + +/* Invalidate the target dcache. */ + +void +target_dcache_invalidate (void) +{ + if (target_dcache_init_p ()) + dcache_invalidate (target_dcache); +} + +/* Return the target dcache. Return NULL if target dcache is not + initialized yet. */ + +DCACHE * +target_dcache_get (void) +{ + return target_dcache; +} + +/* Return the target dcache. If it is not initialized yet, initialize + it. */ + +DCACHE * +target_dcache_get_or_init (void) +{ + if (!target_dcache_init_p ()) + target_dcache = dcache_init (); + + return target_dcache; +} + +/* The option sets this. */ +static int stack_cache_enabled_p_1 = 1; +/* And set_stack_cache_enabled_p updates this. + The reason for the separation is so that we don't flush the cache for + on->on transitions. */ +static int stack_cache_enabled_p = 1; + +/* This is called *after* the stack-cache has been set. + Flush the cache for off->on and on->off transitions. + There's no real need to flush the cache for on->off transitions, + except cleanliness. */ + +static void +set_stack_cache_enabled_p (char *args, int from_tty, + struct cmd_list_element *c) +{ + if (stack_cache_enabled_p != stack_cache_enabled_p_1) + target_dcache_invalidate (); + + stack_cache_enabled_p = stack_cache_enabled_p_1; +} + +static void +show_stack_cache_enabled_p (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, _("Cache use for stack accesses is %s.\n"), value); +} + +/* Return true if "stack cache" is enabled, otherwise, return false. */ + +int +stack_cache_enabled (void) +{ + return stack_cache_enabled_p; +} + +/* -Wmissing-prototypes */ +extern initialize_file_ftype _initialize_target_dcache; + +void +_initialize_target_dcache (void) +{ + add_setshow_boolean_cmd ("stack-cache", class_support, + &stack_cache_enabled_p_1, _("\ +Set cache use for stack access."), _("\ +Show cache use for stack access."), _("\ +When on, use the data cache for all stack access, regardless of any\n\ +configured memory regions. This improves remote performance significantly.\n\ +By default, caching for stack access is on."), + set_stack_cache_enabled_p, + show_stack_cache_enabled_p, + &setlist, &showlist); +} |