Index: kernel/arch/arm32/Makefile.inc
===================================================================
--- kernel/arch/arm32/Makefile.inc	(revision e1326cf1ae3be8cc73d854a6f6e7fac37a4af1df)
+++ kernel/arch/arm32/Makefile.inc	(revision 5481a22e6c9e058e260a8add1bed44351bfb88cf)
@@ -52,5 +52,4 @@
 	arch/$(KARCH)/src/machine_func.c \
 	arch/$(KARCH)/src/context.S \
-	arch/$(KARCH)/src/fpu_context.c \
 	arch/$(KARCH)/src/dummy.S \
 	arch/$(KARCH)/src/cpu/cpu.c \
@@ -68,4 +67,8 @@
 	arch/$(KARCH)/src/mm/page_fault.c \
 	arch/$(KARCH)/src/ras.c
+
+ifeq ($(CONFIG_FPU),y)
+	ARCH_SOURCES +=	arch/$(KARCH)/src/fpu_context.c
+endif
 
 ifeq ($(MACHINE),gta02)
Index: kernel/arch/arm32/src/exception.c
===================================================================
--- kernel/arch/arm32/src/exception.c	(revision e1326cf1ae3be8cc73d854a6f6e7fac37a4af1df)
+++ kernel/arch/arm32/src/exception.c	(revision 5481a22e6c9e058e260a8add1bed44351bfb88cf)
@@ -167,8 +167,6 @@
 static void undef_insn_exception(unsigned int exc_no, istate_t *istate)
 {
-	if (!handle_if_fpu_exception()) {
-		fault_if_from_uspace(istate, "Undefined instruction.");
-		panic_badtrap(istate, exc_no, "Undefined instruction.");
-	} else {
+#ifdef CONFIG_FPU
+	if (handle_if_fpu_exception()) {
 		/*
 		 * Retry the failing instruction,
@@ -177,5 +175,9 @@
 		 */
 		istate->pc -= 4;
+		return;
 	}
+#endif
+	fault_if_from_uspace(istate, "Undefined instruction.");
+	panic_badtrap(istate, exc_no, "Undefined instruction.");
 }
 
