summaryrefslogblamecommitdiffstats
path: root/cpukit/score/include/rtems/system.h
blob: 96b0abfff89c13a45a40c75765cac1807bea2cb4 (plain) (tree)















































































                                                                          
                             
























                                             


                                             











                                                                        
                                                                  












                                                                         
/*  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/cpu.h>             /* processor specific information */
#include <rtems/status.h>          /* RTEMS status codes */
#include <rtems/directives.h>

/*
 *  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 jump table of entry points into RTEMS directives.
 */

extern const void * _Entry_points[ RTEMS_NUMBER_OF_ENTRY_POINTS ];

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

EXTERN rtems_cpu_table _CPU_Table;               /* CPU dependent info */

#ifdef __cplusplus
}
#endif

#endif
/* end of include file */