test1-ac7 K7+SMP does not compile

From: Tom Leete (tleete@mountain.net)
Date: Fri Jun 02 2000 - 02:58:43 EST


Hello,

With CONFIG_X86_USE_3DNOW, compilation of init/main.c fails
within '#include <linux/proc_fs.h>. The trigger is use of
in_interrupt() in include/asm-i386/string.h:
__constant_memcpy3d and __memcpy3d. 2.4.0-test1-ac7 gives
the error messages attached.

The obvious fix of also including asm/current.h only
transforms the errors into dereference of an incomplete
type. The definition of task_struct is needed, but including
linux/sched.h is circular and gcc drops it.

I am inclined to place struct task_struct in its own header.
This is core code, and pretty zorkish with macros. Is there
is a less drastic solution to getting per-processor context
in the low level mmx code?

UP + APIC + K7 compiles just fine. Makes me think there must
be another way.

Tom

gcc -D__KERNEL__ -I/usr/src/linux-2.4.0-test1-ac/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -march=i686 -malign-functions=4 -fschedule-insns2 -mwide-multiply -fexpensive-optimizations -c -o init/main.o init/main.c
/usr/src/linux-2.4.0-test1-ac/include/asm/hw_irq.h: In function `x86_do_profile':
In file included from /usr/src/linux-2.4.0-test1-ac/include/linux/irq.h:56,
                 from /usr/src/linux-2.4.0-test1-ac/include/asm/hardirq.h:6,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:45,
                 from /usr/src/linux-2.4.0-test1-ac/include/asm/string.h:296,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/string.h:21,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/fs.h:23,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/capability.h:17,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/binfmts.h:5,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/sched.h:9,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/mm.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/slab.h:14,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/malloc.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-2.4.0-test1-ac/include/asm/hw_irq.h:198: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/asm/hw_irq.h:198: (Each undeclared identifier is reported only once
/usr/src/linux-2.4.0-test1-ac/include/asm/hw_irq.h:198: for each function it appears in.)
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `raise_softirq':
In file included from /usr/src/linux-2.4.0-test1-ac/include/asm/string.h:296,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/string.h:21,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/fs.h:23,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/capability.h:17,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/binfmts.h:5,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/sched.h:9,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/mm.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/slab.h:14,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/malloc.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:100: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/asm/hw_irq.h:198: (Each undeclared identifier is reported only once
/usr/src/linux-2.4.0-test1-ac/include/asm/hw_irq.h:198: for each function it appears in.)
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `raise_softirq':
In file included from /usr/src/linux-2.4.0-test1-ac/include/asm/string.h:296,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/string.h:21,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/fs.h:23,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/capability.h:17,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/binfmts.h:5,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/sched.h:9,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/mm.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/slab.h:14,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/malloc.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:100: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `tasklet_schedule':
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:171: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `tasklet_hi_schedule':
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:185: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/asm/string.h: In function `__constant_memcpy3d':
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `raise_softirq':
In file included from /usr/src/linux-2.4.0-test1-ac/include/asm/string.h:296,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/string.h:21,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/fs.h:23,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/capability.h:17,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/binfmts.h:5,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/sched.h:9,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/mm.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/slab.h:14,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/malloc.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:100: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `tasklet_schedule':
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:171: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h: In function `tasklet_hi_schedule':
/usr/src/linux-2.4.0-test1-ac/include/linux/interrupt.h:185: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/asm/string.h: In function `__constant_memcpy3d':
In file included from /usr/src/linux-2.4.0-test1-ac/include/linux/string.h:21,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/fs.h:23,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/capability.h:17,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/binfmts.h:5,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/sched.h:9,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/mm.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/slab.h:14,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/malloc.h:4,
                 from /usr/src/linux-2.4.0-test1-ac/include/linux/proc_fs.h:5,
                 from init/main.c:15:
/usr/src/linux-2.4.0-test1-ac/include/asm/string.h:305: `current' undeclared (first use in this function)
/usr/src/linux-2.4.0-test1-ac/include/asm/string.h: In function `__memcpy3d':
/usr/src/linux-2.4.0-test1-ac/include/asm/string.h:312: `current' undeclared (first use in this function)
make: *** [init/main.o] Error 1

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jun 07 2000 - 21:00:14 EST