coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
prim_ops.c File Reference
#include "x86emui.h"
Include dependency graph for prim_ops.c:

Go to the source code of this file.

Macros

#define PRIM_OPS_NO_REDEFINE_ASM
 
#define abs(x)
 
#define labs(x)
 
#define PARITY(x)   (((x86emu_parity_tab[(x) / 32] >> ((x) % 32)) & 1) == 0)
 
#define XOR2(x)   (((x) ^ ((x)>>1)) & 0x1)
 

Functions

static void set_parity_flag (u32 res)
 
static void set_szp_flags_8 (u8 res)
 
static void set_szp_flags_16 (u16 res)
 
static void set_szp_flags_32 (u32 res)
 
static void no_carry_byte_side_eff (u8 res)
 
static void no_carry_word_side_eff (u16 res)
 
static void no_carry_long_side_eff (u32 res)
 
static void calc_carry_chain (int bits, u32 d, u32 s, u32 res, int set_carry)
 
static void calc_borrow_chain (int bits, u32 d, u32 s, u32 res, int set_carry)
 
u16 aaa_word (u16 d)
 
u16 aas_word (u16 d)
 
u16 aad_word (u16 d)
 
u16 aam_word (u8 d)
 
u8 adc_byte (u8 d, u8 s)
 
u16 adc_word (u16 d, u16 s)
 
u32 adc_long (u32 d, u32 s)
 
u8 add_byte (u8 d, u8 s)
 
u16 add_word (u16 d, u16 s)
 
u32 add_long (u32 d, u32 s)
 
u8 and_byte (u8 d, u8 s)
 
u16 and_word (u16 d, u16 s)
 
u32 and_long (u32 d, u32 s)
 
u8 cmp_byte (u8 d, u8 s)
 
u16 cmp_word (u16 d, u16 s)
 
u32 cmp_long (u32 d, u32 s)
 
u8 daa_byte (u8 d)
 
u8 das_byte (u8 d)
 
u8 dec_byte (u8 d)
 
u16 dec_word (u16 d)
 
u32 dec_long (u32 d)
 
u8 inc_byte (u8 d)
 
u16 inc_word (u16 d)
 
u32 inc_long (u32 d)
 
u8 or_byte (u8 d, u8 s)
 
u16 or_word (u16 d, u16 s)
 
u32 or_long (u32 d, u32 s)
 
u8 neg_byte (u8 s)
 
u16 neg_word (u16 s)
 
u32 neg_long (u32 s)
 
u8 not_byte (u8 s)
 
u16 not_word (u16 s)
 
u32 not_long (u32 s)
 
u8 rcl_byte (u8 d, u8 s)
 
u16 rcl_word (u16 d, u8 s)
 
u32 rcl_long (u32 d, u8 s)
 
u8 rcr_byte (u8 d, u8 s)
 
u16 rcr_word (u16 d, u8 s)
 
u32 rcr_long (u32 d, u8 s)
 
u8 rol_byte (u8 d, u8 s)
 
u16 rol_word (u16 d, u8 s)
 
u32 rol_long (u32 d, u8 s)
 
u8 ror_byte (u8 d, u8 s)
 
u16 ror_word (u16 d, u8 s)
 
u32 ror_long (u32 d, u8 s)
 
u8 shl_byte (u8 d, u8 s)
 
u16 shl_word (u16 d, u8 s)
 
u32 shl_long (u32 d, u8 s)
 
u8 shr_byte (u8 d, u8 s)
 
u16 shr_word (u16 d, u8 s)
 
u32 shr_long (u32 d, u8 s)
 
u8 sar_byte (u8 d, u8 s)
 
u16 sar_word (u16 d, u8 s)
 
u32 sar_long (u32 d, u8 s)
 
u16 shld_word (u16 d, u16 fill, u8 s)
 
u32 shld_long (u32 d, u32 fill, u8 s)
 
u16 shrd_word (u16 d, u16 fill, u8 s)
 
u32 shrd_long (u32 d, u32 fill, u8 s)
 
u8 sbb_byte (u8 d, u8 s)
 
u16 sbb_word (u16 d, u16 s)
 
u32 sbb_long (u32 d, u32 s)
 
u8 sub_byte (u8 d, u8 s)
 
u16 sub_word (u16 d, u16 s)
 
u32 sub_long (u32 d, u32 s)
 
void test_byte (u8 d, u8 s)
 
