Index: kernel/arch/arm32/src/cpu/cpu.c
===================================================================
--- kernel/arch/arm32/src/cpu/cpu.c	(revision 36e5eb38a0105c37be99d9c1323728a96b5f875f)
+++ kernel/arch/arm32/src/cpu/cpu.c	(revision 65871bbac3619bcfef8e6721cd8ed346b6151b36)
@@ -134,5 +134,7 @@
 	);
 #endif
+#ifdef CONFIG_FPU
 	fpu_setup();
+#endif
 }
 
Index: kernel/arch/arm32/src/fpu_context.c
===================================================================
--- kernel/arch/arm32/src/fpu_context.c	(revision 36e5eb38a0105c37be99d9c1323728a96b5f875f)
+++ kernel/arch/arm32/src/fpu_context.c	(revision 65871bbac3619bcfef8e6721cd8ed346b6151b36)
@@ -152,4 +152,8 @@
 		:"=r"(fpsid)::
 	);
+	if (fpsid & FPSID_SW_ONLY_FLAG) {
+		printf("No FPU avaiable\n");
+		return;
+	}
 	switch (FPSID_SUBACHITECTURE(fpsid))
 	{
@@ -210,9 +214,11 @@
 void fpu_context_save(fpu_context_t *ctx)
 {
-	save_context(ctx);
+	if (save_context)
+		save_context(ctx);
 }
 
 void fpu_context_restore(fpu_context_t *ctx)
 {
-	restore_context(ctx);
-}
+	if (restore_context)
+		restore_context(ctx);
+}
