GDB (xrefs)
Classes | Macros | Typedefs | Functions | Variables
/tmp/gdb-7.10/gdb/dcache.c File Reference
#include "defs.h"
#include "dcache.h"
#include "gdbcmd.h"
#include "gdbcore.h"
#include "target-dcache.h"
#include "inferior.h"
#include "splay-tree.h"

Go to the source code of this file.

Classes

struct  dcache_block
 
struct  dcache_struct
 

Macros

#define DCACHE_DEFAULT_SIZE   4096
 
#define DCACHE_DEFAULT_LINE_SIZE   64
 
#define LINE_SIZE_MASK(dcache)   ((dcache->line_size - 1))
 
#define XFORM(dcache, x)   ((x) & LINE_SIZE_MASK (dcache))
 
#define MASK(dcache, x)    ((x) & ~LINE_SIZE_MASK (dcache))
 

Typedefs

typedef void( block_func) (struct dcache_block *block, void *param)
 

Functions

static struct dcache_blockdcache_hit (DCACHE *dcache, CORE_ADDR addr)
 
static int dcache_read_line (DCACHE *dcache, struct dcache_block *db)
 
static struct dcache_blockdcache_alloc (DCACHE *dcache, CORE_ADDR addr)
 
static void dcache_info (char *exp, int tty)
 
void _initialize_dcache (void)
 
static void show_dcache_enabled_p (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static void append_block (struct dcache_block **blist, struct dcache_block *block)
 
static void remove_block (struct dcache_block **blist, struct dcache_block *block)
 
static void for_each_block (struct dcache_block **blist, block_func *func, void *param)
 
static void free_block (struct dcache_block *block, void *param)
 
void dcache_free (DCACHE *dcache)
 
static void invalidate_block (struct dcache_block *block, void *param)
 
void dcache_invalidate (DCACHE *dcache)
 
static void dcache_invalidate_line (DCACHE *dcache, CORE_ADDR addr)
 
static int dcache_peek_byte (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr)
 
static void dcache_poke_byte (DCACHE *dcache, CORE_ADDR addr, const gdb_byte *ptr)
 
static int dcache_splay_tree_compare (splay_tree_key a, splay_tree_key b)
 
DCACHEdcache_init (void)
 
enum target_xfer_status dcache_read_memory_partial (struct target_ops *ops, DCACHE *dcache, CORE_ADDR memaddr, gdb_byte *myaddr, ULONGEST len, ULONGEST *xfered_len)
 
void dcache_update (DCACHE *dcache, enum target_xfer_status status, CORE_ADDR memaddr, const gdb_byte *myaddr, ULONGEST len)
 
static void dcache_print_line (DCACHE *dcache, int index)
 
static void dcache_info_1 (DCACHE *dcache, char *exp)
 
static void set_dcache_size (char *args, int from_tty, struct cmd_list_element *c)
 
static void set_dcache_line_size (char *args, int from_tty, struct cmd_list_element *c)
 
static void set_dcache_command (char *arg, int from_tty)
 
static void show_dcache_command (char *args, int from_tty)
 

Variables

static struct cmd_list_elementdcache_set_list = NULL
 
static struct cmd_list_elementdcache_show_list = NULL
 
static unsigned dcache_size = DCACHE_DEFAULT_SIZE
 
static unsigned dcache_line_size = DCACHE_DEFAULT_LINE_SIZE
 
static int dcache_enabled_p = 0
 

Macro Definition Documentation

#define DCACHE_DEFAULT_LINE_SIZE   64

Definition at line 82 of file dcache.c.

Referenced by set_dcache_line_size().

#define DCACHE_DEFAULT_SIZE   4096

Definition at line 76 of file dcache.c.

Referenced by set_dcache_size().

#define LINE_SIZE_MASK (   dcache)    ((dcache->line_size - 1))

Definition at line 88 of file dcache.c.

#define MASK (   dcache,
 
)    ((x) & ~LINE_SIZE_MASK (dcache))

Definition at line 90 of file dcache.c.

Referenced by dcache_alloc(), and dcache_hit().

#define XFORM (   dcache,
 
)    ((x) & LINE_SIZE_MASK (dcache))

Definition at line 89 of file dcache.c.

Referenced by dcache_peek_byte(), and dcache_poke_byte().

Typedef Documentation

typedef void( block_func) (struct dcache_block *block, void *param)

Definition at line 120 of file dcache.c.

Function Documentation

void _initialize_dcache ( void  )
static void append_block ( struct dcache_block **  blist,
struct dcache_block block 
)
static

Definition at line 149 of file dcache.c.

References dcache_block::next, and dcache_block::prev.

Referenced by dcache_alloc(), dcache_invalidate_line(), and invalidate_block().

static struct dcache_block * dcache_alloc ( DCACHE dcache,
CORE_ADDR  addr 
)
static
void dcache_free ( DCACHE dcache)
static struct dcache_block * dcache_hit ( DCACHE dcache,
CORE_ADDR  addr 
)
static

