Skip to contentSkip to conversation

Remove spinlock workaround for pre 2.95 gccs

PATCH In review Andi Kleen 2 participants 2 messages Jun 19, 2003 – Jun 20, 2003 Locking primitives

lore
Share & tools
lore

Andi Kleen

author
#0 lore raw

PATCH 1/1 Remove spinlock workaround for pre 2.95 gccs

Remove the empty initializer workaround that was added for egcs 1.1. Only 2.95+ is supported now, so all compilers should support empty structures.

The if just checked for __GNUC__, which means that 2.95 got
the workaround (and the incompatibility) too even though it didn't need it.

Advantage is that gcc 2.95 and 3.x compiled kernels are now binary compatible. Unfortunately module loading still checks the compiler version, but I guess that could be taken out now. As far as I know there should be no compiler related incompatibilities now.

-Andi

include/linux/spinlock.h renamed from include/linux/spinlock.h-RES +2 -7
@@ -146,13 +146,8 @@
 /*
  * gcc versions before ~2.95 have a nasty bug with empty initializers.
  */
-#if (__GNUC__ > 2)
-  typedef struct { } spinlock_t;
-  #define SPIN_LOCK_UNLOCKED (spinlock_t) { }
-#else
-  typedef struct { int gcc_is_buggy; } spinlock_t;
-  #define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
-#endif
+typedef struct { } spinlock_t;
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { }
 
 /*
  * If CONFIG_SMP is unset, declare the _raw_* definitions as nops
#1 lore raw

In message <20030619211819.GA12716@averell> you write:

Quoted 4 lines

Advantage is that gcc 2.95 and 3.x compiled kernels are now binary compatible. Unfortunately module loading still checks the compiler version, but I guess that could be taken out now. As far as I know there should be no compiler related incompatibilities now.

Good point, Andi. And if any particular arch has compiler version issues it can add it back in the arch-specific part.

Patch is as trivial. If noone else can think of any problems? Cheers,
Rusty.

include/linux/vermagic.h +1 -2
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5.72-bk2/include/linux/vermagic.h working-2.5.72-bk2-compiler-version/include/linux/vermagic.h
@@ -19,5 +19,4 @@
 #define VERMAGIC_STRING 						\
 	UTS_RELEASE " "							\
 	MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT 			\
-	MODULE_ARCH_VERMAGIC 						\
-	"gcc-" __stringify(__GNUC__) "." __stringify(__GNUC_MINOR__)
+	MODULE_ARCH_VERMAGIC

--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.