summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/basedefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/basedefs.h')
-rw-r--r--cpukit/score/include/rtems/score/basedefs.h415
1 files changed, 0 insertions, 415 deletions
diff --git a/cpukit/score/include/rtems/score/basedefs.h b/cpukit/score/include/rtems/score/basedefs.h
deleted file mode 100644
index 4e48d226e8..0000000000
--- a/cpukit/score/include/rtems/score/basedefs.h
+++ /dev/null
@@ -1,415 +0,0 @@
-/**
- * @file
- *
- * @ingroup Score
- *
- * @brief Basic Definitions
- */
-
-/*
- * COPYRIGHT (c) 1989-2007.
- * On-Line Applications Research Corporation (OAR).
- *
- * Copyright (c) 2010, 2017 embedded brains GmbH.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_BASEDEFS_H
-#define _RTEMS_BASEDEFS_H
-
-/**
- * @defgroup ScoreBaseDefs Basic Definitions
- *
- * @ingroup Score
- */
-/**@{*/
-
-#include <rtems/score/cpuopts.h>
-
-#ifndef ASM
- #include <stddef.h>
- #include <stdbool.h>
- #include <stdint.h>
-#endif
-
-#ifndef TRUE
- /**
- * This ensures that RTEMS has TRUE defined in all situations.
- */
- #define TRUE 1
-#endif
-
-#ifndef FALSE
- /**
- * This ensures that RTEMS has FALSE defined in all situations.
- */
- #define FALSE 0
-#endif
-
-#if TRUE == FALSE
- #error "TRUE equals FALSE"
-#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 __GNUC__
- #define RTEMS_INLINE_ROUTINE static __inline__
-#else
- #define RTEMS_INLINE_ROUTINE static inline
-#endif
-
-/**
- * The following macro is a compiler specific way to ensure that memory
- * writes are not reordered around certian points. This specifically can
- * impact interrupt disable and thread dispatching critical sections.
- */
-#ifdef __GNUC__
- #define RTEMS_COMPILER_MEMORY_BARRIER() __asm__ volatile("" ::: "memory")
-#else
- #define RTEMS_COMPILER_MEMORY_BARRIER()
-#endif
-
-/**
- * The following defines a compiler specific attribute which informs
- * the compiler that the method must not be inlined.
- */
-#ifdef __GNUC__
- #define RTEMS_NO_INLINE __attribute__((__noinline__))
-#else
- #define RTEMS_NO_INLINE
-#endif
-
-/**
- * The following macro is a compiler specific way to indicate that
- * the method will NOT return to the caller. This can assist the
- * compiler in code generation and avoid unreachable paths. This
- * can impact the code generated following calls to
- * rtems_fatal_error_occurred and _Terminate.
- */
-#if defined(RTEMS_SCHEDSIM)
- #define RTEMS_NO_RETURN
-#elif defined(__GNUC__) && !defined(RTEMS_DEBUG)
- #define RTEMS_NO_RETURN __attribute__((__noreturn__))
-#else
- #define RTEMS_NO_RETURN
-#endif
-
-/* Provided for backward compatibility */
-#define RTEMS_COMPILER_NO_RETURN_ATTRIBUTE RTEMS_NO_RETURN
-
-/**
- * The following defines a compiler specific attribute which informs
- * the compiler that the method has no effect except the return value
- * and that the return value depends only on parameters and/or global
- * variables.
- */
-#ifdef __GNUC__
- #define RTEMS_PURE __attribute__((__pure__))
-#else
- #define RTEMS_PURE
-#endif
-
-/* Provided for backward compatibility */
-#define RTEMS_COMPILER_PURE_ATTRIBUTE RTEMS_PURE
-
-/**
- * Instructs the compiler to issue a warning whenever a variable or function
- * with this attribute will be used.
- */
-#ifdef __GNUC__
- #define RTEMS_DEPRECATED __attribute__((__deprecated__))
-#else
- #define RTEMS_DEPRECATED
-#endif
-
-/* Provided for backward compatibility */
-#define RTEMS_COMPILER_DEPRECATED_ATTRIBUTE RTEMS_DEPRECATED
-
-/**
- * @brief Instructs the compiler to place a specific variable or function in
- * the specified section.
- */
-#if defined(__GNUC__)
- #define RTEMS_SECTION( _section ) __attribute__((__section__(_section)))
-#else
- #define RTEMS_SECTION( _section )
-#endif
-
-/**
- * @brief Instructs the compiler that a specific variable or function is used.
- */
-#if defined(__GNUC__)
- #define RTEMS_USED __attribute__((__used__))
-#else
- #define RTEMS_USED
-#endif
-
-/**
- * Instructs the compiler that a specific variable is deliberately unused.
- * This can occur when reading volatile device memory or skipping arguments
- * in a variable argument method.
- */
-#if defined(__GNUC__)
- #define RTEMS_UNUSED __attribute__((__unused__))
-#else
- #define RTEMS_UNUSED
-#endif
-
-/* Provided for backward compatibility */
-#define RTEMS_COMPILER_UNUSED_ATTRIBUTE RTEMS_UNUSED
-
-/**
- * Instructs the compiler that a specific structure or union members will be
- * placed so that the least memory is used.
- */
-#if defined(__GNUC__)
- #define RTEMS_PACKED __attribute__((__packed__))
-#else
- #define RTEMS_PACKED
-#endif
-
-/**
- * @brief Instructs the compiler to generate an alias to the specified target
- * function.
- */
-#if defined(__GNUC__)
- #define RTEMS_ALIAS( _target ) __attribute__((__alias__(#_target)))
-#else
- #define RTEMS_ALIAS( _target )
-#endif
-
-/**
- * @brief Instructs the compiler to generate a weak alias to the specified
- * target function.
- */
-#if defined(__GNUC__)
- #define RTEMS_WEAK_ALIAS( _target ) __attribute__((__weak__, __alias__(#_target)))
-#else
- #define RTEMS_WEAK_ALIAS( _target )
-#endif
-
-/**
- * @brief Instructs the compiler to enforce the specified alignment.
- */
-#if defined(__GNUC__)
- #define RTEMS_ALIGNED( _alignment ) __attribute__((__aligned__(_alignment)))
-#else
- #define RTEMS_ALIGNED( _alignment )
-#endif
-
-/* Provided for backward compatibility */
-#define RTEMS_COMPILER_PACKED_ATTRIBUTE RTEMS_PACKED
-
-#if defined(RTEMS_DEBUG) && !defined(RTEMS_SCHEDSIM)
- #define _Assert_Unreachable() _Assert( 0 )
-#else
- #define _Assert_Unreachable() do { } while ( 0 )
-#endif
-
-/**
- * @brief Tells the compiler that this program point is unreachable.
- */
-#if defined(__GNUC__) && !defined(RTEMS_SCHEDSIM)
- #define RTEMS_UNREACHABLE() \
- do { \
- __builtin_unreachable(); \
- _Assert_Unreachable(); \
- } while ( 0 )
-#else
- #define RTEMS_UNREACHABLE() _Assert_Unreachable()
-#endif
-
-/**
- * @brief Tells the compiler that this function expects printf()-like
- * arguments.
- */
-#if defined(__GNUC__)
- #define RTEMS_PRINTFLIKE( _format_pos, _ap_pos ) \
- __attribute__((__format__(__printf__, _format_pos, _ap_pos)))
-#else
- #define RTEMS_PRINTFLIKE( _format_pos, _ap_pos )
-#endif
-
-/**
- * @brief Obfuscates the variable so that the compiler cannot perform
- * optimizations based on the variable value.
- *
- * The variable must be simple enough to fit into a register.
- */
-#if defined(__GNUC__)
- #define RTEMS_OBFUSCATE_VARIABLE( _var ) __asm__("" : "+r" (_var))
-#else
- #define RTEMS_OBFUSCATE_VARIABLE( _var ) (void) (_var)
-#endif
-
-#if __cplusplus >= 201103L
- #define RTEMS_STATIC_ASSERT(cond, msg) \
- static_assert(cond, # msg)
-#elif __STDC_VERSION__ >= 201112L
- #define RTEMS_STATIC_ASSERT(cond, msg) \
- _Static_assert(cond, # msg)
-#else
- #define RTEMS_STATIC_ASSERT(cond, msg) \
- typedef int rtems_static_assert_ ## msg [(cond) ? 1 : -1]
-#endif
-
-#define RTEMS_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
-
-/*
- * Zero-length arrays are valid in C99 as flexible array members. C++11
- * doesn't allow flexible array members. Use the GNU extension which is also
- * supported by other compilers.
- */
-#define RTEMS_ZERO_LENGTH_ARRAY 0
-
-/**
- * @brief Returns a pointer to the container of a specified member pointer.
- *
- * @param[in] _m The pointer to a member of the container.
- * @param[in] _type The type of the container.
- * @param[in] _member_name The designator name of the container member.
- */
-#define RTEMS_CONTAINER_OF( _m, _type, _member_name ) \
- ( (_type *) ( (uintptr_t) ( _m ) - offsetof( _type, _member_name ) ) )
-
-#ifdef __cplusplus
-#define RTEMS_DEQUALIFY_DEPTHX( _ptr_level, _type, _var ) \
- (const_cast<_type>( _var ))
-#else /* Standard C code */
-
-/* The reference type idea based on libHX by Jan Engelhardt */
-#define RTEMS_TYPEOF_REFX(_ptr_level, _ptr_type) \
- typeof(_ptr_level(union { int z; typeof(_ptr_type) x; }){0}.x)
-
-#if defined(__GNUC__) && !defined(ASM)
-#if ((__GNUC__ * 1000 + __GNUC_MINOR__) >= 4004)
-extern void* RTEMS_DEQUALIFY_types_not_compatible(void)
- __attribute__((error ("RTEMS_DEQUALIFY types differ not only by volatile and const")));
-#else
-extern void RTEMS_DEQUALIFY_types_not_compatible(void);
-#endif
-#define RTEMS_DEQUALIFY_DEPTHX( _ptr_level, _type, _var ) ( \
- __builtin_choose_expr( __builtin_types_compatible_p ( \
- RTEMS_TYPEOF_REFX( _ptr_level, _var ), \
- RTEMS_TYPEOF_REFX( _ptr_level, _type ) \
- ) || __builtin_types_compatible_p ( _type, void * ), \
- (_type)(_var), \
- RTEMS_DEQUALIFY_types_not_compatible() \
- ) \
-)
-#endif /*__GNUC__*/
-#endif /*__cplusplus*/
-
-#ifndef RTEMS_DECONST
-#ifdef RTEMS_DEQUALIFY_DEPTHX
-#define RTEMS_DECONST( _type, _var ) \
- RTEMS_DEQUALIFY_DEPTHX( *, _type, _var )
-#else /*RTEMS_DEQUALIFY_DEPTHX*/
-/**
- * @brief Removes the const qualifier from a type of a variable.
- *
- * @param[in] _type The target type for the variable.
- * @param[in] _var The variable.
- */
-#define RTEMS_DECONST( _type, _var ) \
- ((_type)(uintptr_t)(const void *) ( _var ))
-
-#endif /*RTEMS_DEQUALIFY_DEPTHX*/
-#endif /*RTEMS_DECONST*/
-
-#ifndef RTEMS_DEVOLATILE
-#ifdef RTEMS_DEQUALIFY_DEPTHX
-#define RTEMS_DEVOLATILE( _type, _var ) \
- RTEMS_DEQUALIFY_DEPTHX( *, _type, _var )
-#else /*RTEMS_DEQUALIFY_DEPTHX*/
-/**
- * @brief Removes the volatile qualifier from a type of a variable.
- *
- * @param[in] _type The target type for the variable.
- * @param[in] _var The variable.
- */
-#define RTEMS_DEVOLATILE( _type, _var ) \
- ((_type)(uintptr_t)(volatile void *) ( _var ))
-
-#endif /*RTEMS_DEQUALIFY_DEPTHX*/
-#endif /*RTEMS_DEVOLATILE*/
-
-#ifndef RTEMS_DEQUALIFY
-#ifdef RTEMS_DEQUALIFY_DEPTHX
-#define RTEMS_DEQUALIFY( _type, _var ) \
- RTEMS_DEQUALIFY_DEPTHX( *, _type, _var )
-#else /*RTEMS_DEQUALIFY_DEPTHX*/
-/**
- * @brief Removes the all qualifiers from a type of a variable.
- *
- * @param[in] _type The target type for the variable.
- * @param[in] _var The variable.
- */
-#define RTEMS_DEQUALIFY( _type, _var ) \
- ((_type)(uintptr_t)(const volatile void *) ( _var ))
-
-#endif /*RTEMS_DEQUALIFY_DEPTHX*/
-#endif /*RTEMS_DEQUALIFY*/
-
-/**
- * @brief Evaluates to true if the members of two types have the same type.
- *
- * @param[in] _t_lhs Left hand side type.
- * @param[in] _m_lhs Left hand side member.
- * @param[in] _t_rhs Right hand side type.
- * @param[in] _m_rhs Right hand side member.
- */
-#ifdef __GNUC__
- #define RTEMS_HAVE_MEMBER_SAME_TYPE( _t_lhs, _m_lhs, _t_rhs, _m_rhs ) \
- __builtin_types_compatible_p( \
- __typeof( ( (_t_lhs *) 0 )->_m_lhs ), \
- __typeof( ( (_t_rhs *) 0 )->_m_rhs ) \
- )
-#else
- #define RTEMS_HAVE_MEMBER_SAME_TYPE( _t_lhs, _m_lhs, _t_rhs, _m_rhs ) \
- true
-#endif
-
-/**
- * @brief Concatenates _x and _y without expanding.
- */
-#define RTEMS_CONCAT( _x, _y ) _x##_y
-
-/**
- * @brief Concatenates expansion of _x and expansion of _y.
- */
-#define RTEMS_XCONCAT( _x, _y ) RTEMS_CONCAT( _x, _y )
-
-/**
- * @brief Stringifies _x without expanding.
- */
-#define RTEMS_STRING( _x ) #_x
-
-/**
- * @brief Stringifies expansion of _x.
- */
-#define RTEMS_XSTRING( _x ) RTEMS_STRING( _x )
-
-#ifndef ASM
- #ifdef RTEMS_DEPRECATED_TYPES
- typedef bool boolean;
- typedef float single_precision;
- typedef double double_precision;
- #endif
-
- /**
- * XXX: Eventually proc_ptr needs to disappear!!!
- */
- typedef void * proc_ptr;
-#endif
-
-/**@}*/
-
-#endif /* _RTEMS_BASEDEFS_H */