summaryrefslogtreecommitdiff
path: root/fpcsrc/rtl/netbsd/sysofft.inc
blob: aa81929aeab2605bdd3bcc6bf63ba18e05e004bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108


function Fplseek(fd : cint; offset : off_t; whence : cint): off_t; assembler; [public, alias : 'FPC_SYSC_LSEEK'];

asm
  stwu    r1,-16(r1)
  mflr    r0
  stw     r0,20(r1)
  mr      r11,r4
  mr      r12,r5
  mr      r5,r3
  mr      r9,r6
  li      r3,0
  mr      r7,r11
  mr      r8,r12
  li      r6,0
  li      r4,199
//  crclr   cr1*4+eq
  crxor   6,6,6
  li      r0,198
  sc
  bso     .Lcerrorlseek
//  mr    r0,r3
//  mr      r3,r4
//  mr    r4,r0
  lwz     r0,20(r1)
  mtlr    r0
  addi    r1,r1,16
  blr
.Lcerrorlseek:
  lis   r4,Errno@ha
  stw   r3,Errno@l(r4)
  li    r3,-1
  li    r4,-1
  lwz     r0,20(r1)
  mtlr    r0
  addi    r1,r1,16
end;

function Fpftruncate(fd : cint; flength : off_t): cint; assembler; [public, alias : 'FPC_SYSC_FTRUNCATE'];

asm
stwu    r1,-16(r1)
mflr    r0
stw     r0,20(r1)
mr      r7,r5
mr      r8,r6
mr      r5,r3
li      r3,0
li      r4,201
li      r6,0

//crclr   cr1*4+eq
crxor  6,6,6
li      r0,198
sc
bso     .Lcerrortrunc
mr      r4,r3
lwz     r0,20(r1)
mtlr    r0
addi    r1,r1,16
blr
.Lcerrortrunc:
  lis     r4,Errno@ha
  stw     r3,Errno@l(r4)
  li      r3,-1
  lwz     r0,20(r1)
  mtlr    r0
  addi    r1,r1,16
end;

Function Fpmmap(start:pointer;len:size_t;prot:cint;flags:cint;fd:cint;offst:off_t):pointer; assembler;  [public, alias: 'FPC_SYSC_MMAP'];

//Function Fpmmap(adr,len,prot,flags,fdes,off:longint):longint;  assembler; [public, alias : 'FPC_SYSC_MMAP'];

asm
  stwu    r1,-16(r1)
  mflr    r0
  stw     r0,20(r1)
  mr      r0,r5
  mr      r8,r6
  stw     r9,8(r1)
  stw     r10,12(r1)
  mr      r5,r3
  mr      r6,r4
  mr      r9,r7
  li      r3,0
  mr      r7,r0
  li      r4,197
  li      r10,0
//  crclr   cr1*4+eq
  crxor  6,6,6
  li      r0,198
  sc
  bso     .Lcerrormmap
  mr      r4,r3
  lwz     r0,20(r1)
  mtlr    r0
  addi    r1,r1,16
  blr
.Lcerrormmap:
  lis     r4,Errno@ha
  stw     r3,Errno@l(r4)
  li      r3,-1
  lwz     r0,20(r1)
  mtlr    r0
  addi    r1,r1,16
end;