.ident	"@(#)/lib/cm4defs.sl 1.1 4.1 10/13/87 14879 AT&T-SF"
define(_SCR1,eax)dnl
define(_SCRW1,ax)dnl
define(_SCRB1,al)dnl
define(_SCR2,edx)dnl
define(_SCRW2,dx)dnl
define(_SCRB2,dl)dnl
define(_SCR3,ecx)dnl
define(_SCRW3,cx)dnl
define(_SCRB3,cl)dnl
define(_1STREG,edi)dnl
define(_1STREGW,di)dnl
define(_2NDREG,esi)dnl
define(_2NDREGW,si)dnl
define(_3RDREG,ebx)dnl
define(_3RDREGW,bx)dnl
define(_3RDREGB,bl)dnl
define(_1STARG,8(%ebp))dnl
define(_2NDARG,12(%ebp))dnl
define(_3RDARG,16(%ebp))dnl
define(_4THARG,20(%ap))dnl
define(_5THARG,24(%ap))dnl
define(C_PROLOGUE,`define(`_RET_NO',incr(_RET_NO))define(`_F_NAME',$1)dnl
	.text;dnl
	.align	4;dnl
	.def	$1;	.val	$1;	.scl	2;	.type	040;	.endef;dnl
	.globl	$1;dnl
$1:	pushl	%ebp;dnl
	movl	%esp,%ebp`'dnl
ifelse($2,1,`;	pushl	%edi')`'dnl
ifelse($2,2,`;	pushl	%edi;	pushl	%esi')`'dnl
ifelse($2,3,`;	pushl	%edi;	pushl	%esi;	pushl	%ebx')`'dnl
ifelse($2,,`;	pushl	%edi;	pushl	%esi;	pushl	%ebx')`'dnl
')dnl
define(A_PROLOGUE,`define(`_RET_NO',incr(_RET_NO))define(`_F_NAME',$1)dnl
	.text;dnl
	.align	4;dnl
	.def	$1;	.val	$1;	.scl	2;	.type	040;	.endef;dnl
	.globl	$1;dnl
$1:	pushl	%ebp;dnl
	movl	%esp,%ebp`'dnl
')dnl
define(I_RETURN,`define(`_RET_LAB',.RET`'_RET_NO)	jmp	_RET_LAB;	.align	4')dnl
define(C_RETURN,`ifelse(_RET_LAB,`_RET_LAB',,_RET_LAB:undefine(`_RET_LAB'))dnl
ifelse($1,1,`	popl	%edi;')`'dnl
ifelse($1,2,`	popl	%esi;	popl	%edi;')`'dnl
ifelse($1,3,`	popl	%ebx;	popl	%esi;	popl	%edi;')`'dnl
ifelse($1,,`	popl	%ebx;	popl	%esi;	popl	%edi;')`'dnl
	leave;dnl
	ret;dnl
	.align	4;dnl
	.def	_F_NAME;	.val	.;	.scl	-1;	.endef')dnl
define(A_EPILOGUE,`ifelse(_RET_LAB,`_RET_LAB',,_RET_LAB:undefine(`_RET_LAB'))dnl
	leave;dnl
	ret;dnl
	.align	4;dnl
	.def	_F_NAME;	.val	.;	.scl	-1;	.endef')dnl
define(C_CALL,`ifelse($6,,,`	pushl	$6;')ifelse($5,,,`	pushl	$5;')ifelse($4,,,`	pushl	$4;')ifelse($3,,,`	pushl	$3;')ifelse($2,,,`	pushl	$2;')	call	$1')dnl
define(A_CALL,`	call	$1')dnl
define(_RESULT,eax)dnl
