REG_* macros are shared between x86_32 and x32, since in almost all cases GRPs are used for pointers or offsets. x86_reg equivalent to intptr_t, 64 bit only for x64
new macro REG_PTR_MOD - similar to OPSIZE, this one is used for operands, forces operand size to 64 bit on x64, 32 bit otherwise new macros REG8, REG_8 - refer to r8 on x64 and r8d on x32 new typedef x86_native_reg - 64 bit on all 64 bit arches, 32 bit otherwise replaces x86_reg where appropriate new macros REG_r[abcdDS], REG_rBP, REG_rSP - refer to 64 bit GPRs on all 64 bit arches, 32 bit otherwise Signed-off-by: Matthias Räncker <[email protected]> --- libavutil/x86/asm.h | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/libavutil/x86/asm.h b/libavutil/x86/asm.h index a43ab3c..be058da 100644 --- a/libavutil/x86/asm.h +++ b/libavutil/x86/asm.h @@ -24,14 +24,16 @@ #include <stdint.h> #include "config.h" -#if ARCH_X86_64 +#if ARCH_X86_64_X64 # define OPSIZE "q" +# define REG_PTR_MOD "q" # define REG_a "rax" # define REG_b "rbx" # define REG_c "rcx" # define REG_d "rdx" # define REG_D "rdi" # define REG_S "rsi" +# define REG_8 "r8" # define PTR_SIZE "8" typedef int64_t x86_reg; @@ -43,16 +45,19 @@ typedef int64_t x86_reg; # define REGc rcx # define REGd rdx # define REGSP rsp +# define REG8 r8 -#elif ARCH_X86_32 +#elif ARCH_X86_64_X32 || ARCH_X86_32 # define OPSIZE "l" +# define REG_PTR_MOD "k" # define REG_a "eax" # define REG_b "ebx" # define REG_c "ecx" # define REG_d "edx" # define REG_D "edi" # define REG_S "esi" +# define REG_8 "r8d" # define PTR_SIZE "4" typedef int32_t x86_reg; @@ -64,10 +69,31 @@ typedef int32_t x86_reg; # define REGc ecx # define REGd edx # define REGSP esp +# define REG8 r8d #else typedef int x86_reg; #endif +#if ARCH_X86_64 +# define REG_ra "rax" +# define REG_rb "rbx" +# define REG_rc "rcx" +# define REG_rd "rdx" +# define REG_rD "rdi" +# define REG_rS "rsi" +# define REG_rBP "rbp" +typedef int64_t x86_native_reg; +#elif ARCH_X86_32 +# define REG_ra "eax" +# define REG_rb "ebx" +# define REG_rc "ecx" +# define REG_rd "edx" +# define REG_rD "edi" +# define REG_rS "esi" +# define REG_rBP "ebp" +typedef int32_t x86_native_reg; +#endif + #define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE)) #define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE)) -- 1.8.1.1 _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
