GDB (xrefs)
Classes | Defines | Typedefs | Functions | Variables
/home/stan/gdb/src/gdb/dcache.c File Reference
#include "defs.h"
#include "dcache.h"
#include "gdbcmd.h"
#include "gdb_string.h"
#include "gdbcore.h"
#include "target.h"
#include "inferior.h"
#include "splay-tree.h"

Go to the source code of this file.

Classes

struct  dcache_block
struct  dcache_struct

Defines

#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 int dcache_poke_byte (DCACHE *dcache, CORE_ADDR addr, gdb_byte *ptr)
static int dcache_splay_tree_compare (splay_tree_key a, splay_tree_key b)
DCACHEdcache_init (void)
int dcache_xfer_memory (struct target_ops *ops, DCACHE *dcache, CORE_ADDR memaddr, gdb_byte *myaddr, int len, int should_write)
void dcache_update (DCACHE *dcache, CORE_ADDR memaddr, gdb_byte *myaddr, int len)
static void dcache_print_line (int index)
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
static DCACHElast_cache

Define Documentation

#define DCACHE_DEFAULT_LINE_SIZE   64

Definition at line 83 of file dcache.c.

Referenced by set_dcache_line_size().

#define DCACHE_DEFAULT_SIZE   4096

Definition at line 77 of file dcache.c.

Referenced by set_dcache_size().

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

Definition at line 89 of file dcache.c.

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

Definition at line 91 of file dcache.c.

Referenced by dcache_alloc(), and dcache_hit().

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

Definition at line 90 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 121 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 152 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, read]
void dcache_free ( DCACHE dcache)
static struct dcache_block * dcache_hit ( DCACHE dcache,
CORE_ADDR  addr 
) [static, read]

Definition at line 293 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]
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 404 of file dcache.c.

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

Referenced by dcache_xfer_memory().

static int dcache_poke_byte ( DCACHE dcache,
CORE_ADDR  addr,
gdb_byte ptr 
) [static]

Definition at line 432 of file dcache.c.

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

Referenced by dcache_update(), and dcache_xfer_memory().

static void dcache_print_line ( int  index) [static]
static int dcache_read_line ( DCACHE dcache,
struct dcache_block db 
) [static]
static int dcache_splay_tree_compare ( splay_tree_key  a,
splay_tree_key  b 
) [static]

Definition at line 443 of file dcache.c.

Referenced by dcache_init().

void dcache_update ( DCACHE dcache,
CORE_ADDR  memaddr,
gdb_byte myaddr,
int  len 
)

Definition at line 552 of file dcache.c.

References dcache_poke_byte(), and len.

Referenced by memory_xfer_partial_1().

int dcache_xfer_memory ( struct target_ops ops,
DCACHE dcache,
CORE_ADDR  memaddr,
gdb_byte myaddr,
int  len,
int  should_write 
)
static void for_each_block ( struct dcache_block **  blist,
block_func func,
void *  param 
) [static]

Definition at line 197 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 218 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 243 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 174 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 688 of file dcache.c.

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

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

Definition at line 673 of file dcache.c.

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

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

Definition at line 660 of file dcache.c.

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

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

Definition at line 696 of file dcache.c.

References cmd_show_list().

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 136 of file dcache.c.

References _, and fprintf_filtered().


Variable Documentation

int dcache_enabled_p = 0 [static]

Definition at line 133 of file dcache.c.

Definition at line 84 of file dcache.c.

Referenced by dcache_info(), dcache_init(), dcache_invalidate(), and set_dcache_line_size().

struct cmd_list_element* dcache_set_list = NULL [static]

Definition at line 30 of file dcache.c.

struct cmd_list_element* dcache_show_list = NULL [static]

Definition at line 31 of file dcache.c.

unsigned dcache_size = DCACHE_DEFAULT_SIZE [static]

Definition at line 78 of file dcache.c.

Referenced by dcache_alloc(), dcache_info(), and set_dcache_size().

DCACHE* last_cache [static]

Definition at line 142 of file dcache.c.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines