syscall.inc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. {
  2. Copyright (c) 2002 by the Free Pascal development team
  3. Syscall implementation for linux m68k
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  15. MA 02111-1301, USA.
  16. ****************************************************************************
  17. }
  18. function FpSysCall(sysnr:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL0'];
  19. begin
  20. asm
  21. move.l sysnr, d0
  22. trap #0
  23. move.l d0, @Result
  24. end ['d0'];
  25. end;
  26. function FpSysCall(sysnr,param1:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL1'];
  27. begin
  28. asm
  29. move.l sysnr, d0
  30. move.l param1, d1
  31. trap #0
  32. move.l d0, @Result
  33. end ['d0', 'd1'];
  34. end;
  35. function FpSysCall(sysnr,param1,param2:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL2'];
  36. begin
  37. asm
  38. move.l sysnr, d0
  39. move.l param1, d1
  40. move.l param2, d2
  41. trap #0
  42. move.l d0, @Result
  43. end ['d0', 'd1', 'd2'];
  44. end;
  45. function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL3'];
  46. begin
  47. asm
  48. move.l sysnr, d0
  49. move.l param1, d1
  50. move.l param2, d2
  51. move.l param3, d3
  52. trap #0
  53. move.l d0, @Result
  54. end ['d0', 'd1', 'd2', 'd3'];
  55. end;
  56. function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL4'];
  57. begin
  58. asm
  59. move.l sysnr, d0
  60. move.l param1, d1
  61. move.l param2, d2
  62. move.l param3, d3
  63. move.l param4, d4
  64. trap #0
  65. move.l d0, @Result
  66. end ['d0', 'd1', 'd2', 'd3', 'd4'];
  67. end;
  68. function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL5'];
  69. begin
  70. asm
  71. move.l sysnr, d0
  72. move.l param1, d1
  73. move.l param2, d2
  74. move.l param3, d3
  75. move.l param4, d4
  76. move.l param5, d5
  77. trap #0
  78. move.l d0, @Result
  79. end ['d0', 'd1', 'd2', 'd3', 'd4', 'd5'];
  80. end;
  81. function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TSysResult; [public,alias:'FPC_SYSCALL6'];
  82. begin
  83. asm
  84. move.l sysnr, d0
  85. move.l param1, d1
  86. move.l param2, d2
  87. move.l param3, d3
  88. move.l param4, d4
  89. move.l param5, d5
  90. move.l param6, a0
  91. trap #0
  92. move.l d0, @Result
  93. end ['d0', 'd1', 'd2', 'd3', 'd4', 'd5', 'a0'];
  94. end;