in SPARC glapi optimizations by moving the icache flush into the glapi_sparc.S file. Brian, how is this?tags/mesa_3_5
@@ -1,4 +1,4 @@ | |||
/* $Id: glapi.c,v 1.55 2001/06/05 23:54:00 davem69 Exp $ */ | |||
/* $Id: glapi.c,v 1.56 2001/06/06 22:55:28 davem69 Exp $ */ | |||
/* | |||
* Mesa 3-D graphics library | |||
@@ -52,10 +52,6 @@ | |||
#include "glapitable.h" | |||
#include "glthread.h" | |||
#ifdef USE_SPARC_ASM | |||
#include "SPARC/sparc.h" | |||
#endif | |||
/***** BEGIN NO-OP DISPATCH *****/ | |||
static GLboolean WarnFlag = GL_FALSE; | |||
@@ -1709,7 +1705,9 @@ get_static_proc_address(const char *funcName) | |||
static struct name_address_offset ExtEntryTable[MAX_EXTENSION_FUNCS]; | |||
static GLuint NumExtEntryPoints = 0; | |||
#ifdef USE_SPARC_ASM | |||
extern void __glapi_sparc_icache_flush(unsigned int *); | |||
#endif | |||
/* | |||
* Generate a dispatch function (entrypoint) which jumps through | |||
@@ -1789,19 +1787,19 @@ generate_entrypoint(GLuint functionOffset) | |||
#ifdef __sparc_v9__ | |||
code[0] |= (glapi_addr >> (32 + 10)); | |||
code[1] |= ((glapi_addr & 0xffffffff) >> 10); | |||
_mesa_sparc_icache_flush(&code[0]); | |||
__glapi_sparc_icache_flush(&code[0]); | |||
code[2] |= ((glapi_addr >> 32) & ((1 << 10) - 1)); | |||
code[3] |= (glapi_addr & ((1 << 10) - 1)); | |||
_mesa_sparc_icache_flush(&code[2]); | |||
__glapi_sparc_icache_flush(&code[2]); | |||
code[6] |= ((functionOffset * 8) >> 10); | |||
code[7] |= ((functionOffset * 8) & ((1 << 10) - 1)); | |||
_mesa_sparc_icache_flush(&code[6]); | |||
__glapi_sparc_icache_flush(&code[6]); | |||
#else | |||
code[0] |= (glapi_addr >> 10); | |||
code[1] |= (glapi_addr & ((1 << 10) - 1)); | |||
_mesa_sparc_icache_flush(&code[0]); | |||
__glapi_sparc_icache_flush(&code[0]); | |||
code[2] |= (functionOffset * 4); | |||
_mesa_sparc_icache_flush(&code[2]); | |||
__glapi_sparc_icache_flush(&code[2]); | |||
#endif | |||
} | |||
return code; |
@@ -1,6 +1,6 @@ | |||
#!/usr/bin/env python | |||
# $Id: glsparcasm.py,v 1.2 2001/06/05 23:54:00 davem69 Exp $ | |||
# $Id: glsparcasm.py,v 1.3 2001/06/06 22:55:28 davem69 Exp $ | |||
# Mesa 3-D graphics library | |||
# Version: 3.5 | |||
@@ -51,10 +51,20 @@ def PrintHead(): | |||
print ' * sethi/or instruction sequences below at library init time.' | |||
print ' */' | |||
print '' | |||
print '' | |||
print '.text' | |||
print '.align 32' | |||
print '.globl __glapi_sparc_icache_flush' | |||
print '__glapi_sparc_icache_flush: /* %o0 = insn_addr */' | |||
print '\tflush\t%o0' | |||
print '\tretl' | |||
print '\t nop' | |||
print '' | |||
print '.data' | |||
print '.align 64' | |||
print '' | |||
print '.globl _mesa_sparc_glapi_begin' | |||
print '.type _mesa_sparc_glapi_begin,@function' | |||
print '_mesa_sparc_glapi_begin:' | |||
print '' | |||
return | |||
@@ -64,6 +74,7 @@ def PrintTail(): | |||
print '\t nop' | |||
print '' | |||
print '.globl _mesa_sparc_glapi_end' | |||
print '.type _mesa_sparc_glapi_end,@function' | |||
print '_mesa_sparc_glapi_end:' | |||
print '' | |||
#endif |
@@ -8,10 +8,20 @@ | |||
* sethi/or instruction sequences below at library init time. | |||
*/ | |||
.text | |||
.align 32 | |||
.globl __glapi_sparc_icache_flush | |||
__glapi_sparc_icache_flush: /* %o0 = insn_addr */ | |||
flush %o0 | |||
retl | |||
nop | |||
.data | |||
.align 64 | |||
.globl _mesa_sparc_glapi_begin | |||
.type _mesa_sparc_glapi_begin,@function | |||
_mesa_sparc_glapi_begin: | |||
GLOBL_FN(GL_PREFIX(NewList)) | |||
@@ -11758,5 +11768,6 @@ GL_PREFIX(SamplePatternSGIS): | |||
nop | |||
.globl _mesa_sparc_glapi_end | |||
.type _mesa_sparc_glapi_end,@function | |||
_mesa_sparc_glapi_end: | |||
@@ -1,4 +1,4 @@ | |||
/* $Id: sparc.c,v 1.4 2001/06/06 11:46:04 davem69 Exp $ */ | |||
/* $Id: sparc.c,v 1.5 2001/06/06 22:55:28 davem69 Exp $ */ | |||
/* | |||
* Mesa 3-D graphics library | |||
@@ -143,6 +143,7 @@ void _mesa_init_all_sparc_transform_asm(void) | |||
extern unsigned int _mesa_sparc_glapi_begin; | |||
extern unsigned int _mesa_sparc_glapi_end; | |||
extern void __glapi_sparc_icache_flush(unsigned int *); | |||
void _mesa_init_sparc_glapi_relocs(void) | |||
{ | |||
@@ -157,15 +158,15 @@ void _mesa_init_sparc_glapi_relocs(void) | |||
#ifdef __sparc_v9__ | |||
insn_ptr[0] |= (disp_addr >> (32 + 10)); | |||
insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10); | |||
_mesa_sparc_icache_flush(&insn_ptr[0]); | |||
__glapi_sparc_icache_flush(&insn_ptr[0]); | |||
insn_ptr[2] |= ((disp_addr >> 32) & ((1 << 10) - 1)); | |||
insn_ptr[3] |= (disp_addr & ((1 << 10) - 1)); | |||
_mesa_sparc_icache_flush(&insn_ptr[2]); | |||
__glapi_sparc_icache_flush(&insn_ptr[2]); | |||
insn_ptr += 10; | |||
#else | |||
insn_ptr[0] |= (disp_addr >> 10); | |||
insn_ptr[1] |= (disp_addr & ((1 << 10) - 1)); | |||
_mesa_sparc_icache_flush(&insn_ptr[0]); | |||
__glapi_sparc_icache_flush(&insn_ptr[0]); | |||
insn_ptr += 4; | |||
#endif | |||
} |
@@ -1,4 +1,4 @@ | |||
/* $Id: sparc.h,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */ | |||
/* $Id: sparc.h,v 1.3 2001/06/06 22:55:28 davem69 Exp $ */ | |||
/* | |||
* Mesa 3-D graphics library | |||
@@ -34,6 +34,5 @@ | |||
extern void _mesa_init_all_sparc_transform_asm(void); | |||
extern void _mesa_init_sparc_glapi_relocs(void); | |||
extern void _mesa_sparc_icache_flush(unsigned int *); | |||
#endif /* !(SPARC_H) */ |