packages: memtest86+/memtest86+-make-gcc4-builds-work.patch (NEW) - new, fr...

adamg adamg at pld-linux.org
Tue Aug 18 16:49:54 CEST 2009


Author: adamg                        Date: Tue Aug 18 14:49:54 2009 GMT
Module: packages                      Tag: HEAD
---- Log message:
- new, from fedora

---- Files affected:
packages/memtest86+:
   memtest86+-make-gcc4-builds-work.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/memtest86+/memtest86+-make-gcc4-builds-work.patch
diff -u /dev/null packages/memtest86+/memtest86+-make-gcc4-builds-work.patch:1.1
--- /dev/null	Tue Aug 18 16:49:54 2009
+++ packages/memtest86+/memtest86+-make-gcc4-builds-work.patch	Tue Aug 18 16:49:49 2009
@@ -0,0 +1,254 @@
+--- memtest86+-2.11/test.c.orig	2008-11-15 19:18:14.000000000 -0500
++++ memtest86+-2.11/test.c	2009-08-17 17:21:42.904932613 -0400
+@@ -13,6 +13,7 @@
+ #include "config.h"
+ #include <sys/io.h>
+ #include "dmi.h"
++#include <inttypes.h>
+ 
+ extern int segs, bail;
+ extern volatile ulong *p;
+@@ -150,7 +151,7 @@ void addr_tst2()
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+@@ -194,7 +195,7 @@ void addr_tst2()
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+@@ -256,17 +257,19 @@ void addr_tst2()
+  */
+ void movinvr()
+ {
+-	int i, j, done, seed1, seed2;
++	int i, seed1, seed2;
++	int j, done;
+ 	volatile ulong *pe;
+ 	volatile ulong *start,*end;
+ 	ulong num;
++	uintptr_t next;
+ 
+ 	/* Initialize memory with initial sequence of random numbers.  */
+ 	if (v->rdtsc) {
+ 		asm __volatile__ ("rdtsc":"=a" (seed1),"=d" (seed2));
+ 	} else {
+-		seed1 = 521288629 + v->pass;
+-		seed2 = 362436069 - v->pass;
++		seed1 = (int)(521288629 + v->pass);
++		seed2 = (int)(362436069 - v->pass);
+ 	}
+ 
+ 	/* Display the current seed */
+@@ -277,28 +280,20 @@ void movinvr()
+ 		end = v->map[j].end;
+ 		pe = start;
+ 		p = start;
++		next = (uintptr_t)p;
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if (((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) &&
++			    ((uintptr_t)(pe + SPINSZ) < (uintptr_t)end)) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+-			}
+-			if (pe >= end) {
+-				pe = end;
+ 				done++;
+ 			}
+-			if (p == pe ) {
++			if (next == (uintptr_t)pe) {
+ 				break;
+ 			}
+-/* Original C code replaced with hand tuned assembly code */
+-/*
+-			for (; p < pe; p++) {
+-				*p = rand();
+-			}
+- */
+-
+ 			asm __volatile__ (
+ 				"jmp L200\n\t"
+ 				".p2align 4,,7\n\t"
+@@ -310,7 +305,7 @@ void movinvr()
+ 				"jb L200\n\t"
+ 				: "=D" (p)
+ 				: "D" (p), "b" (pe)
+-				: "eax"
++				: "eax", "edx"
+ 			);
+ 
+ 			do_tick();
+@@ -324,23 +319,28 @@ void movinvr()
+ 	for (i=0; i<2; i++) {
+ 		rand_seed(seed1, seed2);
+ 		for (j=0; j<segs; j++) {
+-			start = v->map[j].start;
+-			end = v->map[j].end;
++			start = (ulong *)(v->map[j].start);
++			end = (ulong *)(v->map[j].end);
+ 			pe = start;
+ 			p = start;
+ 			done = 0;
+ 			do {
+ 				/* Check for overflow */
+-				if (pe + SPINSZ > pe) {
++				next = (uintptr_t)(pe + SPINSZ);
++				if ((next > (uintptr_t)pe) &&
++				    (next < (uintptr_t)end)) {
+ 					pe += SPINSZ;
+ 				} else {
+ 					pe = end;
++					done++;
+ 				}
++#if 0
+ 				if (pe >= end) {
+ 					pe = end;
+ 					done++;
+ 				}
+-				if (p == pe ) {
++#endif
++				if ((uintptr_t)p == (uintptr_t)pe) {
+ 					break;
+ 				}
+ /* Original C code replaced with hand tuned assembly code */
+@@ -359,8 +359,9 @@ void movinvr()
+ 				if (i) {
+ 					num = 0xffffffff;
+ 				} else {
+-					num = 0;
++					num = 0x0;
+ 				}
++	
+ 				asm __volatile__ (
+ 					"jmp L26\n\t" \
+ 
+@@ -427,7 +428,7 @@ void movinv1(int iter, ulong p1, ulong p
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+@@ -468,7 +469,7 @@ void movinv1(int iter, ulong p1, ulong p
+ 			done = 0;
+ 			do {
+ 				/* Check for overflow */
+-				if (pe + SPINSZ > pe) {
++				if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 					pe += SPINSZ;
+ 				} else {
+ 					pe = end;
+@@ -534,7 +535,7 @@ void movinv1(int iter, ulong p1, ulong p
+ 			done = 0;
+ 			do {
+ 				/* Check for underflow */
+-				if (pe - SPINSZ < pe) {
++				if ((uintptr_t)(pe - SPINSZ) < (uintptr_t)pe) {
+ 					pe -= SPINSZ;
+ 				} else {
+ 					pe = start;
+@@ -623,7 +624,7 @@ void movinv32(int iter, ulong p1, ulong 
+ 		pat = p1;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+@@ -685,7 +686,7 @@ void movinv32(int iter, ulong p1, ulong 
+ 			pat = p1;
+ 			do {
+ 				/* Check for overflow */
+-				if (pe + SPINSZ > pe) {
++				if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 					pe += SPINSZ;
+ 				} else {
+ 					pe = end;
+@@ -798,7 +799,7 @@ void movinv32(int iter, ulong p1, ulong 
+ 			done = 0;
+ 			do {
+ 				/* Check for underflow */
+-				if (pe - SPINSZ < pe) {
++				if ((uintptr_t)(pe - SPINSZ) < (uintptr_t)pe) {
+ 					pe -= SPINSZ;
+ 				} else {
+ 					pe = start;
+@@ -906,7 +907,7 @@ void modtst(int offset, int iter, ulong 
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+@@ -951,7 +952,7 @@ void modtst(int offset, int iter, ulong 
+ 			k = 0;
+ 			do {
+ 				/* Check for overflow */
+-				if (pe + SPINSZ > pe) {
++				if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 					pe += SPINSZ;
+ 				} else {
+ 					pe = end;
+@@ -1009,7 +1010,7 @@ void modtst(int offset, int iter, ulong 
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ > pe) {
++			if ((uintptr_t)(pe + SPINSZ) > (uintptr_t)pe) {
+ 				pe += SPINSZ;
+ 			} else {
+ 				pe = end;
+@@ -1098,8 +1099,9 @@ void block_move(int iter)
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ*4 > pe) {
+-				pe += SPINSZ*4;
++			if ((uintptr_t)(pe + SPINSZ * sizeof(ulong)) >
++			    (uintptr_t)pe) {
++				pe += SPINSZ * sizeof(ulong);
+ 			} else {
+ 				pe = end;
+ 			}
+@@ -1167,8 +1169,9 @@ void block_move(int iter)
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ*4 > pe) {
+-				pe += SPINSZ*4;
++			if ((uintptr_t)(pe + SPINSZ * sizeof(ulong)) >
++			    (uintptr_t)pe) {
++				pe += SPINSZ * sizeof(ulong);
+ 			} else {
+ 				pe = end;
+ 			}
+@@ -1234,8 +1237,9 @@ void block_move(int iter)
+ 		done = 0;
+ 		do {
+ 			/* Check for overflow */
+-			if (pe + SPINSZ*4 > pe) {
+-				pe += SPINSZ*4;
++			if ((uintptr_t)(pe + SPINSZ * sizeof(ulong)) >
++			    (uintptr_t)pe) {
++				pe += SPINSZ * sizeof(ulong);
+ 			} else {
+ 				pe = end;
+ 			}
================================================================


More information about the pld-cvs-commit mailing list