void test_word (u16 d, u16 s)
 
void test_long (u32 d, u32 s)
 
u8 xor_byte (u8 d, u8 s)
 
u16 xor_word (u16 d, u16 s)
 
u32 xor_long (u32 d, u32 s)
 
void imul_byte (u8 s)
 
void imul_word (u16 s)
 
void imul_long_direct (u32 *res_lo, u32 *res_hi, u32 d, u32 s)
 
void imul_long (u32 s)
 
void mul_byte (u8 s)
 
void mul_word (u16 s)
 
void mul_long (u32 s)
 
void idiv_byte (u8 s)
 
void idiv_word (u16 s)
 
void idiv_long (u32 s)
 
void div_byte (u8 s)
 
void div_word (u16 s)
 
void div_long (u32 s)
 
static void single_in (int size)
 
void ins (int size)
 
static void single_out (int size)
 
void outs (int size)
 
u16 mem_access_word (int addr)
 
void push_word (u16 w)
 
void push_long (u32 w)
 
u16 pop_word (void)
 
u32 pop_long (void)
 
void x86emu_cpuid (void)
 

Variables

static u32 x86emu_parity_tab [8]
 

Macro Definition Documentation

◆ abs

#define abs (   x)
Value:
({ \
int __x = (x); \
(__x < 0) ? -__x : __x; \
})
int x
Definition: edid.c:994

Definition at line 103 of file prim_ops.c.

◆ labs

#define labs (   x)
Value:
({ \
long __x = (x); \
(__x < 0) ? -__x : __x; \
})

Definition at line 108 of file prim_ops.c.

◆ PARITY

#define PARITY (   x)    (((x86emu_parity_tab[(x) / 32] >> ((x) % 32)) & 1) == 0)

Definition at line 127 of file prim_ops.c.

◆ PRIM_OPS_NO_REDEFINE_ASM

#define PRIM_OPS_NO_REDEFINE_ASM

Definition at line 100 of file prim_ops.c.

◆ XOR2

#define XOR2 (   x)    (((x) ^ ((x)>>1)) & 0x1)

Definition at line 128 of file prim_ops.c.

Function Documentation

◆ aaa_word()

u16 aaa_word ( u16  d)

Definition at line 217 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, F_AF, F_CF, SET_FLAG, and set_szp_flags_16().

Referenced by x86emuOp_aaa().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aad_word()

u16 aad_word ( u16  d)

Definition at line 259 of file prim_ops.c.

References no_carry_byte_side_eff().

Referenced by x86emuOp_aad().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aam_word()

u16 aam_word ( u8  d)

Definition at line 276 of file prim_ops.c.

References no_carry_byte_side_eff().

Referenced by x86emuOp_aam().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ aas_word()

u16 aas_word ( u16  d)

Definition at line 238 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, F_AF, F_CF, SET_FLAG, and set_szp_flags_16().

Referenced by x86emuOp_aas().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ adc_byte()

u8 adc_byte ( u8  d,
u8  s 
)

Definition at line 292 of file prim_ops.c.

References ACCESS_FLAG, calc_carry_chain(), F_CF, s, and set_szp_flags_8().

Here is the call graph for this function:

◆ adc_long()

u32 adc_long ( u32  d,
u32  s 
)

Definition at line 327 of file prim_ops.c.

References ACCESS_FLAG, calc_carry_chain(), CONDITIONAL_SET_FLAG, F_CF, s, and set_szp_flags_32().

Here is the call graph for this function:

◆ adc_word()

u16 adc_word ( u16  d,
u16  s 
)

Definition at line 309 of file prim_ops.c.

References ACCESS_FLAG, calc_carry_chain(), F_CF, s, and set_szp_flags_16().

Here is the call graph for this function:

◆ add_byte()

u8 add_byte ( u8  d,
u8  s 
)

Definition at line 355 of file prim_ops.c.

References calc_carry_chain(), s, and set_szp_flags_8().

Here is the call graph for this function:

◆ add_long()

u32 add_long ( u32  d,
u32  s 
)

Definition at line 385 of file prim_ops.c.

References calc_carry_chain(), CONDITIONAL_SET_FLAG, F_CF, s, and set_szp_flags_32().

Here is the call graph for this function:

◆ add_word()

u16 add_word ( u16  d,
u16  s 
)

Definition at line 370 of file prim_ops.c.

References calc_carry_chain(), s, and set_szp_flags_16().

