Use register numbers instead of register names

Avoid ambiguity by using register numbers. Register names are
interpreted depending on the ABI. Fixes the issue with mips64 gcc,
where registers t0-t4 are translated into $8-$11 (o32 ABI) instead
of $12-$15 (o64 ABI).

Also, use t9 ($25) for storing function address
(in getProcAddress.cpp).

Change-Id: I12ef5cd98bf14dab3c01f2756889cc02856c1cd8
This commit is contained in:
Nikola Veljkovic 2014-12-26 17:33:14 +01:00
parent 6701fbe5f0
commit 5f5f65183c
3 changed files with 22 additions and 22 deletions

View File

@ -125,9 +125,9 @@ namespace android {
#define API_ENTRY(_api) __attribute__((noinline)) _api
#define CALL_GL_EXTENSION_API(_api, ...) \
register unsigned int _t0 asm("t0"); \
register unsigned int _fn asm("t1"); \
register unsigned int _tls asm("v1"); \
register unsigned int _t0 asm("$12"); \
register unsigned int _fn asm("$25"); \
register unsigned int _tls asm("$3"); \
asm volatile( \
".set push\n\t" \
".set noreorder\n\t" \
@ -157,9 +157,9 @@ namespace android {
#define API_ENTRY(_api) __attribute__((noinline)) _api
#define CALL_GL_EXTENSION_API(_api, ...) \
register unsigned int _t0 asm("t0"); \
register unsigned int _fn asm("t1"); \
register unsigned int _tls asm("v1"); \
register unsigned int _t0 asm("$8"); \
register unsigned int _fn asm("$25"); \
register unsigned int _tls asm("$3"); \
asm volatile( \
".set push\n\t" \
".set noreorder\n\t" \

View File

@ -123,10 +123,10 @@ using namespace android;
#define API_ENTRY(_api) __attribute__((noinline)) _api
#define CALL_GL_API(_api, ...) \
register unsigned long _t0 asm("t0"); \
register unsigned long _fn asm("t9"); \
register unsigned long _tls asm("v1"); \
register unsigned long _v0 asm("v0"); \
register unsigned long _t0 asm("$12"); \
register unsigned long _fn asm("$25"); \
register unsigned long _tls asm("$3"); \
register unsigned long _v0 asm("$2"); \
asm volatile( \
".set push\n\t" \
".set noreorder\n\t" \
@ -156,10 +156,10 @@ using namespace android;
#define API_ENTRY(_api) __attribute__((noinline)) _api
#define CALL_GL_API(_api, ...) \
register unsigned int _t0 asm("t0"); \
register unsigned int _fn asm("t9"); \
register unsigned int _tls asm("v1"); \
register unsigned int _v0 asm("v0"); \
register unsigned int _t0 asm("$8"); \
register unsigned int _fn asm("$25"); \
register unsigned int _tls asm("$3"); \
register unsigned int _v0 asm("$2"); \
asm volatile( \
".set push\n\t" \
".set noreorder\n\t" \

View File

@ -179,10 +179,10 @@ GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
#define API_ENTRY(_api) __attribute__((noinline)) _api
#define CALL_GL_API(_api, ...) \
register unsigned long _t0 asm("t0"); \
register unsigned long _fn asm("t9"); \
register unsigned long _tls asm("v1"); \
register unsigned long _v0 asm("v0"); \
register unsigned long _t0 asm("$12"); \
register unsigned long _fn asm("$25"); \
register unsigned long _tls asm("$3"); \
register unsigned long _v0 asm("$2"); \
asm volatile( \
".set push\n\t" \
".set noreorder\n\t" \
@ -212,10 +212,10 @@ GL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type,
#define API_ENTRY(_api) __attribute__((noinline)) _api
#define CALL_GL_API(_api, ...) \
register unsigned int _t0 asm("t0"); \
register unsigned int _fn asm("t9"); \
register unsigned int _tls asm("v1"); \
register unsigned int _v0 asm("v0"); \
register unsigned int _t0 asm("$8"); \
register unsigned int _fn asm("$25"); \
register unsigned int _tls asm("$3"); \
register unsigned int _v0 asm("$2"); \
asm volatile( \
".set push\n\t" \
".set noreorder\n\t" \