summaryrefslogtreecommitdiff
path: root/src/mesa/x86/mmx_blend.S
diff options
context:
space:
mode:
authorBrian <brian@yutani.localnet.net>2007-03-10 11:50:50 -0700
committerBrian <brian@yutani.localnet.net>2007-03-10 11:50:50 -0700
commit7d39c1ae76cc7dc6793980fd83db100399ee9179 (patch)
tree583fb6d1aa3a6bef7a145644553fc312311f0b57 /src/mesa/x86/mmx_blend.S
parent823c041fdefa772fc1b06c87f71b0ee3291a00db (diff)
Fix TEXREL issues.
Patch submitted by Christoph Brill. See http://www.gentoo.org/proj/en/hardened/pic-fix-guide.xml
Diffstat (limited to 'src/mesa/x86/mmx_blend.S')
-rw-r--r--src/mesa/x86/mmx_blend.S41
1 files changed, 36 insertions, 5 deletions
diff --git a/src/mesa/x86/mmx_blend.S b/src/mesa/x86/mmx_blend.S
index 397d635a62..20ac5a20ad 100644
--- a/src/mesa/x86/mmx_blend.S
+++ b/src/mesa/x86/mmx_blend.S
@@ -1,4 +1,4 @@
-
+ ;
/*
* Written by José Fonseca <j_r_fonseca@yahoo.co.uk>
*/
@@ -240,7 +240,9 @@ TWO(PUNPCKHDQ ( MA2, MA2 )) /* pa2 | pa2 | pa
ONE(MOVD ( MSS, REGIND(rgba) )) /* | | | | sa1 | sb1 | sg1 | sr1 */ ;\
TWO(MOVQ ( MSS, REGIND(rgba) )) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */
-
+/* Kevin F. Quinn <kevquinn@gentoo.org> 2 July 2006
+ * Replace data segment constants with text-segment
+ * constants (via pushl/movq)
SEG_DATA
ALIGNDATA8
@@ -249,6 +251,11 @@ const_0080:
const_80:
D_LONG 0x80808080, 0x80808080
+*/
+#define const_0080_l 0x00800080
+#define const_0080_h 0x00800080
+#define const_80_l 0x80808080
+#define const_80_h 0x80808080
SEG_TEXT
@@ -302,8 +309,16 @@ TWO(MOVQ ( MM1, REGIND(rgba) ))
#define TAG(x) CONCAT(x,_min)
#define LLTAG(x) LLBL2(x,_min)
+/* Kevin F. Quinn 2nd July 2006
+ * Replace data segment constants with text-segment instructions
+#define INIT \
+ MOVQ ( CONTENT(const_80), MM7 )
+ */
#define INIT \
- MOVQ ( CONTENT(const_80), MM7 ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/
+ PUSH_L ( CONST(const_80_h) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\
+ PUSH_L ( CONST(const_80_l) ) ;\
+ MOVQ ( REGIND(ESP), MM7 ) ;\
+ ADD_L ( CONST(8), ESP)
#define MAIN( rgba, dest ) \
GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
@@ -326,8 +341,16 @@ TWO(MOVQ ( MM1, REGIND(rgba) ))
#define TAG(x) CONCAT(x,_max)
#define LLTAG(x) LLBL2(x,_max)
+/* Kevin F. Quinn 2nd July 2006
+ * Replace data segment constants with text-segment instructions
#define INIT \
- MOVQ ( CONTENT(const_80), MM7 ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/
+ MOVQ ( CONTENT(const_80), MM7 )
+ */
+#define INIT \
+ PUSH_L ( CONST(const_80_l) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\
+ PUSH_L ( CONST(const_80_h) ) ;\
+ MOVQ ( REGIND(ESP), MM7 ) ;\
+ ADD_L ( CONST(8), ESP)
#define MAIN( rgba, dest ) \
GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
@@ -350,9 +373,17 @@ TWO(MOVQ ( MM1, REGIND(rgba) ))
#define TAG(x) CONCAT(x,_modulate)
#define LLTAG(x) LLBL2(x,_modulate)
+/* Kevin F. Quinn 2nd July 2006
+ * Replace data segment constants with text-segment instructions
+#define INIT \
+ MOVQ ( CONTENT(const_0080), MM7 )
+ */
#define INIT \
PXOR ( MM0, MM0 ) /* 0x0000 | 0x0000 | 0x0000 | 0x0000 */ ;\
- MOVQ ( CONTENT(const_0080), MM7 ) /* 0x0080 | 0x0080 | 0x0080 | 0x0080 */
+ PUSH_L ( CONST(const_0080_l) ) /* 0x0080 | 0x0080 | 0x0080 | 0x0080 */ ;\
+ PUSH_L ( CONST(const_0080_h) ) ;\
+ MOVQ ( REGIND(ESP), MM7 ) ;\
+ ADD_L ( CONST(8), ESP)
#define MAIN( rgba, dest ) \
GMB_LOAD( rgba, dest, MM1, MM2 ) ;\