From b559f293f6f8f07bc54b2646f8137aaaf2e213d5 Mon Sep 17 00:00:00 2001 From: icculus Date: Tue, 15 Sep 2009 03:42:29 +0000 Subject: Added Intel CC compatibility to vm_x86.c's inline asm. Fixes Bugzilla #3338. git-svn-id: svn://svn.icculus.org/quake3/trunk@1613 edf5b092-35ff-0310-97b2-ce42778d08ea --- code/qcommon/vm_x86.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'code/qcommon/vm_x86.c') diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c index 7dee658..64c2ed4 100644 --- a/code/qcommon/vm_x86.c +++ b/code/qcommon/vm_x86.c @@ -176,9 +176,15 @@ _asm { #else //!_MSC_VER #if defined(__MINGW32__) || defined(MACOS_X) // _ is prepended to compiled symbols -# define CMANG(sym) "_"#sym +#define CMANGVAR(sym) "_"#sym +#define CMANGFUNC(sym) "_"#sym #else -# define CMANG(sym) #sym +#if defined(__ICC) && (__ICC >= 1000) +#define CMANGVAR(sym) #sym".0" +#define CMANGFUNC(sym) #sym +#else +#define CMANGVAR(sym) #sym +#define CMANGFUNC(sym) #sym #endif static void __attribute__((cdecl, used)) CallAsmCall(int const syscallNum, @@ -199,18 +205,18 @@ __asm__( ".text\n\t" ".p2align 4,,15\n\t" #if defined __ELF__ - ".type " CMANG(AsmCall) ", @function\n" + ".type " CMANGFUNC(AsmCall) ", @function\n" #endif - CMANG(AsmCall) ":\n\t" + CMANGFUNC(AsmCall) ":\n\t" "movl (%edi), %eax\n\t" "subl $4, %edi\n\t" "testl %eax, %eax\n\t" "jl 0f\n\t" "shll $2, %eax\n\t" - "addl " CMANG(instructionPointers) ", %eax\n\t" + "addl " CMANGVAR(instructionPointers) ", %eax\n\t" "call *(%eax)\n\t" "movl (%edi), %eax\n\t" - "andl " CMANG(callMask) ", %eax\n\t" + "andl " CMANGVAR(callMask) ", %eax\n\t" "ret\n" "0:\n\t" // system call "notl %eax\n\t" @@ -221,7 +227,7 @@ __asm__( "pushl %edi\n\t" // opStack "pushl %esi\n\t" // programStack "pushl %eax\n\t" // syscallNum - "call " CMANG(CallAsmCall) "\n\t" + "call " CMANGFUNC(CallAsmCall) "\n\t" "addl $12, %esp\n\t" "popl %ecx\n\t" "movl %ebp, %esp\n\t" @@ -229,7 +235,7 @@ __asm__( "addl $4, %edi\n\t" "ret\n\t" #if defined __ELF__ - ".size " CMANG(AsmCall)", .-" CMANG(AsmCall) + ".size " CMANGFUNC(AsmCall)", .-" CMANGFUNC(AsmCall) #endif ); -- cgit v1.2.3