* 2.4.0-testX fails to compile on my Athlon
@ 2001-01-01 0:42 Matt Wright
2001-01-01 20:01 ` wish-kernel
2001-01-02 8:51 ` [PATCH] " Tom Leete
0 siblings, 2 replies; 7+ messages in thread
From: Matt Wright @ 2001-01-01 0:42 UTC (permalink / raw)
To: linux-kernel
I've looked for answers to this question before, but all I could find was
someone asking a similar question and no replies...
I'm having great trouble getting 2.4.0-testX to compile on my system when
I select Athlon/K7 as the Processor Family....
I've attached below the error's I'm getting.... the kernel DOES compile if
I select anything else... but I don't have anything else :)
gcc version = 2.95.2
GNU Make version 3.79.1
GNU ld version 2.9.1 (with BFD 2.9.1.0.25)
fdformat from util-linux-2.10o
insmod version 2.3.21
I'd hope someone has an answer on how to fix this
Matt Wright
----------------------------------------------------------------------------
[root@dipsy linux]# make bzImage
gcc -D__KERNEL__ -I/root/source/linux/include -Wall -Wstrict-prototypes
-O2 -fomit-frame-pointer -fno-strict-aliasing -pipe
-mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -c -o
init/main.o init/main.c
In file included from /root/source/linux/include/linux/irq.h:57,
from /root/source/linux/include/asm/hardirq.h:6,
from /root/source/linux/include/linux/interrupt.h:45,
from /root/source/linux/include/asm/string.h:296,
from /root/source/linux/include/linux/string.h:21,
from /root/source/linux/include/linux/fs.h:23,
from /root/source/linux/include/linux/capability.h:17,
from /root/source/linux/include/linux/binfmts.h:5,
from /root/source/linux/include/linux/sched.h:9,
from /root/source/linux/include/linux/mm.h:4,
from /root/source/linux/include/linux/slab.h:14,
from /root/source/linux/include/linux/malloc.h:4,
from /root/source/linux/include/linux/proc_fs.h:5,
from init/main.c:15:
/root/source/linux/include/asm/hw_irq.h: In function `x86_do_profile':
/root/source/linux/include/asm/hw_irq.h:198: `current' undeclared (first
use in this function)
/root/source/linux/include/asm/hw_irq.h:198: (Each undeclared identifier
is reported only once
/root/source/linux/include/asm/hw_irq.h:198: for each function it appears
in.)
In file included from /root/source/linux/include/asm/string.h:296,
from /root/source/linux/include/linux/string.h:21,
from /root/source/linux/include/linux/fs.h:23,
from /root/source/linux/include/linux/capability.h:17,
from /root/source/linux/include/linux/binfmts.h:5,
from /root/source/linux/include/linux/sched.h:9,
from /root/source/linux/include/linux/mm.h:4,
from /root/source/linux/include/linux/slab.h:14,
from /root/source/linux/include/linux/malloc.h:4,
from /root/source/linux/include/linux/proc_fs.h:5,
from init/main.c:15:
/root/source/linux/include/linux/interrupt.h: In function `raise_softirq':
/root/source/linux/include/linux/interrupt.h:89: `current' undeclared
(first use in this function)
/root/source/linux/include/linux/interrupt.h: In function
`tasklet_schedule':
/root/source/linux/include/linux/interrupt.h:160: `current' undeclared
(first use in this function)
/root/source/linux/include/linux/interrupt.h: In function
`tasklet_hi_schedule':/root/source/linux/include/linux/interrupt.h:174: `current'
undeclared (first use in this function)
In file included from /root/source/linux/include/linux/string.h:21,
from /root/source/linux/include/linux/fs.h:23,
from /root/source/linux/include/linux/capability.h:17,
from /root/source/linux/include/linux/binfmts.h:5,
from /root/source/linux/include/linux/sched.h:9,
from /root/source/linux/include/linux/mm.h:4,
from /root/source/linux/include/linux/slab.h:14,
from /root/source/linux/include/linux/malloc.h:4,
from /root/source/linux/include/linux/proc_fs.h:5,
from init/main.c:15:
/root/source/linux/include/asm/string.h: In function
`__constant_memcpy3d':
/root/source/linux/include/asm/string.h:305: `current' undeclared (first
use in this function)
/root/source/linux/include/asm/string.h: In function `__memcpy3d':
/root/source/linux/include/asm/string.h:312: `current' undeclared (first
use in this function)
make: *** [init/main.o] Error 1
[root@dipsy linux]#
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.0-testX fails to compile on my Athlon
2001-01-01 0:42 2.4.0-testX fails to compile on my Athlon Matt Wright
@ 2001-01-01 20:01 ` wish-kernel
2001-01-01 22:44 ` Matt Wright
2001-01-02 8:51 ` [PATCH] " Tom Leete
1 sibling, 1 reply; 7+ messages in thread
From: wish-kernel @ 2001-01-01 20:01 UTC (permalink / raw)
To: Matt Wright; +Cc: linux-kernel
> I've looked for answers to this question before, but all I could find was
> someone asking a similar question and no replies...
>
> I'm having great trouble getting 2.4.0-testX to compile on my system when
> I select Athlon/K7 as the Processor Family....
[snip]
> /root/source/linux/include/asm/string.h: In function `__memcpy3d':
> /root/source/linux/include/asm/string.h:312: `current' undeclared (first
> use in this function)
> make: *** [init/main.o] Error 1
> [root@dipsy linux]#
Are you trying to compile for SMP as well? I've seen similar
errors when selecting Athlon with SMP by mistake.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: 2.4.0-testX fails to compile on my Athlon
2001-01-01 20:01 ` wish-kernel
@ 2001-01-01 22:44 ` Matt Wright
0 siblings, 0 replies; 7+ messages in thread
From: Matt Wright @ 2001-01-01 22:44 UTC (permalink / raw)
To: wish-kernel; +Cc: linux-kernel
On Mon, 1 Jan 2001 wish-kernel@dumain.com wrote:
> Are you trying to compile for SMP as well? I've seen similar
> errors when selecting Athlon with SMP by mistake.
well.. silly me :)... I did have SMP enabled (it appears that's the
default option? but anyways...now I get a whole slew of other
errors.... which I'm not going to go into right now, cos that would
involve spamming everyone with about 4 pages of spam
Matt
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] Re: 2.4.0-testX fails to compile on my Athlon
2001-01-01 0:42 2.4.0-testX fails to compile on my Athlon Matt Wright
2001-01-01 20:01 ` wish-kernel
@ 2001-01-02 8:51 ` Tom Leete
1 sibling, 0 replies; 7+ messages in thread
From: Tom Leete @ 2001-01-02 8:51 UTC (permalink / raw)
To: Matt Wright; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1340 bytes --]
Matt Wright wrote:
>
> I've looked for answers to this question before, but all I could find was
> someone asking a similar question and no replies...
>
> I'm having great trouble getting 2.4.0-testX to compile on my system when
> I select Athlon/K7 as the Processor Family....
>
> I've attached below the error's I'm getting.... the kernel DOES compile if
> I select anything else... but I don't have anything else :)
>
Hello,
The problem with SMP+K7 builds is that include/asm-i386/string.h has no
business using in_interrupt(). That introduces circular dependencies which
nobody has been able to rearrange away.
Here is a patch I've posted here several times. It moves the mmx functions
from string.h to arch/i386/lib/mmx.c (lib.a).It does not __inline__ the call
for memcpy() of large or unknown length. Athlon supposedly does branch
prediction for function pointers, so that shouldn't hurt too much. The point
is to get it to build: optimize later.
The actual usefulness of this may be limited to development on UP machines.
I don't know whether the AMD-760 SMP boards will be compatable with Linux
SMP. Hearsay is that they will have significant architectural differences
with Intel flavored SMP boards.
Cheers,
Tom
Patch as attachment to avoid mailer brain damage. It has not been tested
lately, but still applies cleanish.
[-- Attachment #2: k7-smp.patch --]
[-- Type: text/plain, Size: 2151 bytes --]
--- linux/arch/i386/lib/mmx.c.orig Wed Oct 27 21:30:39 1999
+++ linux/arch/i386/lib/mmx.c Tue Jun 6 04:20:01 2000
@@ -1,6 +1,7 @@
#include <linux/types.h>
#include <linux/string.h>
#include <linux/sched.h>
+#include <asm/hardirq.h>
/*
* MMX 3DNow! library helper functions
@@ -88,6 +89,21 @@
stts();
return p;
}
+
+void * __constant_mmx_memcpy3d(void * to, const void * from, size_t len)
+{
+ if(in_interrupt())
+ return __constant_memcpy(to, from, len);
+ return _mmx_memcpy(to, from, len);
+}
+
+void *__mmx_memcpy3d(void *to, const void *from, size_t len)
+{
+ if(in_interrupt())
+ return __memcpy(to, from, len);
+ return _mmx_memcpy(to, from, len);
+}
+
static void fast_clear_page(void *page)
{
--- linux/include/asm-i386/mmx.h.orig Tue Jun 6 03:05:02 2000
+++ linux/include/asm-i386/mmx.h Tue Jun 6 04:25:27 2000
@@ -10,5 +10,7 @@
extern void *_mmx_memcpy(void *to, const void *from, size_t size);
extern void mmx_clear_page(void *page);
extern void mmx_copy_page(void *to, void *from);
+extern __inline__ void *__constant_mmx_memcpy3d(void * to, const void * from, size_t len);
+extern __inline__ void *__mmx_memcpy3d(void *to, const void *from, size_t len);
#endif
--- linux/include/asm-i386/string.h.orig Tue Jun 6 03:05:02 2000
+++ linux/include/asm-i386/string.h Tue Jun 6 04:30:37 2000
@@ -287,13 +287,6 @@
#ifdef CONFIG_X86_USE_3DNOW
-/* All this just for in_interrupt() ... */
-
-#include <asm/system.h>
-#include <asm/ptrace.h>
-#include <linux/smp.h>
-#include <linux/spinlock.h>
-#include <linux/interrupt.h>
#include <asm/mmx.h>
/*
@@ -302,16 +295,16 @@
static inline void * __constant_memcpy3d(void * to, const void * from, size_t len)
{
- if(len<512 || in_interrupt())
+ if(len<512)
return __constant_memcpy(to, from, len);
- return _mmx_memcpy(to, from, len);
+ return __constant_mmx_memcpy3d(to, from, len);
}
extern __inline__ void *__memcpy3d(void *to, const void *from, size_t len)
{
- if(len<512 || in_interrupt())
+ if(len<512)
return __memcpy(to, from, len);
- return _mmx_memcpy(to, from, len);
+ return __mmx_memcpy3d(to, from, len);
}
#define memcpy(t, f, n) \
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Re: 2.4.0-testX fails to compile on my Athlon
2001-01-02 18:44 Petr Vandrovec
@ 2001-01-02 18:02 ` Alan Cox
[not found] ` <3A52D390.AB56FFF2@mountain.net>
1 sibling, 0 replies; 7+ messages in thread
From: Alan Cox @ 2001-01-02 18:02 UTC (permalink / raw)
To: Petr Vandrovec; +Cc: tleete, linux-kernel
> For 2.4.0, probably disabling 3DNow in kernel when using SMP is best
> solution, as AFAIK nobody tested correctness of 3DNow code on SMP... Or is
> it obviously correct?
Its obviously correct. At least if it doesnt work the MMX/XMM code for
raid should also fail horribly ;)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Re: 2.4.0-testX fails to compile on my Athlon
@ 2001-01-02 18:44 Petr Vandrovec
2001-01-02 18:02 ` Alan Cox
[not found] ` <3A52D390.AB56FFF2@mountain.net>
0 siblings, 2 replies; 7+ messages in thread
From: Petr Vandrovec @ 2001-01-02 18:44 UTC (permalink / raw)
To: tleete; +Cc: linux-kernel
On 2 Jan 01 at 3:51, Tom Leete wrote:
> Matt Wright wrote:
> >
> > I've looked for answers to this question before, but all I could find was
> > someone asking a similar question and no replies...
> >
> > I'm having great trouble getting 2.4.0-testX to compile on my system when
> > I select Athlon/K7 as the Processor Family....
> >
> > I've attached below the error's I'm getting.... the kernel DOES compile if
> > I select anything else... but I don't have anything else :)
>
> The problem with SMP+K7 builds is that include/asm-i386/string.h has no
> business using in_interrupt(). That introduces circular dependencies which
> nobody has been able to rearrange away.
I solved it by porting check_asm code from arch/sparc into i386 (I
had to learn check_asm about 'union'), and then replacing
smp_processor_id() define in smp.h with
#include <asm/asm_offsets.h>
#include <asm/current.h>
#define smp_processor_id() (*(int*)(((unsigned char*)current)+AOFF_task_processor))
So now I still have real spinlocks (so I can debug some problems with
nested console_lock), but inline memcpy...
Unfortunately, real diff is at home... And it has one bad side effect, that
you must rerun 'make dep' manually if you modify task_struct in
linux/sched.h, as asm/asm_offsets.h -> linux/sched.h dependancy is not
handled by makefiles. But I do not do this modification very often,
fortunately... Maybe if I placed check_asm somewhere else than where sparc
tree has it...
For 2.4.0, probably disabling 3DNow in kernel when using SMP is best
solution, as AFAIK nobody tested correctness of 3DNow code on SMP... Or is
it obviously correct?
Best regards,
Petr Vandrovec
vandrove@vc.cvut.cz
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Re: 2.4.0-testX fails to compile on my Athlon
[not found] ` <3A52D390.AB56FFF2@mountain.net>
@ 2001-01-03 11:20 ` Petr Vandrovec
0 siblings, 0 replies; 7+ messages in thread
From: Petr Vandrovec @ 2001-01-03 11:20 UTC (permalink / raw)
To: linux-kernel; +Cc: tleete
Petr Vandrovec wrote:
>
> Unfortunately, real diff is at home... And it has one bad side effect, that
> you must rerun 'make dep' manually if you modify task_struct in
> linux/sched.h, as asm/asm_offsets.h -> linux/sched.h dependancy is not
> handled by makefiles. But I do not do this modification very often,
> fortunately... Maybe if I placed check_asm somewhere else than where sparc
> tree has it...
>
So diff is not at home anymore... Maybe it should be polished more,
as #ifdef CHECK_ASM in smp.h is not nice (probably generating dummy asm_offsets.h
for check_asm pass), but after I looked at code generated by this patch and
by Tim's patch, I think that Tim's approach with moving in_interrupt() testing
out-of-line from asm/string.h is better.
Best regards,
Petr Vandrovec
vandrove@vc.cvut.cz
diff -urdN linux/arch/i386/Makefile linux/arch/i386/Makefile
--- linux/arch/i386/Makefile Fri Dec 29 22:07:19 2000
+++ linux/arch/i386/Makefile Wed Jan 3 10:07:10 2001
@@ -139,5 +139,8 @@
archmrproper:
-archdep:
+archdep: check_asm
@$(MAKEBOOT) dep
+
+check_asm:
+ $(MAKE) -C arch/i386/kernel check_asm
diff -urdN linux/arch/i386/kernel/Makefile linux/arch/i386/kernel/Makefile
--- linux/arch/i386/kernel/Makefile Fri Dec 29 22:35:47 2000
+++ linux/arch/i386/kernel/Makefile Wed Jan 3 10:32:20 2001
@@ -7,6 +7,8 @@
#
# Note 2! The CFLAGS definitions are now in the main makefile...
+SH := $(CONFIG_SHELL)
+
.S.o:
$(CC) $(AFLAGS) -traditional -c $< -o $*.o
@@ -40,5 +42,95 @@
obj-$(CONFIG_X86_LOCAL_APIC) += apic.o
obj-$(CONFIG_X86_IO_APIC) += io_apic.o mpparse.o
obj-$(CONFIG_X86_VISWS_APIC) += visws_apic.o
+
+check_asm: dummy
+ @if [ ! -r $(HPATH)/asm/asm_offsets.h ] ; then \
+ touch $(HPATH)/asm/asm_offsets.h ; \
+ fi
+ @echo "/* Automatically generated. Do not edit. */" > asm_offsets.h
+ @echo "#ifndef __ASM_OFFSETS_H__" >> asm_offsets.h
+ @echo "#define __ASM_OFFSETS_H__" >> asm_offsets.h
+ @echo "" >> asm_offsets.h
+ @echo "#include <linux/config.h>" >> asm_offsets.h
+ @echo "" >> asm_offsets.h
+ @echo "#ifndef CONFIG_SMP" >> asm_offsets.h
+ @echo "" >> asm_offsets.h
+ @echo "#include <linux/config.h>" > tmp.c
+ @echo "#undef CONFIG_SMP" >> tmp.c
+ @echo "#include <linux/sched.h>" >> tmp.c
+ $(CPP) $(CPPFLAGS) tmp.c -o tmp.i
+ @echo "/* Automatically generated. Do not edit. */" > check_asm_data.c
+ @echo "#include <linux/config.h>" >> check_asm_data.c
+ @echo "#undef CONFIG_SMP" >> check_asm_data.c
+ @echo "#include <linux/sched.h>" >> check_asm_data.c
+ @echo "unsigned int check_asm_data[] = {" >> check_asm_data.c
+ $(SH) ./check_asm.sh -data task tmp.i check_asm_data.c
+ $(SH) ./check_asm.sh -data mm tmp.i check_asm_data.c
+ $(SH) ./check_asm.sh -data thread tmp.i check_asm_data.c
+ @echo '};' >> check_asm_data.c
+ $(CC) $(CFLAGS) -DCHECK_ASM -S -o check_asm_data.s check_asm_data.c
+ @echo "/* Automatically generated. Do not edit. */" > check_asm.c
+ @echo 'extern int printf(const char *fmt, ...);' >>check_asm.c
+ @echo "unsigned int check_asm_data[] = {" >> check_asm.c
+ $(SH) ./check_asm.sh -ints check_asm_data.s check_asm.c
+ @echo "};" >> check_asm.c
+ @echo 'int main(void) {' >> check_asm.c
+ @echo 'int i = 0;' >> check_asm.c
+ $(SH) ./check_asm.sh -printf task tmp.i check_asm.c
+ $(SH) ./check_asm.sh -printf mm tmp.i check_asm.c
+ $(SH) ./check_asm.sh -printf thread tmp.i check_asm.c
+ @echo 'return 0; }' >> check_asm.c
+ @rm -f tmp.[ci] check_asm_data.[cs]
+ $(HOSTCC) -o check_asm check_asm.c
+ ./check_asm >> asm_offsets.h
+ @rm -f check_asm check_asm.c
+ @echo "" >> asm_offsets.h
+ @echo "#else /* CONFIG_SMP */" >> asm_offsets.h
+ @echo "" >> asm_offsets.h
+ @echo "#include <linux/config.h>" > tmp.c
+ @echo "#undef CONFIG_SMP" >> tmp.c
+ @echo "#define CONFIG_SMP 1" >> tmp.c
+ @echo "#include <linux/sched.h>" >> tmp.c
+ $(CPP) $(CPPFLAGS) tmp.c -o tmp.i
+ @echo "/* Automatically generated. Do not edit. */" > check_asm_data.c
+ @echo "#include <linux/config.h>" >> check_asm_data.c
+ @echo "#undef CONFIG_SMP" >> check_asm_data.c
+ @echo "#define CONFIG_SMP 1" >> check_asm_data.c
+ @echo "#include <linux/sched.h>" >> check_asm_data.c
+ @echo "unsigned int check_asm_data[] = {" >> check_asm_data.c
+ $(SH) ./check_asm.sh -data task tmp.i check_asm_data.c
+ $(SH) ./check_asm.sh -data mm tmp.i check_asm_data.c
+ $(SH) ./check_asm.sh -data thread tmp.i check_asm_data.c
+ @echo '};' >> check_asm_data.c
+ $(CC) $(CFLAGS) -DCHECK_ASM -S -o check_asm_data.s check_asm_data.c
+ @echo "/* Automatically generated. Do not edit. */" > check_asm.c
+ @echo 'extern int printf(const char *fmt, ...);' >>check_asm.c
+ @echo "unsigned int check_asm_data[] = {" >> check_asm.c
+ $(SH) ./check_asm.sh -ints check_asm_data.s check_asm.c
+ @echo "};" >> check_asm.c
+ @echo 'int main(void) {' >> check_asm.c
+ @echo 'int i = 0;' >> check_asm.c
+ $(SH) ./check_asm.sh -printf task tmp.i check_asm.c
+ $(SH) ./check_asm.sh -printf mm tmp.i check_asm.c
+ $(SH) ./check_asm.sh -printf thread tmp.i check_asm.c
+ @echo 'return 0; }' >> check_asm.c
+ @rm -f tmp.[ci] check_asm_data.[cs]
+ $(HOSTCC) -o check_asm check_asm.c
+ ./check_asm >> asm_offsets.h
+ @rm -f check_asm check_asm.c
+ @echo "" >> asm_offsets.h
+ @echo "#endif /* CONFIG_SMP */" >> asm_offsets.h
+ @echo "" >> asm_offsets.h
+ @echo "#endif /* __ASM_OFFSETS_H__ */" >> asm_offsets.h
+ @if test -r $(HPATH)/asm/asm_offsets.h; then \
+ if cmp -s asm_offsets.h $(HPATH)/asm/asm_offsets.h; then \
+ echo $(HPATH)/asm/asm_offsets.h is unchanged; \
+ rm -f asm_offsets.h; \
+ else \
+ mv -f asm_offsets.h $(HPATH)/asm/asm_offsets.h; \
+ fi; \
+ else \
+ mv -f asm_offsets.h $(HPATH)/asm/asm_offsets.h; \
+ fi
include $(TOPDIR)/Rules.make
diff -urdN linux/arch/i386/kernel/check_asm.sh linux/arch/i386/kernel/check_asm.sh
--- linux/arch/i386/kernel/check_asm.sh Thu Jan 1 00:00:00 1970
+++ linux/arch/i386/kernel/check_asm.sh Wed Jan 3 10:07:10 2001
@@ -0,0 +1,20 @@
+#!/bin/sh
+case $1 in
+ -printf)
+ sed -n -e '/struct[ ]*'$2'_struct[ ]*{/,/};/p' < $3 | sed '/struct[ ]*'$2'_struct[ ]*{/d;/:[0-9]*[ ]*;/d;/^[ ]*$/d;/};/d;s/^[ ]*//;s/volatile[ ]*//;s/\(unsigned\|signed\|struct\|union\)[ ]*//;s/\(\[\|__attribute__\).*;[ ]*$//;s/(\*//;s/)(.*)//;s/;[ ]*$//;s/^[^ ]*[ ]*//;s/,/\
+/g' | sed 's/^[ *]*//;s/[ ]*$//;s/^.*$/printf ("#define AOFF_'$2'_\0 0x%08x\\n", check_asm_data[i++]); printf("#define ASIZ_'$2'_\0 0x%08x\\n", check_asm_data[i++]);/' >> $4
+ echo "printf (\"#define ASIZ_$2\\t0x%08x\\n\", check_asm_data[i++]);" >> $4
+ ;;
+ -data)
+ sed -n -e '/struct[ ]*'$2'_struct[ ]*{/,/};/p' < $3 | sed '/struct[ ]*'$2'_struct[ ]*{/d;/:[0-9]*[ ]*;/d;/^[ ]*$/d;/};/d;s/^[ ]*//;s/volatile[ ]*//;s/\(unsigned\|signed\|struct\|union\)[ ]*//;s/\(\[\|__attribute__\).*;[ ]*$//;s/(\*//;s/)(.*)//;s/;[ ]*$//;s/^[^ ]*[ ]*//;s/,/\
+/g' | sed 's/^[ *]*//;s/[ ]*$//;s/^.*$/ ((char *)\&((struct '$2'_struct *)0)->\0) - ((char *)((struct '$2'_struct *)0)), sizeof(((struct '$2'_struct *)0)->\0),/' >> $4
+ echo " sizeof(struct $2_struct)," >> $4
+ ;;
+ -ints)
+ sed -n -e '/check_asm_data:/,/\.size/p' <$2 | sed -e 's/check_asm_data://' -e 's/\.size.*//' -e 's/\.long[ ]\([0-9]*\)/\1,/' >>$3
+ ;;
+ *)
+ exit 1
+ ;;
+esac
+exit 0
diff -urdN linux/include/asm-i386/smp.h linux/include/asm-i386/smp.h
--- linux/include/asm-i386/smp.h Sun Dec 31 19:10:16 2000
+++ linux/include/asm-i386/smp.h Wed Jan 3 10:47:53 2001
@@ -25,6 +25,9 @@
#ifdef CONFIG_SMP
#ifndef ASSEMBLY
+#include <asm/current.h>
+#include <asm/asm_offsets.h>
+
/*
* Private routines/data
*/
@@ -75,7 +78,15 @@
* so this is correct in the x86 case.
*/
-#define smp_processor_id() (current->processor)
+/*
+ * During first check_asm pass no AOFF/ASIZ is defined. As no code is generated by
+ * check_asm pass, we can use just arbitrary value. Needed for 3DNow!(tm) copy.
+ */
+#ifdef CHECK_ASM
+#define smp_processor_id() 0
+#else
+#define smp_processor_id() (*(int*)(((unsigned char*)current) + AOFF_task_processor))
+#endif
extern __inline int hard_smp_processor_id(void)
{
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2001-01-03 11:53 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-01-01 0:42 2.4.0-testX fails to compile on my Athlon Matt Wright
2001-01-01 20:01 ` wish-kernel
2001-01-01 22:44 ` Matt Wright
2001-01-02 8:51 ` [PATCH] " Tom Leete
-- strict thread matches above, loose matches on Subject: below --
2001-01-02 18:44 Petr Vandrovec
2001-01-02 18:02 ` Alan Cox
[not found] ` <3A52D390.AB56FFF2@mountain.net>
2001-01-03 11:20 ` Petr Vandrovec
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox