btxv86.h revision 339406
1331766Sken/* 2331766Sken * Copyright (c) 1998 Robert Nordier 3331766Sken * All rights reserved. 4331766Sken * 5331766Sken * Redistribution and use in source and binary forms are freely 6331766Sken * permitted provided that the above copyright notice and this 7331766Sken * paragraph and the following disclaimer are duplicated in all 8331766Sken * such forms. 9331766Sken * 10331766Sken * This software is provided "AS IS" and without any express or 11331766Sken * implied warranties, including, without limitation, the implied 12331766Sken * warranties of merchantability and fitness for a particular 13331766Sken * purpose. 14331766Sken */ 15331766Sken 16331766Sken/* 17331766Sken * $FreeBSD: stable/11/stand/pc98/btx/lib/btxv86.h 339406 2018-10-17 04:10:23Z imp $ 18331766Sken */ 19331766Sken 20331766Sken#ifndef _BTXV86_H_ 21331766Sken#define _BTXV86_H_ 22331766Sken 23331766Sken#include <sys/types.h> 24331766Sken#include <machine/psl.h> 25331766Sken 26331766Sken/* 27331766Sken * Memory buffer space for real mode IO. 28331766Sken * Just one page is not much, but the space is rather limited. 29331766Sken * See ../btx/btx.S for details. 30331766Sken * XXX TEST THIS XXX 31331766Sken */ 32331766Sken#define V86_IO_BUFFER 0x8000 33331766Sken#define V86_IO_BUFFER_SIZE 0x1000 34331766Sken 35331766Sken#define V86_ADDR 0x10000 /* Segment:offset address */ 36331766Sken#define V86_CALLF 0x20000 /* Emulate far call */ 37331766Sken#define V86_FLAGS 0x40000 /* Return flags */ 38331766Sken 39331766Skenstruct __v86 { 40331766Sken uint32_t ctl; /* Control flags */ 41331766Sken uint32_t addr; /* Interrupt number or address */ 42331766Sken uint32_t es; /* V86 ES register */ 43331766Sken uint32_t ds; /* V86 DS register */ 44331766Sken uint32_t fs; /* V86 FS register */ 45331766Sken uint32_t gs; /* V86 GS register */ 46331766Sken uint32_t eax; /* V86 EAX register */ 47331766Sken uint32_t ecx; /* V86 ECX register */ 48331766Sken uint32_t edx; /* V86 EDX register */ 49331766Sken uint32_t ebx; /* V86 EBX register */ 50331766Sken uint32_t efl; /* V86 eflags register */ 51331766Sken uint32_t ebp; /* V86 EBP register */ 52331766Sken uint32_t esi; /* V86 ESI register */ 53331766Sken uint32_t edi; /* V86 EDI register */ 54331766Sken}; 55331766Sken 56331766Skenextern struct __v86 __v86; /* V86 interface structure */ 57331766Skenvoid __v86int(void); 58331766Sken 59331766Sken#define v86 __v86 60331766Sken#define v86int __v86int 61331766Sken 62331766Skenextern u_int32_t __base; 63331766Skenextern u_int32_t __args; 64331766Sken 65331766Sken#define PTOV(pa) ((caddr_t)(pa) - __base) 66331766Sken#define VTOP(va) ((vm_offset_t)(va) + __base) 67331766Sken#define VTOPSEG(va) (u_int16_t)(VTOP((caddr_t)va) >> 4) 68331766Sken#define VTOPOFF(va) (u_int16_t)(VTOP((caddr_t)va) & 0xf) 69331766Sken 70331766Sken#define V86_CY(x) ((x) & PSL_C) 71331766Sken#define V86_ZR(x) ((x) & PSL_Z) 72331766Sken 73331766Skenvoid __exit(int) __attribute__((__noreturn__)); 74331766Skenvoid __exec(caddr_t, ...); 75331766Sken 76331766Sken#endif /* !_BTXV86_H_ */ 77331766Sken