/* Returns cc or QDIO_ERROR_SIGA_ACCESS_EXCEPTION. Note: For IQDC unicast queues only the highest priority queue is processed.  */
static int do_siga_output(unsigned long schid, unsigned long mask, unsigned int *bb, unsigned int fc)
/* Returns cc or QDIO_ERROR_SIGA_ACCESS_EXCEPTION. Note: For IQDC unicast queues only the highest priority queue is processed.  */
static int do_siga_output(unsigned long schid, unsigned long mask, unsigned int *bb, unsigned int fc)
{
	register unsigned long __fc asm("0") = fc;
	register unsigned long __schid asm("1") = schid;
	register unsigned long __mask asm("2") = mask;
	int cc = QDIO_ERROR_SIGA_ACCESS_EXCEPTION;
	asm volatile(
		"	siga	0\n"
		"0:	ipm	%0\n"
		"	srl	%0,28\n"
		"1:\n"
		EX_TABLE(0b, 1b)
		: "+d" (cc), "+d" (__fc), "+d" (__schid), "+d" (__mask)
		: : "cc", "memory");
	*bb = ((unsigned int) __fc) >> 31;
	return cc;
}