summaryrefslogtreecommitdiffstats
path: root/c/src/exec/score/headers/system.h
blob: 037fe93e6605e97808aa42e4b5b1e67913bd4c09 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*  system.h
 *
 *  This include file contains information that is included in every
 *  function in the executive.  This must be the first include file
 *  included in all internal RTEMS files.
 *
 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
 *  On-Line Applications Research Corporation (OAR).
 *  All rights assigned to U.S. Government, 1994.
 *
 *  This material may be reproduced by or for the U.S. Government pursuant
 *  to the copyright license under the clause at DFARS 252.227-7013.  This
 *  notice must appear in all copies of this file and its derivatives.
 *
 *  $Id$
 */

#ifndef __RTEMS_SYSTEM_h
#define __RTEMS_SYSTEM_h

#ifdef __cplusplus
extern "C" {
#endif

/*
 *  The following define the CPU Family and Model within the family
 *
 *  NOTE: The string "REPLACE_THIS_WITH_USE_INLINE_OR_MACROS" is replaced
 *        with either "USE_INLINES" or "USE_MACROS" based upon the
 *        whether this target configuration uses the inline or
 *        macro implementations of the inlined RTEMS routines.
 */
 

#define REPLACE_THIS_WITH_USE_INLINE_OR_MACROS

/*
 *  The following insures that all data is declared in the space
 *  of the Initialization Manager.  It is referenced as "external"
 *  in every other file.
 */

#ifdef INIT
#undef EXTERN
#define EXTERN
#else
#undef EXTERN
#define EXTERN  extern
#endif

/*
 *  The following (in conjunction with compiler arguments) are used
 *  to choose between the use of static inline functions and macro
 *  functions.   The static inline implementation allows better
 *  type checking with no cost in code size or execution speed.
 */

#ifdef USE_INLINES
#define STATIC static
#define INLINE __inline__
#else
/*
#error Only the GNU C compiler is currently supported!!!
*/
#define STATIC
#define INLINE
#endif

/*
 *  Include a base set of files.
 */

/*
 * XXX: Eventually proc_ptr needs to disappear!!!
 */

typedef void * proc_ptr;

#include <rtems/core/cpu.h>        /* processor specific information */

/*
 *  Define NULL
 */

#ifndef NULL
#define NULL      0          /* NULL value */
#endif

/*
 *  Boolean constants
 */

#if !defined( TRUE ) || (TRUE != 1)
#undef TRUE
#define TRUE     (1)
#endif

#if !defined( FALSE ) || (FALSE != 0)
#undef FALSE
#define FALSE     (0)
#endif

#define stringify( _x ) # _x

#define RTEMS_offsetof(type, field) \
	((unsigned32) &(((type *) 0)->field))

/*
 *  The following is the extern for the RTEMS version string.
 *  The contents of this string are CPU specific.
 */

extern const char _RTEMS_version[];         /* RTEMS version string */
extern const char _Copyright_Notice[];      /* RTEMS copyright string */

/*
 *  The following defines the CPU dependent information table.
 */

EXTERN rtems_cpu_table _CPU_Table;               /* CPU dependent info */

/*
 *  XXX weird RTEMS stuff
 */

#define RTEMS_MAXIMUM_NAME_LENGTH 4

#ifdef __cplusplus
}
#endif

#endif
/* end of include file */