1 #ifndef S390_CIO_IOASM_H
2 #define S390_CIO_IOASM_H
11 struct subchannel_id schid;
12 __u32 intparm; /* interruption parameter */
19 } __attribute__ ((packed));
23 * Some S390 specific IO instructions as inline
26 static inline int stsch_err(struct subchannel_id schid, struct schib *addr)
28 register struct subchannel_id reg1 asm ("1") = schid;
37 : "+d" (ccode), "=m" (*addr)
38 : "d" (reg1), "a" (addr)
43 static inline int msch(struct subchannel_id schid, struct schib *addr)
45 register struct subchannel_id reg1 asm ("1") = schid;
53 : "d" (reg1), "a" (addr), "m" (*addr)
58 static inline int msch_err(struct subchannel_id schid, struct schib *addr)
60 register struct subchannel_id reg1 asm ("1") = schid;
70 : "d" (reg1), "a" (addr), "m" (*addr)
75 static inline int tsch(struct subchannel_id schid, struct irb *addr)
77 register struct subchannel_id reg1 asm ("1") = schid;
84 : "=d" (ccode), "=m" (*addr)
85 : "d" (reg1), "a" (addr)
90 static inline int tpi(struct tpi_info *addr)
98 : "=d" (ccode), "=m" (*addr)
104 static inline int chsc(void *chsc_area)
106 typedef struct { char _[4096]; } addr_type;
110 " .insn rre,0xb25f0000,%2,0\n"
113 : "=d" (cc), "=m" (*(addr_type *) chsc_area)
114 : "d" (chsc_area), "m" (*(addr_type *) chsc_area)
119 static inline int rchp(struct chp_id chpid)
121 register struct chp_id reg1 asm ("1") = chpid;
129 : "=d" (ccode) : "d" (reg1) : "cc");