OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [gdb/] [memattr.h] - Blame information for rev 157

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 jeremybenn
/* Memory attributes support, for GDB.
2
 
3
   Copyright (C) 2001, 2006, 2007, 2008 Free Software Foundation, Inc.
4
 
5
   This file is part of GDB.
6
 
7
   This program is free software; you can redistribute it and/or modify
8
   it under the terms of the GNU General Public License as published by
9
   the Free Software Foundation; either version 3 of the License, or
10
   (at your option) any later version.
11
 
12
   This program is distributed in the hope that it will be useful,
13
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
   GNU General Public License for more details.
16
 
17
   You should have received a copy of the GNU General Public License
18
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
 
20
#ifndef MEMATTR_H
21
#define MEMATTR_H
22
 
23
#include "vec.h"
24
 
25
enum mem_access_mode
26
{
27
  MEM_NONE,                     /* Memory that is not physically present. */
28
  MEM_RW,                       /* read/write */
29
  MEM_RO,                       /* read only */
30
  MEM_WO,                       /* write only */
31
 
32
  /* Read/write, but special steps are required to write to it.  */
33
  MEM_FLASH
34
};
35
 
36
enum mem_access_width
37
{
38
  MEM_WIDTH_UNSPECIFIED,
39
  MEM_WIDTH_8,                  /*  8 bit accesses */
40
  MEM_WIDTH_16,                 /* 16  "      "    */
41
  MEM_WIDTH_32,                 /* 32  "      "    */
42
  MEM_WIDTH_64                  /* 64  "      "    */
43
};
44
 
45
/* The set of all attributes that can be set for a memory region.
46
 
47
   This structure was created so that memory attributes can be passed
48
   to target_ functions without exposing the details of memory region
49
   list, which would be necessary if these fields were simply added to
50
   the mem_region structure.
51
 
52
   FIXME: It would be useful if there was a mechanism for targets to
53
   add their own attributes.  For example, the number of wait states. */
54
 
55
struct mem_attrib
56
{
57
  /* read/write, read-only, or write-only */
58
  enum mem_access_mode mode;
59
 
60
  enum mem_access_width width;
61
 
62
  /* enables hardware breakpoints */
63
  int hwbreak;
64
 
65
  /* enables host-side caching of memory region data */
66
  int cache;
67
 
68
  /* enables memory verification.  after a write, memory is re-read
69
     to verify that the write was successful. */
70
  int verify;
71
 
72
  /* Block size.  Only valid if mode == MEM_FLASH.  */
73
  int blocksize;
74
};
75
 
76
struct mem_region
77
{
78
  /* Lowest address in the region.  */
79
  CORE_ADDR lo;
80
  /* Address past the highest address of the region.
81
     If 0, upper bound is "infinity".  */
82
  CORE_ADDR hi;
83
 
84
  /* Item number of this memory region. */
85
  int number;
86
 
87
  /* Status of this memory region (enabled if non-zero, otherwise disabled) */
88
  int enabled_p;
89
 
90
  /* Attributes for this region */
91
  struct mem_attrib attrib;
92
};
93
 
94
/* Declare a vector type for a group of mem_region structures.  The
95
   typedef is necessary because vec.h can not handle a struct tag.
96
   Except during construction, these vectors are kept sorted.  */
97
typedef struct mem_region mem_region_s;
98
DEF_VEC_O(mem_region_s);
99
 
100
extern struct mem_region *lookup_mem_region(CORE_ADDR);
101
 
102
void invalidate_target_mem_regions (void);
103
 
104
void mem_region_init (struct mem_region *);
105
 
106
int mem_region_cmp (const void *, const void *);
107
 
108
#endif  /* MEMATTR_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.