syscall.inc 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Perform syscall with 0..6 arguments.
  4. If syscall return value is negative, negate it, set errno, and return -1.
  5. Written by Edmund Grimley Evans in 2015 and released into the public domain.
  6. }
  7. function FpSysCall(sysnr:TSysParam):TSysResult;
  8. assembler; nostackframe; [public,alias:'FPC_DOSYS0'];
  9. asm
  10. mov w8,w0
  11. svc #0
  12. b.cc .Ldone
  13. str x30,[sp,#-16]!
  14. bl seterrno
  15. ldr x30,[sp],#16
  16. mov x0,#-1
  17. .Ldone:
  18. end;
  19. function FpSysCall(sysnr,param1:TSysParam):TSysResult;
  20. assembler; nostackframe; [public,alias:'FPC_DOSYS1'];
  21. asm
  22. mov w8,w0
  23. mov x0,x1
  24. svc #0
  25. b.cc .Ldone
  26. str x30,[sp,#-16]!
  27. bl seterrno
  28. ldr x30,[sp],#16
  29. mov x0,#-1
  30. .Ldone:
  31. end;
  32. function FpSysCall(sysnr,param1,param2:TSysParam):TSysResult;
  33. assembler; nostackframe; [public,alias:'FPC_DOSYS2'];
  34. asm
  35. mov w8,w0
  36. mov x0,x1
  37. mov x1,x2
  38. svc #0
  39. b.cc .Ldone
  40. str x30,[sp,#-16]!
  41. bl seterrno
  42. ldr x30,[sp],#16
  43. mov x0,#-1
  44. .Ldone:
  45. end;
  46. function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult;
  47. assembler; nostackframe; [public,alias:'FPC_DOSYS3'];
  48. asm
  49. mov w8,w0
  50. mov x0,x1
  51. mov x1,x2
  52. mov x2,x3
  53. svc #0
  54. b.cc .Ldone
  55. str x30,[sp,#-16]!
  56. bl seterrno
  57. ldr x30,[sp],#16
  58. mov x0,#-1
  59. .Ldone:
  60. end;
  61. function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult;
  62. assembler; nostackframe; [public,alias:'FPC_DOSYS4'];
  63. asm
  64. mov w8,w0
  65. mov x0,x1
  66. mov x1,x2
  67. mov x2,x3
  68. mov x3,x4
  69. svc #0
  70. b.cc .Ldone
  71. str x30,[sp,#-16]!
  72. bl seterrno
  73. ldr x30,[sp],#16
  74. mov x0,#-1
  75. .Ldone:
  76. end;
  77. function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult;
  78. assembler; nostackframe; [public,alias:'FPC_DOSYS5'];
  79. asm
  80. mov w8,w0
  81. mov x0,x1
  82. mov x1,x2
  83. mov x2,x3
  84. mov x3,x4
  85. mov x4,x5
  86. svc #0
  87. b.cc .Ldone
  88. str x30,[sp,#-16]!
  89. bl seterrno
  90. ldr x30,[sp],#16
  91. mov x0,#-1
  92. .Ldone:
  93. end;
  94. function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult;
  95. assembler; nostackframe; [public,alias:'FPC_DOSYS6'];
  96. asm
  97. mov w8,w0
  98. mov x0,x1
  99. mov x1,x2
  100. mov x2,x3
  101. mov x3,x4
  102. mov x4,x5
  103. mov x5,x6
  104. svc #0
  105. b.cc .Ldone
  106. str x30,[sp,#-16]!
  107. bl seterrno
  108. ldr x30,[sp],#16
  109. mov x0,#-1
  110. .Ldone:
  111. end;
  112. function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6,param7:TSysParam):TSysResult;
  113. assembler; nostackframe; [public,alias:'FPC_DOSYS7'];
  114. asm
  115. mov w8,w0
  116. mov x0,x1
  117. mov x1,x2
  118. mov x2,x3
  119. mov x3,x4
  120. mov x4,x5
  121. mov x5,x6
  122. mov x6,x7
  123. svc #0
  124. b.cc .Ldone
  125. str x30,[sp,#-16]!
  126. bl seterrno
  127. ldr x30,[sp],#16
  128. mov x0,#-1
  129. .Ldone:
  130. end;