started adding indexed color support to imago2
[dos_imgv] / src / cdpmi.h
1 #ifndef DPMI_H_
2 #define DPMI_H_
3
4 #ifdef __DJGPP__
5 #include <dpmi.h>
6 #include <sys/nearptr.h>
7
8 #define virt_to_phys(v) ((v) + __djgpp_base_address)
9 #define phys_to_virt(p) ((p) - __djgpp_base_address)
10
11 #else   /* not djgpp (basically watcom) */
12
13 #define virt_to_phys(v) (v)
14 #define phys_to_virt(p) (p)
15
16 #endif  /* __DJGPP__ */
17
18 #include "util.h"
19
20 #pragma pack (push, 1)
21 struct dpmi_regs {
22         uint32_t edi, esi, ebp;
23         uint32_t reserved;
24         uint32_t ebx, edx, ecx, eax;
25         uint16_t flags;
26         uint16_t es, ds, fs, gs;
27         uint16_t ip, cs, sp, ss;
28 } PACKED;
29 #pragma pack (pop)
30
31 uint16_t dpmi_alloc(unsigned int par, uint16_t *sel);
32 void dpmi_free(uint16_t sel);
33 void dpmi_int(int inum, struct dpmi_regs *regs);
34 void *dpmi_mmap(uint32_t phys_addr, unsigned int size);
35 void dpmi_munmap(void *addr);
36
37 #ifdef __DJGPP__
38 #define dpmi_int(inum, regs) __dpmi_int((inum), (__dpmi_regs*)(regs))
39 #endif
40
41 #endif  /* DPMI_H_ */