Subversion Repositories Kolibri OS

Rev

Rev 3391 | Rev 4110 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1029 serge 1
 
1630 serge 2
3
 
1408 serge 4
#define __SYSCALL_H__
5
6
 
1029 serge 7
8
 
1434 serge 9
#define FASTCALL __attribute__ ((fastcall)) __attribute__ ((dllimport))
10
1029 serge 11
 
1434 serge 12
13
 
1029 serge 14
15
 
16
#define PciApi          __PciApi
17
#define CreateObject    __CreateObject
18
#define DestroyObject   __DestroyObject
19
20
 
1872 serge 21
22
 
1029 serge 23
24
 
25
 
26
void   STDCALL FreeKernelSpace(void *mem)__asm__("FreeKernelSpace");
1408 serge 27
addr_t STDCALL MapIoMem(addr_t base, size_t size, u32_t flags)__asm__("MapIoMem");
28
void*  STDCALL KernelAlloc(size_t size)__asm__("KernelAlloc");
1029 serge 29
void*  STDCALL KernelFree(void *mem)__asm__("KernelFree");
30
void*  STDCALL UserAlloc(size_t size)__asm__("UserAlloc");
31
int    STDCALL UserFree(void *mem)__asm__("UserFree");
32
33
 
1613 serge 34
1408 serge 35
 
1616 serge 36
1408 serge 37
 
1613 serge 38
addr_t STDCALL AllocPages(count_t count)__asm__("AllocPages");
1029 serge 39
void   IMPORT  __attribute__((regparm(1)))
2967 Serge 40
               FreePage(addr_t page)__asm__("FreePage");
41
void   STDCALL MapPage(void *vaddr, addr_t paddr, u32_t flags)__asm__("MapPage");
3031 serge 42
1029 serge 43
 
2967 Serge 44
 
1029 serge 45
46
 
47
48
 
49
50
 
1434 serge 51
void  FASTCALL MutexLock(struct mutex*)__asm__("MutexLock");
52
void  FASTCALL MutexUnlock(struct mutex*)__asm__("MutexUnlock");
53
1029 serge 54
 
1872 serge 55
u32_t  IMPORT  GetPid(void)__asm__("GetPid");
2169 serge 56
1872 serge 57
 
2967 Serge 58
                    void *fn, void *data)asm("TimerHs");
59
60
 
3482 Serge 61
62
 
1029 serge 63
64
 
65
                            int z, int h)__asm__("SetMouseData");
66
67
 
1872 serge 68
69
 
70
 
1029 serge 71
u16_t STDCALL PciRead16(u32_t bus, u32_t devfn, u32_t reg)__asm__("PciRead16");
72
u32_t STDCALL PciRead32(u32_t bus, u32_t devfn, u32_t reg)__asm__("PciRead32");
73
74
 
75
u32_t STDCALL PciWrite16(u32_t bus, u32_t devfn, u32_t reg,u16_t val)__asm__("PciWrite16");
76
u32_t STDCALL PciWrite32(u32_t bus, u32_t devfn, u32_t reg,u32_t val)__asm__("PciWrite32");
77
78
 
79
        PciRead8(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg))
80
81
 
82
        PciRead16(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg))
83
84
 
85
        PciRead32(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg))
86
87
 
88
        PciWrite8(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg),(val))
89
90
 
91
        PciWrite16(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg),(val))
92
93
 
94
        PciWrite32(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg),(val))
95
96
 
3031 serge 97
                    u8 *val)
98
{
99
    *val = PciRead8(dev->busnr, dev->devfn, where);
100
    return 1;
101
}
102
103
 
104
                    u16 *val)
105
{
106
    *val = PciRead16(dev->busnr, dev->devfn, where);
107
    return 1;
108
}
109
110
 
111
                    u32 *val)
112
{
113
    *val = PciRead32(dev->busnr, dev->devfn, where);
114
    return 1;
115
}
116
117
 
118
                    u8 val)
119
{
120
    PciWrite8(dev->busnr, dev->devfn, where, val);
121
    return 1;
122
}
123
124
 
125
                    u16 val)
126
{
127
    PciWrite16(dev->busnr, dev->devfn, where, val);
128
    return 1;
129
}
130
131
 
132
                    u32 val)
133
{
134
    PciWrite32(dev->busnr, dev->devfn, where, val);
135
    return 1;
136
}
137
138
 
1029 serge 139
140
 
141
int dbgprintf(const char* format, ...);
142
143
 
144
145
 
1616 serge 146
{
1029 serge 147
     evhandle_t evh;
1616 serge 148
1613 serge 149
 
150
     "call *__imp__CreateEvent"
151
     :"=A"(evh.raw)
1616 serge 152
     :"S" (ev), "c"(flags)
153
     :"memory");
154
     __asm__ __volatile__ ("":::"ebx","ecx","edx","esi", "edi");
2005 serge 155
1613 serge 156
 
1616 serge 157
};
158
1613 serge 159
 
1616 serge 160
{
161
     __asm__ __volatile__ (
162
     "call *__imp__RaiseEvent"
163
     ::"a"(evh.handle),"b"(evh.euid),"d"(flags),"S" (ev)
164
     :"memory");
165
     __asm__ __volatile__ ("":::"ebx","ecx","edx","esi","edi");
2005 serge 166
1616 serge 167
 
168
169
 
2005 serge 170
{
1616 serge 171
     __asm__ __volatile__ (
172
     "call *__imp__WaitEvent"
173
     ::"a"(evh.handle),"b"(evh.euid));
2005 serge 174
     __asm__ __volatile__ ("":::"ebx","ecx","edx","esi","edi");
175
};
1616 serge 176
177
 
3391 Serge 178
{
179
    int retval;
180
    __asm__ __volatile__ (
181
    "call *__imp__WaitEventTimeout"
182
    :"=a"(retval)
183
    :"a"(evh.handle),"b"(evh.euid), "c"(timeout));
184
    __asm__ __volatile__ ("":::"ebx","ecx","edx","esi","edi");
185
    return retval;
186
};
187
188
 
2967 Serge 189
{
190
     __asm__ __volatile__ (
191
     "call *__imp__DestroyEvent"
192
     ::"a"(evh.handle),"b"(evh.euid));
193
     __asm__ __volatile__ ("":::"ebx","ecx","edx","esi","edi");
194
};
195
196
 
1616 serge 197
{
198
    u32_t  handle;
199
200
 
201
    "call *__imp__GetEvent"
202
    :"=a"(handle)
203
    :"D"(ev)
204
    :"memory");
205
    __asm__ __volatile__ ("":::"ebx","ecx","edx", "esi","edi");
206
     return handle;
1613 serge 207
};
208
209
 
1616 serge 210
 
1613 serge 211
{
212
  int retval;
1029 serge 213
214
 
215
      :"=a"(retval)
216
      :"a"(61), "b"(1));
217
  return retval;
218
}
219
220
 
1613 serge 221
{
1029 serge 222
  int retval;
223
224
 
225
      :"=a"(retval)
226
      :"a"(61), "b"(2));
227
  return retval;
228
}
229
230
 
1613 serge 231
{
1029 serge 232
  int retval;
233
234
 
235
      :"=a"(retval)
236
      :"a"(61), "b"(3));
237
  return re