00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef AVUTIL_X86_ASM_H
00022 #define AVUTIL_X86_ASM_H
00023
00024 #include <stdint.h>
00025 #include "config.h"
00026
00027 #if ARCH_X86_64
00028 # define OPSIZE "q"
00029 # define REG_a "rax"
00030 # define REG_b "rbx"
00031 # define REG_c "rcx"
00032 # define REG_d "rdx"
00033 # define REG_D "rdi"
00034 # define REG_S "rsi"
00035 # define PTR_SIZE "8"
00036 typedef int64_t x86_reg;
00037
00038 # define REG_SP "rsp"
00039 # define REG_BP "rbp"
00040 # define REGBP rbp
00041 # define REGa rax
00042 # define REGb rbx
00043 # define REGc rcx
00044 # define REGd rdx
00045 # define REGSP rsp
00046
00047 #elif ARCH_X86_32
00048
00049 # define OPSIZE "l"
00050 # define REG_a "eax"
00051 # define REG_b "ebx"
00052 # define REG_c "ecx"
00053 # define REG_d "edx"
00054 # define REG_D "edi"
00055 # define REG_S "esi"
00056 # define PTR_SIZE "4"
00057 typedef int32_t x86_reg;
00058
00059 # define REG_SP "esp"
00060 # define REG_BP "ebp"
00061 # define REGBP ebp
00062 # define REGa eax
00063 # define REGb ebx
00064 # define REGc ecx
00065 # define REGd edx
00066 # define REGSP esp
00067 #else
00068 typedef int x86_reg;
00069 #endif
00070
00071 #define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE))
00072 #define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE))
00073
00074 #if ARCH_X86_64 && defined(PIC)
00075 # define BROKEN_RELOCATIONS 1
00076 #endif
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 #if HAVE_XMM_CLOBBERS
00091 # define XMM_CLOBBERS(...) __VA_ARGS__
00092 # define XMM_CLOBBERS_ONLY(...) : __VA_ARGS__
00093 #else
00094 # define XMM_CLOBBERS(...)
00095 # define XMM_CLOBBERS_ONLY(...)
00096 #endif
00097
00098
00099 #define LABEL_MANGLE(a) EXTERN_PREFIX #a
00100
00101
00102 #if ARCH_X86_64 && defined(PIC)
00103 # define LOCAL_MANGLE(a) #a "(%%rip)"
00104 #else
00105 # define LOCAL_MANGLE(a) #a
00106 #endif
00107
00108 #define MANGLE(a) EXTERN_PREFIX LOCAL_MANGLE(a)
00109
00110 #endif