|
|
|
@ -38,6 +38,10 @@ |
|
|
|
|
%define private_prefix x264 |
|
|
|
|
%endif |
|
|
|
|
|
|
|
|
|
%ifndef public_prefix |
|
|
|
|
%define public_prefix private_prefix |
|
|
|
|
%endif |
|
|
|
|
|
|
|
|
|
%define WIN64 0 |
|
|
|
|
%define UNIX64 0 |
|
|
|
|
%if ARCH_X86_64 |
|
|
|
@ -624,33 +628,43 @@ DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14 |
|
|
|
|
; Applies any symbol mangling needed for C linkage, and sets up a define such that |
|
|
|
|
; subsequent uses of the function name automatically refer to the mangled version. |
|
|
|
|
; Appends cpuflags to the function name if cpuflags has been specified. |
|
|
|
|
; The "" empty default parameter is a workaround for nasm, which fails if SUFFIX |
|
|
|
|
; is empty and we call cglobal_internal with just %1 %+ SUFFIX (without %2). |
|
|
|
|
%macro cglobal 1-2+ "" ; name, [PROLOGUE args] |
|
|
|
|
; the "" is a workaround for nasm, which fails if SUFFIX is empty |
|
|
|
|
; and we call cglobal_internal with just %1 %+ SUFFIX (without %2) |
|
|
|
|
cglobal_internal %1 %+ SUFFIX, %2 |
|
|
|
|
cglobal_internal 1, %1 %+ SUFFIX, %2 |
|
|
|
|
%endmacro |
|
|
|
|
%macro cvisible 1-2+ "" ; name, [PROLOGUE args] |
|
|
|
|
cglobal_internal 0, %1 %+ SUFFIX, %2 |
|
|
|
|
%endmacro |
|
|
|
|
%macro cglobal_internal 1-2+ |
|
|
|
|
%ifndef cglobaled_%1 |
|
|
|
|
%xdefine %1 mangle(private_prefix %+ _ %+ %1) |
|
|
|
|
%xdefine %1.skip_prologue %1 %+ .skip_prologue |
|
|
|
|
CAT_XDEFINE cglobaled_, %1, 1 |
|
|
|
|
%macro cglobal_internal 2-3+ |
|
|
|
|
%if %1 |
|
|
|
|
%xdefine %%FUNCTION_PREFIX private_prefix |
|
|
|
|
%xdefine %%VISIBILITY hidden |
|
|
|
|
%else |
|
|
|
|
%xdefine %%FUNCTION_PREFIX public_prefix |
|
|
|
|
%xdefine %%VISIBILITY |
|
|
|
|
%endif |
|
|
|
|
%ifndef cglobaled_%2 |
|
|
|
|
%xdefine %2 mangle(%%FUNCTION_PREFIX %+ _ %+ %2) |
|
|
|
|
%xdefine %2.skip_prologue %2 %+ .skip_prologue |
|
|
|
|
CAT_XDEFINE cglobaled_, %2, 1 |
|
|
|
|
%endif |
|
|
|
|
%xdefine current_function %1 |
|
|
|
|
%xdefine current_function %2 |
|
|
|
|
%ifidn __OUTPUT_FORMAT__,elf |
|
|
|
|
global %1:function hidden |
|
|
|
|
global %2:function %%VISIBILITY |
|
|
|
|
%else |
|
|
|
|
global %1 |
|
|
|
|
global %2 |
|
|
|
|
%endif |
|
|
|
|
align function_align |
|
|
|
|
%1: |
|
|
|
|
%2: |
|
|
|
|
RESET_MM_PERMUTATION ; not really needed, but makes disassembly somewhat nicer |
|
|
|
|
%xdefine rstk rsp |
|
|
|
|
%assign stack_offset 0 |
|
|
|
|
%assign stack_size 0 |
|
|
|
|
%assign stack_size_padded 0 |
|
|
|
|
%assign xmm_regs_used 0 |
|
|
|
|
%ifnidn %2, "" |
|
|
|
|
PROLOGUE %2 |
|
|
|
|
%ifnidn %3, "" |
|
|
|
|
PROLOGUE %3 |
|
|
|
|
%endif |
|
|
|
|
%endmacro |
|
|
|
|
|
|
|
|
|