ack/mach/vax4/libem/strlb.s
1994-06-24 14:02:31 +00:00

30 lines
842 B
ArmAsm

.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
.define .strlb
! $Id$
! revised version by CHL
! Store the value that is on the stack in fp.
! Compute ap.
.strlb:
movl (sp)+,r3
movl (sp)+,fp
pushl r3
movl $20,ap ! Compute argumentbase from local base.
! Distance is 5 longwords + the number of
! registers saved.
movl 4(fp),r3 ! mask for saved registers
movl $16,r2 ! position of first bit to test
I4:
subl3 r2,$28,r1 ! remaining size of mask
ffs r2,r1,r3,r2 ! find first bit set in mask
beql I5 ! no more bits set
addl2 $4,ap ! for each saved register
incl r2
jbr I4
I5:
extzv $14,$2,6(fp),r3 ! Now find out about the stack alignment
! between fp and ap
addl2 r3,ap ! add alignment
addl2 fp,ap
rsb