Commit 320c04c0 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky

[S390] Move stfle to header file.

stfle will be needed by the ap_bus module to figure out wether the AP
queue adapter interruption facility is installed.
Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent ca9fc75a
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#define __ASM_SYSTEM_H #define __ASM_SYSTEM_H
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/errno.h>
#include <asm/types.h> #include <asm/types.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/setup.h> #include <asm/setup.h>
...@@ -413,8 +414,6 @@ __set_psw_mask(unsigned long mask) ...@@ -413,8 +414,6 @@ __set_psw_mask(unsigned long mask)
#define local_mcck_enable() __set_psw_mask(psw_kernel_bits) #define local_mcck_enable() __set_psw_mask(psw_kernel_bits)
#define local_mcck_disable() __set_psw_mask(psw_kernel_bits & ~PSW_MASK_MCHECK) #define local_mcck_disable() __set_psw_mask(psw_kernel_bits & ~PSW_MASK_MCHECK)
int stfle(unsigned long long *list, int doublewords);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern void smp_ctl_set_bit(int cr, int bit); extern void smp_ctl_set_bit(int cr, int bit);
...@@ -438,6 +437,23 @@ static inline unsigned int stfl(void) ...@@ -438,6 +437,23 @@ static inline unsigned int stfl(void)
return S390_lowcore.stfl_fac_list; return S390_lowcore.stfl_fac_list;
} }
static inline int __stfle(unsigned long long *list, int doublewords)
{
typedef struct { unsigned long long _[doublewords]; } addrtype;
register unsigned long __nr asm("0") = doublewords - 1;
asm volatile(".insn s,0xb2b00000,%0" /* stfle */
: "=m" (*(addrtype *) list), "+d" (__nr) : : "cc");
return __nr + 1;
}
static inline int stfle(unsigned long long *list, int doublewords)
{
if (!(stfl() & (1UL << 24)))
return -EOPNOTSUPP;
return __stfle(list, doublewords);
}
static inline unsigned short stap(void) static inline unsigned short stap(void)
{ {
unsigned short cpu_address; unsigned short cpu_address;
......
...@@ -651,23 +651,6 @@ setup_memory(void) ...@@ -651,23 +651,6 @@ setup_memory(void)
#endif #endif
} }
static int __init __stfle(unsigned long long *list, int doublewords)
{
typedef struct { unsigned long long _[doublewords]; } addrtype;
register unsigned long __nr asm("0") = doublewords - 1;
asm volatile(".insn s,0xb2b00000,%0" /* stfle */
: "=m" (*(addrtype *) list), "+d" (__nr) : : "cc");
return __nr + 1;
}
int __init stfle(unsigned long long *list, int doublewords)
{
if (!(stfl() & (1UL << 24)))
return -EOPNOTSUPP;
return __stfle(list, doublewords);
}
/* /*
* Setup hardware capabilities. * Setup hardware capabilities.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment