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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [rdi-share/] [angel.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/*
2
 * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved.
3
 *
4
 * This software may be freely used, copied, modified, and distributed
5
 * provided that the above copyright notice is preserved in all copies of the
6
 * software.
7
 */
8
 
9
/*> angel.h <*/
10
/*---------------------------------------------------------------------------*/
11
/* This header file is the main holder for the declarations and
12
 * prototypes for the core Angel system. Some Angel concepts are
13
 * described at the start of this file to ensure that a complete view
14
 * of the Angel world can be derived purely from the source.
15
 *
16
 * $Revision: 1.1.1.1 $
17
 *     $Date: 2002-01-16 10:24:33 $
18
 *
19
 *
20
 * NOTE: Currently the Angel source is designed to be simple,
21
 * understandable and easy to port to new hardware platforms. However,
22
 * this does not always yield the highest performing system. The
23
 * current layered approach introduces an overhead to the performance
24
 * of the system. In a true commercial target, this code should be
25
 * re-designed to build a system where the Angel logical message
26
 * system, device driver and hardware accesses are merged to provide
27
 * the best performance.
28
 */
29
/*---------------------------------------------------------------------------*/
30
/* Angel overview:
31
 
32
... some comments describing Angel ...
33
 
34
 * Angel is designed as a kit-of-parts that can be used to provide
35
 * run-time support for the development of ARM applications. The main
36
 * core of Angel is in providing support for the "debug" message
37
 * communication with a host system. These messages do not just cover
38
 * debugging ARM processes, but also the process of downloading ARM
39
 * programs or attaching to executing processes on the target.
40
 *
41
 * A stand-alone ROM based Angel world is the basic starting point for
42
 * a system, since it will allow programs to be downloaded to the
43
 * target. The ROM version of Angel will provide the generic debug
44
 * support, but no system specific routines. The preferred method of
45
 * using Angel is as a link library. This ensures that applications
46
 * carry with them the Angel routines necessary to support debugging
47
 * (and also ensure that the Angel version is up-to-date, independant
48
 * of the version in the target ROM). Eventually, once a program has
49
 * been fully debugged, a ROMmed version of the program can be
50
 * generated with the Angel code being provided in the application.
51
 
52
.. more comments ..
53
 
54
 * The standard Angel routines do *NOT* perform any dynamic memory
55
 * allocation. To simplify the source, and aid the porting to a non C
56
 * library world, memory is either pre-allocated (as build-time
57
 * globals) or actually given to the particular Angel routine by the
58
 * active run-time. This ensures that the interaction between Angel
59
 * and the target O/S is minimised.
60
 *
61
 * Notes: We sub-include more header files to keep the source
62
 * modular. Since Angel is a kit-of-parts alternative systems may need
63
 * to change the prototypes of particular functions, whilst
64
 * maintaining a fixed external interface. e.g. using the standard
65
 * DEBUG messages, but with a different communications world.
66
 */
67
/*---------------------------------------------------------------------------*/
68
 
69
#ifndef __angel_h
70
#define __angel_h
71
 
72
/*---------------------------------------------------------------------------*/
73
/*-- Global Angel definitions and manifests ---------------------------------*/
74
/*---------------------------------------------------------------------------*/
75
/* When building Angel we may not include the standard library
76
 * headers. However, it is useful coding using standard macro names
77
 * since it makes the code easier to understand.
78
 */
79
 
80
typedef unsigned int  word ;
81
typedef unsigned char byte ;
82
 
83
/* The following typedefs can be used to access I/O registers: */
84
typedef volatile unsigned int  vuword ;
85
typedef volatile unsigned char vubyte ;
86
 
87
/*
88
 * The following typedefs are used when defining objects that may also
89
 * be created on a host system, where the word size is not
90
 * 32bits. This ensures that the same data values are manipulated.
91
 */
92
#ifdef TARGET
93
typedef unsigned int unsigned32;
94
typedef signed int   signed32;
95
typedef        int   int32;
96
 
97
typedef unsigned short int unsigned16;
98
typedef signed   short int signed16;
99
 
100
/*
101
 * yet another solution for the bool/boolean problem, this one is
102
 * copied from Scott's modifications to clx/host.h
103
 */
104
# ifdef IMPLEMENT_BOOL_AS_ENUM
105
   enum _bool { _false, _true };
106
#  define _bool enum _bool
107
# elif defined(IMPLEMENT_BOOL_AS_INT) || !defined(__cplusplus)
108
#  define _bool int
109
#  define _false 0
110
#  define _true 1
111
# endif
112
 
113
# ifdef _bool
114
#  define bool _bool
115
# endif
116
 
117
# ifndef true
118
#  define true _true
119
#  define false _false
120
# endif
121
 
122
# ifndef YES
123
#  define YES   true
124
#  define NO    false
125
# endif
126
 
127
# undef TRUE             /* some OSF headers define as 1 */
128
# define TRUE  true
129
 
130
# undef FALSE            /* some OSF headers define as 1 */
131
# define FALSE false
132
 
133
# ifndef NULL
134
#  define NULL 0
135
# endif
136
 
137
#else
138
 
139
# include "host.h"
140
 
141
#endif
142
 
143
#ifndef IGNORE
144
# define IGNORE(x) ((x)=(x))
145
#endif
146
 
147
/* The following typedef allows us to cast between integral and
148
 * function pointers. This isn't allowed by direct casting when
149
 * conforming to the ANSI spec.
150
 */
151
typedef union ansibodge
152
{
153
 word  w ;
154
 word *wp ;
155
 void *vp ;
156
 byte *bp ;
157
 void (*vfn)(void) ;
158
 word (*wfn)(void) ;
159
 int  (*ifn)(void) ;
160
 byte (*bfn)(void) ;
161
} ansibodge ;
162
 
163
/*---------------------------------------------------------------------------*/
164
 
165
/* The amount setup aside by the run-time system for stack overflow
166
 * handlers to execute in. This must be at least 256bytes, since that
167
 * value is assumed by the current ARM Ltd compiler.
168
 * This space is _only_ kept for the USR stack, not any of the privileged
169
 * mode stacks, as stack overflow on these is always fatal - there is
170
 * no point attemptingto recover.  In addition is is important that
171
 * Angel should keep privileged stack space requirements to a minimum.
172
 */
173
#define APCS_STACKGUARD 256
174
 
175
#endif /* __angel_h */
176
 
177
/* EOF angel.h */

powered by: WebSVN 2.1.0

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