]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
s390/cio: Consolidate inline assemblies and related data definitions
authorPeter Oberparleiter <oberpar@linux.vnet.ibm.com>
Fri, 18 Dec 2015 11:59:32 +0000 (12:59 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 18 Dec 2015 13:59:34 +0000 (14:59 +0100)
Replace the current semi-arbitrary distribution of inline assemblies:
 - Inline assemblies used by CIO go into ioasm.h
 - Data definitions used by inline assemblies go into cio.h

Beyond cleaning up the current structure this is also required for
use of tracepoints in inline assemblies introduced by a follow-on
patch.

Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Acked-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/crw.h
drivers/s390/cio/cio.h
drivers/s390/cio/crw.c
drivers/s390/cio/io_sch.h
drivers/s390/cio/ioasm.h

index 7c31d3e25cd13a295d0bd632fb5127dbe7356ca0..bcb9cd2a730aaedf23b59d417e83926d2a05201d 100644 (file)
@@ -52,18 +52,4 @@ void crw_wait_for_channel_report(void);
 #define CRW_ERC_PERRI   0x07 /* perm. error, facility init */
 #define CRW_ERC_PMOD    0x08 /* installed parameters modified */
 
-static inline int stcrw(struct crw *pcrw)
-{
-       int ccode;
-
-       asm volatile(
-               "       stcrw   0(%2)\n"
-               "       ipm     %0\n"
-               "       srl     %0,28\n"
-               : "=d" (ccode), "=m" (*pcrw)
-               : "a" (pcrw)
-               : "cc" );
-       return ccode;
-}
-
 #endif /* _ASM_S390_CRW_H */
index a01376ae174932442df823e950c9e323e431bbf5..93de0b46b4899e267fb3b4866c8a6c098733c22f 100644 (file)
@@ -45,6 +45,18 @@ struct pmcw {
                                /*  ... in an operand exception.       */
 } __attribute__ ((packed));
 
+/* I/O-Interruption Code as stored by TEST PENDING INTERRUPTION (TPI). */
+struct tpi_info {
+       struct subchannel_id schid;
+       u32 intparm;
+       u32 adapter_IO:1;
+       u32 :1;
+       u32 isc:3;
+       u32 :27;
+       u32 type:3;
+       u32 :12;
+} __packed __aligned(4);
+
 /* Target SCHIB configuration. */
 struct schib_config {
        u64 mba;
index 0f8a25f98b10629de82b87591e3e669175cf4526..3d3cd402b37680d363589c92dfb45bcf917cc815 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/wait.h>
 #include <asm/crw.h>
 #include <asm/ctl_reg.h>
+#include "ioasm.h"
 
 static DEFINE_MUTEX(crw_handler_mutex);
 static crw_handler_t crw_handlers[NR_RSCS];
index 789ce783d3e1b5e92b6bd7ceebfba00293c8d720..8975060af96cb4640012fa0b427b14ce3893f1a0 100644 (file)
@@ -169,49 +169,4 @@ struct ccw_device_private {
        enum interruption_class int_class;
 };
 
-static inline int rsch(struct subchannel_id schid)
-{
-       register struct subchannel_id reg1 asm("1") = schid;
-       int ccode;
-
-       asm volatile(
-               "       rsch\n"
-               "       ipm     %0\n"
-               "       srl     %0,28"
-               : "=d" (ccode)
-               : "d" (reg1)
-               : "cc", "memory");
-       return ccode;
-}
-
-static inline int hsch(struct subchannel_id schid)
-{
-       register struct subchannel_id reg1 asm("1") = schid;
-       int ccode;
-
-       asm volatile(
-               "       hsch\n"
-               "       ipm     %0\n"
-               "       srl     %0,28"
-               : "=d" (ccode)
-               : "d" (reg1)
-               : "cc");
-       return ccode;
-}
-
-static inline int xsch(struct subchannel_id schid)
-{
-       register struct subchannel_id reg1 asm("1") = schid;
-       int ccode;
-
-       asm volatile(
-               "       xsch\n"
-               "       ipm     %0\n"
-               "       srl     %0,28"
-               : "=d" (ccode)
-               : "d" (reg1)
-               : "cc");
-       return ccode;
-}
-
 #endif
index be6e2f5e11f75595621c69b77aaf3b15ef732f8c..dce25500812aa5d08a24ee18687c0423bcc625f1 100644 (file)
@@ -3,24 +3,10 @@
 
 #include <asm/chpid.h>
 #include <asm/schid.h>
+#include <asm/crw.h>
 #include "orb.h"
 #include "cio.h"
 
-/*
- * TPI info structure
- */
-struct tpi_info {
-       struct subchannel_id schid;
-       __u32 intparm;           /* interruption parameter */
-       __u32 adapter_IO : 1;
-       __u32 reserved2  : 1;
-       __u32 isc        : 3;
-       __u32 reserved3  : 12;
-       __u32 int_type   : 3;
-       __u32 reserved4  : 12;
-} __attribute__ ((packed));
-
-
 /*
  * Some S390 specific IO instructions as inline
  */
@@ -149,4 +135,63 @@ static inline int rchp(struct chp_id chpid)
        return ccode;
 }
 
+static inline int rsch(struct subchannel_id schid)
+{
+       register struct subchannel_id reg1 asm("1") = schid;
+       int ccode;
+
+       asm volatile(
+               "       rsch\n"
+               "       ipm     %0\n"
+               "       srl     %0,28"
+               : "=d" (ccode)
+               : "d" (reg1)
+               : "cc", "memory");
+       return ccode;
+}
+
+static inline int hsch(struct subchannel_id schid)
+{
+       register struct subchannel_id reg1 asm("1") = schid;
+       int ccode;
+
+       asm volatile(
+               "       hsch\n"
+               "       ipm     %0\n"
+               "       srl     %0,28"
+               : "=d" (ccode)
+               : "d" (reg1)
+               : "cc");
+       return ccode;
+}
+
+static inline int xsch(struct subchannel_id schid)
+{
+       register struct subchannel_id reg1 asm("1") = schid;
+       int ccode;
+
+       asm volatile(
+               "       xsch\n"
+               "       ipm     %0\n"
+               "       srl     %0,28"
+               : "=d" (ccode)
+               : "d" (reg1)
+               : "cc");
+       return ccode;
+}
+
+static inline int stcrw(struct crw *crw)
+{
+       int ccode;
+
+       asm volatile(
+               "       stcrw   0(%2)\n"
+               "       ipm     %0\n"
+               "       srl     %0,28\n"
+               : "=d" (ccode), "=m" (*crw)
+               : "a" (crw)
+               : "cc");
+       return ccode;
+}
+
 #endif