source: rtems/bsps/mips/shared/gdbstub/memlimits.h @ 828276b

5
Last change on this file since 828276b was 828276b, checked in by Sebastian Huber <sebastian.huber@…>, on 03/05/19 at 06:58:18

bsps: Adjust shared Doxygen groups

Update #3706.

  • Property mode set to 100644
File size: 3.3 KB
Line 
1/**
2 * @file
3 * @ingroup mips_limits
4 * @brief Definition of machine and system dependent address limits.
5 */
6
7/*
8 * limits.h - definition of machine & system dependent address limits
9 *
10 *                   THIS SOFTWARE IS NOT COPYRIGHTED
11 *
12 *  The following software is offered for use in the public domain.
13 *  There is no warranty with regard to this software or its performance
14 *  and the user must accept the software "AS IS" with all faults.
15 *
16 *  THE CONTRIBUTORS DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, WITH
17 *  REGARD TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 */
20
21#ifndef _MEMLIMITS_H_
22#define _MEMLIMITS_H_
23
24/*
25 * The macros in this file are specific to a given implementation.
26 * The general rules for their construction are as follows:
27 *
28 * 1.) is_readable(addr,length) should be true if and only if the
29 *     region starting at the given virtual address can be read
30 *     _without_ causing an exception or other fatal error.  Note
31 *     that the stub will use the strictest alignment satisfied
32 *     by _both_ addr and length (e.g., if both are divisible by
33 *     8 then the region will be read in double-word chunks).
34 *
35 * 2.) is_writeable(addr,length) should be true if and only if the
36 *     region starting at the given virtual address can be written
37 *     _without_ causing an exception or other fatal error.  Note
38 *     that the stub will use the strictest alignment satisfied
39 *     by _both_ addr and length (e.g., if both are divisible by
40 *     8 then the region will be written in double-word chunks).
41 *
42 * 3.) is-steppable(ptr) whould be true if and only if ptr is the
43 *     address of a writeable region of memory which may contain
44 *     an executable instruction.  At a minimum this requires that
45 *     ptr be word-aligned (divisible by 4) and not point to EPROM
46 *     or memory-mapped I/O.
47 *
48 * Note: in order to satisfy constraints related to cacheability
49 * of certain memory subsystems it may be necessary for regions
50 * of kseg0 and kseg1 which map to the same physical addresses
51 * to have different readability and/or writeability attributes.
52 */
53
54/**
55 * @defgroup mips_limits Address Limits
56 * @ingroup RTEMSBSPsMIPSShared
57 * @brief Address Limits
58 */
59
60
61/*
62#define K0_LIMIT_FOR_READ  (K0BASE+0x18000000)
63#define K1_LIMIT_FOR_READ  (K1BASE+K1SIZE)
64
65#define is_readable(addr,length) \
66 (((K0BASE <= addr) && ((addr + length) <= K0_LIMIT_FOR_READ)) \
67  || ((K1BASE <= addr) && ((addr + length) <= K1_LIMIT_FOR_READ)))
68
69#define K0_LIMIT_FOR_WRITE (K0BASE+0x08000000)
70#define K1_LIMIT_FOR_WRITE (K1BASE+0x1e000000)
71
72#define is_writeable(addr,length) \
73 (((K0BASE <= addr) && ((addr + length) <= K0_LIMIT_FOR_WRITE)) \
74  || ((K1BASE <= addr) && ((addr + length) <= K1_LIMIT_FOR_WRITE)))
75
76#define K0_LIMIT_FOR_STEP  (K0BASE+0x08000000)
77#define K1_LIMIT_FOR_STEP  (K1BASE+0x08000000)
78
79#define is_steppable(ptr) \
80 ((((int)ptr & 0x3) == 0) \
81  && (((K0BASE <= (int)ptr) && ((int)ptr < K0_LIMIT_FOR_STEP)) \
82      || ((K1BASE <= (int)ptr) && ((int)ptr < K1_LIMIT_FOR_STEP))))
83
84struct memseg
85{
86      unsigned begin, end, opts;
87};
88
89#define MEMOPT_READABLE   1
90#define MEMOPT_WRITEABLE  2
91
92#define NUM_MEMSEGS     10
93
94int add_memsegment(unsigned,unsigned,int);
95int is_readable(unsigned,unsigned);
96int is_writeable(unsigned,unsigned);
97int is_steppable(unsigned);
98*/
99
100#endif  /* _MEMLIMITS_H_ */
Note: See TracBrowser for help on using the repository browser.