
mikeg at weiden
Jan 3, 1998, 10:04 PM
Post #1 of 1
(392 views)
Permalink
|
|
bug.. compiler or kernel source?
|
|
Hello, The following is an extract from mm/simp.c.. 67 struct simp { 68 /* 1st cache lines */ 69 struct per_processor private[NR_PROCESSORS]; 70 /* next cache line */ 71 struct header * usable_list; 72 spinlock_t lock; 73 char fill[sizeof(void*) - sizeof(spinlock_t)]; If compiling with SMP enabled and using a compiler newer than 2.7.2.3, said compiler says fill is too large because (x86) sizeof(void*) is 4 and sizeof(spinlock_t) is 8. Make the result an unsigned, and it's humongous. This with egcs,pgcc, and gcc-2.8.0 (released). 2.7.2.3 says that the struct is 16384 (if I read the asm right). Which one is correct behavior? Can this difference in behavior bite in other places? And the real question.. is using sizeof in this manner really OK? At any rate, simp isn't currently used, so I chopped it out of the Makefile. 'Nuther question while I'm at it. My CPU is an Overdrive-MMX150.. is that why I can't boot an SMP kernel? (yes dumb.. only to test) -Mike
|