1 #ifndef S390_CIO_IOASM_H
2 #define S390_CIO_IOASM_H
8 __u32 reserved1
: 16; /* reserved 0x00000001 */
9 __u32 irq
: 16; /* aka. subchannel number */
10 __u32 intparm
; /* interruption parameter */
17 } __attribute__ ((packed
));
21 * Some S390 specific IO instructions as inline
24 extern __inline__
int stsch(int irq
, volatile struct schib
*addr
)
34 : "d" (irq
| 0x10000), "a" (addr
)
39 extern __inline__
int msch(int irq
, volatile struct schib
*addr
)
49 : "d" (irq
| 0x10000L
), "a" (addr
)
54 extern __inline__
int msch_err(int irq
, volatile struct schib
*addr
)
65 #ifdef CONFIG_ARCH_S390X
66 ".section __ex_table,\"a\"\n"
71 ".section __ex_table,\"a\"\n"
77 : "d" (irq
| 0x10000L
), "a" (addr
), "K" (-EIO
)
82 extern __inline__
int tsch(int irq
, volatile struct irb
*addr
)
92 : "d" (irq
| 0x10000L
), "a" (addr
)
97 extern __inline__
int tpi( volatile struct tpi_info
*addr
)
101 __asm__
__volatile__(
111 extern __inline__
int ssch(int irq
, volatile struct orb
*addr
)
115 __asm__
__volatile__(
121 : "d" (irq
| 0x10000L
), "a" (addr
)
126 extern __inline__
int rsch(int irq
)
130 __asm__
__volatile__(
136 : "d" (irq
| 0x10000L
)
141 extern __inline__
int csch(int irq
)
145 __asm__
__volatile__(
151 : "d" (irq
| 0x10000L
)
156 extern __inline__
int hsch(int irq
)
160 __asm__
__volatile__(
166 : "d" (irq
| 0x10000L
)
171 extern __inline__
int xsch(int irq
)
175 __asm__
__volatile__(
177 " .insn rre,0xb2760000,%1,0\n"
181 : "d" (irq
| 0x10000L
)
186 extern __inline__
int chsc(void *chsc_area
)
190 __asm__
__volatile__ (
191 ".insn rre,0xb25f0000,%1,0 \n\t"
201 extern __inline__
int iac( void)
205 __asm__
__volatile__(
209 : "=d" (ccode
) : : "cc", "1" );
213 extern __inline__
int rchp(int chpid
)
217 __asm__
__volatile__(