sbrk.s 554 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "syscall.h"
  2. .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
  3. .define _sbrk,_brk
  4. _sbrk:
  5. move.l (4,sp),d0
  6. add.l #3,d0
  7. move.l #~3,d1
  8. and.l d1,d0
  9. move.l d0,a0
  10. move.l (.limhp),d0
  11. add.l #3,d0
  12. and.l d1,d0
  13. move.l d0,(.limhp)
  14. add.l d0,a0
  15. move.l a0,(4,sp)
  16. pea (17) ! not SYS_sbrk
  17. trap #0
  18. bcs 1f
  19. move.l (.limhp),d0
  20. move.l (4,sp),(.limhp)
  21. rts
  22. 1:
  23. jmp (cerror)
  24. _brk:
  25. move.l (4,sp),d0
  26. add.l #3,d0
  27. move.l #~3,d1
  28. and.l d1,d0
  29. move.l d0,(4,sp)
  30. pea (17)
  31. trap #0
  32. bcs 1f
  33. move.l (4,sp),(.limhp)
  34. clr.l d0
  35. rts
  36. 1:
  37. jmp (cerror)