00001
00038 #ifndef ASSEMBLER_GAS_H_INCLUDED
00039 #define ASSEMBLER_GAS_H_INCLUDED
00040
00041 #ifndef __DOXYGEN__
00042
00043
00044 .macro ld_addr, reg, sym
00045 lda.w \reg, \sym
00046 .endm
00047
00048
00049
00050
00051 .macro gas_begin_func name, is_public
00052 .if \is_public
00053 .global \name
00054 .endif
00055 .section .text.\name, "ax", @progbits
00056 .type \name, @function
00057 \name :
00058 .endm
00059
00060
00061 .macro gas_weak_function_alias name, strong_name
00062 .global \name
00063 .weak \name
00064 .type \name, @function
00065 .set \name, \strong_name
00066 .endm
00067
00068
00069 .macro gas_weak_function name
00070 .weak \name
00071 gas_begin_func \name 1
00072 .endm
00073
00074 #define REPEAT(count) .rept count
00075 #define END_REPEAT() .endr
00076 #define FILL_BYTES(count) .fill count
00077 #define SET_LOC(offset) .org offset
00078 #define L(name) .L##name
00079 #define EXTERN_SYMBOL(name)
00080
00081 #define TEXT_SECTION(name) \
00082 .section name, "ax", @progbits
00083 #define RODATA_SECTION(name) \
00084 .section name, "a", @progbits
00085 #define DATA_SECTION(name) \
00086 .section name, "aw", @progbits
00087 #define BSS_SECTION(name) \
00088 .section name, "aw", @nobits
00089
00090 #define FUNCTION(name) gas_begin_func name 0
00091 #define PUBLIC_FUNCTION(name) gas_begin_func name 1
00092 #define WEAK_FUNCTION(name) gas_weak_function name
00093 #define WEAK_FUNCTION_ALIAS(name, strong_name) \
00094 gas_weak_function_alias name strong_name
00095 #define END_FUNC(name) \
00096 .size name, . - name
00097
00098 #define END_FILE()
00099
00100 #endif
00101
00102 #endif