diff --git a/Makefile b/Makefile index 871a6911..e1a7327f 100644 --- a/Makefile +++ b/Makefile @@ -386,6 +386,9 @@ ifeq ($(PLATFORM),darwin) # used no matter what and they corrupt the frame pointer in VM calls BASE_CFLAGS += -mstackrealign endif + ifeq ($(ARCH),x86_64) + OPTIMIZEVM += -mfpmath=sse + endif BASE_CFLAGS += -fno-strict-aliasing -DMACOS_X -fno-common -pipe diff --git a/code/qcommon/vm_x86.c b/code/qcommon/vm_x86.c index da472082..ed5b4563 100644 --- a/code/qcommon/vm_x86.c +++ b/code/qcommon/vm_x86.c @@ -1776,25 +1776,25 @@ int VM_CallCompiled(vm_t *vm, int *args) #endif #elif idx64 __asm__ volatile( - "movq %5, %%rax\r\n" - "movq %3, %%r8\r\n" - "movq %4, %%r9\r\n" - "push %%r15\r\n" - "push %%r14\r\n" - "push %%r13\r\n" - "push %%r12\r\n" - "callq *%%rax\r\n" - "pop %%r12\r\n" - "pop %%r13\r\n" - "pop %%r14\r\n" - "pop %%r15\r\n" + "movq %5, %%rax\n" + "movq %3, %%r8\n" + "movq %4, %%r9\n" + "push %%r15\n" + "push %%r14\n" + "push %%r13\n" + "push %%r12\n" + "callq *%%rax\n" + "pop %%r12\n" + "pop %%r13\n" + "pop %%r14\n" + "pop %%r15\n" : "+S" (programStack), "+D" (opStack), "+b" (opStackOfs) : "g" (vm->instructionPointers), "g" (vm->dataBase), "g" (entryPoint) : "cc", "memory", "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11" ); #else __asm__ volatile( - "calll *%3\r\n" + "calll *%3\n" : "+S" (programStack), "+D" (opStack), "+b" (opStackOfs) : "g" (entryPoint) : "cc", "memory", "%eax", "%ecx", "%edx"