Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Yao Qi <yao@codesourcery.com>
To: <gdb-patches@sourceware.org>
Subject: [PATCH 08/10] Don't invalidate dcache when option stack-cache is changed
Date: Sun, 03 Nov 2013 05:56:00 -0000	[thread overview]
Message-ID: <1383458049-20893-9-git-send-email-yao@codesourcery.com> (raw)
In-Reply-To: <1383458049-20893-1-git-send-email-yao@codesourcery.com>

Nowadays, option "stack-cache" on->off and off->on transitions trigger
cache invalidation.  It is not very necessary and not friendly to
using target_dcache for other purpose, such as code caching.

Option "stack-cache" can be regarded as a switch, to decide whether to
read through cache when reading data from target.  When this switch is
off, read from target.  When the switch is on, read from cache.  We
need to keep cache in sync, so when GDB writes data, cache should be
updated unconditionally.

gdb:

2013-11-02  Yao Qi  <yao@codesourcery.com>

	* target-dcache.c (stack_cache_enabled_p_1): Remove.
	(set_stack_cache_enabled_p): Remove.
	(_initialize_target_dcache): Update command register.
	* target.c (memory_xfer_partial_1): Don't check
	stack_cache_enabled.
---
 gdb/target-dcache.c |   24 ++++--------------------
 gdb/target.c        |    4 ++--
 2 files changed, 6 insertions(+), 22 deletions(-)

diff --git a/gdb/target-dcache.c b/gdb/target-dcache.c
index a840c40..ce36bbb 100644
--- a/gdb/target-dcache.c
+++ b/gdb/target-dcache.c
@@ -100,26 +100,10 @@ target_dcache_get_or_init (void)
 }
 
 /* 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 ();
+static int stack_cache_enabled_p = 1;
 
-  stack_cache_enabled_p = stack_cache_enabled_p_1;
-}
+/* Show option "stack-cache".  */
 
 static void
 show_stack_cache_enabled_p (struct ui_file *file, int from_tty,
@@ -143,13 +127,13 @@ void
 _initialize_target_dcache (void)
 {
   add_setshow_boolean_cmd ("stack-cache", class_support,
-			   &stack_cache_enabled_p_1, _("\
+			   &stack_cache_enabled_p, _("\
 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,
+			   NULL,
 			   show_stack_cache_enabled_p,
 			   &setlist, &showlist);
 
diff --git a/gdb/target.c b/gdb/target.c
index 1212347..55c5d78 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -1593,14 +1593,14 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object,
 
   /* Make sure the cache gets updated no matter what - if we are writing
      to the stack.  Even if this write is not tagged as such, we still need
-     to update the cache.  */
+     to update the cache.  Update the cache to keep it in sync if it
+     has been initialized.  */
 
   if (res > 0
       && inf != NULL
       && writebuf != NULL
       && target_dcache_init_p ()
       && !region->attrib.cache
-      && stack_cache_enabled ()
       && object != TARGET_OBJECT_STACK_MEMORY)
     {
       DCACHE *dcache = target_dcache_get ();
-- 
1.7.7.6


  parent reply	other threads:[~2013-11-03  5:56 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-03  5:57 [PATCH 00/10 V2] Cache code access for disassemble Yao Qi
2013-11-03  5:56 ` [PATCH 01/10] Remove last_cache Yao Qi
2013-11-17 19:52   ` Doug Evans
2013-11-03  5:56 ` Yao Qi [this message]
2013-11-17 22:02   ` [PATCH 08/10] Don't invalidate dcache when option stack-cache is changed Doug Evans
2013-11-18 14:12     ` Yao Qi
2013-11-18 15:51     ` Pedro Alves
2013-11-19  6:43       ` Yao Qi
2013-11-19 12:14     ` Pedro Alves
2013-11-19 14:06       ` Yao Qi
2013-11-03  5:56 ` [PATCH 09/10] set/show code-cache Yao Qi
2013-11-03 16:58   ` Eli Zaretskii
2013-11-18  8:23   ` Doug Evans
2013-11-03  5:56 ` [PATCH 03/10] Move target-dcache out of target.c Yao Qi
2013-11-17 20:15   ` Doug Evans
2013-11-18 15:53     ` Pedro Alves
2013-11-03  5:56 ` [PATCH 05/10] Invalidate or shrink dcache when setting is changed Yao Qi
2013-11-03 16:50   ` Eli Zaretskii
2013-11-17 20:55   ` Doug Evans
2013-11-18 14:31     ` Yao Qi
2013-11-18 15:59   ` Pedro Alves
2013-11-19  6:16     ` Yao Qi
2013-11-19 11:52       ` Pedro Alves
2013-11-19 13:12         ` Yao Qi
2013-11-03  5:56 ` [PATCH 07/10] Associate target_dcache to address_space Yao Qi
2013-11-03 16:48   ` Eli Zaretskii
2013-11-17 21:22   ` Doug Evans
2013-11-20  7:54     ` Yao Qi
2013-11-20 13:23       ` Yao Qi
2013-11-03  5:56 ` [PATCH 02/10] Don't update target_dcache if it is not initialized Yao Qi
2013-11-17 20:09   ` Doug Evans
2013-11-03  5:57 ` [PATCH 06/10] Add REGISTRY for struct address_space Yao Qi
2013-11-17 21:09   ` Doug Evans
2013-11-20  4:46     ` Yao Qi
2013-11-03  5:57 ` [PATCH 04/10] Don't stress 'remote' in "Data Caching" in doc Yao Qi
2013-11-03 16:55   ` Eli Zaretskii
2013-11-06  7:56     ` Yao Qi
2013-11-06 10:28       ` Eli Zaretskii
2013-11-17 20:34     ` Doug Evans
2013-11-17 21:44       ` Eli Zaretskii
2013-11-20  2:41         ` Doug Evans
2013-11-20  4:01           ` Eli Zaretskii
2013-11-22  1:17             ` Doug Evans
2013-11-20  3:58     ` Yao Qi
2013-11-11  9:38 ` [PATCH 00/10 V2] Cache code access for disassemble Yao Qi
2013-11-17 17:03   ` Yao Qi
2013-11-18  8:39 ` [PATCH 10/10] Use target_read_code in disassemble Yao Qi
2013-11-18 17:12   ` Doug Evans
2013-11-20  4:46 ` [PATCH 00/10 V2] Cache code access for disassemble Yao Qi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1383458049-20893-9-git-send-email-yao@codesourcery.com \
    --to=yao@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox