@ -396,6 +396,23 @@ do { \
# define GEN_ABS_SYM_END }
# define GEN_ABS_SYM_END }
/*
* Note that GEN_ABSOLUTE_SYM ( ) , depending on the architecture
* and toolchain , may restrict the range of values permitted
* for assignment to the named symbol .
*
* For example , on x86 , " value " is interpreated as signed
* 32 - bit integer . Passing in an unsigned 32 - bit integer
* with MSB set would result in a negative integer .
* Moreover , GCC would error out if an integer larger
* than 2 ^ 32 - 1 is passed as " value " .
*/
/*
* GEN_ABSOLUTE_SYM_KCONFIG ( ) is outputted by the build system
* to generate named symbol / value pairs for kconfigs .
*/
# if defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
# if defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
/*
/*
@ -411,6 +428,11 @@ do { \
" ,%B0 " \
" ,%B0 " \
" \n \t .type \t " # name " ,%%object " : : " n " ( ~ ( value ) ) )
" \n \t .type \t " # name " ,%%object " : : " n " ( ~ ( value ) ) )
# define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
__asm__ ( " .globl \t " # name \
" \n \t .equ \t " # name " , " # value \
" \n \t .type \t " # name " ,%object " )
# elif defined(CONFIG_X86)
# elif defined(CONFIG_X86)
# define GEN_ABSOLUTE_SYM(name, value) \
# define GEN_ABSOLUTE_SYM(name, value) \
@ -418,6 +440,11 @@ do { \
" ,%c0 " \
" ,%c0 " \
" \n \t .type \t " # name " ,@object " : : " n " ( value ) )
" \n \t .type \t " # name " ,@object " : : " n " ( value ) )
# define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
__asm__ ( " .globl \t " # name \
" \n \t .equ \t " # name " , " # value \
" \n \t .type \t " # name " ,@object " )
# elif defined(CONFIG_ARC) || defined(CONFIG_ARM64)
# elif defined(CONFIG_ARC) || defined(CONFIG_ARM64)
# define GEN_ABSOLUTE_SYM(name, value) \
# define GEN_ABSOLUTE_SYM(name, value) \
@ -425,6 +452,11 @@ do { \
" ,%c0 " \
" ,%c0 " \
" \n \t .type \t " # name " ,@object " : : " n " ( value ) )
" \n \t .type \t " # name " ,@object " : : " n " ( value ) )
# define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
__asm__ ( " .globl \t " # name \
" \n \t .equ \t " # name " , " # value \
" \n \t .type \t " # name " ,@object " )
# elif defined(CONFIG_NIOS2) || defined(CONFIG_RISCV) || defined(CONFIG_XTENSA)
# elif defined(CONFIG_NIOS2) || defined(CONFIG_RISCV) || defined(CONFIG_XTENSA)
/* No special prefixes necessary for constants in this arch AFAICT */
/* No special prefixes necessary for constants in this arch AFAICT */
@ -433,18 +465,33 @@ do { \
" ,%0 " \
" ,%0 " \
" \n \t .type \t " # name " ,%%object " : : " n " ( value ) )
" \n \t .type \t " # name " ,%%object " : : " n " ( value ) )
# define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
__asm__ ( " .globl \t " # name \
" \n \t .equ \t " # name " , " # value \
" \n \t .type \t " # name " ,%object " )
# elif defined(CONFIG_ARCH_POSIX)
# elif defined(CONFIG_ARCH_POSIX)
# define GEN_ABSOLUTE_SYM(name, value) \
# define GEN_ABSOLUTE_SYM(name, value) \
__asm__ ( " .globl \t " # name " \n \t .equ \t " # name \
__asm__ ( " .globl \t " # name " \n \t .equ \t " # name \
" ,%c0 " \
" ,%c0 " \
" \n \t .type \t " # name " ,@object " : : " n " ( value ) )
" \n \t .type \t " # name " ,@object " : : " n " ( value ) )
# define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
__asm__ ( " .globl \t " # name \
" \n \t .equ \t " # name " , " # value \
" \n \t .type \t " # name " ,@object " )
# elif defined(CONFIG_SPARC)
# elif defined(CONFIG_SPARC)
# define GEN_ABSOLUTE_SYM(name, value) \
# define GEN_ABSOLUTE_SYM(name, value) \
__asm__ ( " .global \t " # name " \n \t .equ \t " # name \
__asm__ ( " .global \t " # name " \n \t .equ \t " # name \
" ,%0 " \
" ,%0 " \
" \n \t .type \t " # name " ,#object " : : " n " ( value ) )
" \n \t .type \t " # name " ,#object " : : " n " ( value ) )
# define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
__asm__ ( " .globl \t " # name \
" \n \t .equ \t " # name " , " # value \
" \n \t .type \t " # name " ,#object " )
# else
# else
# error processor architecture not supported
# error processor architecture not supported
# endif
# endif