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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [gdb/] [memattr.h] - Blame information for rev 816

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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