From: Loren Merritt Date: Mon, 5 May 2008 22:28:24 +0000 (-0600) Subject: don't pretend to support win64. remove all related code. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1baca94c8da547ebc3363678da6fe09556b97658;p=libx264 don't pretend to support win64. remove all related code. it hasn't worked since probably some time in 2005, and won't ever be fixed unless someone steps up to maintain it. --- diff --git a/common/x86/cpu-64.asm b/common/x86/cpu-64.asm index a1ab0cbf..99007a5f 100644 --- a/common/x86/cpu-64.asm +++ b/common/x86/cpu-64.asm @@ -28,28 +28,18 @@ SECTION .text ; int x264_cpu_cpuid( int op, int *eax, int *ebx, int *ecx, int *edx ) ;----------------------------------------------------------------------------- cglobal x264_cpu_cpuid - firstpush rbx - pushreg rbx - endprolog - + push rbx mov r10, r3 mov r11, r2 mov r9, r1 -%ifdef WIN64 - mov r8, [rsp+40+8] -%endif - mov eax, r0d cpuid - mov [r9], eax mov [r11], ebx mov [r10], ecx mov [r8], edx - pop rbx ret - endfunc ;----------------------------------------------------------------------------- ; void x264_emms( void ) diff --git a/common/x86/x86inc-64.asm b/common/x86/x86inc-64.asm index 24764708..5396fd8b 100644 --- a/common/x86/x86inc-64.asm +++ b/common/x86/x86inc-64.asm @@ -3,8 +3,6 @@ ;***************************************************************************** ;* Copyright (C) 2005-2008 x264 project ;* -;* Authors: Andrew Dunstan -;* ;* This program is free software; you can redistribute it and/or modify ;* it under the terms of the GNU General Public License as published by ;* the Free Software Foundation; either version 2 of the License, or @@ -38,235 +36,6 @@ BITS 64 %endif %endmacro -%macro pad 1 - %undef %1 - %ifdef PREFIX - %define %1 _%1 - %endif - %ifdef WIN64 - times 6 nop - align 16 - %1 - .startfunc - %assign unwindcount 0 - %assign framereg 0 - %else - align 16 - %1 - %endif -%endmacro - -%ifdef WIN64 - -%define __PIC__ - -%define parm1q rcx -%define parm2q rdx -%define parm3q r8 -%define parm4q r9 -%define parm5q [rsp+40] -%define parm6q [rsp+48] -%define parm7q [rsp+56] -%define parm8q [rsp+64] -%define parm1d ecx -%define parm2d edx -%define parm3d r8d -%define parm4d r9d -%define parm5d dword parm5q -%define parm6d dword parm6q -%define parm7d dword parm7q -%define parm8d dword parm8q - -%define temp1q rdi -%define temp2q rsi -%define temp1d edi -%define temp2d esi - -%macro firstpush 1 - db 0x48 - push %1 -%endmacro - -%define unwindcode(count, code) .unwind %+ count EQU code - -%define regcoderax 0 -%define regcodercx 1 -%define regcoderdx 2 -%define regcoderbx 3 -%define regcodersp 4 -%define regcoderbp 5 -%define regcodersi 6 -%define regcoderdi 7 -%define regcoder8 8 -%define regcoder9 9 -%define regcoder10 10 -%define regcoder11 11 -%define regcoder12 12 -%define regcoder13 13 -%define regcoder14 14 -%define regcoder15 15 -%define regcodexmm0 0 -%define regcodexmm1 1 -%define regcodexmm2 2 -%define regcodexmm3 3 -%define regcodexmm4 4 -%define regcodexmm5 5 -%define regcodexmm6 6 -%define regcodexmm7 7 -%define regcodexmm8 8 -%define regcodexmm9 9 -%define regcodexmm10 10 -%define regcodexmm11 11 -%define regcodexmm12 12 -%define regcodexmm13 13 -%define regcodexmm14 14 -%define regcodexmm15 15 - -%macro allocstack 1 - %if %1 < 8 - %error Stack Allocation must be at least 8 bytes. - %elif %1 < 129 - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + 0x200 + (((%1-8)/8)<<12)) - %elif %1 < 524288 - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %1/8) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + 0x100) - %else - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %1>>16) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %1 & 0x0000FFFF) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + 0x1100) - %endif -%endmacro - -%macro pushreg 1 - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + 0 + (regcode%1 << 12)) -%endmacro - -%macro setframe 2 - %if ((%2 % 16) | (%2 > 240) | (%2 < 0)) - %error Frame offset must be a multiple of 16 between 0 and 240. - %endif - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + (3 << 8 )+ (regcode%1 << 12)) - %assign framereg regcode%1 + %2 -%endmacro - -%macro savereg 2 - %if ((%2 % 8) | (%2 < 0)) - %error Offset must be a positive multiple of 8. - %endif - %if (%2 < 64504) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %2/8) - %assign unwindcount unwindcount +1 - unwindcode(unwindcount, $-.startfunc + (4 << 8) + (regcode%1 << 12)) - %else - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %2 >> 16) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %2 & 0x0000FFFF) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + (5 << 8) + (regcode%1 << 12)) - %endif -%endmacro - -%macro savexmm128 2 - %if ((%2 % 16) | (%2 < 0)) - %error Offset must be a positive multiple of 16. - %endif - %if (%2 < 64512) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %2/16) - %assign unwindcount unwindcount +1 - unwindcode(unwindcount, $-.startfunc + (8 << 8) + (regcode%1 << 12)) - %else - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %2 >> 16) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, %2 & 0x0000FFFF) - %assign unwindcount unwindcount+1 - unwindcode(unwindcount, $-.startfunc + (9 << 8) + (regcode%1 << 12)) - %endif -%endmacro - -%macro endprolog 0 -.endprolog: -SECTION .xdata -.unwindinfo: - db 0x01 - db .endprolog-.startfunc - db unwindcount - db framereg - %rep unwindcount - dw .unwind %+ unwindcount - %assign unwindcount unwindcount-1 - %endrep -align 4,db 0 -SECTION .text -%endmacro - -%macro endfunc 0 -.endfunc: -SECTION .pdata - dd .startfunc - dd .endfunc - dd .unwindinfo -SECTION .text -%endmacro - -%else ;linux -%define parm1q rdi -%define parm2q rsi -%define parm3q rdx -%define parm4q rcx -%define parm5q r8 -%define parm6q r9 -%define parm7q [rsp+8] -%define parm8q [rsp+16] -%define parm1d edi -%define parm2d esi -%define parm3d edx -%define parm4d ecx -%define parm5d r8d -%define parm6d r9d -%define parm7d dword parm7q -%define parm8d dword parm8q - -%define temp1q r9 -%define temp2q r8 -%define temp1d r9d -%define temp2d r8d - -%macro allocstack 1 -%endmacro - -%macro firstpush 1 - push %1 -%endmacro - -%macro pushreg 1 -%endmacro - -%macro setframe 2 -%endmacro - -%macro savereg 2 -%endmacro - -%macro savexmm128 2 -%endmacro - -%define endprolog -%define endfunc - -%endif ;linux - ; PIC support macros. On x86_64 we just use RIP-relative addressing, which is ; much simpler than the GOT handling we need to perform on x86. ; diff --git a/common/x86/x86inc.asm b/common/x86/x86inc.asm index 307d2466..d33f6f63 100644 --- a/common/x86/x86inc.asm +++ b/common/x86/x86inc.asm @@ -18,10 +18,6 @@ ;* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. ;***************************************************************************** -%ifdef WIN64 -%define ARCH_X86_64 -%endif - %ifdef ARCH_X86_64 %include "x86inc-64.asm" %else @@ -129,41 +125,7 @@ DECLARE_REG_SIZE bp, bpl %endif %endmacro -%ifdef WIN64 ;================================================================ - -DECLARE_REG 0, rcx, ecx, cx, cl, ecx -DECLARE_REG 1, rdx, edx, dx, dl, edx -DECLARE_REG 2, r8, r8d, r8w, r8b, r8d -DECLARE_REG 3, r9, r9d, r9w, r9b, r9d -DECLARE_REG 4, rdi, edi, di, dil, [rsp + stack_offset + 40] -DECLARE_REG 5, rsi, esi, si, sil, [rsp + stack_offset + 48] -DECLARE_REG 6, rax, eax, ax, al, [rsp + stack_offset + 56] -%define r7m [rsp + stack_offset + 64] - -%macro LOAD_IF_USED 2 ; reg_id, number_of_args - %if %1 < %2 - mov r%1, [rsp + 8 + %1*8] - %endif -%endmacro - -%macro PROLOGUE 3 - ASSERT %2 >= %1 - ASSERT %2 <= 7 - %assign stack_offset 0 - LOAD_IF_USED 4, %1 - LOAD_IF_USED 5, %1 - LOAD_IF_USED 6, %1 -%endmacro - -%macro RET 0 - ret -%endmacro - -%macro REP_RET 0 - rep ret -%endmacro - -%elifdef ARCH_X86_64 ;======================================================== +%ifdef ARCH_X86_64 ;======================================================== DECLARE_REG 0, rdi, edi, di, dil, edi DECLARE_REG 1, rsi, esi, si, sil, esi @@ -295,9 +257,6 @@ DECLARE_REG 6, ebp, ebp, bp, null, [esp + stack_offset + 28] global %1 %endif %endif -%ifdef WIN64 - %define %1 pad %1 -%endif align function_align %1: RESET_MM_PERMUTATION ; not really needed, but makes disassembly somewhat nicer