Skip to content

Commit 2a0b9e9

Browse files
committed
toolchain/gcc: Add __volatile__ in GEN_ABSOLUTE_SYM macros
This should prevent GCC from eliding these otherwise-unused asm statements. Signed-off-by: Keith Packard <keithp@keithp.com>
1 parent 3b507e4 commit 2a0b9e9

File tree

1 file changed

+10
-10
lines changed
  • include/zephyr/toolchain

1 file changed

+10
-10
lines changed

‎include/zephyr/toolchain/gcc.h‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -552,12 +552,12 @@ do { \
552552
*/
553553

554554
#define GEN_ABSOLUTE_SYM(name, value) \
555-
__asm__(".globl\t" #name "\n\t.equ\t" #name \
555+
__asm__ __volatile__(".globl\t" #name "\n\t.equ\t" #name \
556556
",%B0" \
557557
"\n\t.type\t" #name ",%%object" : : "n"(~(value)))
558558

559559
#define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
560-
__asm__(".globl\t" #name \
560+
__asm__ __volatile__(".globl\t" #name \
561561
"\n\t.equ\t" #name "," #value \
562562
"\n\t.type\t" #name ",%object")
563563

@@ -566,47 +566,47 @@ do { \
566566
|| defined(CONFIG_X86)
567567

568568
#define GEN_ABSOLUTE_SYM(name, value) \
569-
__asm__(".globl\t" #name "\n\t.equ\t" #name \
569+
__asm__ __volatile__(".globl\t" #name "\n\t.equ\t" #name \
570570
",%c0" \
571571
"\n\t.type\t" #name ",@object" : : "n"(value))
572572

573573
#define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
574-
__asm__(".globl\t" #name \
574+
__asm__ __volatile__(".globl\t" #name \
575575
"\n\t.equ\t" #name "," #value \
576576
"\n\t.type\t" #name ",@object")
577577

578578
#elif defined(CONFIG_RISCV) || defined(CONFIG_XTENSA) || defined(CONFIG_MIPS)
579579

580580
/* No special prefixes necessary for constants in this arch AFAICT */
581581
#define GEN_ABSOLUTE_SYM(name, value) \
582-
__asm__(".globl\t" #name "\n\t.equ\t" #name \
582+
__asm__ __volatile__(".globl\t" #name "\n\t.equ\t" #name \
583583
",%0" \
584584
"\n\t.type\t" #name ",%%object" : : "n"(value))
585585

586586
#define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
587-
__asm__(".globl\t" #name \
587+
__asm__ __volatile__(".globl\t" #name \
588588
"\n\t.equ\t" #name "," #value \
589589
"\n\t.type\t" #name ",%object")
590590

591591
#elif defined(CONFIG_SPARC)
592592
#define GEN_ABSOLUTE_SYM(name, value) \
593-
__asm__(".global\t" #name "\n\t.equ\t" #name \
593+
__asm__ __volatile__(".global\t" #name "\n\t.equ\t" #name \
594594
",%0" \
595595
"\n\t.type\t" #name ",#object" : : "n"(value))
596596

597597
#define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
598-
__asm__(".globl\t" #name \
598+
__asm__ __volatile__(".globl\t" #name \
599599
"\n\t.equ\t" #name "," #value \
600600
"\n\t.type\t" #name ",#object")
601601

602602
#elif defined(CONFIG_RX)
603603
#define GEN_ABSOLUTE_SYM(name, value) \
604-
__asm__(".global\t" #name "\n\t.equ\t" #name \
604+
__asm__ __volatile__(".global\t" #name "\n\t.equ\t" #name \
605605
",%c0" \
606606
"\n\t.type\t" #name ",%%object" : : "n"(value))
607607

608608
#define GEN_ABSOLUTE_SYM_KCONFIG(name, value) \
609-
__asm__(".global\t" #name \
609+
__asm__ __volatile__(".global\t" #name \
610610
"\n\t.equ\t" #name "," #value \
611611
"\n\t.type\t" #name ",#object")
612612

0 commit comments

Comments
 (0)