Browse Source

Remove dependency on MESA sources from gl* files

in SPARC glapi optimizations by moving the icache
flush into the glapi_sparc.S file.

Brian, how is this?
tags/mesa_3_5
davem69 24 years ago
parent
commit
4a497e649b

+ 9
- 11
src/mesa/glapi/glapi.c View File

@@ -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;

+ 12
- 1
src/mesa/glapi/glsparcasm.py View File

@@ -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

+ 11
- 0
src/mesa/sparc/glapi_sparc.S View File

@@ -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:


+ 5
- 4
src/mesa/sparc/sparc.c View File

@@ -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
- 2
src/mesa/sparc/sparc.h View File

@@ -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) */

Loading…
Cancel
Save