_fline_internal_emulator_4_j4_u.s 786 B

1234567891011121314151617181920212223242526
  1. .xdef __fline_handle_jump_4byte_body_AND_NOT___custom_int_handlers
  2. .section _st10037
  3. | Save the value of %a0, since we may not destroy any registers.
  4. pea.l (%a0)
  5. | Check if it is a bsr.
  6. cmp.w #0xFFEE,(%a1)
  7. addq.l #4,%a1
  8. | If not, do not push a return address.
  9. bne.s __fline_4byte_not_bsr__
  10. | Push the return address on the user stack.
  11. move.l %usp,%a0
  12. move.l %a1,-(%a0)
  13. move.l %a0,%usp
  14. __fline_4byte_not_bsr__:
  15. | Get the location of the program entry point.
  16. lea.l __ld_entry_point_plus_0x8000(%pc),%a0
  17. | Add the program-relative target address.
  18. adda.w -(%a1),%a0
  19. | Replace the return address on the supervisor stack
  20. | with the calculated target address.
  21. move.l %a0,10(%sp)
  22. | Restore the values of %a0 and %a1.
  23. movem.l (%sp)+,%a0-%a1
  24. | Return to the calculated address.
  25. rte