strncpy.S 430 B

12345678910111213141516171819202122232425262728293031323334
  1. ;;; strncpy.S
  2. #include <asm/linkage.h>
  3. .text
  4. .global strncpy_from_user
  5. ;;; long strncpy_from_user(void *to, void *from, size_t n)
  6. strncpy_from_user:
  7. mov.l er2,er2
  8. bne 1f
  9. sub.l er0,er0
  10. rts
  11. 1:
  12. mov.l er4,@-sp
  13. sub.l er3,er3
  14. 2:
  15. mov.b @er1+,r4l
  16. mov.b r4l,@er0
  17. adds #1,er0
  18. beq 3f
  19. inc.l #1,er3
  20. dec.l #1,er2
  21. bne 2b
  22. 3:
  23. dec.l #1,er2
  24. 4:
  25. mov.b r4l,@er0
  26. adds #1,er0
  27. dec.l #1,er2
  28. bne 4b
  29. mov.l er3,er0
  30. mov.l @sp+,er4
  31. rts