--- nasm.inc 2008/11/26 01:04:34 1.1 +++ nasm.inc 2009/09/16 17:11:39 1.1.2.5 @@ -19,7 +19,7 @@ ; * along with this program ; if not, write to the Free Software ; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ; * -; * $Id: nasm.inc,v 1.1 2008/11/26 01:04:34 Isibaar Exp $ +; * $Id: nasm.inc,v 1.1.2.5 2009/09/16 17:11:39 Isibaar Exp $ ; * ; ***************************************************************************/ @@ -50,6 +50,16 @@ %define prm7d dword prm7 %define prm8d dword prm8 +%macro PUSH_XMM6_XMM7 0 + movdqa [_ESP+PTR_SIZE], xmm6 + movdqa [_ESP+PTR_SIZE+16], xmm7 +%endmacro + +%macro POP_XMM6_XMM7 0 + movdqa xmm6, [_ESP+PTR_SIZE] + movdqa xmm7, [_ESP+PTR_SIZE+16] +%endmacro + %else ; Linux %define prm1 rdi @@ -70,6 +80,9 @@ %define prm7d dword prm7 %define prm8d dword prm8 +%define PUSH_XMM6_XMM7 +%define POP_XMM6_XMM7 + %endif %define _EAX rax @@ -90,6 +103,12 @@ %define PTR_SIZE 8 %define PTR_TYPE qword +%ifdef __YASM_VERSION_ID__ +%define XVID_MOVSXD movsxd +%else +%define XVID_MOVSXD movsx +%endif + %else %define SECTION_ALIGN 16 @@ -132,6 +151,10 @@ %define PTR_SIZE 4 %define PTR_TYPE dword +%define PUSH_XMM6_XMM7 +%define POP_XMM6_XMM7 + +%define XVID_MOVSXD movsx %endif @@ -139,6 +162,10 @@ %define PREFIX %endif +%ifdef NO_PREFIX + %undef PREFIX +%endif + %macro DATA 0 %ifdef FORMAT_COFF SECTION .rodata @@ -147,6 +174,14 @@ %endif %endmacro +%macro TEXT 0 +%ifidn __OUTPUT_FORMAT__,macho + SECTION .text align=SECTION_ALIGN +%else + SECTION .rotext align=SECTION_ALIGN +%endif +%endmacro + %macro cglobal 1 %ifdef PREFIX %ifdef MARK_FUNCS @@ -168,3 +203,12 @@ %endif %endif %endmacro + +%macro NON_EXEC_STACK 0 +%ifidn __OUTPUT_FORMAT__,elf +section .note.GNU-stack noalloc noexec nowrite progbits +%endif +%ifidn __OUTPUT_FORMAT__,elf64 +section .note.GNU-stack noalloc noexec nowrite progbits +%endif +%endmacro