2 * Copyright (c) 1998 Robert Nordier
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
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
23 #include <sys/types.h>
24 #include <machine/psl.h>
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.
31 #define V86_IO_BUFFER 0x8000
32 #define V86_IO_BUFFER_SIZE 0x1000
34 #define V86_ADDR 0x10000 /* Segment:offset address */
35 #define V86_CALLF 0x20000 /* Emulate far call */
36 #define V86_FLAGS 0x40000 /* Return flags */
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 */
55 extern struct __v86 __v86; /* V86 interface structure */
59 #define v86int __v86int
61 extern u_int32_t __base;
62 extern u_int32_t __args;
64 #define PTOV(pa) ((caddr_t)(pa) - __base)
65 #define VTOP(va) ((vm_offset_t)(va) + __base)
66 #define VTOPSEG(va) (u_int16_t)(VTOP((caddr_t)va) >> 4)
67 #define VTOPOFF(va) (u_int16_t)(VTOP((caddr_t)va) & 0xf)
69 #define V86_CY(x) ((x) & PSL_C)
70 #define V86_ZR(x) ((x) & PSL_Z)
72 void __exit(int) __attribute__((__noreturn__));
73 void __exec(caddr_t, ...);
75 #endif /* !_BTXV86_H_ */