sysofft.inc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. function Fplseek(fd : cint; offset : off_t; whence : cint): off_t; assembler; [public, alias : 'FPC_SYSC_LSEEK'];
  2. asm
  3. stwu r1,-16(r1)
  4. mflr r0
  5. stw r0,20(r1)
  6. mr r11,r4
  7. mr r12,r5
  8. mr r5,r3
  9. mr r9,r6
  10. li r3,0
  11. mr r7,r11
  12. mr r8,r12
  13. li r6,0
  14. li r4,199
  15. // crclr cr1*4+eq
  16. crxor 6,6,6
  17. li r0,198
  18. sc
  19. bso .Lcerrorlseek
  20. // mr r0,r3
  21. // mr r3,r4
  22. // mr r4,r0
  23. lwz r0,20(r1)
  24. mtlr r0
  25. addi r1,r1,16
  26. blr
  27. .Lcerrorlseek:
  28. lis r4,Errno@ha
  29. stw r3,Errno@l(r4)
  30. li r3,-1
  31. li r4,-1
  32. lwz r0,20(r1)
  33. mtlr r0
  34. addi r1,r1,16
  35. end;
  36. function Fpftruncate(fd : cint; flength : off_t): cint; assembler; [public, alias : 'FPC_SYSC_FTRUNCATE'];
  37. asm
  38. stwu r1,-16(r1)
  39. mflr r0
  40. stw r0,20(r1)
  41. mr r7,r5
  42. mr r8,r6
  43. mr r5,r3
  44. li r3,0
  45. li r4,201
  46. li r6,0
  47. //crclr cr1*4+eq
  48. crxor 6,6,6
  49. li r0,198
  50. sc
  51. bso .Lcerrortrunc
  52. mr r4,r3
  53. lwz r0,20(r1)
  54. mtlr r0
  55. addi r1,r1,16
  56. blr
  57. .Lcerrortrunc:
  58. lis r4,Errno@ha
  59. stw r3,Errno@l(r4)
  60. li r3,-1
  61. lwz r0,20(r1)
  62. mtlr r0
  63. addi r1,r1,16
  64. end;
  65. Function Fpmmap(start:pointer;len:size_t;prot:cint;flags:cint;fd:cint;offst:off_t):pointer; assembler; [public, alias: 'FPC_SYSC_MMAP'];
  66. //Function Fpmmap(adr,len,prot,flags,fdes,off:longint):longint; assembler; [public, alias : 'FPC_SYSC_MMAP'];
  67. asm
  68. stwu r1,-16(r1)
  69. mflr r0
  70. stw r0,20(r1)
  71. mr r0,r5
  72. mr r8,r6
  73. stw r9,8(r1)
  74. stw r10,12(r1)
  75. mr r5,r3
  76. mr r6,r4
  77. mr r9,r7
  78. li r3,0
  79. mr r7,r0
  80. li r4,197
  81. li r10,0
  82. // crclr cr1*4+eq
  83. crxor 6,6,6
  84. li r0,198
  85. sc
  86. bso .Lcerrormmap
  87. mr r4,r3
  88. lwz r0,20(r1)
  89. mtlr r0
  90. addi r1,r1,16
  91. blr
  92. .Lcerrormmap:
  93. lis r4,Errno@ha
  94. stw r3,Errno@l(r4)
  95. li r3,-1
  96. lwz r0,20(r1)
  97. mtlr r0
  98. addi r1,r1,16
  99. end;