summaryrefslogtreecommitdiff
path: root/src/asm
diff options
context:
space:
mode:
authorThilo Schulz <arny@ats.s.bawue.de>2011-06-13 11:07:13 +0000
committerTim Angus <tim@ngus.net>2013-01-09 23:15:56 +0000
commit53c88ffd28eefc63817e4d177a775df7b076ebae (patch)
treef27b6f4355759aa4da100a3cd5bc556aef9279ea /src/asm
parentd4c0287699091dc0b6e1e19a83210bcb3f093064 (diff)
- Still forgot qasm-inline.h - Leave GCC more freedom in choice of registers
Diffstat (limited to 'src/asm')
-rw-r--r--src/asm/ftola.c4
-rw-r--r--src/asm/qasm-inline.h39
-rw-r--r--src/asm/snapvector.c8
3 files changed, 45 insertions, 6 deletions
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"
);
}