2 * Channel subsystem I/O instructions.
5 #include <linux/export.h>
15 int stsch(struct subchannel_id schid, struct schib *addr)
17 register struct subchannel_id reg1 asm ("1") = schid;
26 : "+d" (ccode), "=m" (*addr)
27 : "d" (reg1), "a" (addr)
29 trace_s390_cio_stsch(schid, addr, ccode);
35 int msch(struct subchannel_id schid, struct schib *addr)
37 register struct subchannel_id reg1 asm ("1") = schid;
47 : "d" (reg1), "a" (addr), "m" (*addr)
49 trace_s390_cio_msch(schid, addr, ccode);
54 int tsch(struct subchannel_id schid, struct irb *addr)
56 register struct subchannel_id reg1 asm ("1") = schid;
63 : "=d" (ccode), "=m" (*addr)
64 : "d" (reg1), "a" (addr)
66 trace_s390_cio_tsch(schid, addr, ccode);
71 int ssch(struct subchannel_id schid, union orb *addr)
73 register struct subchannel_id reg1 asm("1") = schid;
83 : "d" (reg1), "a" (addr), "m" (*addr)
85 trace_s390_cio_ssch(schid, addr, ccode);
91 int csch(struct subchannel_id schid)
93 register struct subchannel_id reg1 asm("1") = schid;
103 trace_s390_cio_csch(schid, ccode);
109 int tpi(struct tpi_info *addr)
117 : "=d" (ccode), "=m" (*addr)
120 trace_s390_cio_tpi(addr, ccode);
125 int chsc(void *chsc_area)
127 typedef struct { char _[4096]; } addr_type;
131 " .insn rre,0xb25f0000,%2,0\n"
134 : "=d" (cc), "=m" (*(addr_type *) chsc_area)
135 : "d" (chsc_area), "m" (*(addr_type *) chsc_area)
137 trace_s390_cio_chsc(chsc_area, cc);
143 int rchp(struct chp_id chpid)
145 register struct chp_id reg1 asm ("1") = chpid;
153 : "=d" (ccode) : "d" (reg1) : "cc");
154 trace_s390_cio_rchp(chpid, ccode);
159 int rsch(struct subchannel_id schid)
161 register struct subchannel_id reg1 asm("1") = schid;
171 trace_s390_cio_rsch(schid, ccode);
176 int hsch(struct subchannel_id schid)
178 register struct subchannel_id reg1 asm("1") = schid;
188 trace_s390_cio_hsch(schid, ccode);
193 int xsch(struct subchannel_id schid)
195 register struct subchannel_id reg1 asm("1") = schid;
205 trace_s390_cio_xsch(schid, ccode);
210 int stcrw(struct crw *crw)
218 : "=d" (ccode), "=m" (*crw)
221 trace_s390_cio_stcrw(crw, ccode);