lpb.s 871 B

123456789101112131415161718192021222324252627
  1. .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
  2. .define .lpb
  3. ! $Id$
  4. ! special version to work with A68S, by CHL
  5. ! compute AB, given LB
  6. .lpb:
  7. cmpl r0,fp
  8. bneq I1
  9. moval 4(ap),r0
  10. rsb
  11. I1:
  12. movl 4(r0),r1 ! mask for saved registers
  13. addl2 $24,r0 ! position of AB if no registers saved
  14. movl $16,r2 ! position of first bit to test
  15. I2:
  16. subl3 r2,$28,r3 ! remaining size of mask
  17. ffs r2,r3,r1,r2 ! find first bit set in mask
  18. beql I3 ! no more bits set
  19. addl2 $4,r0 ! for each saved register
  20. incl r2
  21. jbr I2
  22. I3:
  23. extzv $30,$2,r1,r2 ! Now find out about the stack alignment
  24. ! between fp and ap
  25. addl2 r2,r0 ! add alignment
  26. rsb