AUSAM/source/libc/nargs.s
/ 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