cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/****************************************************************************
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Realmode X86 Emulator Library
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Copyright (C) 1996-1999 SciTech Software, Inc.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Copyright (C) David Mosberger-Tang
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Copyright (C) 1999 Egbert Eich
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* 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* Language: Watcom C++ 10.6 or later
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Environment: Any
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Developer: Kendall Bennett
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* Description: Inline assembler versions of the primitive operand
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* functions for faster performance. At the moment this is
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* x86 inline assembler, but these functions could be replaced
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync* with native inline assembler for each supported processor
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync****************************************************************************/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "adc al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "adc ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "adc eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "add al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "add ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "add eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "and al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "and ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "and eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "cmp al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "cmp ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "cmp eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "dec eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "inc eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "or al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "or ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "or eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "neg eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "not eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rcl al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rcl ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rcl eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rcr al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rcr ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rcr eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rol al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rol ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "rol eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "ror al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "ror ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "ror eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shl al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shl ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shl eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shr al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shr ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shr eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sar al,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sar ax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sar eax,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 shld_word_asm(u32 *flags,u16 d, u16 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shld ax,dx,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 shld_long_asm(u32 *flags,u32 d, u32 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shld eax,edx,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu16 shrd_word_asm(u32 *flags,u16 d, u16 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shrd ax,dx,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncu32 shrd_long_asm(u32 *flags,u32 d, u32 fill, u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "shrd eax,edx,cl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sbb al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sbb ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sbb eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sub al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sub ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "sub eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "test al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "test ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "test eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "xor al,bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "xor ax,bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "xor eax,ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "imul bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],ax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid imul_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 d,u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "imul bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],ax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],dx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid imul_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 d,u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "imul ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],edx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],ax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid mul_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 d,u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],ax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],dx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid mul_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 d,u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mul ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],edx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid idiv_byte_asm(u32 *flags,u8 *al,u8 *ah,u16 d,u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "idiv bl" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],al" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],ah" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid idiv_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 dlo,u16 dhi,u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "idiv bx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],ax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],dx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid idiv_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 dlo,u32 dhi,u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "idiv ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],edx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid div_byte_asm(u32 *flags,u8 *al,u8 *ah,u16 d,u8 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],al" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],ah" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid div_word_asm(u32 *flags,u16 *ax,u16 *dx,u16 dlo,u16 dhi,u16 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],ax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],dx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncvoid div_long_asm(u32 *flags,u32 *eax,u32 *edx,u32 dlo,u32 dhi,u32 s);
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "push [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "div ebx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "pop [edi]" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [esi],eax" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync "mov [ecx],edx" \
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* __X86EMU_PRIM_ASM_H */