openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
May 2008
- 1 participants
- 1421 discussions
Hello community,
here is the log from the commit of package memtest86+
checked in at Thu May 1 14:00:18 CEST 2008.
--------
--- arch/i386/memtest86+/memtest86+.changes 2007-08-10 12:58:17.000000000 +0200
+++ /mounts/work_src_done/STABLE/memtest86+/memtest86+.changes 2008-04-30 14:46:33.183033000 +0200
@@ -1,0 +2,12 @@
+Wed Apr 30 14:45:38 CEST 2008 - coolo(a)suse.de
+
+- update to 2.01 - among others:
+ - Solved a major bug in Memory Address Errors Reporting
+ - Patched for Intel-Powered Mac
+ - Pass duration 20% reduced
+ - Solved a incoherency with pass progress indicator
+ - Added support for 45 nm Mobile Core 2 w/ 3 Mo L2
+ - Corrected Intel 3-Series (P35/X38) chipset init
+- fix buffer overflows (bnc#359490) from Michael Matz
+
+-------------------------------------------------------------------
Old:
----
memtest86+-1.70.tar.gz
New:
----
fix-overflows.diff
memtest86+-2.01.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ memtest86+.spec ++++++
--- /var/tmp/diff_new_pack.R25945/_old 2008-05-01 13:59:58.000000000 +0200
+++ /var/tmp/diff_new_pack.R25945/_new 2008-05-01 13:59:58.000000000 +0200
@@ -1,7 +1,7 @@
#
-# spec file for package memtest86+ (Version 1.70)
+# spec file for package memtest86+ (Version 2.01)
#
-# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
@@ -9,14 +9,16 @@
#
+
Name: memtest86+
-Version: 1.70
-Release: 31
+Version: 2.01
+Release: 1
#
License: BSD 3-Clause
Group: System/Boot
#
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: cdrkit-cdrtools-compat
%ifarch x86_64
BuildRequires: glibc-devel-32bit
%endif
@@ -25,12 +27,13 @@
Obsoletes: memtest86 <= 3.2
Provides: memtest86 > 3.2
#
-URL: http://www.memtest.org
+Url: http://www.memtest.org
Source: http://www.memtest.org/download/%{version}/%{name}-%{version}.tar.gz
Patch0: fix-destdir
Patch1: include-linkonce
Patch2: serial-enable
Patch3: include-gnuhash
+Patch4: fix-overflows.diff
#
Summary: Memory Testing Image for x86 Architecture
@@ -59,6 +62,7 @@
%patch1 -p1
%patch2 -p1
%patch3 -p1
+%patch4 -p1
%build
%ifarch x86_64
@@ -86,14 +90,23 @@
%doc README* changelog FAQ
%changelog
-* Fri Aug 10 2007 - duwe(a)suse.de
+* Wed Apr 30 2008 coolo(a)suse.de
+- update to 2.01 - among others:
+ - Solved a major bug in Memory Address Errors Reporting
+ - Patched for Intel-Powered Mac
+ - Pass duration 20%% reduced
+ - Solved a incoherency with pass progress indicator
+ - Added support for 45 nm Mobile Core 2 w/ 3 Mo L2
+ - Corrected Intel 3-Series (P35/X38) chipset init
+- fix buffer overflows (bnc#359490) from Michael Matz
+* Fri Aug 10 2007 duwe(a)suse.de
- Do not fail to install if update-bootloader is not there.
-* Thu Aug 09 2007 - duwe(a)suse.de
+* Thu Aug 09 2007 duwe(a)suse.de
- Add memtest86+ to boot menu even if installed later
(Feature #301969)
-* Mon Feb 19 2007 - trenn(a)suse.de
+* Mon Feb 19 2007 trenn(a)suse.de
- added .gnu.hash section
-* Thu Jan 25 2007 - duwe(a)suse.de
+* Thu Jan 25 2007 duwe(a)suse.de
+ update to 1.70:
- Added new DMI polling feature (Thanks to Joachim D.)
- Added Support for Core/Core2 Solo/Duo/Quad CPU
@@ -107,7 +120,7 @@
- Added Support for Intel i975X
- Added Support for Intel Q965/P965
- Added Support for Intel Q963/Q965
-* Thu Nov 16 2006 - mrueckert(a)suse.de
+* Thu Nov 16 2006 mrueckert(a)suse.de
- switch to memtest86+ (http://www.memtest.org)
Compared to memtest86 3.2 it supports more hardware. and has
additional fixes. see http://www.memtest.org/#change for all
@@ -121,41 +134,41 @@
- cleaned up build section and directly use install instead of the
broken install target
- added changelog and FAQ to the docs
-* Wed Jan 25 2006 - mls(a)suse.de
+* Wed Jan 25 2006 mls(a)suse.de
- converted neededforbuild to BuildRequires
-* Tue May 10 2005 - duwe(a)suse.de
+* Tue May 10 2005 duwe(a)suse.de
- include *.gnu.linkonce.t.* sections in ld script,
to build cleanly on amd64 with gcc4
-* Mon Mar 14 2005 - duwe(a)suse.de
+* Mon Mar 14 2005 duwe(a)suse.de
- update to current version 3.2:
more support for current CPUs and chipsets
fix Bugs #60303 (duped #72202), #71215
-* Mon Mar 22 2004 - stepan(a)suse.de
+* Mon Mar 22 2004 stepan(a)suse.de
- update to 3.1a. This fixes compilation with gcc 3.x
- drop precompiled binary completely
- add ExclusiveArch for x86 and AMD64
-* Fri Mar 19 2004 - stepan(a)suse.de
+* Fri Mar 19 2004 stepan(a)suse.de
- update to v3.1
- remove gcc 2.95 exceptions
-* Sun Sep 08 2002 - kukuk(a)suse.de
+* Sun Sep 08 2002 kukuk(a)suse.de
- Add splitt alias [Bug #19111]
-* Thu Sep 05 2002 - garloff(a)suse.de
+* Thu Sep 05 2002 garloff(a)suse.de
- memtest86-3.0 seems to hang on some machines if the serial
console support is enabled, but no serial console connected.
Add a timeout waiting for the serial console. (Bug #18302)
-* Mon Sep 02 2002 - garloff(a)suse.de
+* Mon Sep 02 2002 garloff(a)suse.de
- Supply complete image (compiled by gcc-2.95), as I don't succeed
solving the gcc-3.2 problems at this moment. (#18302)
-* Sat Aug 31 2002 - garloff(a)suse.de
+* Sat Aug 31 2002 garloff(a)suse.de
- Supply main.s compiled with gcc-2.95 to work around problem with
gcc-3.2.
-* Tue Jul 30 2002 - garloff(a)suse.de
+* Tue Jul 30 2002 garloff(a)suse.de
- Split off lilo package.
-* Tue Jul 30 2002 - sf(a)suse.de
+* Tue Jul 30 2002 sf(a)suse.de
- added -m32 to compiler and linker for x86_64
- added --32 to as
- added glibc-devel-32bit for x86_64
-* Fri Jun 07 2002 - garloff(a)suse.de
+* Fri Jun 07 2002 garloff(a)suse.de
- Update to memtest86-3.0:
* Testing more than 2GB should work now.
* Use PIC instead of two copies
@@ -163,15 +176,15 @@
* ^l/l gives screen refresh (after connecting serial console)
* Netbooting operational again
* LinuxBIOS support (memory sizing)
-* Mon Apr 22 2002 - garloff(a)suse.de
+* Mon Apr 22 2002 garloff(a)suse.de
- Update to memtest86-2.9:
* Provide three memory sizing modes; default is conservative one
probably not testing all memory on some boards
* Testing more than 2GB supported
* Memory testing in segments. Minor bug fixes.
-* Fri Feb 15 2002 - mantel(a)suse.de
+* Fri Feb 15 2002 mantel(a)suse.de
- remove x bit from memtest.bin since it's not a Linux executable
-* Wed Dec 12 2001 - garloff(a)suse.de
+* Wed Dec 12 2001 garloff(a)suse.de
- Update to memtest86-2.8(a):
* Reworked build process; a network bootable boot image can be
produced
@@ -180,13 +193,13 @@
* Serial console disabled by default
- Reenabled memtest86 serial console (9600 8n1) ;-)
- Clean up .spec file a bit
-* Mon Jul 16 2001 - uli(a)suse.de
+* Mon Jul 16 2001 uli(a)suse.de
- update memtest -> 2.7
-* Mon Apr 09 2001 - garloff(a)suse.de
+* Mon Apr 09 2001 garloff(a)suse.de
- memtest86: Correct units (cosmetic)
-* Thu Dec 21 2000 - garloff(a)suse.de
+* Thu Dec 21 2000 garloff(a)suse.de
- Update memtest86 to v2.5 final.
-* Wed Nov 29 2000 - garloff(a)suse.de
+* Wed Nov 29 2000 garloff(a)suse.de
- Update memtest86 to v2.5-beta (Athlon/Duron support)
-* Mon Aug 28 2000 - garloff(a)suse.de
+* Mon Aug 28 2000 garloff(a)suse.de
- Added memtest86-2.4.
++++++ fix-overflows.diff ++++++
diff -urp memtest86+-2.01.mm/io.h memtest86+-2.01/io.h
--- memtest86+-2.01.mm/io.h 2008-02-21 12:26:05.000000000 +0100
+++ memtest86+-2.01/io.h 2008-04-30 12:32:34.787275000 +0200
@@ -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)); }
diff -urp memtest86+-2.01.mm/test.c memtest86+-2.01/test.c
--- memtest86+-2.01.mm/test.c 2008-02-21 12:26:05.000000000 +0100
+++ memtest86+-2.01/test.c 2008-04-30 14:15:56.666389000 +0200
@@ -25,6 +25,22 @@ void poll_errors();
int ecount = 0;
+static inline volatile ulong * sat_add(volatile ulong *ptr, ulong i, volatile ulong *end)
+{
+ if ((ulong)ptr + i * sizeof(*ptr) > (ulong)ptr)
+ return ptr + i;
+ else
+ return end;
+}
+
+static inline volatile ulong * sat_sub(volatile ulong *ptr, ulong i, volatile ulong *start)
+{
+ if ((ulong)ptr > i * sizeof(*ptr))
+ return ptr - i;
+ else
+ return start;
+}
+
static inline ulong roundup(ulong value, ulong mask)
{
return (value + mask) & ~mask;
@@ -150,11 +166,7 @@ void addr_tst2()
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -194,11 +206,7 @@ void addr_tst2()
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -280,11 +288,7 @@ void movinvr()
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -331,11 +335,7 @@ void movinvr()
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -419,7 +419,8 @@ void movinv1(int iter, ulong p1, ulong p
hprint(LINE_PAT, COL_PAT, p1);
/* Initialize memory with the initial pattern. */
- for (j=0; j<segs; j++) {
+ for (j=0; j<segs; j++)
+ {
start = v->map[j].start;
end = v->map[j].end;
pe = start;
@@ -427,11 +428,7 @@ void movinv1(int iter, ulong p1, ulong p
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -440,17 +437,19 @@ void movinv1(int iter, ulong p1, ulong p
if (p == 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);
@@ -460,7 +459,8 @@ void movinv1(int iter, ulong p1, ulong p
* write the complement for each memory location. Test from bottom
* up and then from the top down. */
for (i=0; i<iter; i++) {
- for (j=0; j<segs; j++) {
+ for (j=0; j<segs; j++)
+ {
start = v->map[j].start;
end = v->map[j].end;
pe = start;
@@ -468,11 +468,7 @@ void movinv1(int iter, ulong p1, ulong p
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -480,14 +476,16 @@ void movinv1(int iter, ulong p1, ulong p
if (p == 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" \
@@ -522,10 +520,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;
@@ -534,11 +534,7 @@ void movinv1(int iter, ulong p1, ulong p
done = 0;
do {
/* Check for underflow */
- if (pe - SPINSZ < pe) {
- pe -= SPINSZ;
- } else {
- pe = start;
- }
+ pe = sat_sub(pe, SPINSZ, start);
if (pe <= start) {
pe = start;
done++;
@@ -546,14 +542,16 @@ void movinv1(int iter, ulong p1, ulong p
if (p == 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"
@@ -590,6 +588,7 @@ void movinv1(int iter, ulong p1, ulong p
: "a" (p1), "0" (p), "d" (pe), "b" (p2)
: "ecx"
);
+#endif
do_tick();
BAILR
} while (!done);
@@ -623,11 +622,7 @@ void movinv32(int iter, ulong p1, ulong
pat = p1;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -685,11 +680,7 @@ void movinv32(int iter, ulong p1, ulong
pat = p1;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -798,11 +789,7 @@ void movinv32(int iter, ulong p1, ulong
done = 0;
do {
/* Check for underflow */
- if (pe - SPINSZ < pe) {
- pe -= SPINSZ;
- } else {
- pe = start;
- }
+ pe = sat_sub(pe, SPINSZ, start);
if (pe <= start) {
pe = start;
done++;
@@ -906,11 +893,7 @@ void modtst(int offset, int iter, ulong
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -951,11 +934,7 @@ void modtst(int offset, int iter, ulong
k = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
@@ -1009,11 +988,7 @@ void modtst(int offset, int iter, ulong
done = 0;
do {
/* Check for overflow */
- if (pe + SPINSZ > pe) {
- pe += SPINSZ;
- } else {
- pe = end;
- }
+ pe = sat_add(pe, SPINSZ, end);
if (pe >= end) {
pe = end;
done++;
++++++ memtest86+-1.70.tar.gz -> memtest86+-2.01.tar.gz ++++++
++++ 4379 lines of diff (skipped)
++++++ serial-enable ++++++
--- /var/tmp/diff_new_pack.R25945/_old 2008-05-01 13:59:58.000000000 +0200
+++ /var/tmp/diff_new_pack.R25945/_new 2008-05-01 13:59:58.000000000 +0200
@@ -1,6 +1,5 @@
-diff -ur memtest86+-1.70.orig/config.h memtest86+-1.70/config.h
---- memtest86+-1.70.orig/config.h 2006-12-27 02:33:06.000000000 +0100
-+++ memtest86+-1.70/config.h 2007-01-25 16:34:01.000000000 +0100
+--- memtest86+-2.01/config.h
++++ memtest86+-2.01/config.h
@@ -13,7 +13,7 @@
/* SERIAL_CONSOLE_DEFAULT - The default state of the serial console. */
/* This is normally off since it slows down testing. Change to a 1 */
@@ -8,20 +7,19 @@
-#define SERIAL_CONSOLE_DEFAULT 0
+#define SERIAL_CONSOLE_DEFAULT 1
- /* SERIAL_BAUD_RATE - Baud rate for the serial console */
- #define SERIAL_BAUD_RATE 9600
-diff -ur memtest86+-1.70.orig/init.c memtest86+-1.70/init.c
---- memtest86+-1.70.orig/init.c 2007-01-04 08:19:43.000000000 +0100
-+++ memtest86+-1.70/init.c 2007-01-25 16:34:31.000000000 +0100
-@@ -29,6 +29,7 @@
- static void cpu_type(void);
+ /* SERIAL_TTY - The default serial port to use. 0=ttyS0, 1=ttyS1 */
+ #define SERIAL_TTY 0
+--- memtest86+-2.01/init.c
++++ memtest86+-2.01/init.c
+@@ -40,6 +40,7 @@
static void cacheable(void);
static int cpuspeed(void);
+ int beepmode;
+extern short serial_cons;
static void display_init(void)
{
-@@ -65,6 +66,9 @@
+@@ -76,6 +77,9 @@
}
serial_echo_print("\x1B[0m");
@@ -31,11 +29,10 @@
}
/*
-diff -ur memtest86+-1.70.orig/serial.h memtest86+-1.70/serial.h
---- memtest86+-1.70.orig/serial.h 2006-12-27 02:33:06.000000000 +0100
-+++ memtest86+-1.70/serial.h 2007-01-25 16:34:31.000000000 +0100
+--- memtest86+-2.01/serial.h
++++ memtest86+-2.01/serial.h
@@ -140,10 +140,12 @@
- #define serial_echo_inb(a) inb((a)+0x3f8)
+ #define serial_echo_inb(a) inb((a)+serial_base_ports[serial_tty])
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
/* Wait for transmitter & holding register to empty */
-#define WAIT_FOR_XMITR \
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0