/* $Id: glapi.c,v 1.54 2001/05/29 15:23:49 brianp Exp $ */ | |||||
/* $Id: glapi.c,v 1.55 2001/06/05 23:54:00 davem69 Exp $ */ | |||||
/* | /* | ||||
* Mesa 3-D graphics library | * Mesa 3-D graphics library | ||||
#include "glapitable.h" | #include "glapitable.h" | ||||
#include "glthread.h" | #include "glthread.h" | ||||
#ifdef USE_SPARC_ASM | |||||
#include "SPARC/sparc.h" | |||||
#endif | |||||
/***** BEGIN NO-OP DISPATCH *****/ | /***** BEGIN NO-OP DISPATCH *****/ | ||||
*(unsigned int *)(code + 0x16) = (unsigned int)functionOffset * 4; | *(unsigned int *)(code + 0x16) = (unsigned int)functionOffset * 4; | ||||
} | } | ||||
return code; | return code; | ||||
#elif defined(USE_SPARC_ASM) | |||||
#ifdef __sparc_v9__ | |||||
static const unsigned int insn_template[] = { | |||||
0x05000000, /* sethi %uhi(_glapi_Dispatch), %g2 */ | |||||
0x03000000, /* sethi %hi(_glapi_Dispatch), %g1 */ | |||||
0x8410a000, /* or %g2, %ulo(_glapi_Dispatch), %g2 */ | |||||
0x82106000, /* or %g1, %lo(_glapi_Dispatch), %g1 */ | |||||
0x8528b020, /* sllx %g2, 32, %g2 */ | |||||
0xc2584002, /* ldx [%g1 + %g2], %g1 */ | |||||
0x05000000, /* sethi %hi(8 * glapioffset), %g2 */ | |||||
0x8410a000, /* or %g2, %lo(8 * glapioffset), %g2 */ | |||||
0xc6584002, /* ldx [%g1 + %g2], %g3 */ | |||||
0x81c0c000, /* jmpl %g3, %g0 */ | |||||
0x01000000 /* nop */ | |||||
}; | |||||
#else | |||||
static const unsigned int insn_template[] = { | |||||
0x03000000, /* sethi %hi(_glapi_Dispatch), %g1 */ | |||||
0xc2006000, /* ld [%g1 + %lo(_glapi_Dispatch)], %g1 */ | |||||
0xc6006000, /* ld [%g1 + %lo(4*glapioffset)], %g3 */ | |||||
0x81c0c000, /* jmpl %g3, %g0 */ | |||||
0x01000000 /* nop */ | |||||
}; | |||||
#endif | |||||
unsigned int *code = malloc(sizeof(insn_template)); | |||||
unsigned long glapi_addr = (unsigned long) &_glapi_Dispatch; | |||||
if (code) { | |||||
memcpy(code, insn_template, sizeof(insn_template)); | |||||
#ifdef __sparc_v9__ | |||||
code[0] |= (glapi_addr >> (32 + 10)); | |||||
code[1] |= ((glapi_addr & 0xffffffff) >> 10); | |||||
_mesa_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]); | |||||
code[6] |= ((functionOffset * 8) >> 10); | |||||
code[7] |= ((functionOffset * 8) & ((1 << 10) - 1)); | |||||
_mesa_sparc_icache_flush(&code[6]); | |||||
#else | |||||
code[0] |= (glapi_addr >> 10); | |||||
code[1] |= (glapi_addr & ((1 << 10) - 1)); | |||||
_mesa_sparc_icache_flush(&code[0]); | |||||
code[2] |= (functionOffset * 4); | |||||
_mesa_sparc_icache_flush(&code[2]); | |||||
#endif | |||||
} | |||||
return code; | |||||
#else | #else | ||||
return NULL; | return NULL; | ||||
#endif | #endif |
#!/usr/bin/env python | #!/usr/bin/env python | ||||
# $Id: glsparcasm.py,v 1.1 2001/06/05 04:30:03 davem69 Exp $ | |||||
# $Id: glsparcasm.py,v 1.2 2001/06/05 23:54:00 davem69 Exp $ | |||||
# Mesa 3-D graphics library | # Mesa 3-D graphics library | ||||
# Version: 3.5 | # Version: 3.5 | ||||
print ' * sethi/or instruction sequences below at library init time.' | print ' * sethi/or instruction sequences below at library init time.' | ||||
print ' */' | print ' */' | ||||
print '' | print '' | ||||
print '.text' | |||||
print '.data' | |||||
print '.align 64' | print '.align 64' | ||||
print '' | print '' | ||||
print '.globl _mesa_sparc_glapi_begin' | |||||
print '_mesa_sparc_glapi_begin:' | |||||
print '' | |||||
return | return | ||||
#endif | #endif | ||||
def PrintTail(): | def PrintTail(): | ||||
print '\t nop' | print '\t nop' | ||||
print '' | print '' | ||||
print '.globl _mesa_sparc_glapi_end' | |||||
print '_mesa_sparc_glapi_end:' | |||||
print '' | |||||
#endif | #endif | ||||
print '\tor\t%g2, %lo(0x00000000), %g2' | print '\tor\t%g2, %lo(0x00000000), %g2' | ||||
print '\tor\t%g1, %lo(0x00000000), %g1' | print '\tor\t%g1, %lo(0x00000000), %g1' | ||||
print '\tsllx\t%g2, 32, %g2' | print '\tsllx\t%g2, 32, %g2' | ||||
print '\tor\t%g1, %g2, %g1' | |||||
print '\tldx\t[%g1 + %g2], %g1' | |||||
print "\tsethi\t%%hi(8 * _gloffset_%s), %%g2" % (offset) | print "\tsethi\t%%hi(8 * _gloffset_%s), %%g2" % (offset) | ||||
print "\tor\t%%g2, %%lo(8 * _gloffset_%s), %%g2" % (offset) | print "\tor\t%%g2, %%lo(8 * _gloffset_%s), %%g2" % (offset) | ||||
print '\tldx\t[%g1 + %g2], %g3' | print '\tldx\t[%g1 + %g2], %g3' | ||||
print '#else' | print '#else' | ||||
print '\tsethi\t%hi(0x00000000), %g1' | print '\tsethi\t%hi(0x00000000), %g1' | ||||
print '\tor\t%g1, %lo(0x00000000), %g1' | |||||
print '\tld\t[%g1 + %lo(0x00000000)], %g1' | |||||
print "\tld\t[%%g1 + (4 * _gloffset_%s)], %%g3" % (offset) | print "\tld\t[%%g1 + (4 * _gloffset_%s)], %%g3" % (offset) | ||||
print '#endif' | print '#endif' | ||||
print '\tjmpl\t%g3, %g0' | print '\tjmpl\t%g3, %g0' |
/* $Id: context.c,v 1.140 2001/06/05 03:58:20 davem69 Exp $ */ | |||||
/* $Id: context.c,v 1.141 2001/06/05 23:54:00 davem69 Exp $ */ | |||||
/* | /* | ||||
* Mesa 3-D graphics library | * Mesa 3-D graphics library | ||||
#include "Trace/tr_wrapper.h" | #include "Trace/tr_wrapper.h" | ||||
#endif | #endif | ||||
#ifdef USE_SPARC_ASM | |||||
#include "SPARC/sparc.h" | |||||
#endif | |||||
#ifndef MESA_VERBOSE | #ifndef MESA_VERBOSE | ||||
int MESA_VERBOSE = 0 | int MESA_VERBOSE = 0 | ||||
_math_init(); | _math_init(); | ||||
_mesa_init_math(); | _mesa_init_math(); | ||||
#ifdef USE_SPARC_ASM | |||||
_mesa_init_sparc_glapi_relocs(); | |||||
#endif | |||||
if (getenv("MESA_DEBUG")) { | if (getenv("MESA_DEBUG")) { | ||||
_glapi_noop_enable_warnings(GL_TRUE); | _glapi_noop_enable_warnings(GL_TRUE); | ||||
} | } |
/* $Id: dispatch.c,v 1.22 2001/03/28 17:20:20 brianp Exp $ */ | |||||
/* $Id: dispatch.c,v 1.23 2001/06/05 23:54:00 davem69 Exp $ */ | |||||
/* | /* | ||||
* Mesa 3-D graphics library | * Mesa 3-D graphics library | ||||
#include "glthread.h" | #include "glthread.h" | ||||
#endif | #endif | ||||
#if !defined(USE_X86_ASM) | |||||
#if !(defined(USE_X86_ASM) || defined(USE_SPARC_ASM)) | |||||
#define KEYWORD1 | #define KEYWORD1 | ||||
#define KEYWORD2 GLAPIENTRY | #define KEYWORD2 GLAPIENTRY |
/* $Id: sparc.c,v 1.2 2001/05/23 14:42:47 brianp Exp $ */ | |||||
/* $Id: sparc.c,v 1.3 2001/06/05 23:54:01 davem69 Exp $ */ | |||||
/* | /* | ||||
* Mesa 3-D graphics library | * Mesa 3-D graphics library | ||||
*/ | */ | ||||
#include "glheader.h" | |||||
#include "context.h" | #include "context.h" | ||||
#include "math/m_vertices.h" | #include "math/m_vertices.h" | ||||
#include "math/m_xform.h" | #include "math/m_xform.h" | ||||
#endif | #endif | ||||
} | } | ||||
extern unsigned int _mesa_sparc_glapi_begin; | |||||
extern unsigned int _mesa_sparc_glapi_end; | |||||
void _mesa_init_sparc_glapi_relocs(void) | |||||
{ | |||||
unsigned int *insn_ptr, *end_ptr; | |||||
unsigned long disp_addr; | |||||
insn_ptr = &_mesa_sparc_glapi_begin; | |||||
end_ptr = &_mesa_sparc_glapi_end; | |||||
disp_addr = (unsigned long) &_glapi_Dispatch; | |||||
while (insn_ptr < end_ptr) { | |||||
#ifdef __sparc_v9__ | |||||
insn_ptr[0] |= (disp_addr >> (32 + 10)); | |||||
insn_ptr[1] |= ((disp_addr & 0xffffffff) >> 10); | |||||
_mesa_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]); | |||||
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]); | |||||
insn_ptr += 4; | |||||
#endif | |||||
} | |||||
} |
/* $Id: sparc.h,v 1.1 2001/05/23 14:27:03 brianp Exp $ */ | |||||
/* $Id: sparc.h,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */ | |||||
/* | /* | ||||
* Mesa 3-D graphics library | * Mesa 3-D graphics library | ||||
#define SPARC_H | #define SPARC_H | ||||
extern void _mesa_init_all_sparc_transform_asm(void); | 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) */ | #endif /* !(SPARC_H) */ |
/* $Id: sparc_matrix.h,v 1.1 2001/05/23 14:27:03 brianp Exp $ */ | |||||
/* $Id: sparc_matrix.h,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */ | |||||
#ifndef _SPARC_MATRIX_H | |||||
#define _SPARC_MATRIX_H | |||||
#ifdef __sparc_v9__ | |||||
#define LDPTR ldx | |||||
#define MAT_M 0x00 | |||||
#define MAT_INV 0x08 | |||||
#define V4F_DATA 0x00 | |||||
#define V4F_START 0x08 | |||||
#define V4F_COUNT 0x10 | |||||
#define V4F_STRIDE 0x14 | |||||
#define V4F_SIZE 0x18 | |||||
#define V4F_FLAGS 0x1c | |||||
#else | |||||
#define LDPTR ld | |||||
#define MAT_M 0x00 | |||||
#define MAT_INV 0x04 | |||||
#define V4F_DATA 0x00 | |||||
#define V4F_START 0x04 | |||||
#define V4F_COUNT 0x08 | |||||
#define V4F_STRIDE 0x0c | |||||
#define V4F_SIZE 0x10 | |||||
#define V4F_FLAGS 0x14 | |||||
#endif | |||||
#define VEC_SIZE_1 1 | |||||
#define VEC_SIZE_2 3 | |||||
#define VEC_SIZE_3 7 | |||||
#define VEC_SIZE_4 15 | |||||
#define M0 %f16 | #define M0 %f16 | ||||
#define M1 %f17 | #define M1 %f17 | ||||
#define M14 %f30 | #define M14 %f30 | ||||
#define M15 %f31 | #define M15 %f31 | ||||
/* Seems to work, disable if unaligned traps begin to appear... -DaveM */ | |||||
#define USE_LD_DOUBLE | |||||
#ifndef USE_LD_DOUBLE | |||||
#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ld [BASE + ( 3 * 0x4)], M3; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14; \ | |||||
ld [BASE + (15 * 0x4)], M15 | |||||
#define LDMATRIX_0_1_12_13(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13 | |||||
#define LDMATRIX_0_12_13(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13 | |||||
#define LDMATRIX_0_1_2_12_13_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_12_13_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_1_2_3_4_5_6_7_12_13_14_15(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ld [BASE + ( 3 * 0x4)], M3; \ | |||||
ld [BASE + ( 4 * 0x4)], M4; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + ( 6 * 0x4)], M6; \ | |||||
ld [BASE + ( 7 * 0x4)], M7; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14; \ | |||||
ld [BASE + (15 * 0x4)], M15 | |||||
#define LDMATRIX_0_1_4_5_12_13(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 4 * 0x4)], M4; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13 | |||||
#define LDMATRIX_0_5_12_13(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13 | |||||
#define LDMATRIX_0_1_2_3_4_5_6_12_13_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ld [BASE + ( 3 * 0x4)], M3; \ | |||||
ld [BASE + ( 4 * 0x4)], M4; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + ( 6 * 0x4)], M6; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_5_12_13_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_5_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_1_2_3_4_5_6_7_8_9_10_11_12_13_14_15(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ld [BASE + ( 3 * 0x4)], M3; \ | |||||
ld [BASE + ( 4 * 0x4)], M4; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + ( 6 * 0x4)], M6; \ | |||||
ld [BASE + ( 7 * 0x4)], M7; \ | |||||
ld [BASE + ( 8 * 0x4)], M8; \ | |||||
ld [BASE + ( 9 * 0x4)], M9; \ | |||||
ld [BASE + (10 * 0x4)], M10; \ | |||||
ld [BASE + (11 * 0x4)], M11; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14; \ | |||||
ld [BASE + (15 * 0x4)], M15 | |||||
#define LDMATRIX_0_5_12_13(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13 | |||||
#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 1 * 0x4)], M1; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ld [BASE + ( 4 * 0x4)], M4; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + ( 6 * 0x4)], M6; \ | |||||
ld [BASE + ( 8 * 0x4)], M8; \ | |||||
ld [BASE + ( 9 * 0x4)], M9; \ | |||||
ld [BASE + (10 * 0x4)], M10; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_5_10_12_13_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + (10 * 0x4)], M10; \ | |||||
ld [BASE + (12 * 0x4)], M12; \ | |||||
ld [BASE + (13 * 0x4)], M13; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#define LDMATRIX_0_5_8_9_10_14(BASE) \ | |||||
ld [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 5 * 0x4)], M5; \ | |||||
ld [BASE + ( 8 * 0x4)], M8; \ | |||||
ld [BASE + ( 9 * 0x4)], M9; \ | |||||
ld [BASE + (10 * 0x4)], M10; \ | |||||
ld [BASE + (14 * 0x4)], M14 | |||||
#else /* !(USE_LD_DOUBLE) */ | |||||
#define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ | #define LDMATRIX_0_1_2_3_12_13_14_15(BASE) \ | ||||
ldd [BASE + ( 0 * 0x4)], M0; \ | ldd [BASE + ( 0 * 0x4)], M0; \ | ||||
ldd [BASE + ( 2 * 0x4)], M2; \ | ldd [BASE + ( 2 * 0x4)], M2; \ | ||||
ld [BASE + ( 5 * 0x4)], M5; \ | ld [BASE + ( 5 * 0x4)], M5; \ | ||||
ldd [BASE + (12 * 0x4)], M12 | ldd [BASE + (12 * 0x4)], M12 | ||||
#define LDMATRIX_0_1_2_4_5_6_8_9_10(BASE) \ | |||||
ldd [BASE + ( 0 * 0x4)], M0; \ | |||||
ld [BASE + ( 2 * 0x4)], M2; \ | |||||
ldd [BASE + ( 4 * 0x4)], M4; \ | |||||
ld [BASE + ( 6 * 0x4)], M6; \ | |||||
ldd [BASE + ( 8 * 0x4)], M8; \ | |||||
ld [BASE + (10 * 0x4)], M10 | |||||
#define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ | #define LDMATRIX_0_1_2_4_5_6_8_9_10_12_13_14(BASE) \ | ||||
ldd [BASE + ( 0 * 0x4)], M0; \ | ldd [BASE + ( 0 * 0x4)], M0; \ | ||||
ld [BASE + ( 2 * 0x4)], M2; \ | ld [BASE + ( 2 * 0x4)], M2; \ | ||||
ld [BASE + (10 * 0x4)], M10; \ | ld [BASE + (10 * 0x4)], M10; \ | ||||
ld [BASE + (14 * 0x4)], M14 | ld [BASE + (14 * 0x4)], M14 | ||||
#endif /* USE_LD_DOUBLE */ | |||||
#endif /* !(_SPARC_MATRIX_H) */ |
/* $Id: xform.S,v 1.1 2001/05/23 14:27:03 brianp Exp $ */ | |||||
/* $Id: xform.S,v 1.2 2001/06/05 23:54:01 davem69 Exp $ */ | |||||
/* TODO | /* TODO | ||||
* | * | ||||
* tricky and not much of a gain though. | * tricky and not much of a gain though. | ||||
*/ | */ | ||||
#ifdef __sparc_v9__ | |||||
#define LDPTR ldx | |||||
#define V4F_DATA 0x00 | |||||
#define V4F_START 0x08 | |||||
#define V4F_COUNT 0x10 | |||||
#define V4F_STRIDE 0x14 | |||||
#define V4F_SIZE 0x18 | |||||
#define V4F_FLAGS 0x1c | |||||
#else | |||||
#define LDPTR ld | |||||
#define V4F_DATA 0x00 | |||||
#define V4F_START 0x04 | |||||
#define V4F_COUNT 0x08 | |||||
#define V4F_STRIDE 0x0c | |||||
#define V4F_SIZE 0x10 | |||||
#define V4F_FLAGS 0x14 | |||||
#endif | |||||
#define VEC_SIZE_1 1 | |||||
#define VEC_SIZE_2 3 | |||||
#define VEC_SIZE_3 7 | |||||
#define VEC_SIZE_4 15 | |||||
#include "sparc_matrix.h" | |||||
.text | .text | ||||
.align 64 | .align 64 | ||||
retl | retl | ||||
st %g2, [%o0 + V4F_FLAGS] | st %g2, [%o0 + V4F_FLAGS] | ||||
#include "sparc_matrix.h" | |||||
/* First the raw versions. */ | /* First the raw versions. */ | ||||
.globl _mesa_sparc_transform_points1_general | .globl _mesa_sparc_transform_points1_general |