Definition at line 287 of file dcache.c.

References MASK, dcache_block::refs, and dcache_struct::tree.

Referenced by dcache_invalidate_line(), dcache_peek_byte(), and dcache_poke_byte().

static void dcache_info ( char *  exp,
int  tty 
)
static

Definition at line 646 of file dcache.c.

References dcache_info_1(), and target_dcache_get().

Referenced by _initialize_dcache().

static void dcache_info_1 ( DCACHE dcache,
char *  exp 
)
static
DCACHE* dcache_init ( void  )
void dcache_invalidate ( DCACHE dcache)
static void dcache_invalidate_line ( DCACHE dcache,
CORE_ADDR  addr 
)
static
static int dcache_peek_byte ( DCACHE dcache,
CORE_ADDR  addr,
gdb_byte ptr 
)
static

Definition at line 397 of file dcache.c.

References dcache_block::data, dcache_alloc(), dcache_hit(), dcache_read_line(), and XFORM.

Referenced by dcache_read_memory_partial().

static void dcache_poke_byte ( DCACHE dcache,
CORE_ADDR  addr,
const gdb_byte ptr 
)
static

Definition at line 423 of file dcache.c.

References dcache_block::data, dcache_hit(), and XFORM.

Referenced by dcache_update().

static void dcache_print_line ( DCACHE dcache,
int  index 
)
static
static int dcache_read_line ( DCACHE dcache,
struct dcache_block db 
)
static
enum target_xfer_status dcache_read_memory_partial ( struct target_ops ops,
DCACHE dcache,
CORE_ADDR  memaddr,
gdb_byte myaddr,
ULONGEST  len,
ULONGEST xfered_len 
)
static int dcache_splay_tree_compare ( splay_tree_key  a,
splay_tree_key  b 
)
static

Definition at line 432 of file dcache.c.

Referenced by dcache_init().

void dcache_update ( DCACHE dcache,
enum target_xfer_status  status,
CORE_ADDR  memaddr,
const gdb_byte myaddr,
ULONGEST  len 
)

Definition at line 525 of file dcache.c.

References dcache_invalidate_line(), dcache_poke_byte(), len, and TARGET_XFER_OK.

Referenced by raw_memory_xfer_partial().

static void for_each_block ( struct dcache_block **  blist,
block_func func,
void *  param 
)
static

Definition at line 194 of file dcache.c.

References func, and dcache_block::next.

Referenced by dcache_free(), and dcache_invalidate().

static void free_block ( struct dcache_block block,
void *  param 
)
static

Definition at line 215 of file dcache.c.

References xfree().

Referenced by dcache_free(), and dcache_invalidate().

static void invalidate_block ( struct dcache_block block,
void *  param 
)
static

Definition at line 237 of file dcache.c.

References dcache_block::addr, append_block(), dcache_struct::freelist, and dcache_struct::tree.

Referenced by dcache_invalidate().

static void remove_block ( struct dcache_block **  blist,
struct dcache_block block 
)
static

Definition at line 171 of file dcache.c.

References dcache_block::next, and dcache_block::prev.

Referenced by dcache_alloc(), and dcache_invalidate_line().

static void set_dcache_command ( char *  arg,
int  from_tty 
)
static

Definition at line 678 of file dcache.c.

References all_commands, gdb_stdout, help_list(), and printf_unfiltered().

Referenced by _initialize_dcache().

static void set_dcache_line_size ( char *  args,
int  from_tty,
struct cmd_list_element c 
)
static

Definition at line 664 of file dcache.c.

References _, DCACHE_DEFAULT_LINE_SIZE, dcache_line_size, error(), and target_dcache_invalidate().

Referenced by _initialize_dcache().

static void set_dcache_size ( char *  args,
int  from_tty,
struct cmd_list_element c 
)
static

Definition at line 652 of file dcache.c.

References _, DCACHE_DEFAULT_SIZE, dcache_size, error(), and target_dcache_invalidate().

Referenced by _initialize_dcache().

static void show_dcache_command ( char *  args,
int  from_tty 
)
static

Definition at line 686 of file dcache.c.

References cmd_show_list().

Referenced by _initialize_dcache().

static void show_dcache_enabled_p ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 135 of file dcache.c.

References _, and fprintf_filtered().

Referenced by _initialize_dcache().

Variable Documentation

int dcache_enabled_p = 0
static

Definition at line 132 of file dcache.c.

Referenced by _initialize_dcache().

unsigned dcache_line_size = DCACHE_DEFAULT_LINE_SIZE
static
struct cmd_list_element* dcache_set_list = NULL
static

Definition at line 29 of file dcache.c.

struct cmd_list_element* dcache_show_list = NULL
static

Definition at line 30 of file dcache.c.

unsigned dcache_size = DCACHE_DEFAULT_SIZE
static

Definition at line 77 of file dcache.c.

Referenced by _initialize_dcache(), dcache_alloc(), dcache_info_1(), and set_dcache_size().