cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/****************************************************************************
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Realmode X86 Emulator Library
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Copyright (C) 1996-1999 SciTech Software, Inc.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Copyright (C) David Mosberger-Tang
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Copyright (C) 1999 Egbert Eich
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* ========================================================================
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Permission to use, copy, modify, distribute, and sell this software and
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* its documentation for any purpose is hereby granted without fee,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* provided that the above copyright notice appear in all copies and that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* both that copyright notice and this permission notice appear in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* supporting documentation, and that the name of the authors not be used
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* in advertising or publicity pertaining to distribution of the software
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* without specific, written prior permission. The authors makes no
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* representations about the suitability of this software for any purpose.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* It is provided "as is" without express or implied warranty.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* PERFORMANCE OF THIS SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* ========================================================================
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Language: ANSI C
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Environment: Any
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Developer: Kendall Bennett
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Description: Header file for primitive operation functions.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync****************************************************************************/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef __X86EMU_PRIM_OPS_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define __X86EMU_PRIM_OPS_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef __cplusplus
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncextern "C" { /* Use "C" linkage when in C++ mode */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 aaa_word (u16 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 aas_word (u16 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 aad_word (u16 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 aam_word (u8 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 adc_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 adc_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 adc_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 add_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 add_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 add_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 and_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 and_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 and_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 cmp_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 cmp_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 cmp_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 daa_byte (u8 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 das_byte (u8 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 dec_byte (u8 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 dec_word (u16 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 dec_long (u32 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 inc_byte (u8 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 inc_word (u16 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 inc_long (u32 d);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 or_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 or_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 or_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 neg_byte (u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 neg_word (u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 neg_long (u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 not_byte (u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 not_word (u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 not_long (u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 rcl_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 rcl_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 rcl_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 rcr_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 rcr_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 rcr_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 rol_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 rol_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 rol_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 ror_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 ror_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 ror_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 shl_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 shl_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 shl_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 shr_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 shr_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 shr_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 sar_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 sar_word (u16 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 sar_long (u32 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 shld_word (u16 d, u16 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 shld_long (u32 d, u32 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 shrd_word (u16 d, u16 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 shrd_long (u32 d, u32 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 sbb_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 sbb_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 sbb_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 sub_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 sub_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 sub_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid test_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid test_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid test_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu8 xor_byte (u8 d, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 xor_word (u16 d, u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 xor_long (u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid imul_byte (u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid imul_word (u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid imul_long (u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid imul_long_direct(u32 *res_lo, u32* res_hi,u32 d, u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid mul_byte (u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid mul_word (u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid mul_long (u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid idiv_byte (u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid idiv_word (u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid idiv_long (u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid div_byte (u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid div_word (u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid div_long (u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid ins (int size);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid outs (int size);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 mem_access_word (int addr);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid push_word (u16 w);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid push_long (u32 w);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 pop_word (void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 pop_long (void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid cpuid (void);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifdef __cplusplus
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} /* End of "C" linkage for C++ */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* __X86EMU_PRIM_OPS_H */