Here is the call graph for this function:

◆ and_byte()

u8 and_byte ( u8  d,
u8  s 
)

Definition at line 402 of file prim_ops.c.

References no_carry_byte_side_eff(), and s.

Here is the call graph for this function:

◆ and_long()

u32 and_long ( u32  d,
u32  s 
)

Definition at line 430 of file prim_ops.c.

References no_carry_long_side_eff(), and s.

Here is the call graph for this function:

◆ and_word()

u16 and_word ( u16  d,
u16  s 
)

Definition at line 416 of file prim_ops.c.

References no_carry_word_side_eff(), and s.

Here is the call graph for this function:

◆ calc_borrow_chain()

static void calc_borrow_chain ( int  bits,
u32  d,
u32  s,
u32  res,
int  set_carry 
)
static

Definition at line 201 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, and XOR2.

Referenced by cmp_byte(), cmp_long(), cmp_word(), dec_byte(), dec_long(), dec_word(), neg_byte(), neg_long(), and neg_word().

Here is the caller graph for this function:

◆ calc_carry_chain()

static void calc_carry_chain ( int  bits,
u32  d,
u32  s,
u32  res,
int  set_carry 
)
static

Definition at line 189 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, and XOR2.

Referenced by adc_byte(), adc_long(), adc_word(), add_byte(), add_long(), add_word(), inc_byte(), inc_long(), and inc_word().

Here is the caller graph for this function:

◆ cmp_byte()

u8 cmp_byte ( u8  d,
u8  s 
)

Definition at line 443 of file prim_ops.c.

References calc_borrow_chain(), s, and set_szp_flags_8().

Referenced by x86emuOp_cmps_byte(), and x86emuOp_scas_byte().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cmp_long()

u32 cmp_long ( u32  d,
u32  s 
)

Definition at line 473 of file prim_ops.c.

References calc_borrow_chain(), s, and set_szp_flags_32().

Referenced by x86emuOp_cmps_word(), and x86emuOp_scas_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cmp_word()

u16 cmp_word ( u16  d,
u16  s 
)

Definition at line 458 of file prim_ops.c.

References calc_borrow_chain(), s, and set_szp_flags_16().

Referenced by x86emuOp_cmps_word(), and x86emuOp_scas_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ daa_byte()

u8 daa_byte ( u8  d)

Definition at line 488 of file prim_ops.c.

References ACCESS_FLAG, F_AF, F_CF, SET_FLAG, and set_szp_flags_8().

Referenced by x86emuOp_daa().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ das_byte()

u8 das_byte ( u8  d)

Definition at line 507 of file prim_ops.c.

References ACCESS_FLAG, F_AF, F_CF, SET_FLAG, and set_szp_flags_8().

Referenced by x86emuOp_das().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dec_byte()

u8 dec_byte ( u8  d)

Definition at line 525 of file prim_ops.c.

References calc_borrow_chain(), and set_szp_flags_8().

Referenced by x86emuOp_opcFE_byte_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dec_long()

u32 dec_long ( u32  d)

Definition at line 555 of file prim_ops.c.

References calc_borrow_chain(), and set_szp_flags_32().

Referenced by x86emuOp_dec_register(), and x86emuOp_opcFF_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dec_word()

u16 dec_word ( u16  d)

Definition at line 540 of file prim_ops.c.

References calc_borrow_chain(), and set_szp_flags_16().

Referenced by x86emuOp_dec_register(), and x86emuOp_opcFF_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ div_byte()

void div_byte ( u8  s)

Definition at line 2173 of file prim_ops.c.

References abs, M, s, and x86emu_intr_raise().

Referenced by x86emuOp_opcF6_byte_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ div_long()

void div_long ( u32  s)

Definition at line 2224 of file prim_ops.c.

References abs, CLEAR_FLAG, F_AF, F_CF, F_SF, F_ZF, M, s, SET_FLAG, set_parity_flag(), and x86emu_intr_raise().

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ div_word()

void div_word ( u16  s)

Definition at line 2196 of file prim_ops.c.

References abs, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_SF, F_ZF, M, s, set_parity_flag(), and x86emu_intr_raise().

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ idiv_byte()

void idiv_byte ( u8  s)

Definition at line 2048 of file prim_ops.c.

References abs, M, s, and x86emu_intr_raise().

Referenced by x86emuOp_opcF6_byte_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ idiv_long()

