nuclear@0: #ifndef DPMI_H_ nuclear@0: #define DPMI_H_ nuclear@0: nuclear@3: #ifdef __DJGPP__ nuclear@3: #include nuclear@3: #endif nuclear@3: nuclear@0: #include "inttypes.h" nuclear@0: nuclear@0: struct dpmi_real_regs { nuclear@0: uint32_t edi, esi, ebp; nuclear@0: uint32_t reserved; nuclear@0: uint32_t ebx, edx, ecx, eax; nuclear@0: uint16_t flags; nuclear@0: uint16_t es, ds, fs, gs; nuclear@0: uint16_t ip, cs, sp, ss; nuclear@0: }; nuclear@0: nuclear@3: uint16_t dpmi_alloc(unsigned int par, uint16_t *sel); nuclear@3: void dpmi_free(uint16_t sel); nuclear@3: nuclear@3: #ifdef __WATCOMC__ nuclear@0: #pragma aux dpmi_alloc = \ nuclear@0: "mov eax, 0x100" \ nuclear@0: "int 0x31" \ nuclear@3: "mov [edi], dx" \ nuclear@3: value[ax] parm[ebx][edi]; nuclear@3: nuclear@3: #pragma aux dpmi_free = \ nuclear@3: "mov eax, 0x101" \ nuclear@3: "int 0x31" \ nuclear@3: parm[dx]; nuclear@0: nuclear@0: void dpmi_real_int(int inum, struct dpmi_real_regs *regs); nuclear@3: #endif /* __WATCOMC__ */ nuclear@3: nuclear@3: #ifdef __DJGPP__ nuclear@3: #define dpmi_real_int(inum, regs) __dpmi_int((inum), (__dpmi_regs*)(regs)) nuclear@3: #endif nuclear@0: nuclear@0: void *dpmi_mmap(uint32_t phys_addr, unsigned int size); nuclear@0: void dpmi_munmap(void *addr); nuclear@0: nuclear@0: #endif /* DPMI_H_ */