From e510996901c57f36f226d0eec3c929fb8b69b8e0 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Sat, 23 Feb 2008 05:42:32 +0000 Subject: Use inline-asm only with gcc. Add fallback for other compilers git-svn-id: svn://mattst88.com/svn/glpong3d/trunk@19 4dd1920e-271a-0410-bca0-81b404a81564 --- glpong3d.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'glpong3d.c') diff --git a/glpong3d.c b/glpong3d.c index a02a17f..c4739a8 100644 --- a/glpong3d.c +++ b/glpong3d.c @@ -451,18 +451,23 @@ void GLPong_CleanUp() { } -__inline__ unsigned int NextPow2(unsigned int value) { +static __inline__ unsigned int +NextPow2(unsigned int value) { +#if (defined __i386__ || defined __amd64__ || defined __x86_64__) \ + && (defined __GNUC__) unsigned int x; -#ifdef __i386__ - __asm("dec %1\n\t" - "movl $2,%0\n\t" - "bsr %1,%1\n\t" - "shl %b1,%0\n\t" + __asm( + "dec %1 \n\t" /* so that if the number is a power of + * two we don't change it + */ + "movl $2,%0 \n\t" + "bsr %1,%1 \n\t" + "shl %b1,%0 \n\t" : "=r" (x) : "c" (value) ); #else - x = 1; + unsigned int x = 0; while (x < value) { x *= 2; } -- cgit v1.2.3