diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index d21f0eac2e523d2d19a56a0cca0a9244ba212a7a..c1da14b9f59de00d20da8dfae8b36a392ddf6f80 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -151,17 +151,17 @@ cmd_cc_i_c       = $(CPP) $(c_flags)   -o $@ $<
 $(obj)/%.i: $(src)/%.c FORCE
 	$(call if_changed_dep,cc_i_c)
 
+cmd_gensymtypes =                                                           \
+    $(CPP) -D__GENKSYMS__ $(c_flags) $< |                                   \
+    $(GENKSYMS) -T $@ -a $(ARCH)                                            \
+     $(if $(KBUILD_PRESERVE),-p)                                            \
+     $(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null)))
+
 quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
-cmd_cc_symtypes_c	   = \
-		set -e;							\
-		$(CPP) -D__GENKSYMS__ $(c_flags) $<			\
-		| $(GENKSYMS) -T $@					\
-			      -r $(firstword $(wildcard			\
-				     $(@:.symtypes=.symref) /dev/null))	\
-			      $(if $(KBUILD_PRESERVE),-p)		\
-			      -a $(ARCH)				\
-		  >/dev/null;						\
-		test -s $@ || rm -f $@
+cmd_cc_symtypes_c =                                                         \
+    set -e;                                                                 \
+    $(call cmd_gensymtypes, true) >/dev/null;                               \
+    test -s $@ || rm -f $@
 
 $(obj)/%.symtypes : $(src)/%.c FORCE
 	$(call cmd,cc_symtypes_c)
@@ -191,14 +191,8 @@ else
 cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
 cmd_modversions =							\
 	if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then	\
-		$(CPP) -D__GENKSYMS__ $(c_flags) $<			\
-		| $(GENKSYMS) $(if $(KBUILD_SYMTYPES),			\
-			           -T $(@:.o=.symtypes))		\
-			      -r $(firstword $(wildcard			\
-				     $(@:.o=.symref) /dev/null))	\
-			      $(if $(KBUILD_PRESERVE),-p)		\
-			      -a $(ARCH)				\
-		> $(@D)/.tmp_$(@F:.o=.ver);				\
+		$(call cmd_gensymtypes, $(KBUILD_SYMTYPES))		\
+		    > $(@D)/.tmp_$(@F:.o=.ver);				\
 									\
 		$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) 		\
 			-T $(@D)/.tmp_$(@F:.o=.ver);			\