From: "Randy.Dunlap" <rddunlap@osdl.org>
To: Roman Medina <roman@rs-labs.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: 2.4.26 doesn't compile? ("error: `__cmpxchg' previously defined here")
Date: Mon, 19 Apr 2004 12:56:47 -0700 [thread overview]
Message-ID: <20040419125647.2b19e83e.rddunlap@osdl.org> (raw)
In-Reply-To: <lq8880hq37q1b4ffpmn7idvj8gcqps5iqo@4ax.com>
On Mon, 19 Apr 2004 21:09:19 +0200 Roman Medina wrote:
| On Mon, 19 Apr 2004 10:27:10 -0700, you wrote:
|
| >| make[3]: Entering directory `/usr/src/linux-2.4.26/drivers/char/drm'
| >| gcc -D__KERNEL__ -I/usr/src/linux-2.4.26/include -Wall -Wstrict-prototypes
| >| -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer
| >| -pipe -mpreferred-stack-boundary=2 -march=i386 -DMODULE -DMODVERSIONS
| >| -include /usr/src/linux-2.4.26/include/linux/modversions.h -nostdinc
| >| -iwithprefix include -DKBUILD_BASENAME=gamma_drv -c -o gamma_drv.o
| >| gamma_drv.c
| >| In file included from gamma_drv.c:34:
| >| drmP.h:180: error: redefinition of `__cmpxchg'
| >| /usr/src/linux-2.4.26/include/asm/system.h:245: error: `__cmpxchg'
| >| previously defined here
| >| make[3]: *** [gamma_drv.o] Error 1
| >| make[3]: Leaving directory `/usr/src/linux-2.4.26/drivers/char/drm'
| >| make[2]: *** [_modsubdir_drm] Error 2
| >| make[2]: Leaving directory `/usr/src/linux-2.4.26/drivers/char'
| >| make[1]: *** [_modsubdir_char] Error 2
| >| make[1]: Leaving directory `/usr/src/linux-2.4.26/drivers'
| >| make: *** [_mod_drivers] Error 2
| >|
| >| Any ideas?
| >
| >Sure, build for more than CONFIG_M386=y.
| >I.e., build for a Pentium III etc. and it should work.
|
| Thanks a lot, Randy. It worked :-) But I'm wondering why the same
| config compiled perfectly on 2.4.25 and backwards. Which changes
| affect this issue?
That would be this changeset:
http://linux.bkbits.net:8080/linux-2.4/diffs/include/asm-i386/system.h@1.16?nav=index.html|src/|src/include|src/include/asm-i386|hist/include/asm-i386/system.h
This patch (below) works for me with your original i386 .config file.
--
~Randy
// linux-2.4.26
// drmP.h doesn't need local cmpxchg() and __cmpxchg();
diffstat:=
drivers/char/drm/drmP.h | 34 ++--------------------------------
1 files changed, 2 insertions(+), 32 deletions(-)
diff -Naurp ./drivers/char/drm/drmP.h~cmpxchg_notlocal ./drivers/char/drm/drmP.h
--- ./drivers/char/drm/drmP.h~cmpxchg_notlocal 2004-04-19 11:07:10.000000000 -0700
+++ ./drivers/char/drm/drmP.h 2004-04-19 13:02:55.000000000 -0700
@@ -52,6 +52,7 @@
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/smp_lock.h> /* For (un)lock_kernel */
+#include <linux/system.h> /* for cmpxchg() */
#include <linux/mm.h>
#include <linux/pagemap.h>
#if defined(__alpha__) || defined(__powerpc__)
@@ -174,38 +175,7 @@ __cmpxchg(volatile void *ptr, unsigned l
(unsigned long)_n_, sizeof(*(ptr))); \
})
-#elif __i386__
-static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
- unsigned long new, int size)
-{
- unsigned long prev;
- switch (size) {
- case 1:
- __asm__ __volatile__(LOCK_PREFIX "cmpxchgb %b1,%2"
- : "=a"(prev)
- : "q"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- case 2:
- __asm__ __volatile__(LOCK_PREFIX "cmpxchgw %w1,%2"
- : "=a"(prev)
- : "q"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- case 4:
- __asm__ __volatile__(LOCK_PREFIX "cmpxchgl %1,%2"
- : "=a"(prev)
- : "q"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- }
- return old;
-}
-
-#define cmpxchg(ptr,o,n) \
- ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o), \
- (unsigned long)(n),sizeof(*(ptr))))
-#endif /* i386 & alpha */
+#endif /* alpha */
#endif
#define __REALLY_HAVE_SG (__HAVE_SG)
next prev parent reply other threads:[~2004-04-19 20:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-19 8:16 Román Medina
2004-04-19 17:27 ` Randy.Dunlap
2004-04-19 19:09 ` Roman Medina
2004-04-19 19:56 ` Randy.Dunlap [this message]
2004-04-20 14:40 ` Marcelo Tosatti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040419125647.2b19e83e.rddunlap@osdl.org \
--to=rddunlap@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=roman@rs-labs.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®