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
);