* Linus Torvalds <[email protected]> wrote:
> I wonder if we should remove the "volatile". There really isn't
> anything _good_ that gcc can do with it, but we've seen gcc code
> generation do stupid things before just because "volatile" seems to
> just disable even proper normal working.
yeah. I tried this and it indeed slashed 42K off text size (0.2%):
text data bss dec filename
20779489 6073834 3075176 29928499 vmlinux.volatile
20736884 6073834 3075176 29885894 vmlinux.non-volatile
i booted the resulting allyesconfig bzImage and everything seems to be
working fine. Find patch below.
Ingo
------------------>
Subject: spinlocks: remove 'volatile'
From: Ingo Molnar <[email protected]>
remove 'volatile' from the spinlock types, it causes gcc to
generate really bad code. (and it's pointless anyway)
this reduces the non-debug SMP kernel's size by 0.2% (!).
Signed-off-by: Ingo Molnar <[email protected]>
---
include/asm-i386/spinlock_types.h | 4 ++--
include/asm-x86_64/spinlock_types.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
Index: linux/include/asm-i386/spinlock_types.h
===================================================================
--- linux.orig/include/asm-i386/spinlock_types.h
+++ linux/include/asm-i386/spinlock_types.h
@@ -6,13 +6,13 @@
#endif
typedef struct {
- volatile unsigned int slock;
+ unsigned int slock;
} raw_spinlock_t;
#define __RAW_SPIN_LOCK_UNLOCKED { 1 }
typedef struct {
- volatile unsigned int lock;
+ unsigned int lock;
} raw_rwlock_t;
#define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS }
Index: linux/include/asm-x86_64/spinlock_types.h
===================================================================
--- linux.orig/include/asm-x86_64/spinlock_types.h
+++ linux/include/asm-x86_64/spinlock_types.h
@@ -6,13 +6,13 @@
#endif
typedef struct {
- volatile unsigned int slock;
+ unsigned int slock;
} raw_spinlock_t;
#define __RAW_SPIN_LOCK_UNLOCKED { 1 }
typedef struct {
- volatile unsigned int lock;
+ unsigned int lock;
} raw_rwlock_t;
#define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]