00001 #ifndef _BEECRYPT_GAS_H 00002 #define _BEECRYPT_GAS_H 00003 00004 #include "config.h" 00005 00006 #ifndef SYMBOL_NAME 00007 # if LEADING_UNDERSCORE 00008 # ifdef __STDC__ 00009 # define SYMBOL_NAME(name) _##name 00010 # else 00011 # define SYMBOL_NAME(name) _name 00012 # endif 00013 # else 00014 # define SYMBOL_NAME(name) name 00015 # endif 00016 #endif 00017 00018 #if defined(OPTIMIZE_ALPHA) 00019 # define ALIGNMENT 5 00020 #elif defined(OPTIMIZE_I386) || defined(OPTIMIZE_I486) || defined(OPTIMIZE_I586) || defined(OPTIMIZE_I686) 00021 # define ALIGNMENT 8 00022 #elif defined(OPTIMIZE_IA64) 00023 # define ALIGNMENT 32 00024 #elif defined(OPTIMIZE_ARM) 00025 # define ALIGNMENT 4 00026 #elif defined(OPTIMIZE_POWERPC) 00027 # define ALIGNMENT 8 00028 #elif defined(OPTIMIZE_SPARCV8PLUS) || defined(OPTIMIZE_SPARCV9) 00029 # define ALIGNMENT 8 00030 #else 00031 # define ALIGNMENT 8 00032 #endif 00033 00034 #define LABEL(name) SYMBOL_NAME(name): 00035 #if DARWIN 00036 # define LOCAL(name) L##name 00037 #else 00038 # if __STDC__ 00039 # define LOCAL(name) .L##name 00040 # else 00041 # define LOCAL(name) .Lname 00042 # endif 00043 #endif 00044 00045 #if CYGWIN 00046 # define C_FUNCTION_BEGIN(name) \ 00047 .align ALIGNMENT; \ 00048 .globl SYMBOL_NAME(name); \ 00049 .def SYMBOL_NAME(name); \ 00050 .scl 2; \ 00051 .type 32; \ 00052 .endef 00053 # define C_FUNCTION_END(name, label) 00054 #else 00055 # if SOLARIS 00056 # define C_FUNCTION_TYPE #function 00057 # elif defined(OPTIMIZE_ARM) 00058 # define C_FUNCTION_TYPE %function 00059 # else 00060 # define C_FUNCTION_TYPE @function 00061 # endif 00062 # if DARWIN 00063 # define C_FUNCTION_BEGIN(name) \ 00064 .globl SYMBOL_NAME(name) 00065 # define C_FUNCTION_END(name, label) 00066 # elif defined(OPTIMIZE_IA64) 00067 # define C_FUNCTION_BEGIN(name) \ 00068 .align ALIGNMENT; \ 00069 .global name#; \ 00070 .proc name# 00071 # define C_FUNCTION_END(name) \ 00072 .endp name# 00073 # else 00074 # define C_FUNCTION_BEGIN(name) \ 00075 .align ALIGNMENT; \ 00076 .global SYMBOL_NAME(name) 00077 # define C_FUNCTION_END(name, label) \ 00078 label: .size SYMBOL_NAME(name), label - SYMBOL_NAME(name); 00079 # endif 00080 #endif 00081 00082 #if defined(OPTIMIZE_POWERPC) 00083 # if DARWIN 00084 # define LOAD_ADDRESS(reg,var) lis reg,ha16(var); la reg,lo16(var)(reg) 00085 # else 00086 # define LOAD_ADDRESS(reg,var) lis reg,var@ha; la reg,var@l(reg) 00087 # define r0 %r0 00088 # define r1 %r1 00089 # define r2 %r2 00090 # define r3 %r3 00091 # define r4 %r4 00092 # define r5 %r5 00093 # define r6 %r6 00094 # define r7 %r7 00095 # define r8 %r8 00096 # define r9 %r9 00097 # define r10 %r10 00098 # define r11 %r11 00099 # define r12 %r12 00100 # define r13 %r13 00101 # define r14 %r14 00102 # define r15 %r15 00103 # define r16 %r16 00104 # define r17 %r17 00105 # define r18 %r18 00106 # define r19 %r19 00107 # define r20 %r20 00108 # define r21 %r21 00109 # define r22 %r22 00110 # define r23 %r23 00111 # define r24 %r24 00112 # define r25 %r25 00113 # define r26 %r26 00114 # define r27 %r27 00115 # define r28 %r28 00116 # define r29 %r29 00117 # define r30 %r30 00118 # define r31 %r31 00119 # endif 00120 #endif 00121 00122 #endif