diff --git a/arch/s390/include/asm/ctlreg.h b/arch/s390/include/asm/ctlreg.h
index e60c672ffb9c4421ceb387e0ba47ae6988b9bf0b..a49459adba9d7240d7d4d23c9aaa09b292bd10c6 100644
--- a/arch/s390/include/asm/ctlreg.h
+++ b/arch/s390/include/asm/ctlreg.h
@@ -45,6 +45,7 @@
 									\
 	_esize = (_high - _low + 1) * sizeof(unsigned long);		\
 	BUILD_BUG_ON(sizeof(struct addrtype) != _esize);		\
+	typecheck(unsigned long, array[0]);				\
 	asm volatile(							\
 		"	lctlg	%[_low],%[_high],%[_arr]\n"		\
 		:							\
@@ -63,6 +64,7 @@
 									\
 	_esize = (_high - _low + 1) * sizeof(unsigned long);		\
 	BUILD_BUG_ON(sizeof(struct addrtype) != _esize);		\
+	typecheck(unsigned long, array[0]);				\
 	asm volatile(							\
 		"	stctg	%[_low],%[_high],%[_arr]\n"		\
 		: [_arr] "=Q" (*(struct addrtype *)(&array))		\