Thomas Renninger 2010-08-30 11:03:50 +00:00 committed by Git OBS Bridge
parent ae509c5ff8
commit 02eed58132
6 changed files with 9 additions and 205 deletions

View File

@ -1,39 +0,0 @@
Declare functions static not extern they are only used inside this file
---
io.h | 6 +++---
test.c | 51 ++++++++++++++++++++++++++++++---------------------
2 files changed, 33 insertions(+), 24 deletions(-)
Index: memtest86+-4.00/io.h
===================================================================
--- memtest86+-4.00.orig/io.h
+++ memtest86+-4.00/io.h
@@ -31,7 +31,7 @@
*/
#define __OUT1(s,x) \
-extern inline void __out##s(unsigned x value, unsigned short port) {
+static inline void __out##s(unsigned x value, unsigned short port) {
#define __OUT2(s,s1,s2) \
__asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1"
@@ -43,7 +43,7 @@ __OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a"
__OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; }
#define __IN1(s) \
-extern inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v;
+static inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v;
#define __IN2(s,s1,s2) \
__asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0"
@@ -55,7 +55,7 @@ __IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v)
__IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; }
#define __OUTS(s) \
-extern inline void outs##s(unsigned short port, const void * addr, unsigned long count) \
+static inline void outs##s(unsigned short port, const void * addr, unsigned long count) \
{ __asm__ __volatile__ ("cld ; rep ; outs" #s \
: "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); }

View File

@ -1,11 +0,0 @@
diff -ur memtest86+-1.70.orig/memtest_shared.lds memtest86+-1.70/memtest_shared.lds
--- memtest86+-1.70.orig/memtest_shared.lds 2006-12-27 02:33:06.000000000 +0100
+++ memtest86+-1.70/memtest_shared.lds 2007-01-25 16:34:19.000000000 +0100
@@ -8,6 +8,7 @@
_start = .;
*(.text)
*(.text.*)
+ *(.gnu.linkonce.t.*)
*(.plt)
_etext = . ;
} = 0x9090

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Mon Aug 30 09:59:35 UTC 2010 - trenn@novell.com
- Remove old patches. Asked for inclusion, but not needed anymore:
Patch 1/3 : No need to include.
Patch 2/3 : Patch for Mt86+ 2.01. Will broke 4.10. Bug already patched in a
cleaner way
Patch 3/3 : Really no need. It's only a different way to add some comments.
-------------------------------------------------------------------
Fri Aug 27 15:41:16 UTC 2010 - trenn@novell.com

View File

@ -38,11 +38,6 @@ Url: http://www.memtest.org
Source: http://www.memtest.org/download/%{version}/%{name}-%{version}.tar.bz2
Patch0: fix-destdir
Patch1: serial-enable
Patch2: include-linkonce
Patch3: declare-static.diff
Patch4: use_assembler_routine.patch
Patch5: work-around-4G-virtual-overflow
#
Summary: Memory Testing Image for x86 Architecture
%description
@ -68,10 +63,6 @@ Authors:
%setup
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build
%ifarch x86_64

View File

@ -1,104 +0,0 @@
Use assember code, don't execute the functions twice
Index: memtest86+-4.00/test.c
===================================================================
--- memtest86+-4.00.orig/test.c
+++ memtest86+-4.00/test.c
@@ -444,17 +444,19 @@ void movinv1(int iter, ulong p1, ulong p
if ((uintptr_t)p == (uintptr_t)pe) {
break;
}
-/* Original C code replaced with hand tuned assembly code
- * for (; p < pe; p++) {
- * *p = p1;
- * }
- */
+/* Original C code replaced with hand tuned assembly code */
+#if 0
+ for (; p < pe; p++) {
+ *p = p1;
+ }
+#else
asm __volatile__ (
"rep\n\t" \
"stosl\n\t"
: "=D" (p)
: "c" (len), "0" (p), "a" (p1)
);
+#endif
do_tick();
BAILR
} while (!done);
@@ -484,14 +486,16 @@ void movinv1(int iter, ulong p1, ulong p
if ((uintptr_t)p == (uintptr_t)pe) {
break;
}
-/* Original C code replaced with hand tuned assembly code
- * for (; p < pe; p++) {
- * if ((bad=*p) != p1) {
- * error((ulong*)p, p1, bad);
- * }
- * *p = p2;
- * }
- */
+/* Original C code replaced with hand tuned assembly code */
+#if 0
+ for (; p < pe; p++) {
+ ulong bad;
+ if ((bad=*p) != p1) {
+ error((ulong*)p, p1, bad);
+ }
+ *p = p2;
+ }
+#else
asm __volatile__ (
"jmp L2\n\t" \
@@ -526,10 +530,12 @@ void movinv1(int iter, ulong p1, ulong p
: "a" (p1), "0" (p), "d" (pe), "b" (p2)
: "ecx"
);
+#endif
do_tick();
BAILR
} while (!done);
}
+
for (j=segs-1; j>=0; j--) {
start = v->map[j].start;
end = v->map[j].end;
@@ -550,14 +556,16 @@ void movinv1(int iter, ulong p1, ulong p
if ((uintptr_t)p == (uintptr_t)pe) {
break;
}
-/* Original C code replaced with hand tuned assembly code
- * do {
- * if ((bad=*p) != p2) {
- * error((ulong*)p, p2, bad);
- * }
- * *p = p1;
- * } while (p-- > pe);
- */
+/* Original C code replaced with hand tuned assembly code */
+#if 0
+ do {
+ ulong bad;
+ if ((bad=*p) != p2) {
+ error((ulong*)p, p2, bad);
+ }
+ *p = p1;
+ } while (p-- > pe);
+#else
asm __volatile__ (
"addl $4, %%edi\n\t"
"jmp L9\n\t"
@@ -594,6 +602,7 @@ void movinv1(int iter, ulong p1, ulong p
: "a" (p1), "0" (p), "d" (pe), "b" (p2)
: "ecx"
);
+#endif
do_tick();
BAILR
} while (!done);

View File

@ -1,42 +0,0 @@
--- memtest86+-2.01/init.c.orig 2008-11-26 13:28:22.000000000 +0100
+++ memtest86+-2.01/init.c 2008-11-28 16:06:50.000000000 +0100
@@ -238,7 +238,7 @@
unsigned long addr_hi;
};
extern unsigned char pdp[];
- extern struct pde pd2[];
+ extern struct pde pd1[];
unsigned long window = page >> 19;
if (FLAT || (window == mapped_window)) {
return 0;
@@ -266,11 +266,11 @@
* Bit 6 = Dirty. 1 = memory has been written to.
* Bit 7 = Page Size. 1 = page size is 2 MBytes
* --------------------------------------------------*/
- pd2[i].addr_lo = ((window & 1) << 31) + ((i & 0x3ff) << 21) + 0xE3;
- pd2[i].addr_hi = (window >> 1);
+ pd1[i].addr_lo = ((window & 1) << 31) + ((i & 0x3ff) << 21) + 0xE3;
+ pd1[i].addr_hi = (window >> 1);
}
paging_off();
- if (window > 1) {
+ if (window > 0) {
paging_on(pdp);
}
mapped_window = window;
@@ -281,13 +281,13 @@
{
void *result;
if (FLAT || (page_addr < 0x80000)) {
- /* If the address is less that 1GB directly use the address */
+ /* If the address is less than 2GB directly use the address */
result = (void *)(page_addr << 12);
}
else {
unsigned long alias;
alias = page_addr & 0x7FFFF;
- alias += 0x80000;
+ alias += 0x40000;
result = (void *)(alias << 12);
}
return result;