diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-04-05 10:30:43 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-04-08 19:22:32 +0200 |
commit | 3a882e5bc36aef25f67923190162a45ed36459b9 (patch) | |
tree | cfab018ee3fe3493461a54170540a0f39d8ff2b9 | |
parent | Tests for inttype.h methods (diff) | |
download | rtems-3a882e5bc36aef25f67923190162a45ed36459b9.tar.bz2 |
score: Add and use RTEMS_SYMBOL_NAME()
Update #3799.
-rw-r--r-- | cpukit/include/rtems/score/basedefs.h | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/cpukit/include/rtems/score/basedefs.h b/cpukit/include/rtems/score/basedefs.h index 4589bea4aa..ef8f560af2 100644 --- a/cpukit/include/rtems/score/basedefs.h +++ b/cpukit/include/rtems/score/basedefs.h @@ -322,21 +322,38 @@ extern char _name[] /** - * @brief Defines a global symbol with the specified name and value. + * @brief Constructs a symbol name. * - * This macro must be placed at file scope. + * @param _name The user defined name of the symbol. The name shall be a valid + * designator. On the name a macro expansion is performed. + */ +#if defined(__USER_LABEL_PREFIX__) + #define RTEMS_SYMBOL_NAME( _name ) \ + RTEMS_XCONCAT( __USER_LABEL_PREFIX__, _name ) +#else + /* Helper to perform the macro expansion */ + #define _RTEMS_SYMBOL_NAME( _name ) _name + + #define RTEMS_SYMBOL_NAME( _name ) _RTEMS_SYMBOL_NAME( _name ) +#endif + +/** + * @brief Defines a global symbol with the specified name and value. * - * The name must be a valid designator. + * This macro shall be placed at file scope. * - * On the value parameters macro expansion is performed and afterwards it is - * stringified. It must expand to an integer literal understood by the - * assembler. + * @param _name The user defined name of the symbol. The name shall be a valid + * designator. On the name a macro expansion is performed and afterwards it + * is stringified. + * @param _value The value of the symbol. On the value a macro expansion is + * performed and afterwards it is stringified. It shall expand to an integer + * expression understood by the assembler. */ #if defined(__GNUC__) #define RTEMS_DEFINE_GLOBAL_SYMBOL( _name, _value ) \ __asm__( \ - "\t.globl " RTEMS_XSTRING( __USER_LABEL_PREFIX__ ) #_name \ - "\n\t.set " RTEMS_XSTRING( __USER_LABEL_PREFIX__ ) #_name \ + "\t.globl " RTEMS_XSTRING( RTEMS_SYMBOL_NAME( _name ) ) \ + "\n\t.set " RTEMS_XSTRING( RTEMS_SYMBOL_NAME( _name ) ) \ ", " RTEMS_STRING( _value ) "\n" \ ) #else @@ -355,8 +372,8 @@ __asm__( \ ".pushsection \"" _section "\"\n" \ "\t.globl " \ - RTEMS_XSTRING( RTEMS_XCONCAT( __USER_LABEL_PREFIX__, _name ) ) "\n" \ - RTEMS_XSTRING( RTEMS_XCONCAT( __USER_LABEL_PREFIX__, _name ) ) ":\n" \ + RTEMS_XSTRING( RTEMS_SYMBOL_NAME( _name ) ) "\n" \ + RTEMS_XSTRING( RTEMS_SYMBOL_NAME( _name ) ) ":\n" \ "\t.popsection\n" \ ) #else |