diff options
Diffstat (limited to 'arch/s390/kernel/early.c')
| -rw-r--r-- | arch/s390/kernel/early.c | 22 | 
1 files changed, 3 insertions, 19 deletions
| diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index 52098d6dfaa7..578eb4e6d157 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c @@ -29,6 +29,7 @@  #include <asm/sysinfo.h>  #include <asm/cpcmd.h>  #include <asm/sclp.h> +#include <asm/system.h>  #include "entry.h"  /* @@ -262,25 +263,8 @@ static noinline __init void setup_lowcore_early(void)  static noinline __init void setup_facility_list(void)  { -	unsigned long nr; - -	S390_lowcore.stfl_fac_list = 0; -	asm volatile( -		"	.insn	s,0xb2b10000,0(0)\n" /* stfl */ -		"0:\n" -		EX_TABLE(0b,0b) : "=m" (S390_lowcore.stfl_fac_list)); -	memcpy(&S390_lowcore.stfle_fac_list, &S390_lowcore.stfl_fac_list, 4); -	nr = 4;				/* # bytes stored by stfl */ -	if (test_facility(7)) { -		/* More facility bits available with stfle */ -		register unsigned long reg0 asm("0") = MAX_FACILITY_BIT/64 - 1; -		asm volatile(".insn s,0xb2b00000,%0" /* stfle */ -			     : "=m" (S390_lowcore.stfle_fac_list), "+d" (reg0) -			     : : "cc"); -		nr = (reg0 + 1) * 8;	/* # bytes stored by stfle */ -	} -	memset((char *) S390_lowcore.stfle_fac_list + nr, 0, -	       MAX_FACILITY_BIT/8 - nr); +	stfle(S390_lowcore.stfle_fac_list, +	      ARRAY_SIZE(S390_lowcore.stfle_fac_list));  }  static noinline __init void setup_hpage(void) | 