void idiv_long ( u32  s)

Definition at line 2099 of file prim_ops.c.

References abs, CLEAR_FLAG, F_AF, F_CF, F_SF, F_ZF, M, s, SET_FLAG, set_parity_flag(), and x86emu_intr_raise().

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ idiv_word()

void idiv_word ( u16  s)

Definition at line 2071 of file prim_ops.c.

References abs, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_SF, F_ZF, M, s, set_parity_flag(), and x86emu_intr_raise().

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ imul_byte()

void imul_byte ( u8  s)

Definition at line 1881 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, M, s, and SET_FLAG.

Referenced by x86emuOp_opcF6_byte_RM().

Here is the caller graph for this function:

◆ imul_long()

void imul_long ( u32  s)

Definition at line 1958 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, imul_long_direct(), M, s, and SET_FLAG.

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ imul_long_direct()

void imul_long_direct ( u32 res_lo,
u32 res_hi,
u32  d,
u32  s 
)

Definition at line 1920 of file prim_ops.c.

References s.

Referenced by imul_long(), x86emuOp2_imul_R_RM(), x86emuOp_imul_byte_IMM(), and x86emuOp_imul_word_IMM().

Here is the caller graph for this function:

◆ imul_word()

void imul_word ( u16  s)

Definition at line 1900 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, M, s, and SET_FLAG.

Referenced by x86emuOp_opcF7_word_RM().

Here is the caller graph for this function:

◆ inc_byte()

u8 inc_byte ( u8  d)

Definition at line 571 of file prim_ops.c.

References calc_carry_chain(), and set_szp_flags_8().

Referenced by x86emuOp_opcFE_byte_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ inc_long()

u32 inc_long ( u32  d)

Definition at line 601 of file prim_ops.c.

References calc_carry_chain(), and set_szp_flags_32().

Referenced by x86emuOp_inc_register(), and x86emuOp_opcFF_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ inc_word()

u16 inc_word ( u16  d)

Definition at line 586 of file prim_ops.c.

References calc_carry_chain(), and set_szp_flags_16().

Referenced by x86emuOp_inc_register(), and x86emuOp_opcFF_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ins()

void ins ( int  size)

Definition at line 2305 of file prim_ops.c.

References ACCESS_FLAG, count, F_DF, M, single_in(), SYSMODE_32BIT_REP, SYSMODE_PREFIX_REPE, and SYSMODE_PREFIX_REPNE.

Referenced by fetch_16bit_instruction(), fetch_32bit_instruction(), x86emuOp_ins_byte(), and x86emuOp_ins_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mem_access_word()

u16 mem_access_word ( int  addr)

Definition at line 2381 of file prim_ops.c.

References addr, CHECK_MEM_ACCESS, DB, and x86emu_check_mem_access().

Referenced by x86emu_intr_handle(), X86EMU_prepareForInt(), x86emuOp_int3(), x86emuOp_int_IMM(), and x86emuOp_into().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mul_byte()

void mul_byte ( u8  s)

Definition at line 1975 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, M, s, and SET_FLAG.

Referenced by x86emuOp_opcF6_byte_RM().

Here is the caller graph for this function:

◆ mul_long()

void mul_long ( u32  s)

Definition at line 2012 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, M, s, and SET_FLAG.

Referenced by x86emuOp_opcF7_word_RM().

Here is the caller graph for this function:

◆ mul_word()

void mul_word ( u16  s)

Definition at line 1993 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, M, s, and SET_FLAG.

Referenced by x86emuOp_opcF7_word_RM().

Here is the caller graph for this function:

◆ neg_byte()

u8 neg_byte ( u8  s)

Definition at line 656 of file prim_ops.c.

References calc_borrow_chain(), CONDITIONAL_SET_FLAG, F_CF, s, and set_szp_flags_8().

Referenced by x86emuOp_opcF6_byte_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ neg_long()

u32 neg_long ( u32  s)

Definition at line 688 of file prim_ops.c.

References calc_borrow_chain(), CONDITIONAL_SET_FLAG, F_CF, s, and set_szp_flags_32().

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ neg_word()

u16 neg_word ( u16  s)

Definition at line 672 of file prim_ops.c.

References calc_borrow_chain(), CONDITIONAL_SET_FLAG, F_CF, s, and set_szp_flags_16().

Referenced by x86emuOp_opcF7_word_RM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ no_carry_byte_side_eff()

