config MARCH_Z900
        bool "IBM zSeries model z800 and z900"
+       depends on !CC_IS_CLANG
        select HAVE_MARCH_Z900_FEATURES
        help
          Select this to enable optimizations for model z800/z900 (2064 and
 
 config MARCH_Z990
        bool "IBM zSeries model z890 and z990"
+       depends on !CC_IS_CLANG
        select HAVE_MARCH_Z990_FEATURES
        help
          Select this to enable optimizations for model z890/z990 (2084 and
 
 config MARCH_Z9_109
        bool "IBM System z9"
+       depends on !CC_IS_CLANG
        select HAVE_MARCH_Z9_109_FEATURES
        help
          Select this to enable optimizations for IBM System z9 (2094 and
 
 config TUNE_Z900
        bool "IBM zSeries model z800 and z900"
+       depends on !CC_IS_CLANG
 
 config TUNE_Z990
        bool "IBM zSeries model z890 and z990"
+       depends on !CC_IS_CLANG
 
 config TUNE_Z9_109
        bool "IBM System z9"
+       depends on !CC_IS_CLANG
 
 config TUNE_Z10
        bool "IBM System z10"
 
 KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
 
 #
-# Use -march=z900 for als.c to be able to print an error
+# Use minimum architecture for als.c to be able to print an error
 # message if the kernel is started on a machine which is too old
 #
-ifneq ($(CC_FLAGS_MARCH),-march=z900)
+ifndef CONFIG_CC_IS_CLANG
+CC_FLAGS_MARCH_MINIMUM := -march=z900
+else
+CC_FLAGS_MARCH_MINIMUM := -march=z10
+endif
+
+ifneq ($(CC_FLAGS_MARCH),$(CC_FLAGS_MARCH_MINIMUM))
 AFLAGS_REMOVE_head.o           += $(CC_FLAGS_MARCH)
-AFLAGS_head.o                  += -march=z900
+AFLAGS_head.o                  += $(CC_FLAGS_MARCH_MINIMUM)
 AFLAGS_REMOVE_mem.o            += $(CC_FLAGS_MARCH)
-AFLAGS_mem.o                   += -march=z900
+AFLAGS_mem.o                   += $(CC_FLAGS_MARCH_MINIMUM)
 CFLAGS_REMOVE_als.o            += $(CC_FLAGS_MARCH)
-CFLAGS_als.o                   += -march=z900
+CFLAGS_als.o                   += $(CC_FLAGS_MARCH_MINIMUM)
 CFLAGS_REMOVE_sclp_early_core.o        += $(CC_FLAGS_MARCH)
-CFLAGS_sclp_early_core.o       += -march=z900
+CFLAGS_sclp_early_core.o       += $(CC_FLAGS_MARCH_MINIMUM)
 endif
 
 CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char