Rev 1434 | Rev 1616 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1029 | serge | 1 | |
1408 | serge | 2 | #define __SYSCALL_H__ |
3 | |||
4 | |||
5 | |||
1029 | serge | 6 | |
7 | |||
8 | { |
||
9 | u32_t code; |
||
1613 | serge | 10 | u32_t data[5]; |
11 | }kevent_t; |
||
12 | |||
13 | |||
14 | { |
||
15 | u32_t handle; |
||
1029 | serge | 16 | u32_t io_code; |
17 | void *input; |
||
18 | int inp_size; |
||
19 | void *output; |
||
20 | int out_size; |
||
21 | }ioctl_t; |
||
22 | |||
23 | |||
24 | |||
25 | |||
26 | #define ERR_PARAM -1 |
||
27 | |||
28 | |||
29 | |||
1408 | serge | 30 | |
1029 | serge | 31 | |
32 | |||
33 | |||
1434 | serge | 34 | #define FASTCALL __attribute__ ((fastcall)) __attribute__ ((dllimport)) |
35 | |||
1029 | serge | 36 | |
1434 | serge | 37 | |
38 | |||
1029 | serge | 39 | |
40 | |||
41 | #define PciApi __PciApi |
||
42 | //#define RegService __RegService |
||
43 | #define CreateObject __CreateObject |
||
44 | #define DestroyObject __DestroyObject |
||
45 | |||
46 | |||
47 | |||
48 | |||
49 | #define PG_NOCACHE 0x018 |
||
50 | |||
51 | |||
52 | void STDCALL FreeKernelSpace(void *mem)__asm__("FreeKernelSpace"); |
||
1408 | serge | 53 | addr_t STDCALL MapIoMem(addr_t base, size_t size, u32_t flags)__asm__("MapIoMem"); |
54 | void* STDCALL KernelAlloc(size_t size)__asm__("KernelAlloc"); |
||
1029 | serge | 55 | void* STDCALL KernelFree(void *mem)__asm__("KernelFree"); |
56 | void* STDCALL UserAlloc(size_t size)__asm__("UserAlloc"); |
||
57 | int STDCALL UserFree(void *mem)__asm__("UserFree"); |
||
58 | |||
59 | |||
1613 | serge | 60 | |
1408 | serge | 61 | |
62 | |||
1613 | serge | 63 | addr_t STDCALL AllocPages(count_t count)__asm__("AllocPages"); |
1029 | serge | 64 | |
65 | |||
66 | |||
67 | |||
68 | |||
69 | |||
70 | |||
71 | |||
1434 | serge | 72 | void FASTCALL MutexLock(struct mutex*)__asm__("MutexLock"); |
73 | void FASTCALL MutexUnlock(struct mutex*)__asm__("MutexUnlock"); |
||
74 | |||
1029 | serge | 75 | |
76 | |||
77 | |||
78 | int z, int h)__asm__("SetMouseData"); |
||
79 | |||
80 | |||
81 | |||
82 | |||
83 | u16_t STDCALL PciRead16(u32_t bus, u32_t devfn, u32_t reg)__asm__("PciRead16"); |
||
84 | u32_t STDCALL PciRead32(u32_t bus, u32_t devfn, u32_t reg)__asm__("PciRead32"); |
||
85 | |||
86 | |||
87 | u32_t STDCALL PciWrite16(u32_t bus, u32_t devfn, u32_t reg,u16_t val)__asm__("PciWrite16"); |
||
88 | u32_t STDCALL PciWrite32(u32_t bus, u32_t devfn, u32_t reg,u32_t val)__asm__("PciWrite32"); |
||
89 | |||
90 | |||
91 | PciRead8(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg)) |
||
92 | |||
93 | |||
94 | PciRead16(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg)) |
||
95 | |||
96 | |||
97 | PciRead32(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg)) |
||
98 | |||
99 | |||
100 | PciWrite8(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg),(val)) |
||
101 | |||
102 | |||
103 | PciWrite16(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg),(val)) |
||
104 | |||
105 | |||
106 | PciWrite32(PCI_BUS_FROM_TAG(tag),PCI_DFN_FROM_TAG(tag),(reg),(val)) |
||
107 | |||
108 | |||
109 | |||
110 | |||
111 | |||
112 | int dbgprintf(const char* format, ...); |
||
113 | |||
114 | |||
115 | |||
116 | |||
1613 | serge | 117 | |
118 | { |
||
1029 | serge | 119 | u32_t handle; |
1613 | serge | 120 | u32_t euid; |
121 | |||
122 | |||
123 | "call *__imp__CreateEvent" |
||
124 | :"=a"(handle),"=d"(euid) |
||
125 | :"S" (ev), "c"(flags)); |
||
126 | __asm__ __volatile__ ("":::"ebx","ecx", "esi", "edi"); |
||
127 | |||
128 | |||
129 | |||
130 | |||
131 | }; |
||
132 | |||
133 | |||
134 | { |
||
135 | int retval; |
||
1029 | serge | 136 | |
137 | |||
138 | :"=a"(retval) |
||
139 | :"a"(61), "b"(1)); |
||
140 | return retval; |
||
141 | } |
||
142 | |||
143 | |||
1613 | serge | 144 | { |
1029 | serge | 145 | int retval; |
146 | |||
147 | |||
148 | :"=a"(retval) |
||
149 | :"a"(61), "b"(2)); |
||
150 | return retval; |
||
151 | } |
||
152 | |||
153 | |||
1613 | serge | 154 | { |
1029 | serge | 155 | int retval; |
156 | |||
157 | |||
158 | :"=a"(retval) |
||
159 | :"a"(61), "b"(3)); |
||
160 | return retval; |
||
161 | } |
||
162 | |||
163 | |||
1408 | serge | 164 | { |
1029 | serge | 165 | u32_t retval; |
166 | |||
167 | |||
168 | "call *__imp__GetPgAddr \n\t" |
||
169 | :"=eax" (retval) |
||
170 | :"a" (mem) ); |
||
171 | return retval; |
||
172 | }; |
||
173 | |||
174 | |||
1408 | serge | 175 | { |
1029 | serge | 176 | size = (size+4095) & ~4095; |
177 | __asm__ __volatile__ ( |
||
178 | "call *__imp__CommitPages" |
||
179 | ::"a" (page), "b"(mem),"c"(size>>12) |
||
180 | :"edx" ); |
||
181 | __asm__ __volatile__ ("":::"eax","ebx","ecx"); |
||
182 | }; |
||
183 | |||
184 | |||
1408 | serge | 185 | { |
1029 | serge | 186 | size = (size+4095) & ~4095; |
187 | __asm__ __volatile__ ( |
||
188 | "call *__imp__UnmapPages" |
||
189 | ::"a" (mem), "c"(size>>12) |
||
190 | :"edx"); |
||
191 | __asm__ __volatile__ ("":::"eax","ecx"); |
||
192 | }; |
||
193 | |||
194 | |||
1408 | serge | 195 | { |
1029 | serge | 196 | if( !delay ) |
197 | delay++; |
||
198 | delay*= 500; |
||
1408 | serge | 199 | |
1029 | serge | 200 | |
201 | __asm__ __volatile__( |
||
1408 | serge | 202 | "xorl %%eax, %%eax \n\t" |
203 | "cpuid \n\t" |
||
204 | :::"eax","ebx","ecx","edx"); |
||
205 | }; |
||
206 | |||
207 | |||
208 | { |
||
209 | if(!delay) delay++; |
||
210 | delay*= 500; |
||
211 | |||
212 | |||
213 | { |
||
214 | __asm__ __volatile__( |
||
215 | "xorl %%eax, %%eax \n\t" |
||
216 | "cpuid" |
||
217 | :::"eax","ebx","ecx","edx" ); |
||
218 | } |
||
219 | } |
||
220 | |||
221 | |||
222 | { |
||
223 | time /= 10; |
||
224 | if(!time) time = 1; |
||
225 | |||
226 | |||
1029 | serge | 227 | "call *__imp__Delay" |
1408 | serge | 228 | ::"b" (time)); |
229 | __asm__ __volatile__ ( |
||
230 | "":::"ebx"); |
||
231 | |||
232 | |||
1029 | serge | 233 | |
234 | |||
1408 | serge | 235 | |
236 | { |
||
1029 | serge | 237 | u32_t retval; |
238 | |||
239 | |||
240 | "call *__imp__PciApi" |
||
241 | :"=a" (retval) |
||
242 | :"a" (cmd) |
||
243 | :"memory"); |
||
244 | return retval; |
||
245 | }; |
||
246 | |||
247 | |||
1408 | serge | 248 | { |
1029 | serge | 249 | void *retval; |
250 | |||
251 | |||
252 | "call *__imp__CreateObject \n\t" |
||
253 | :"=a" (retval) |
||
254 | :"a" (size),"b"(pid) |
||
255 | :"esi","edi", "memory"); |
||
256 | return retval; |
||
257 | } |
||
258 | |||
259 | |||
1408 | serge | 260 | { |
1029 | serge | 261 | __asm__ __volatile__ ( |
262 | "call *__imp__DestroyObject \n\t" |
||
1408 | serge | 263 | : |
1029 | serge | 264 | :"a" (obj)); |
1408 | serge | 265 | __asm__ __volatile__ ( |
266 | "" |
||
267 | :::"eax","ebx","ecx","edx","esi","edi","cc","memory"); |
||
268 | } |
||
1029 | serge | 269 | |
270 | |||
1408 | serge | 271 | { |
1029 | serge | 272 | u32_t handle; |
1408 | serge | 273 | |
274 | |||
275 | ( |
||
276 | "pushl %%eax \n\t" |
||
277 | "call *__imp__GetService" |
||
278 | :"=eax" (handle) |
||
279 | :"a" (name) |
||
280 | :"ebx","ecx","edx","esi", "edi" |
||
281 | ); |
||
282 | return handle; |
||
283 | }; |
||
284 | |||
285 | |||
286 | { |
||
287 | u32_t ifl; |
||
1029 | serge | 288 | __asm__ __volatile__ ( |
289 | "pushf\n\t" |
||
290 | "popl %0\n\t" |
||
291 | "cli\n" |
||
292 | : "=r" (ifl)); |
||
293 | return ifl; |
||
294 | } |
||
295 | |||
296 | |||
1408 | serge | 297 | { |
1029 | serge | 298 | __asm__ __volatile__ ( |
299 | "pushl %0\n\t" |
||
300 | "popf\n" |
||
301 | : : "r" (ifl) |
||
302 | ); |
||
303 | } |
||
304 | |||
305 | |||
1613 | serge | 306 | { |
307 | u32_t val; |
||
308 | asm volatile ( |
||
309 | "pushfl\n\t" |
||
310 | "popl %0\n" |
||
311 | : "=r" (val)); |
||
312 | return val; |
||
313 | } |
||
314 | |||
315 | |||
1408 | serge | 316 | { |
1029 | serge | 317 | u32_t tmp; |
318 | __asm__ __volatile__ ( |
||
319 | // "xorl %%eax, %%eax \n\t" |
||
320 | "cld \n\t" |
||
321 | "rep stosb \n" |
||
322 | :"=c"(tmp),"=D"(tmp) |
||
323 | :"a"(0),"c"(len),"D"(dst)); |
||
324 | __asm__ __volatile__ ("":::"ecx","edi"); |
||
325 | }; |
||
326 | |||
327 | |||
1408 | serge | 328 | { |
1029 | serge | 329 | __asm__ __volatile__ |
330 | ("outb %1, %0\n" : : "dN"(port), "a"(val)); |
||
331 | } |
||
332 | |||
333 | |||
1408 | serge | 334 | { |
1029 | serge | 335 | __asm__ __volatile__ |
336 | ("outw %1, %0\n" : : "dN"(port), "a"(val)); |
||
337 | } |
||
338 | |||
339 | |||
1408 | serge | 340 | { |
1029 | serge | 341 | __asm__ __volatile__ |
342 | ("outl %1, %0\n" : : "dN"(port), "a"(val)); |
||
343 | } |
||
344 | |||
345 | |||
1408 | serge | 346 | { |
1029 | serge | 347 | u8_t tmp; |
348 | __asm__ __volatile__ |
||
349 | ("inb %1, %0\n" : "=a"(tmp) : "dN"(port)); |
||
350 | return tmp; |
||
351 | }; |
||
352 | |||
353 | |||
1408 | serge | 354 | { |
1029 | serge | 355 | u16_t tmp; |
356 | __asm__ __volatile__ |
||
357 | ("inw %1, %0\n" : "=a"(tmp) : "dN"(port)); |
||
358 | return tmp; |
||
359 | }; |
||
360 | |||
361 | |||
1408 | serge | 362 | { |
1029 | serge | 363 | u32_t tmp; |
364 | __asm__ __volatile__ |
||
365 | ("inl %1, %0\n" : "=a"(tmp) : "dN"(port)); |
||
366 | return tmp; |
||
367 | }; |
||
368 | |||
369 | |||
1408 | serge | 370 | { |
1029 | serge | 371 | __asm__ __volatile__ ( |
372 | "call *__imp__Delay" |
||
373 | ::"b" (time)); |
||
374 | __asm__ __volatile__ ( |
||
375 | "":::"ebx"); |
||
376 | |||
377 | |||
378 | |||
379 | |||
1613 | serge | 380 | { |
1029 | serge | 381 | __asm__ __volatile__ ( |
382 | "call *__imp__ChangeTask"); |
||
383 | } |
||
384 | |||
385 | |||
1613 | serge | 386 | { |
1408 | serge | 387 | __asm__ __volatile__ |
388 | ( |
||
389 | "call *__imp__SetScreen" |
||
390 | : |
||
391 | :"a" (width-1),"d"(height-1), "c"(pitch) |
||
392 | ); |
||
393 | __asm__ __volatile__ |
||
394 | ("" :::"eax","ecx","edx"); |
||
395 | } |
||
396 | |||
397 | |||
398 | |||
399 | |||
400 | { |
||
401 | return (void __iomem*) MapIoMem(offset, size, 3); |
||
402 | } |
||
403 | |||
404 | |||
405 | { |
||
406 | FreeKernelSpace(addr); |
||
407 | } |
||
408 | |||
409 | |||
410 | pci_alloc_consistent(struct pci_dev *hwdev, size_t size, |
||
411 | addr_t *dma_handle) |
||
412 | { |
||
413 | *dma_handle = AllocPages(size >> 12); |
||
414 | return (void*)MapIoMem(*dma_handle, size, PG_SW+PG_NOCACHE); |
||
415 | } |
||
416 | |||
417 | |||
418 | { |
||
419 | __asm__ __volatile__( |
||
420 | "call *__imp__SysMsgBoardStr" |
||
421 | ::"S" (text)); |
||
422 | }; |
||
423 | |||
424 | |||
425 |