Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(326)

Unified Diff: gdb/dcache.c

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/dcache.h ('k') | gdb/dec-thread.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/dcache.c
diff --git a/gdb/dcache.c b/gdb/dcache.c
index 652cfab9e091e86723e2beef7f797bd4d908641e..804d567d1f8a24d9243c0abe4e515095a242e937 100644
--- a/gdb/dcache.c
+++ b/gdb/dcache.c
@@ -1,7 +1,6 @@
/* Caching code for GDB, the GNU debugger.
- Copyright (C) 1992-1993, 1995-1996, 1998-2001, 2003, 2007-2012 Free
- Software Foundation, Inc.
+ Copyright (C) 1992-2013 Free Software Foundation, Inc.
This file is part of GDB.
@@ -21,9 +20,9 @@
#include "defs.h"
#include "dcache.h"
#include "gdbcmd.h"
-#include "gdb_string.h"
+#include <string.h>
#include "gdbcore.h"
-#include "target.h"
+#include "target-dcache.h"
#include "inferior.h"
#include "splay-tree.h"
@@ -140,8 +139,6 @@ show_dcache_enabled_p (struct ui_file *file, int from_tty,
fprintf_filtered (file, _("Deprecated remotecache flag is %s.\n"), value);
}
-static DCACHE *last_cache; /* Used by info dcache. */
-
/* Add BLOCK to circular block list BLIST, behind the block at *BLIST.
*BLIST is not updated (unless it was previously NULL of course).
This is for the least-recently-allocated list's sake:
@@ -226,9 +223,6 @@ free_block (struct dcache_block *block, void *param)
void
dcache_free (DCACHE *dcache)
{
- if (last_cache == dcache)
- last_cache = NULL;
-
splay_tree_delete (dcache->tree);
for_each_block (&dcache->oldest, free_block, NULL);
for_each_block (&dcache->freelist, free_block, NULL);
@@ -342,15 +336,14 @@ dcache_read_line (DCACHE *dcache, struct dcache_block *db)
len -= reg_len;
continue;
}
-
- res = target_read (&current_target, TARGET_OBJECT_RAW_MEMORY,
- NULL, myaddr, memaddr, reg_len);
- if (res < reg_len)
+
+ res = target_read_raw_memory (memaddr, myaddr, reg_len);
+ if (res != 0)
return 0;
- memaddr += res;
- myaddr += res;
- len -= res;
+ memaddr += reg_len;
+ myaddr += reg_len;
+ len -= reg_len;
}
return 1;
@@ -469,7 +462,6 @@ dcache_init (void)
dcache->size = 0;
dcache->line_size = dcache_line_size;
dcache->ptid = null_ptid;
- last_cache = dcache;
return dcache;
}
@@ -558,26 +550,28 @@ dcache_update (DCACHE *dcache, CORE_ADDR memaddr, gdb_byte *myaddr, int len)
dcache_poke_byte (dcache, memaddr + i, myaddr + i);
}
+/* Print DCACHE line INDEX. */
+
static void
-dcache_print_line (int index)
+dcache_print_line (DCACHE *dcache, int index)
{
splay_tree_node n;
struct dcache_block *db;
int i, j;
- if (!last_cache)
+ if (dcache == NULL)
{
printf_filtered (_("No data cache available.\n"));
return;
}
- n = splay_tree_min (last_cache->tree);
+ n = splay_tree_min (dcache->tree);
for (i = index; i > 0; --i)
{
if (!n)
break;
- n = splay_tree_successor (last_cache->tree, n->key);
+ n = splay_tree_successor (dcache->tree, n->key);
}
if (!n)
@@ -589,21 +583,23 @@ dcache_print_line (int index)
db = (struct dcache_block *) n->value;
printf_filtered (_("Line %d: address %s [%d hits]\n"),
- index, paddress (target_gdbarch, db->addr), db->refs);
+ index, paddress (target_gdbarch (), db->addr), db->refs);
- for (j = 0; j < last_cache->line_size; j++)
+ for (j = 0; j < dcache->line_size; j++)
{
printf_filtered ("%02x ", db->data[j]);
/* Print a newline every 16 bytes (48 characters). */
- if ((j % 16 == 15) && (j != last_cache->line_size - 1))
+ if ((j % 16 == 15) && (j != dcache->line_size - 1))
printf_filtered ("\n");
}
printf_filtered ("\n");
}
+/* Parse EXP and show the info about DCACHE. */
+
static void
-dcache_info (char *exp, int tty)
+dcache_info_1 (DCACHE *dcache, char *exp)
{
splay_tree_node n;
int i, refcount;
@@ -619,27 +615,27 @@ dcache_info (char *exp, int tty)
return;
}
- dcache_print_line (i);
+ dcache_print_line (dcache, i);
return;
}
printf_filtered (_("Dcache %u lines of %u bytes each.\n"),
dcache_size,
- last_cache ? (unsigned) last_cache->line_size
+ dcache ? (unsigned) dcache->line_size
: dcache_line_size);
- if (!last_cache || ptid_equal (last_cache->ptid, null_ptid))
+ if (dcache == NULL || ptid_equal (dcache->ptid, null_ptid))
{
printf_filtered (_("No data cache available.\n"));
return;
}
printf_filtered (_("Contains data for %s\n"),
- target_pid_to_str (last_cache->ptid));
+ target_pid_to_str (dcache->ptid));
refcount = 0;
- n = splay_tree_min (last_cache->tree);
+ n = splay_tree_min (dcache->tree);
i = 0;
while (n)
@@ -647,17 +643,23 @@ dcache_info (char *exp, int tty)
struct dcache_block *db = (struct dcache_block *) n->value;
printf_filtered (_("Line %d: address %s [%d hits]\n"),
- i, paddress (target_gdbarch, db->addr), db->refs);
+ i, paddress (target_gdbarch (), db->addr), db->refs);
i++;
refcount += db->refs;
- n = splay_tree_successor (last_cache->tree, n->key);
+ n = splay_tree_successor (dcache->tree, n->key);
}
printf_filtered (_("Cache state: %d active lines, %d hits\n"), i, refcount);
}
static void
+dcache_info (char *exp, int tty)
+{
+ dcache_info_1 (target_dcache_get (), exp);
+}
+
+static void
set_dcache_size (char *args, int from_tty,
struct cmd_list_element *c)
{
@@ -666,8 +668,7 @@ set_dcache_size (char *args, int from_tty,
dcache_size = DCACHE_DEFAULT_SIZE;
error (_("Dcache size must be greater than 0."));
}
- if (last_cache)
- dcache_invalidate (last_cache);
+ target_dcache_invalidate ();
}
static void
@@ -681,8 +682,7 @@ set_dcache_line_size (char *args, int from_tty,
dcache_line_size = DCACHE_DEFAULT_LINE_SIZE;
error (_("Invalid dcache line size: %u (must be power of 2)."), d);
}
- if (last_cache)
- dcache_invalidate (last_cache);
+ target_dcache_invalidate ();
}
static void
@@ -728,20 +728,20 @@ Use this command to set number of lines in dcache and line-size."),
Show dcachesettings."),
&dcache_show_list, "show dcache ", /*allow_unknown*/0, &showlist);
- add_setshow_uinteger_cmd ("line-size", class_obscure,
- &dcache_line_size, _("\
+ add_setshow_zuinteger_cmd ("line-size", class_obscure,
+ &dcache_line_size, _("\
Set dcache line size in bytes (must be power of 2)."), _("\
Show dcache line size."),
- NULL,
- set_dcache_line_size,
- NULL,
- &dcache_set_list, &dcache_show_list);
- add_setshow_uinteger_cmd ("size", class_obscure,
- &dcache_size, _("\
+ NULL,
+ set_dcache_line_size,
+ NULL,
+ &dcache_set_list, &dcache_show_list);
+ add_setshow_zuinteger_cmd ("size", class_obscure,
+ &dcache_size, _("\
Set number of dcache lines."), _("\
Show number of dcache lines."),
- NULL,
- set_dcache_size,
- NULL,
- &dcache_set_list, &dcache_show_list);
+ NULL,
+ set_dcache_size,
+ NULL,
+ &dcache_set_list, &dcache_show_list);
}
« no previous file with comments | « gdb/dcache.h ('k') | gdb/dec-thread.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698