Lines Matching refs:src
901 #define emulate_stub(dst, src...) do { \ argument
906 : [msk] "i" (EFLAGS_MASK), ## src); \
2997 struct operand src = { .reg = PTR_POISON }; in x86_emulate() local
3044 src.type = OP_NONE; in x86_emulate()
3047 src.type = OP_REG; in x86_emulate()
3050 src.reg = decode_register(modrm_reg, &_regs, (rex_prefix == 0)); in x86_emulate()
3051 src.val = *(uint8_t *)src.reg; in x86_emulate()
3052 src.bytes = 1; in x86_emulate()
3056 src.reg = decode_register(modrm_reg, &_regs, 0); in x86_emulate()
3057 switch ( (src.bytes = op_bytes) ) in x86_emulate()
3059 case 2: src.val = *(uint16_t *)src.reg; break; in x86_emulate()
3060 case 4: src.val = *(uint32_t *)src.reg; break; in x86_emulate()
3061 case 8: src.val = *(uint64_t *)src.reg; break; in x86_emulate()
3073 src = ea; in x86_emulate()
3074 if ( src.type == OP_REG ) in x86_emulate()
3076 switch ( src.bytes ) in x86_emulate()
3078 case 1: src.val = *(uint8_t *)src.reg; break; in x86_emulate()
3079 case 2: src.val = *(uint16_t *)src.reg; break; in x86_emulate()
3080 case 4: src.val = *(uint32_t *)src.reg; break; in x86_emulate()
3081 case 8: src.val = *(uint64_t *)src.reg; break; in x86_emulate()
3084 else if ( (rc = read_ulong(src.mem.seg, src.mem.off, in x86_emulate()
3085 &src.val, src.bytes, ctxt, ops)) ) in x86_emulate()
3090 src.bytes = op_bytes != 8 ? op_bytes : 4; in x86_emulate()
3094 src.bytes = 1; in x86_emulate()
3096 src.type = OP_IMM; in x86_emulate()
3097 src.val = imm1; in x86_emulate()
3100 src.type = OP_IMM; in x86_emulate()
3101 src.bytes = 2; in x86_emulate()
3102 src.val = imm1; in x86_emulate()
3157 src.val = (int16_t)src.val; in x86_emulate()
3159 src.val = (int32_t)src.val; in x86_emulate()
3160 if ( (long)src.val < 0 ) in x86_emulate()
3162 op_bytes + (((-src.val - 1) >> 3) & ~(op_bytes - 1L)); in x86_emulate()
3164 ea.mem.off += (src.val >> 3) & ~(op_bytes - 1L); in x86_emulate()
3169 src.val &= (op_bytes << 3) - 1; in x86_emulate()
3219 emulate_2op_SrcV("add", src, dst, _regs.eflags); in x86_emulate()
3223 emulate_2op_SrcV("or", src, dst, _regs.eflags); in x86_emulate()
3227 emulate_2op_SrcV("adc", src, dst, _regs.eflags); in x86_emulate()
3231 emulate_2op_SrcV("sbb", src, dst, _regs.eflags); in x86_emulate()
3235 emulate_2op_SrcV("and", src, dst, _regs.eflags); in x86_emulate()
3239 emulate_2op_SrcV("sub", src, dst, _regs.eflags); in x86_emulate()
3243 emulate_2op_SrcV("xor", src, dst, _regs.eflags); in x86_emulate()
3248 emulate_2op_SrcV("cmp", src, dst, _regs.eflags); in x86_emulate()
3262 src.val = sreg.sel; in x86_emulate()
3332 src.val = *(unsigned long *)decode_register( in x86_emulate()
3382 generate_exception_if(src.type != OP_MEM, EXC_UD); in x86_emulate()
3383 if ( (rc = read_ulong(src.mem.seg, truncate_ea(src.mem.off + op_bytes), in x86_emulate()
3387 lb = (op_bytes == 2) ? (int16_t)src.val : (int32_t)src.val; in x86_emulate()
3399 src.val = *ea.reg; in x86_emulate()
3401 &src.val, 4, ctxt, ops)) ) in x86_emulate()
3403 dst.val = (int32_t)src.val; in x86_emulate()
3437 dst.val = src.val; in x86_emulate()
3537 jmp_rel((int32_t)src.val); in x86_emulate()
3557 emulate_2op_SrcV("test", src, dst, _regs.eflags); in x86_emulate()
3565 case 1: *(uint8_t *)src.reg = (uint8_t)dst.val; break; in x86_emulate()
3566 case 2: *(uint16_t *)src.reg = (uint16_t)dst.val; break; in x86_emulate()
3567 case 4: *src.reg = (uint32_t)dst.val; break; /* 64b reg: zero-extend */ in x86_emulate()
3568 case 8: *src.reg = dst.val; break; in x86_emulate()
3571 dst.val = src.val; in x86_emulate()
3585 jmp_rel((int32_t)src.val); in x86_emulate()
3595 dst.val = src.val; in x86_emulate()
3619 if ( (rc = load_seg(seg, src.val, 0, NULL, ctxt, ops)) != 0 ) in x86_emulate()
3678 src.val = sreg.sel, in x86_emulate()
3680 &src.val, op_bytes, ctxt)) || in x86_emulate()
3710 src.val = (_regs.flags & ~X86_EFLAGS_IF) | X86_EFLAGS_IOPL; in x86_emulate()
3712 src.val |= X86_EFLAGS_IF; in x86_emulate()
3715 src.val = _regs.r(flags) & ~(X86_EFLAGS_VM | X86_EFLAGS_RF); in x86_emulate()
3786 src.mem.off = truncate_ea_and_reps(_regs.r(si), nr_reps, dst.bytes); in x86_emulate()
3788 ((rc = ops->rep_movs(ea.mem.seg, src.mem.off, in x86_emulate()
3792 if ( (rc = read_ulong(ea.mem.seg, src.mem.off, in x86_emulate()
3810 src.bytes = dst.bytes = (d & ByteOp) ? 1 : op_bytes; in x86_emulate()
3814 &src.val, src.bytes, ctxt, ops)) ) in x86_emulate()
3817 register_address_adjust(_regs.r(di), src.bytes); in x86_emulate()
3820 emulate_2op_SrcV("cmp", src, dst, _regs.eflags); in x86_emulate()
3830 dst.bytes = src.bytes; in x86_emulate()
3834 ((rc = ops->rep_stos(&src.val, in x86_emulate()
3838 dst.val = src.val; in x86_emulate()
3864 &dst.val, src.bytes, ctxt, ops)) != 0 ) in x86_emulate()
3866 register_address_adjust(_regs.r(di), src.bytes); in x86_emulate()
3869 dst.bytes = src.bytes; in x86_emulate()
3870 emulate_2op_SrcV("cmp", dst, src, _regs.eflags); in x86_emulate()
3880 dst.val = src.val; in x86_emulate()
3886 dst.val = src.val; in x86_emulate()
3894 emulate_2op_SrcB("rol", src, dst, _regs.eflags); in x86_emulate()
3897 emulate_2op_SrcB("ror", src, dst, _regs.eflags); in x86_emulate()
3900 emulate_2op_SrcB("rcl", src, dst, _regs.eflags); in x86_emulate()
3903 emulate_2op_SrcB("rcr", src, dst, _regs.eflags); in x86_emulate()
3907 emulate_2op_SrcB("sal", src, dst, _regs.eflags); in x86_emulate()
3910 emulate_2op_SrcB("shr", src, dst, _regs.eflags); in x86_emulate()
3913 emulate_2op_SrcB("sar", src, dst, _regs.eflags); in x86_emulate()
3921 if ( (rc = read_ulong(x86_seg_ss, sp_post_inc(op_bytes + src.val), in x86_emulate()
3933 generate_exception_if(src.type != OP_MEM, EXC_UD); in x86_emulate()
3934 if ( (rc = read_ulong(src.mem.seg, truncate_ea(src.mem.off + src.bytes), in x86_emulate()
3940 dst.val = src.val; in x86_emulate()
3971 sp_pre_dec(src.val); in x86_emulate()
3994 (rc = read_ulong(x86_seg_ss, sp_post_inc(op_bytes + src.val), in x86_emulate()
3995 &src.val, op_bytes, ctxt, ops)) || in x86_emulate()
3996 (rc = load_seg(x86_seg_cs, src.val, 1, &cs, ctxt, ops)) || in x86_emulate()
4059 src.val = 1; in x86_emulate()
4063 src.val = _regs.cl; in x86_emulate()
4068 n = (uint8_t)src.val; in x86_emulate()
4114 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4120 emulate_fpu_insn_memsrc("fadds", src.val); in x86_emulate()
4123 emulate_fpu_insn_memsrc("fmuls", src.val); in x86_emulate()
4126 emulate_fpu_insn_memsrc("fcoms", src.val); in x86_emulate()
4129 emulate_fpu_insn_memsrc("fcomps", src.val); in x86_emulate()
4132 emulate_fpu_insn_memsrc("fsubs", src.val); in x86_emulate()
4135 emulate_fpu_insn_memsrc("fsubrs", src.val); in x86_emulate()
4138 emulate_fpu_insn_memsrc("fdivs", src.val); in x86_emulate()
4141 emulate_fpu_insn_memsrc("fdivrs", src.val); in x86_emulate()
4194 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4197 emulate_fpu_insn_memsrc("flds", src.val); in x86_emulate()
4213 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4216 emulate_fpu_insn_memsrc("fldcw", src.val); in x86_emulate()
4258 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4264 emulate_fpu_insn_memsrc("fiaddl", src.val); in x86_emulate()
4267 emulate_fpu_insn_memsrc("fimull", src.val); in x86_emulate()
4270 emulate_fpu_insn_memsrc("ficoml", src.val); in x86_emulate()
4273 emulate_fpu_insn_memsrc("ficompl", src.val); in x86_emulate()
4276 emulate_fpu_insn_memsrc("fisubl", src.val); in x86_emulate()
4279 emulate_fpu_insn_memsrc("fisubrl", src.val); in x86_emulate()
4282 emulate_fpu_insn_memsrc("fidivl", src.val); in x86_emulate()
4285 emulate_fpu_insn_memsrc("fidivrl", src.val); in x86_emulate()
4321 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4324 emulate_fpu_insn_memsrc("fildl", src.val); in x86_emulate()
4382 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4388 emulate_fpu_insn_memsrc("faddl", src.val); in x86_emulate()
4391 emulate_fpu_insn_memsrc("fmull", src.val); in x86_emulate()
4394 emulate_fpu_insn_memsrc("fcoml", src.val); in x86_emulate()
4397 emulate_fpu_insn_memsrc("fcompl", src.val); in x86_emulate()
4400 emulate_fpu_insn_memsrc("fsubl", src.val); in x86_emulate()
4403 emulate_fpu_insn_memsrc("fsubrl", src.val); in x86_emulate()
4406 emulate_fpu_insn_memsrc("fdivl", src.val); in x86_emulate()
4409 emulate_fpu_insn_memsrc("fdivrl", src.val); in x86_emulate()
4435 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4438 emulate_fpu_insn_memsrc("fldl", src.val); in x86_emulate()
4497 emulate_fpu_insn_memsrc("fiadds", src.val); in x86_emulate()
4500 emulate_fpu_insn_memsrc("fimuls", src.val); in x86_emulate()
4503 emulate_fpu_insn_memsrc("ficoms", src.val); in x86_emulate()
4506 emulate_fpu_insn_memsrc("ficomps", src.val); in x86_emulate()
4509 emulate_fpu_insn_memsrc("fisubs", src.val); in x86_emulate()
4512 emulate_fpu_insn_memsrc("fisubrs", src.val); in x86_emulate()
4515 emulate_fpu_insn_memsrc("fidivs", src.val); in x86_emulate()
4518 emulate_fpu_insn_memsrc("fidivrs", src.val); in x86_emulate()
4555 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4558 emulate_fpu_insn_memsrc("filds", src.val); in x86_emulate()
4582 if ( (rc = ops->read(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
4585 emulate_fpu_insn_memsrc("fildll", src.val); in x86_emulate()
4617 jmp_rel((int32_t)src.val); in x86_emulate()
4624 jmp_rel((int32_t)src.val); in x86_emulate()
4635 unsigned int port = ((b < 0xe8) ? (uint8_t)src.val : _regs.dx); in x86_emulate()
4663 int32_t rel = src.val; in x86_emulate()
4666 src.val = _regs.r(ip); in x86_emulate()
4674 jmp_rel((int32_t)src.val); in x86_emulate()
4718 dst.val *= src.val; in x86_emulate()
4725 dst.val *= src.val; in x86_emulate()
4733 dst.val *= src.val; in x86_emulate()
4740 u[0] = src.val; in x86_emulate()
4755 dst.val = (int8_t)src.val * (int8_t)_regs.al; in x86_emulate()
4762 dst.val = ((uint32_t)(int16_t)src.val * in x86_emulate()
4771 dst.val = ((uint64_t)(int32_t)src.val * in x86_emulate()
4780 u[0] = src.val; in x86_emulate()
4791 switch ( src.bytes ) in x86_emulate()
4796 v = (uint8_t)src.val; in x86_emulate()
4806 v = (uint16_t)src.val; in x86_emulate()
4817 v = (uint32_t)src.val; in x86_emulate()
4828 v = src.val; in x86_emulate()
4836 switch ( src.bytes ) in x86_emulate()
4841 v = (int8_t)src.val; in x86_emulate()
4851 v = (int16_t)src.val; in x86_emulate()
4862 v = (int32_t)src.val; in x86_emulate()
4873 v = src.val; in x86_emulate()
4941 if ( (rc = ops->insn_fetch(x86_seg_cs, src.val, NULL, 0, ctxt)) ) in x86_emulate()
4943 _regs.r(ip) = src.val; in x86_emulate()
4944 src.val = dst.val; in x86_emulate()
4948 if ( (rc = ops->insn_fetch(x86_seg_cs, src.val, NULL, 0, ctxt)) ) in x86_emulate()
4950 _regs.r(ip) = src.val; in x86_emulate()
4956 generate_exception_if(src.type != OP_MEM, EXC_UD); in x86_emulate()
4958 if ( (rc = read_ulong(src.mem.seg, in x86_emulate()
4959 truncate_ea(src.mem.off + op_bytes), in x86_emulate()
4962 imm1 = src.val; in x86_emulate()
4983 if ( (rc = load_seg(seg, src.val, 0, NULL, ctxt, ops)) != 0 ) in x86_emulate()
4988 switch ( rc = protmode_load_seg(x86_seg_none, src.val, false, in x86_emulate()
5225 switch ( rc = protmode_load_seg(x86_seg_none, src.val, false, &sreg, in x86_emulate()
5273 switch ( rc = protmode_load_seg(x86_seg_none, src.val, false, &sreg, in x86_emulate()
5569 rc = write(modrm_reg, src.val, ctxt); in x86_emulate()
5612 rc = read_ulong(ea.mem.seg, ea.mem.off, &src.val, in x86_emulate()
5618 src.val = rex_prefix & REX_W ? *ea.reg : (uint32_t)*ea.reg; in x86_emulate()
5847 dst.val = src.val; in x86_emulate()
6100 invoke_stub("", "", "+m" (src.val), "+m" (fic.exn_raised) in x86_emulate()
6101 : "a" (&src.val)); in x86_emulate()
6102 dst.val = src.val; in x86_emulate()
6390 jmp_rel((int32_t)src.val); in x86_emulate()
6428 emulate_2op_SrcV_nobyte("bt", src, dst, _regs.eflags); in x86_emulate()
6443 shift = src.val; in x86_emulate()
6444 src.reg = decode_register(modrm_reg, &_regs, 0); in x86_emulate()
6445 src.val = truncate_word(*src.reg, dst.bytes); in x86_emulate()
6453 truncate_word(src.val << (width - shift), dst.bytes)) : in x86_emulate()
6456 (src.val >> (width - shift))); in x86_emulate()
6470 emulate_2op_SrcV_nobyte("bts", src, dst, _regs.eflags); in x86_emulate()
6480 generate_exception_if(src.type != OP_MEM, EXC_UD); in x86_emulate()
6482 generate_exception_if(src.val & ~mxcsr_mask, EXC_GP, 0); in x86_emulate()
6483 asm volatile ( "ldmxcsr %0" :: "m" (src.val) ); in x86_emulate()
6589 emulate_2op_SrcV_srcmem("imul", src, dst, _regs.eflags); in x86_emulate()
6594 src.orig_val = src.val; in x86_emulate()
6595 src.val = _regs.r(ax); in x86_emulate()
6597 emulate_2op_SrcV("cmp", dst, src, _regs.eflags); in x86_emulate()
6601 dst.val = src.orig_val; in x86_emulate()
6618 emulate_2op_SrcV_nobyte("btr", src, dst, _regs.eflags); in x86_emulate()
6625 dst.val = (uint8_t)src.val; in x86_emulate()
6629 dst.val = (uint16_t)src.val; in x86_emulate()
6634 asm ( "popcnt %1,%0" : "=r" (dst.val) : "rm" (src.val) ); in x86_emulate()
6652 emulate_2op_SrcV_nobyte("btc", src, dst, _regs.eflags); in x86_emulate()
6661 : "rm" (src.val) ); in x86_emulate()
6688 : "rm" (src.val) ); in x86_emulate()
6717 dst.val = (int8_t)src.val; in x86_emulate()
6721 dst.val = (int16_t)src.val; in x86_emulate()
6728 case 1: *(uint8_t *)src.reg = (uint8_t)dst.val; break; in x86_emulate()
6729 case 2: *(uint16_t *)src.reg = (uint16_t)dst.val; break; in x86_emulate()
6730 case 4: *src.reg = (uint32_t)dst.val; break; /* 64b reg: zero-extend */ in x86_emulate()
6731 case 8: *src.reg = dst.val; break; in x86_emulate()
6753 dst.val = src.val; in x86_emulate()
6760 memcpy(mmvalp, &src.val, 2); in x86_emulate()
7366 : "0" (*(uint32_t *)&src.val) ); in x86_emulate()
7371 : "0" (*(uint32_t *)&src.val) ); in x86_emulate()
7375 asm ( "bswap %0" : "=r" (dst.val) : "0" (src.val) ); in x86_emulate()
7390 : "qm" (*(uint8_t *)&src.val) ); in x86_emulate()
7394 : "rm" (*(uint16_t *)&src.val) ); in x86_emulate()
7398 : "rm" (*(uint32_t *)&src.val) ); in x86_emulate()
7402 asm ( "crc32q %1,%0" : "+r" (dst.val) : "rm" (src.val) ); in x86_emulate()
7438 src.reg = decode_vex_gpr(vex.reg, &_regs, ctxt); in x86_emulate()
7439 emulate_stub([dst] "=&c" (dst.val), "[dst]" (&src.val), "a" (*src.reg)); in x86_emulate()
7473 emulate_stub("=&a" (dst.val), "c" (&src.val)); in x86_emulate()
7495 : [src] "rm" (src.val) ); in x86_emulate()
7504 : [src] "rm" (src.val) ); in x86_emulate()
7518 : "0" (src.val), "rm" (_regs.r(dx)) ); in x86_emulate()
7521 : "0" ((uint32_t)src.val), "rm" (_regs.edx) ); in x86_emulate()
7628 memcpy(mmvalp, &src.val, op_bytes); in x86_emulate()
7630 op_bytes = src.bytes; in x86_emulate()
7640 memcpy(mmvalp, &src.val, op_bytes); in x86_emulate()
7642 op_bytes = src.bytes; in x86_emulate()
7756 src.val = *ea.reg; in x86_emulate()
7757 else if ( (rc = read_ulong(ea.mem.seg, ea.mem.off, &src.val, op_bytes, in x86_emulate()
7761 asm ( "rorq %b1,%0" : "=g" (dst.val) : "c" (imm1), "0" (src.val) ); in x86_emulate()
7763 asm ( "rorl %b1,%k0" : "=g" (dst.val) : "c" (imm1), "0" (src.val) ); in x86_emulate()
7799 emulate_stub([dst] "=&a" (dst.val), "c" (&src.val)); in x86_emulate()
7824 src.val = *ea.reg; in x86_emulate()
7825 else if ( (rc = read_ulong(ea.mem.seg, ea.mem.off, &src.val, op_bytes, in x86_emulate()
7838 emulate_stub([dst] "=&c" (dst.val), "[dst]" (&src.val)); in x86_emulate()