#
CFLAGS += -include include/compiler.h
+# The section type character (e.g. "@" in "@progbits") varies by
+# architecture.
+#
+CFLAGS += -DASM_TCHAR='$(ASM_TCHAR)' -DASM_TCHAR_OPS='$(ASM_TCHAR_OPS)'
+
# CFLAGS for specific object types
#
CFLAGS_c +=
# Device ID tables (using IDs from ROM definition file)
#
define obj_pci_id_asm
- .section ".pci_devlist.$(1)", "a", @progbits
+ .section ".pci_devlist.$(1)", "a", $(ASM_TCHAR)progbits
.globl pci_devlist_$(1)
pci_devlist_$(1):
.short ( 0x$(1) & 0xffff )
+# Assembler section type character
+#
+ASM_TCHAR := @
+ASM_TCHAR_OPS := @
+
# Include common x86 headers
#
INCDIRS += arch/x86/include
#define CERT( _index, _path ) \
extern char stored_cert_ ## _index ## _data[]; \
extern char stored_cert_ ## _index ## _len[]; \
- __asm__ ( ".section \".rodata\", \"a\", @progbits\n\t" \
+ __asm__ ( ".section \".rodata\", \"a\", " PROGBITS "\n\t" \
"\nstored_cert_" #_index "_data:\n\t" \
".incbin \"" _path "\"\n\t" \
"\nstored_cert_" #_index "_end:\n\t" \
/* Raw private key data */
extern char private_key_data[];
extern char private_key_len[];
-__asm__ ( ".section \".rodata\", \"a\", @progbits\n\t"
+__asm__ ( ".section \".rodata\", \"a\", " PROGBITS "\n\t"
"\nprivate_key_data:\n\t"
#ifdef PRIVATE_KEY
".incbin \"" PRIVATE_KEY "\"\n\t"
#define EMBED( _index, _path, _name ) \
extern char embedded_image_ ## _index ## _data[]; \
extern char embedded_image_ ## _index ## _len[]; \
- __asm__ ( ".section \".rodata\", \"a\", @progbits\n\t" \
+ __asm__ ( ".section \".rodata\", \"a\", " PROGBITS "\n\t" \
"\nembedded_image_" #_index "_data:\n\t" \
".incbin \"" _path "\"\n\t" \
"\nembedded_image_" #_index "_end:\n\t" \
/** Stringify expanded argument */
#define _S2( x ) _S1 ( x )
+/* Assembler section types */
+#ifdef ASSEMBLY
+#define PROGBITS _C2 ( ASM_TCHAR, progbits )
+#define NOBITS _C2 ( ASM_TCHAR, nobits )
+#else
+#define PROGBITS_OPS _S2 ( ASM_TCHAR_OPS ) "progbits"
+#define PROGBITS _S2 ( ASM_TCHAR ) "progbits"
+#define NOBITS_OPS _S2 ( ASM_TCHAR_OPS ) "nobits"
+#define NOBITS _S2 ( ASM_TCHAR ) "nobits"
+#endif
+
/**
* @defgroup symmacros Macros to provide or require explicit symbols
* @{
*/
#ifdef ASSEMBLY
#define PROVIDE_SYMBOL( symbol ) \
- .section ".provided", "a", @nobits ; \
+ .section ".provided", "a", NOBITS ; \
.hidden symbol ; \
.globl symbol ; \
symbol: ; \
*/
#ifdef ASSEMBLY
#define PROVIDE_REQUIRING_SYMBOL() \
- .section ".tbl.requiring_symbols", "a", @progbits ; \
+ .section ".tbl.requiring_symbols", "a", PROGBITS ; \
__requiring_symbol__: .byte 0 ; \
.size __requiring_symbol__, . - __requiring_symbol__ ; \
.previous
#else
#define PROVIDE_REQUIRING_SYMBOL() \
__asm__ ( ".section \".tbl.requiring_symbols\", " \
- " \"a\", @progbits\n" \
+ " \"a\", " PROGBITS "\n" \
"__requiring_symbol__:\t.byte 0\n" \
".size __requiring_symbol__, " \
" . - __requiring_symbol__\n" \
* @ret error Error
*/
#define __einfo_error( einfo ) ( { \
- __asm__ ( ".section \".einfo\", \"\", @progbits\n\t" \
+ __asm__ ( ".section \".einfo\", \"\", " PROGBITS_OPS "\n\t" \
".align 8\n\t" \
"\n1:\n\t" \
".long ( 4f - 1b )\n\t" \