typedef struct { char _[max(sizeof (struct dasd_diag_init_io), sizeof (struct dasd_diag_rw_io))]; 
typedef union { struct dasd_diag_init_io init_io; struct dasd_diag_rw_io rw_io; 
dia250(void *iob, int cmd){	typedef struct {		char _[max(sizeof (struct dasd_diag_init_io),			   sizeof (struct dasd_diag_rw_io))];	} addr_type;	int rc;	__asm__ __volatile__(#ifdef CONFIG_ARCH_S390X		"	lghi	%0,3\n"		"	lgr	0,%3\n"		"	diag	0,%2,0x250\n"		"0:	ipm	%0\n"		"	srl	%0,28\n"		"	or	%0,1\n"		"1:\n"		".section __ex_table,\"a\"\n"		"	.align 8\n"		"	.quad  0b,1b\n"		".previous\n"#else		"	lhi	%0,3\n"		"	lr	0,%3\n"		"	diag	0,%2,0x250\n"		"0:	ipm	%0\n"		"	srl	%0,28\n"		"	or	%0,1\n"		"1:\n"		".section __ex_table,\"a\"\n"		"	.align 4\n"		"	.long 0b,1b\n"		".previous\n"#endif		: "=&d" (rc), "=m" (*(addr_type *) iob)		: "d" (cmd), "d" (iob), "m" (*(addr_type *) iob)		: "0", "1", "cc");	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/86b368a5804d05a6508791f10ebabf7b779eb845/dasd_diag.c/clean/drivers/s390/block/dasd_diag.c