static void no_carry_byte_side_eff ( u8  res)
static

Definition at line 165 of file prim_ops.c.

References CLEAR_FLAG, F_AF, F_CF, F_OF, and set_szp_flags_8().

Referenced by aad_word(), aam_word(), and_byte(), or_byte(), and xor_byte().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ no_carry_long_side_eff()

static void no_carry_long_side_eff ( u32  res)
static

Definition at line 181 of file prim_ops.c.

References CLEAR_FLAG, F_AF, F_CF, F_OF, and set_szp_flags_32().

Referenced by and_long(), or_long(), and xor_long().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ no_carry_word_side_eff()

static void no_carry_word_side_eff ( u16  res)
static

Definition at line 173 of file prim_ops.c.

References CLEAR_FLAG, F_AF, F_CF, F_OF, and set_szp_flags_16().

Referenced by and_word(), or_word(), and xor_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ not_byte()

u8 not_byte ( u8  s)

Definition at line 704 of file prim_ops.c.

References s.

Referenced by x86emuOp_opcF6_byte_RM().

Here is the caller graph for this function:

◆ not_long()

u32 not_long ( u32  s)

Definition at line 722 of file prim_ops.c.

References s.

Referenced by x86emuOp_opcF7_word_RM().

Here is the caller graph for this function:

◆ not_word()

u16 not_word ( u16  s)

Definition at line 713 of file prim_ops.c.

References s.

Referenced by x86emuOp_opcF7_word_RM().

Here is the caller graph for this function:

◆ or_byte()

u8 or_byte ( u8  d,
u8  s 
)

Definition at line 616 of file prim_ops.c.

References no_carry_byte_side_eff(), and s.

Here is the call graph for this function:

◆ or_long()

u32 or_long ( u32  d,
u32  s 
)

Definition at line 643 of file prim_ops.c.

References no_carry_long_side_eff(), and s.

Here is the call graph for this function:

◆ or_word()

u16 or_word ( u16  d,
u16  s 
)

Definition at line 630 of file prim_ops.c.

References no_carry_word_side_eff(), and s.

Here is the call graph for this function:

◆ outs()

void outs ( int  size)

Definition at line 2347 of file prim_ops.c.

References ACCESS_FLAG, count, F_DF, M, single_out(), SYSMODE_32BIT_REP, SYSMODE_PREFIX_REPE, and SYSMODE_PREFIX_REPNE.

Referenced by x86emuOp_outs_byte(), and x86emuOp_outs_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pop_long()

u32 pop_long ( void  )

Definition at line 2439 of file prim_ops.c.

References CHECK_SP_ACCESS, DB, M, and x86emu_check_sp_access().

Referenced by pmm_handleInt(), x86emuOp_pop_all(), x86emuOp_pop_register(), x86emuOp_pop_RM(), and x86emuOp_popf_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pop_word()

◆ push_long()

void push_long ( u32  w)

Definition at line 2408 of file prim_ops.c.

References CHECK_SP_ACCESS, DB, M, and x86emu_check_sp_access().

Referenced by pmm_test(), x86emuOp_call_far_IMM(), x86emuOp_call_near_IMM(), x86emuOp_opcFF_word_RM(), x86emuOp_push_all(), x86emuOp_push_byte_IMM(), x86emuOp_push_register(), x86emuOp_push_word_IMM(), and x86emuOp_pushf_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ push_word()

◆ rcl_byte()

u8 rcl_byte ( u8  d,
u8  s 
)

Definition at line 731 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rcl_long()

u32 rcl_long ( u32  d,
u8  s 
)

Definition at line 828 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rcl_word()

u16 rcl_word ( u16  d,
u8  s 
)

Definition at line 804 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rcr_byte()

u8 rcr_byte ( u8  d,
u8  s 
)

Definition at line 852 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rcr_long()

u32 rcr_long ( u32  d,
u8  s 
)

Definition at line 968 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rcr_word()

u16 rcr_word ( u16  d,
u8  s 
)

Definition at line 936 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rol_byte()

u8 rol_byte ( u8  d,
u8  s 
)

Definition at line 1001 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rol_long()

u32 rol_long ( u32  d,
u8  s 
)

Definition at line 1075 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ rol_word()

u16 rol_word ( u16  d,
u8  s 
)

Definition at line 1050 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ ror_byte()

u8 ror_byte ( u8  d,
u8  s 
)

