"pushfl; cli\n\t"
"pushfl\n\t"
apmcall(f, dev, r)	u_int f, dev;	struct apmregs *r;{	register int rv;	/* todo: do something with %edi? */	__asm __volatile(#if defined(DEBUG) || defined(DIAGNOSTIC)			"pushl %%ds; pushl %%es; pushl %%fs; pushl %%gs\n\t"			"pushfl; cli\n\t"			"xorl	%0, %0\n\t"			"movl	%0, %%ds\n\t"			"movl	%0, %%es\n\t"			"movl	%0, %%fs\n\t"			"movl	%0, %%gs\n\t"#endif			"movl	%5, %%eax\n\t"			"lcall	%%cs:(%9)\n\t"			"pushl %1; setc %b1; movzbl %b1, %0; popl %1\n\t"#if defined(DEBUG) || defined(DIAGNOSTIC)			"popfl; popl %%gs; popl %%fs; popl %%es; popl %%ds"#endif			: "=r" (rv),			  "=a" (r->ax), "=b" (r->bx), "=c" (r->cx), "=d" (r->dx)			: "m" (f), "2" (dev), "3" (r->cx), "4" (r->dx),			  "m" (apm_ep)			: "cc", "memory");	return rv;}