--- linux-2.6.28/Makefile.orig	2010-11-04 21:20:19.470823452 +0100
+++ linux-2.6.28/Makefile	2010-11-04 21:20:19.830823449 +0100
@@ -539,8 +539,7 @@
 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
 KBUILD_CFLAGS	+= -Os
 else
-# KBUILD_CFLAGS	+= -O2
-KBUILD_CFLAGS	+= -O1
+KBUILD_CFLAGS	+= -O2 -fno-reorder-blocks -fno-tree-ch
 endif
 
 include $(srctree)/arch/$(SRCARCH)/Makefile
@@ -577,6 +576,9 @@
 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
 CHECKFLAGS     += $(NOSTDINC_FLAGS)
 
+# improve gcc optimization
+CFLAGS += $(call cc-option,-funit-at-a-time,)
+
 # warn about C99 declaration after statement
 KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
 