Definition at line 1100 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ ror_long()

u32 ror_long ( u32  d,
u8  s 
)

Definition at line 1169 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ ror_word()

u16 ror_word ( u16  d,
u8  s 
)

Definition at line 1146 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_CF, F_OF, mask, s, and XOR2.

◆ sar_byte()

u8 sar_byte ( u8  d,
u8  s 
)

Definition at line 1411 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_PF, F_SF, F_ZF, mask, s, SET_FLAG, and set_szp_flags_8().

Here is the call graph for this function:

◆ sar_long()

u32 sar_long ( u32  d,
u8  s 
)

Definition at line 1487 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_PF, F_SF, F_ZF, mask, s, SET_FLAG, and set_szp_flags_32().

Here is the call graph for this function:

◆ sar_word()

u16 sar_word ( u16  d,
u8  s 
)

Definition at line 1449 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_PF, F_SF, F_ZF, mask, s, SET_FLAG, and set_szp_flags_16().

Here is the call graph for this function:

◆ sbb_byte()

u8 sbb_byte ( u8  d,
u8  s 
)

Definition at line 1664 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, set_szp_flags_8(), and XOR2.

Here is the call graph for this function:

◆ sbb_long()

u32 sbb_long ( u32  d,
u32  s 
)

Definition at line 1710 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, set_szp_flags_32(), and XOR2.

Here is the call graph for this function:

◆ sbb_word()

u16 sbb_word ( u16  d,
u16  s 
)

Definition at line 1687 of file prim_ops.c.

References ACCESS_FLAG, CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, set_szp_flags_16(), and XOR2.

Here is the call graph for this function:

◆ set_parity_flag()

static void set_parity_flag ( u32  res)
static

Definition at line 139 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_PF, and PARITY.

Referenced by div_long(), div_word(), idiv_long(), idiv_word(), set_szp_flags_16(), set_szp_flags_32(), and set_szp_flags_8().

Here is the caller graph for this function:

◆ set_szp_flags_16()

static void set_szp_flags_16 ( u16  res)
static

Definition at line 151 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_SF, F_ZF, and set_parity_flag().

Referenced by aaa_word(), aas_word(), adc_word(), add_word(), cmp_word(), dec_word(), inc_word(), neg_word(), no_carry_word_side_eff(), sar_word(), sbb_word(), shl_word(), shld_word(), shr_word(), shrd_word(), sub_word(), and test_word().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_szp_flags_32()

static void set_szp_flags_32 ( u32  res)
static

Definition at line 158 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_SF, F_ZF, and set_parity_flag().

Referenced by adc_long(), add_long(), cmp_long(), dec_long(), inc_long(), neg_long(), no_carry_long_side_eff(), sar_long(), sbb_long(), shl_long(), shld_long(), shr_long(), shrd_long(), sub_long(), and test_long().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_szp_flags_8()

static void set_szp_flags_8 ( u8  res)
static

Definition at line 144 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_SF, F_ZF, and set_parity_flag().

Referenced by adc_byte(), add_byte(), cmp_byte(), daa_byte(), das_byte(), dec_byte(), inc_byte(), neg_byte(), no_carry_byte_side_eff(), sar_byte(), sbb_byte(), shl_byte(), shr_byte(), sub_byte(), and test_byte().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shl_byte()

u8 shl_byte ( u8  d,
u8  s 
)

Definition at line 1192 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, and set_szp_flags_8().

Here is the call graph for this function:

◆ shl_long()

u32 shl_long ( u32  d,
u8  s 
)

Definition at line 1272 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, and set_szp_flags_32().

Here is the call graph for this function:

◆ shl_word()

u16 shl_word ( u16  d,
u8  s 
)

Definition at line 1234 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, and set_szp_flags_16().

Here is the call graph for this function:

◆ shld_long()

u32 shld_long ( u32  d,
u32  fill,
u8  s 
)

Definition at line 1560 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, and set_szp_flags_32().

Referenced by x86emuOp2_shld_CL(), and x86emuOp2_shld_IMM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shld_word()

u16 shld_word ( u16  d,
u16  fill,
u8  s 
)

Definition at line 1525 of file prim_ops.c.

References ACCESS_FLAG, CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, and set_szp_flags_16().

Referenced by x86emuOp2_shld_CL(), and x86emuOp2_shld_IMM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shr_byte()

u8 shr_byte ( u8  d,
u8  s 
)

