Lines Matching refs:a
270 recompute_jump(struct alt_instr *a, u8 *orig_insn, u8 *repl_insn, u8 *insnbuf) in recompute_jump() argument
276 if (a->replacementlen != 5) in recompute_jump()
282 next_rip = repl_insn + a->replacementlen; in recompute_jump()
326 static void __init_or_module optimize_nops(struct alt_instr *a, u8 *instr) in optimize_nops() argument
334 add_nops(instr + (a->instrlen - a->padlen), a->padlen); in optimize_nops()
338 DUMP_BYTES(instr, a->instrlen, "%p: [%d:%d) optimized NOPs: ", in optimize_nops()
339 instr, a->instrlen - a->padlen, a->padlen); in optimize_nops()
352 struct alt_instr *a; in apply_alternatives() local
366 for (a = start; a < end; a++) { in apply_alternatives()
369 instr = (u8 *)&a->instr_offset + a->instr_offset; in apply_alternatives()
370 replacement = (u8 *)&a->repl_offset + a->repl_offset; in apply_alternatives()
371 BUG_ON(a->instrlen > sizeof(insnbuf)); in apply_alternatives()
372 BUG_ON(a->cpuid >= (NCAPINTS + NBUGINTS) * 32); in apply_alternatives()
373 if (!boot_cpu_has(a->cpuid)) { in apply_alternatives()
374 if (a->padlen > 1) in apply_alternatives()
375 optimize_nops(a, instr); in apply_alternatives()
381 a->cpuid >> 5, in apply_alternatives()
382 a->cpuid & 0x1f, in apply_alternatives()
383 instr, a->instrlen, in apply_alternatives()
384 replacement, a->replacementlen, a->padlen); in apply_alternatives()
386 DUMP_BYTES(instr, a->instrlen, "%p: old_insn: ", instr); in apply_alternatives()
387 DUMP_BYTES(replacement, a->replacementlen, "%p: rpl_insn: ", replacement); in apply_alternatives()
389 memcpy(insnbuf, replacement, a->replacementlen); in apply_alternatives()
390 insnbuf_sz = a->replacementlen; in apply_alternatives()
393 if (*insnbuf == 0xe8 && a->replacementlen == 5) { in apply_alternatives()
400 if (a->replacementlen && is_jmp(replacement[0])) in apply_alternatives()
401 recompute_jump(a, instr, replacement, insnbuf); in apply_alternatives()
403 if (a->instrlen > a->replacementlen) { in apply_alternatives()
404 add_nops(insnbuf + a->replacementlen, in apply_alternatives()
405 a->instrlen - a->replacementlen); in apply_alternatives()
406 insnbuf_sz += a->instrlen - a->replacementlen; in apply_alternatives()