Lines Matching refs:bytes

141 	u8 *bytes = thunk;  in its_init_thunk()  local
153 bytes[i++] = 0xea; /* invalid instruction */ in its_init_thunk()
154 bytes[i++] = 0x75; /* JNE */ in its_init_thunk()
155 bytes[i++] = 0xfd; in its_init_thunk()
162 bytes[i++] = 0x41; /* REX.B prefix */ in its_init_thunk()
165 bytes[i++] = 0xff; in its_init_thunk()
166 bytes[i++] = 0xe0 + reg; /* jmp *reg */ in its_init_thunk()
167 bytes[i++] = 0xcc; in its_init_thunk()
354 if (insn->opcode.bytes[0] == 0x90 && in insn_is_nop()
355 (!insn->prefixes.nbytes || insn->prefixes.bytes[0] != 0xF3)) in insn_is_nop()
359 if (insn->opcode.bytes[0] == 0x0F && insn->opcode.bytes[1] == 0x1F) in insn_is_nop()
495 switch (insn.opcode.bytes[0]) { in __apply_relocation()
497 if (insn.opcode.bytes[1] < 0x80 || in __apply_relocation()
498 insn.opcode.bytes[1] > 0x8f) in __apply_relocation()
515 if (insn.opcode.bytes[0] == JMP32_INSN_OPCODE) { in __apply_relocation()
710 return insn->opcode.bytes[0] == 0x0f && (insn->opcode.bytes[1] & 0xf0) == 0x80; in is_jcc32()
718 static int emit_indirect(int op, int reg, u8 *bytes) in emit_indirect() argument
738 bytes[i++] = 0x41; /* REX.B prefix */ in emit_indirect()
745 bytes[i++] = 0xff; /* opcode */ in emit_indirect()
746 bytes[i++] = modrm; in emit_indirect()
751 static int __emit_trampoline(void *addr, struct insn *insn, u8 *bytes, in __emit_trampoline() argument
754 u8 op = insn->opcode.bytes[0]; in __emit_trampoline()
762 bytes[i++] = op; in __emit_trampoline()
763 op = insn->opcode.bytes[1]; in __emit_trampoline()
768 bytes[i++] = 0x2e; /* CS-prefix */ in __emit_trampoline()
772 __text_gen_insn(bytes+i, op, addr+i, in __emit_trampoline()
780 __text_gen_insn(bytes+i, op, addr+i, in __emit_trampoline()
796 static int emit_call_track_retpoline(void *addr, struct insn *insn, int reg, u8 *bytes) in emit_call_track_retpoline() argument
798 return __emit_trampoline(addr, insn, bytes, in emit_call_track_retpoline()
804 static int emit_its_trampoline(void *addr, struct insn *insn, int reg, u8 *bytes) in emit_its_trampoline() argument
812 return __emit_trampoline(addr, insn, bytes, thunk, thunk); in emit_its_trampoline()
854 static int patch_retpoline(void *addr, struct insn *insn, u8 *bytes) in patch_retpoline() argument
872 return emit_call_track_retpoline(addr, insn, reg, bytes); in patch_retpoline()
877 op = insn->opcode.bytes[0]; in patch_retpoline()
893 cc = insn->opcode.bytes[1] & 0xf; in patch_retpoline()
896 bytes[i++] = 0x70 + cc; /* Jcc.d8 */ in patch_retpoline()
897 bytes[i++] = insn->length - 2; /* sizeof(Jcc.d8) == 2 */ in patch_retpoline()
907 bytes[i++] = 0x0f; in patch_retpoline()
908 bytes[i++] = 0xae; in patch_retpoline()
909 bytes[i++] = 0xe8; /* LFENCE */ in patch_retpoline()
918 return emit_its_trampoline(addr, insn, reg, bytes); in patch_retpoline()
921 ret = emit_indirect(op, reg, bytes + i); in patch_retpoline()
933 bytes[i++] = INT3_INSN_OPCODE; in patch_retpoline()
936 bytes[i++] = BYTES_NOP1; in patch_retpoline()
952 u8 bytes[16]; in apply_retpolines() local
960 op1 = insn.opcode.bytes[0]; in apply_retpolines()
961 op2 = insn.opcode.bytes[1]; in apply_retpolines()
992 len = patch_retpoline(addr, &insn, bytes); in apply_retpolines()
994 optimize_nops(addr, bytes, len); in apply_retpolines()
996 DUMP_BYTES(RETPOLINE, ((u8*)bytes), len, "%px: repl: ", addr); in apply_retpolines()
997 text_poke_early(addr, bytes, len); in apply_retpolines()
1030 static int patch_return(void *addr, struct insn *insn, u8 *bytes) in patch_return() argument
1037 __text_gen_insn(bytes, JMP32_INSN_OPCODE, addr, x86_return_thunk, i); in patch_return()
1040 bytes[i++] = RET_INSN_OPCODE; in patch_return()
1044 bytes[i++] = INT3_INSN_OPCODE; in patch_return()
1059 u8 bytes[16]; in apply_returns() local
1066 op = insn.opcode.bytes[0]; in apply_returns()
1080 len = patch_return(addr, &insn, bytes); in apply_returns()
1083 DUMP_BYTES(RET, ((u8*)bytes), len, "%px: repl: ", addr); in apply_returns()
1084 text_poke_early(addr, bytes, len); in apply_returns()
1641 static int emit_paranoid_trampoline(void *addr, struct insn *insn, int reg, u8 *bytes) in emit_paranoid_trampoline() argument
1651 return __emit_trampoline(addr, insn, bytes, thunk, thunk); in emit_paranoid_trampoline()
1663 u8 bytes[20]; in cfi_rewrite_callers() local
1686 op = insn.opcode.bytes[0]; in cfi_rewrite_callers()
1692 memcpy(bytes, fineibt_paranoid_start, fineibt_paranoid_size); in cfi_rewrite_callers()
1693 memcpy(bytes + fineibt_caller_hash, &hash, 4); in cfi_rewrite_callers()
1697 &insn, 11, bytes + fineibt_caller_size); in cfi_rewrite_callers()
1699 ret = emit_indirect(op, 11, bytes + fineibt_paranoid_ind); in cfi_rewrite_callers()
1704 text_poke_early(addr, bytes, fineibt_paranoid_size); in cfi_rewrite_callers()
2988 tpl->opcode = insn.opcode.bytes[0]; in __smp_text_poke_batch_add()
2994 tpl->opcode = insn.opcode.bytes[1] - 0x10; in __smp_text_poke_batch_add()