Definition at line 1307 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, set_szp_flags_8(), and XOR2.

Here is the call graph for this function:

◆ shr_long()

u32 shr_long ( u32  d,
u8  s 
)

Definition at line 1377 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, set_szp_flags_32(), and XOR2.

Here is the call graph for this function:

◆ shr_word()

u16 shr_word ( u16  d,
u8  s 
)

Definition at line 1342 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, set_szp_flags_16(), and XOR2.

Here is the call graph for this function:

◆ shrd_long()

u32 shrd_long ( u32  d,
u32  fill,
u8  s 
)

Definition at line 1630 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, set_szp_flags_32(), and XOR2.

Referenced by x86emuOp2_shrd_CL(), and x86emuOp2_shrd_IMM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shrd_word()

u16 shrd_word ( u16  d,
u16  fill,
u8  s 
)

Definition at line 1595 of file prim_ops.c.

References CLEAR_FLAG, CONDITIONAL_SET_FLAG, F_CF, F_OF, F_PF, F_SF, F_ZF, s, SET_FLAG, set_szp_flags_16(), and XOR2.

Referenced by x86emuOp2_shrd_CL(), and x86emuOp2_shrd_IMM().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ single_in()

static void single_in ( int  size)
static

Definition at line 2295 of file prim_ops.c.

References M, store_data_byte_abs(), store_data_long_abs(), and store_data_word_abs().

Referenced by ins().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ single_out()

static void single_out ( int  size)
static

Definition at line 2337 of file prim_ops.c.

References fetch_data_byte_abs(), fetch_data_long_abs(), fetch_data_word_abs(), and M.

Referenced by outs().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sub_byte()

u8 sub_byte ( u8  d,
u8  s 
)

Definition at line 1734 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, set_szp_flags_8(), and XOR2.

Here is the call graph for this function:

◆ sub_long()

u32 sub_long ( u32  d,
u32  s 
)

Definition at line 1774 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, set_szp_flags_32(), and XOR2.

Here is the call graph for this function:

◆ sub_word()

u16 sub_word ( u16  d,
u16  s 
)

Definition at line 1754 of file prim_ops.c.

References CONDITIONAL_SET_FLAG, F_AF, F_CF, F_OF, s, set_szp_flags_16(), and XOR2.

Here is the call graph for this function:

◆ test_byte()

void test_byte ( u8  d,
u8  s 
)

Definition at line 1794 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, s, and set_szp_flags_8().

Referenced by x86emuOp_opcF6_byte_RM(), x86emuOp_test_AL_IMM(), and x86emuOp_test_byte_RM_R().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_long()

void test_long ( u32  d,
u32  s 
)

Definition at line 1826 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, s, and set_szp_flags_32().

Referenced by x86emuOp_opcF7_word_RM(), x86emuOp_test_AX_IMM(), and x86emuOp_test_word_RM_R().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ test_word()

void test_word ( u16  d,
u16  s 
)

Definition at line 1810 of file prim_ops.c.

References CLEAR_FLAG, F_CF, F_OF, s, and set_szp_flags_16().

Referenced by x86emuOp_opcF7_word_RM(), x86emuOp_test_AX_IMM(), and x86emuOp_test_word_RM_R().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ x86emu_cpuid()

void x86emu_cpuid ( void  )

Definition at line 2454 of file prim_ops.c.

References M.

Referenced by x86emuOp2_cpuid().

Here is the caller graph for this function:

◆ xor_byte()

u8 xor_byte ( u8  d,
u8  s 
)

Definition at line 1842 of file prim_ops.c.

References no_carry_byte_side_eff(), and s.

Here is the call graph for this function:

◆ xor_long()

u32 xor_long ( u32  d,
u32  s 
)

Definition at line 1868 of file prim_ops.c.

References no_carry_long_side_eff(), and s.

Here is the call graph for this function:

◆ xor_word()

u16 xor_word ( u16  d,
u16  s 
)

Definition at line 1855 of file prim_ops.c.

References no_carry_word_side_eff(), and s.

Here is the call graph for this function:

Variable Documentation

◆ x86emu_parity_tab

u32 x86emu_parity_tab[8]
static
Initial value:
=
{
0x96696996,
0x69969669,
0x69969669,
0x96696996,
0x69969669,
0x96696996,
0x96696996,
0x69969669,
}

Definition at line 115 of file prim_ops.c.