From 53c88ffd28eefc63817e4d177a775df7b076ebae Mon Sep 17 00:00:00 2001 From: Thilo Schulz Date: Mon, 13 Jun 2011 11:07:13 +0000 Subject: - Still forgot qasm-inline.h - Leave GCC more freedom in choice of registers --- src/asm/ftola.c | 4 ++-- src/asm/qasm-inline.h | 39 +++++++++++++++++++++++++++++++++++++++ src/asm/snapvector.c | 8 ++++---- 3 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 src/asm/qasm-inline.h (limited to 'src/asm') diff --git a/src/asm/ftola.c b/src/asm/ftola.c index 7bfc6078..e0298e8e 100644 --- a/src/asm/ftola.c +++ b/src/asm/ftola.c @@ -33,7 +33,7 @@ long qftolsse(float f) __asm__ volatile ( "cvttss2si %1, %0\n" - : "=a" (retval) + : "=r" (retval) : "x" (f) ); @@ -61,7 +61,7 @@ long qftolx87(float f) "flds %1\n" "fistpl %1\n" "mov %1, %0\n" - : "=a" (retval) + : "=r" (retval) : "m" (f) ); diff --git a/src/asm/qasm-inline.h b/src/asm/qasm-inline.h new file mode 100644 index 00000000..7ac30533 --- /dev/null +++ b/src/asm/qasm-inline.h @@ -0,0 +1,39 @@ +/* +=========================================================================== +Copyright (C) 1999-2005 Id Software, Inc. + +This file is part of Quake III Arena source code. + +Quake III Arena source code 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 (at your option) any later version. + +Quake III Arena source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Quake III Arena source code; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ +#ifndef __ASM_INLINE_I386__ +#define __ASM_INLINE_I386__ + +#include "../qcommon/q_platform.h" + +#ifdef idx64 + #define EAX "%%rax" + #define EBX "%%rbx" + #define ESP "%%rsp" + #define EDI "%%rdi" +#else + #define EAX "%%eax" + #define EBX "%%ebx" + #define ESP "%%esp" + #define EDI "%%edi" +#endif + +#endif diff --git a/src/asm/snapvector.c b/src/asm/snapvector.c index ea124500..402b3925 100644 --- a/src/asm/snapvector.c +++ b/src/asm/snapvector.c @@ -70,13 +70,13 @@ void qsnapvectorx87(vec3_t vec) "sub $2, " ESP "\n" "fnstcw (" ESP ")\n" "fldcw %0\n" - QROUNDX87("(" EAX ")") - QROUNDX87("4(" EAX ")") - QROUNDX87("8(" EAX ")") + QROUNDX87("(%1)") + QROUNDX87("4(%1)") + QROUNDX87("8(%1)") "fldcw (" ESP ")\n" "add $2, " ESP "\n" : - : "m" (fpucw), "a" (vec) + : "m" (fpucw), "r" (vec) : "memory" ); } -- cgit