AUSAM/source/libc/nargs.s

Compare this file to the similar file:
Show the results in this format:

/ C library -- nargs

/ WARNING: this routine may not work
/ if your machine is an 11/45 or 11/70.
/ A minor hardware alteration is required
/ to enable mfpi (user->user) to work!!

mfpi	= 006500 ^ tst

.globl	_nargs

_nargs:
	mov	r5,-(sp)
	mov	2(r5),r1		/ pc of caller of caller
	mov	sp,r5
	clr	r0
	mfpi	-4(r1)
	cmp	(sp)+,$4737	/ jsr pc,*$0
	bne	8f
	mov	$2,r0
8:
	mfpi	(r1)
	cmp	*sp,$5726	/ tst (sp)+
	bne	1f
	add	$2,r0
	br	2f
1:
	cmp	*sp,$22626	/ tst (sp)+
	bne	1f
	add	$4,r0
	br	2f
1:
	cmp	*sp,$62706	/ add $0,sp
	bne	1f
	mfpi	2(r1)
	add	(sp)+,r0
	br	2f
1:
	cmp	*sp,$167	/ jmp 0
	bne	1f
	tst	(sp)+
	mfpi	2(r1)
	add	(sp)+,r1
	add	$4,r1
	br	8b
1:
	cmpb	1(sp),$1	/ upper byte of `br .'
	bne	2f
	mov	r0,*sp
	mfpi	*r1
	mov	(sp)+,r0
	swab	r0
	ash	$-7,r0
	add	r0,r1
	add	$2,r1
	mov	(sp)+,r0
	br	8b
2:
	tst	(sp)+
	asr	r0
	mov	(sp)+,r5
	rts	pc