syscall.s 550 B

1234567891011121314151617
  1. .global __syscall
  2. .hidden __syscall
  3. .type __syscall,@function
  4. __syscall:
  5. mr 0, 3 # Save the system call number
  6. mr 3, 4 # Shift the arguments: arg1
  7. mr 4, 5 # arg2
  8. mr 5, 6 # arg3
  9. mr 6, 7 # arg4
  10. mr 7, 8 # arg5
  11. mr 8, 9 # arg6
  12. sc
  13. bnslr+ # return if not summary overflow
  14. neg 3, 3 # otherwise error: return negated value.
  15. blr
  16. .end __syscall
  17. .size __syscall, .-__syscall