1/* 2 * Copyright (c) 1998 Robert Nordier 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are freely 6 * permitted provided that the above copyright notice and this 7 * paragraph and the following disclaimer are duplicated in all 8 * such forms. 9 * 10 * This software is provided "AS IS" and without any express or 11 * implied warranties, including, without limitation, the implied 12 * warranties of merchantability and fitness for a particular 13 * purpose. 14 */ 15 16/* 17 * $FreeBSD: stable/11/stand/i386/btx/lib/btxv86.h 332154 2018-04-06 21:37:25Z kevans $ 18 */ 19 20#ifndef _BTXV86_H_ 21#define _BTXV86_H_ 22 23#include <sys/types.h> 24#include <machine/psl.h> 25 26/* 27 * Memory buffer space for real mode IO. 28 * Just one page is not much, but the space is rather limited. 29 * See ../btx/btx.S for details. 30 */ 31#define V86_IO_BUFFER 0x8000 32#define V86_IO_BUFFER_SIZE 0x1000 33 34#define V86_ADDR 0x10000 /* Segment:offset address */ 35#define V86_CALLF 0x20000 /* Emulate far call */ 36#define V86_FLAGS 0x40000 /* Return flags */ 37 38struct __v86 { 39 uint32_t ctl; /* Control flags */ 40 uint32_t addr; /* Interrupt number or address */ 41 uint32_t es; /* V86 ES register */ 42 uint32_t ds; /* V86 DS register */ 43 uint32_t fs; /* V86 FS register */ 44 uint32_t gs; /* V86 GS register */ 45 uint32_t eax; /* V86 EAX register */ 46 uint32_t ecx; /* V86 ECX register */ 47 uint32_t edx; /* V86 EDX register */ 48 uint32_t ebx; /* V86 EBX register */ 49 uint32_t efl; /* V86 eflags register */ 50 uint32_t ebp; /* V86 EBP register */ 51 uint32_t esi; /* V86 ESI register */ 52 uint32_t edi; /* V86 EDI register */ 53}; 54 55extern struct __v86 __v86; /* V86 interface structure */ 56void __v86int(void); 57 58#define v86 __v86 59#define v86int __v86int 60 61extern uint32_t __base; 62extern uint32_t __args; 63 64#define PTOV(pa) ((caddr_t)(pa) - __base) 65#define VTOP(va) ((vm_offset_t)(va) + __base) 66#define VTOPSEG(va) (uint16_t)(VTOP((caddr_t)va) >> 4) 67#define VTOPOFF(va) (uint16_t)(VTOP((caddr_t)va) & 0xf) 68 69#define V86_CY(x) ((x) & PSL_C) 70#define V86_ZR(x) ((x) & PSL_Z) 71 72void __exit(int) __attribute__((__noreturn__)); 73void __exec(caddr_t, ...); 74 75#endif /* !_BTXV86_H_ */ 76