initial commit
[dos_auplay] / src / dpmi.h
1 #ifndef DPMI_H_
2 #define DPMI_H_
3
4 #include "inttypes.h"
5
6 struct dpmi_real_regs {
7         uint32_t edi, esi, ebp;
8         uint32_t reserved;
9         uint32_t ebx, edx, ecx, eax;
10         uint16_t flags;
11         uint16_t es, ds, fs, gs;
12         uint16_t ip, cs, sp, ss;
13 };
14
15 uint16_t dpmi_alloc(unsigned int par, uint16_t *sel);
16 void dpmi_free(uint16_t sel);
17
18 #pragma aux dpmi_alloc = \
19                 "mov eax, 0x100" \
20                 "int 0x31" \
21                 "mov [edi], dx" \
22                 value[ax] parm[ebx][edi];
23
24 #pragma aux dpmi_free = \
25                 "mov eax, 0x101" \
26                 "int 0x31" \
27                 parm[dx];
28
29 void dpmi_real_int(int inum, struct dpmi_real_regs *regs);
30
31 void *dpmi_mmap(uint32_t phys_addr, unsigned int size);
32 void dpmi_munmap(void *addr);
33
34 #endif  /* DPMI_H_ */