From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19963 invoked by alias); 3 Nov 2013 05:56:33 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 19872 invoked by uid 89); 3 Nov 2013 05:56:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,RDNS_NONE,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: relay1.mentorg.com Received: from Unknown (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 03 Nov 2013 05:56:03 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1Vcqf6-00020M-Es from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Sat, 02 Nov 2013 22:55:48 -0700 Received: from SVR-ORW-FEM-02.mgc.mentorg.com ([147.34.96.206]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Sat, 2 Nov 2013 22:55:48 -0700 Received: from qiyao.dyndns.org (147.34.91.1) by svr-orw-fem-02.mgc.mentorg.com (147.34.96.168) with Microsoft SMTP Server id 14.2.247.3; Sat, 2 Nov 2013 22:55:47 -0700 From: Yao Qi To: Subject: [PATCH 03/10] Move target-dcache out of target.c Date: Sun, 03 Nov 2013 05:56:00 -0000 Message-ID: <1383458049-20893-4-git-send-email-yao@codesourcery.com> In-Reply-To: <1383458049-20893-1-git-send-email-yao@codesourcery.com> References: <1383458049-20893-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00036.txt.bz2 This patch moves target_dcache related code out of target.c. gdb: 2013-11-02 Yao Qi * 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-dcahce.h: New. --- gdb/Makefile.in | 6 +- gdb/dcache.c | 2 +- gdb/memattr.c | 1 + gdb/target-dcache.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ gdb/target-dcache.h | 28 ++++++++++++ gdb/target.c | 86 +------------------------------------ gdb/target.h | 5 -- gdb/top.c | 1 + gdb/tracepoint.c | 1 + 9 files changed, 154 insertions(+), 92 deletions(-) create mode 100644 gdb/target-dcache.c create mode 100644 gdb/target-dcache.h diff --git a/gdb/Makefile.in b/gdb/Makefile.in index a9b3c64..25d2448 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -760,7 +760,7 @@ SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \ solib.c solib-target.c source.c \ stabsread.c stack.c probe.c stap-probe.c std-regs.c \ symfile.c symfile-debug.c symfile-mem.c symmisc.c symtab.c \ - target.c target-descriptions.c target-memory.c \ + target.c target-dcache.c target-descriptions.c target-memory.c \ thread.c top.c tracepoint.c \ trad-frame.c \ tramp-frame.c \ @@ -812,7 +812,7 @@ gdb_curses.h bfd-target.h memattr.h inferior.h ax.h dummy-frame.h \ inflow.h fbsd-nat.h ia64-libunwind-tdep.h completer.h inf-ttrace.h \ solib-target.h gdb_vfork.h alpha-tdep.h dwarf2expr.h \ m2-lang.h stack.h charset.h cleanups.h addrmap.h command.h solist.h source.h \ -target.h prologue-value.h cp-abi.h tui/tui-hooks.h tui/tui.h \ +target.h target-dcache.h prologue-value.h cp-abi.h tui/tui-hooks.h tui/tui.h \ tui/tui-file.h tui/tui-command.h tui/tui-disasm.h tui/tui-wingeneral.h \ tui/tui-windata.h tui/tui-data.h tui/tui-win.h tui/tui-stack.h \ tui/tui-winsource.h tui/tui-regs.h tui/tui-io.h tui/tui-layout.h \ @@ -915,7 +915,7 @@ COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \ event-loop.o event-top.o inf-loop.o completer.o \ gdbarch.o arch-utils.o gdbtypes.o gdb_bfd.o gdb_obstack.o \ osabi.o copying.o \ - memattr.o mem-break.o target.o parse.o language.o \ + memattr.o mem-break.o target.o target-dcache.o parse.o language.o \ build-id.o buildsym.o \ findcmd.o \ std-regs.o \ diff --git a/gdb/dcache.c b/gdb/dcache.c index f7a9c63..5b32629 100644 --- a/gdb/dcache.c +++ b/gdb/dcache.c @@ -22,7 +22,7 @@ #include "gdbcmd.h" #include "gdb_string.h" #include "gdbcore.h" -#include "target.h" +#include "target-dcache.h" #include "inferior.h" #include "splay-tree.h" diff --git a/gdb/memattr.c b/gdb/memattr.c index 5c2adaa..ac1901d 100644 --- a/gdb/memattr.c +++ b/gdb/memattr.c @@ -22,6 +22,7 @@ #include "gdbcmd.h" #include "memattr.h" #include "target.h" +#include "target-dcache.h" #include "value.h" #include "language.h" #include "vec.h" 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 . */ + +#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); +} diff --git a/gdb/target-dcache.h b/gdb/target-dcache.h new file mode 100644 index 0000000..06a938f --- /dev/null +++ b/gdb/target-dcache.h @@ -0,0 +1,28 @@ +/* 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 . */ + +#include "dcache.h" + +extern void target_dcache_invalidate (void); + +extern DCACHE *target_dcache_get (void); + +extern DCACHE *target_dcache_get_or_init (void); + +extern int target_dcache_init_p (void); + +extern int stack_cache_enabled (void); diff --git a/gdb/target.c b/gdb/target.c index 1a076f3..1212347 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -23,6 +23,7 @@ #include #include "gdb_string.h" #include "target.h" +#include "target-dcache.h" #include "gdbcmd.h" #include "symtab.h" #include "inferior.h" @@ -206,76 +207,6 @@ show_targetdebug (struct ui_file *file, int from_tty, static void setup_target_debug (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 (); - - 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); -} - -/* Cache of memory operations, to speed up remote access. */ -static DCACHE *target_dcache; - -/* Target dcache is initialized or not. */ - -static 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. */ - -static DCACHE * -target_dcache_get_or_init (void) -{ - if (!target_dcache_init_p ()) - target_dcache = dcache_init (); - - return target_dcache; -} - /* The user just typed 'target' without the name of a target. */ static void @@ -1616,7 +1547,7 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object, the collected memory range fails. */ && get_traceframe_number () == -1 && (region->attrib.cache - || (stack_cache_enabled_p && object == TARGET_OBJECT_STACK_MEMORY))) + || (stack_cache_enabled () && object == TARGET_OBJECT_STACK_MEMORY))) { DCACHE *dcache = target_dcache_get_or_init (); @@ -1669,7 +1600,7 @@ memory_xfer_partial_1 (struct target_ops *ops, enum target_object object, && writebuf != NULL && target_dcache_init_p () && !region->attrib.cache - && stack_cache_enabled_p + && stack_cache_enabled () && object != TARGET_OBJECT_STACK_MEMORY) { DCACHE *dcache = target_dcache_get (); @@ -5155,17 +5086,6 @@ Tells gdb whether to control the inferior in asynchronous mode."), &setlist, &showlist); - 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); - add_setshow_boolean_cmd ("may-write-registers", class_support, &may_write_registers_1, _("\ Set permission to write into registers."), _("\ diff --git a/gdb/target.h b/gdb/target.h index 4cff2aa..7a93646 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -1043,11 +1043,6 @@ int target_supports_disable_randomization (void); #define target_can_run_breakpoint_commands() \ (*current_target.to_can_run_breakpoint_commands) () -/* Invalidate all target dcaches. */ -extern void target_dcache_invalidate (void); - -extern struct dcache_struct *target_dcache_get (void); - extern int target_read_string (CORE_ADDR, char **, int, int *); extern int target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, diff --git a/gdb/top.c b/gdb/top.c index c473d8c..b065199 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -28,6 +28,7 @@ #include "exceptions.h" #include #include "target.h" +#include "target-dcache.h" #include "breakpoint.h" #include "gdbtypes.h" #include "expression.h" diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index a7ccb50..b6fd059 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -26,6 +26,7 @@ #include "gdbcmd.h" #include "value.h" #include "target.h" +#include "target-dcache.h" #include "language.h" #include "gdb_string.h" #include "inferior.h" -- 1.7.7.6