1/**************************************************************************** 2* 3* Realmode X86 Emulator Library 4* 5* Copyright (C) 1996-1999 SciTech Software, Inc. 6* Copyright (C) David Mosberger-Tang 7* Copyright (C) 1999 Egbert Eich 8* 9* ======================================================================== 10* 11* Permission to use, copy, modify, distribute, and sell this software and 12* its documentation for any purpose is hereby granted without fee, 13* provided that the above copyright notice appear in all copies and that 14* both that copyright notice and this permission notice appear in 15* supporting documentation, and that the name of the authors not be used 16* in advertising or publicity pertaining to distribution of the software 17* without specific, written prior permission. The authors makes no 18* representations about the suitability of this software for any purpose. 19* It is provided "as is" without express or implied warranty. 20* 21* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 22* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 23* EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 24* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 25* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 26* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 27* PERFORMANCE OF THIS SOFTWARE. 28* 29* ======================================================================== 30* 31* Language: ANSI C 32* Environment: Any 33* Developer: Kendall Bennett 34* 35* Description: Header file for primitive operation functions. 36* 37****************************************************************************/ 38 39#ifndef __X86EMU_PRIM_OPS_H 40#define __X86EMU_PRIM_OPS_H 41 42#ifdef __cplusplus 43extern "C" { /* Use "C" linkage when in C++ mode */ 44#endif 45 46u16 aaa_word (u16 d); 47u16 aas_word (u16 d); 48u16 aad_word (u16 d); 49u16 aam_word (u8 d); 50u8 adc_byte (u8 d, u8 s); 51u16 adc_word (u16 d, u16 s); 52u32 adc_long (u32 d, u32 s); 53u8 add_byte (u8 d, u8 s); 54u16 add_word (u16 d, u16 s); 55u32 add_long (u32 d, u32 s); 56u8 and_byte (u8 d, u8 s); 57u16 and_word (u16 d, u16 s); 58u32 and_long (u32 d, u32 s); 59u8 cmp_byte (u8 d, u8 s); 60u16 cmp_word (u16 d, u16 s); 61u32 cmp_long (u32 d, u32 s); 62u8 daa_byte (u8 d); 63u8 das_byte (u8 d); 64u8 dec_byte (u8 d); 65u16 dec_word (u16 d); 66u32 dec_long (u32 d); 67u8 inc_byte (u8 d); 68u16 inc_word (u16 d); 69u32 inc_long (u32 d); 70u8 or_byte (u8 d, u8 s); 71u16 or_word (u16 d, u16 s); 72u32 or_long (u32 d, u32 s); 73u8 neg_byte (u8 s); 74u16 neg_word (u16 s); 75u32 neg_long (u32 s); 76u8 not_byte (u8 s); 77u16 not_word (u16 s); 78u32 not_long (u32 s); 79u8 rcl_byte (u8 d, u8 s); 80u16 rcl_word (u16 d, u8 s); 81u32 rcl_long (u32 d, u8 s); 82u8 rcr_byte (u8 d, u8 s); 83u16 rcr_word (u16 d, u8 s); 84u32 rcr_long (u32 d, u8 s); 85u8 rol_byte (u8 d, u8 s); 86u16 rol_word (u16 d, u8 s); 87u32 rol_long (u32 d, u8 s); 88u8 ror_byte (u8 d, u8 s); 89u16 ror_word (u16 d, u8 s); 90u32 ror_long (u32 d, u8 s); 91u8 shl_byte (u8 d, u8 s); 92u16 shl_word (u16 d, u8 s); 93u32 shl_long (u32 d, u8 s); 94u8 shr_byte (u8 d, u8 s); 95u16 shr_word (u16 d, u8 s); 96u32 shr_long (u32 d, u8 s); 97u8 sar_byte (u8 d, u8 s); 98u16 sar_word (u16 d, u8 s); 99u32 sar_long (u32 d, u8 s); 100u16 shld_word (u16 d, u16 fill, u8 s); 101u32 shld_long (u32 d, u32 fill, u8 s); 102u16 shrd_word (u16 d, u16 fill, u8 s); 103u32 shrd_long (u32 d, u32 fill, u8 s); 104u8 sbb_byte (u8 d, u8 s); 105u16 sbb_word (u16 d, u16 s); 106u32 sbb_long (u32 d, u32 s); 107u8 sub_byte (u8 d, u8 s); 108u16 sub_word (u16 d, u16 s); 109u32 sub_long (u32 d, u32 s); 110void test_byte (u8 d, u8 s); 111void test_word (u16 d, u16 s); 112void test_long (u32 d, u32 s); 113u8 xor_byte (u8 d, u8 s); 114u16 xor_word (u16 d, u16 s); 115u32 xor_long (u32 d, u32 s); 116void imul_byte (u8 s); 117void imul_word (u16 s); 118void imul_long (u32 s); 119void imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s); 120void mul_byte (u8 s); 121void mul_word (u16 s); 122void mul_long (u32 s); 123void idiv_byte (u8 s); 124void idiv_word (u16 s); 125void idiv_long (u32 s); 126void div_byte (u8 s); 127void div_word (u16 s); 128void div_long (u32 s); 129void ins (int size); 130void outs (int size); 131u16 mem_access_word (int addr); 132void push_word (u16 w); 133void push_long (u32 w); 134u16 pop_word (void); 135u32 pop_long (void); 136 137#ifdef __cplusplus 138} /* End of "C" linkage for C++ */ 139#endif 140 141#endif /* __X86EMU_PRIM_OPS_H */ 142