--- a/Makefile
+++ b/Makefile
@@ -191,10 +191,11 @@ SUBARCH := $(shell uname -m | sed -e s/i
 # "make" in the configured kernel build directory always uses that.
 # Default value for CROSS_COMPILE is not to prefix executables
 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
+SUBARCH := arm
 export KBUILD_BUILDHOST := $(SUBARCH)
-#ARCH           ?= $(SUBARCH)
-ARCH            ?= arm
-CROSS_COMPILE   = /opt/toolchains/arm-eabi-4.4.3/bin/arm-eabi-
+ARCH            ?= $(SUBARCH)
+#CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)
+CROSS_COMPILE   = arm-eabi-
 
 # Architecture as present in compile.h
 UTS_MACHINE     := $(ARCH)
@@ -352,12 +353,13 @@ CC         = $(srctree)/scripts/gcc-wrapper.py
 
 CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
                   -Wbitwise -Wno-return-void $(CF)
-CFLAGS_MODULE   =
-AFLAGS_MODULE   =
-LDFLAGS_MODULE  =
-CFLAGS_KERNEL   =
-AFLAGS_KERNEL   =
-CFLAGS_GCOV     = -fprofile-arcs -ftest-coverage
+MODFLAGS        = -DMODULE -fgcse-lm -fgcse-sm -fsched-spec-load -fforce-addr -ffast-math -fsingle-precision-constant -mtune=cortex-a8 -march=armv7-a -mfpu=neon -ftree-vectorize -funswitch-loops
+CFLAGS_MODULE   = $(MODFLAGS)
+AFLAGS_MODULE   = $(MODFLAGS)
+LDFLAGS_MODULE  = -T $(srctree)/scripts/module-common.lds
+CFLAGS_KERNEL   = -fgcse-lm -fgcse-sm -fsched-spec-load -fforce-addr -ffast-math -fsingle-precision-constant -mtune=cortex-a8 -march=armv7-a -mfpu=neon -ftree-vectorize -funswitch-loops
+AFLAGS_KERNEL   = -fgcse -fsingle-precision-constant -mtune=cortex-a8 -march=armv7-a -mfpu=neon -ftree-vectorize
+CFLAGS_GCOV     = -fprofile-arcs -ftest-coverage
 
 
 # Use LINUXINCLUDE when you must reference the include/ directory.