Lines Matching defs:bundle
282 * In this function we override the bundle with
292 bundle_t *bundle = &p->opcode.bundle;
302 bundle->quad0.slot0 = break_inst;
305 bundle->quad0.slot1_p0 = break_inst;
306 bundle->quad1.slot1_p1 = break_inst >> (64-46);
309 bundle->quad1.slot2 = break_inst;
321 static void __kprobes get_kprobe_inst(bundle_t *bundle, uint slot,
327 template = bundle->quad0.template;
331 *major_opcode = (bundle->quad0.slot0 >> SLOT0_OPCODE_SHIFT);
332 *kprobe_inst = bundle->quad0.slot0;
335 *major_opcode = (bundle->quad1.slot1_p1 >> SLOT1_p1_OPCODE_SHIFT);
336 kprobe_inst_p0 = bundle->quad0.slot1_p0;
337 kprobe_inst_p1 = bundle->quad1.slot1_p1;
341 *major_opcode = (bundle->quad1.slot2 >> SLOT2_OPCODE_SHIFT);
342 *kprobe_inst = bundle->quad1.slot2;
422 static int __kprobes __is_ia64_break_inst(bundle_t *bundle, uint slot)
425 unsigned int template = bundle->quad0.template;
428 /* Move to slot 2, if bundle is MLX type and kprobe slot is 1 */
433 get_kprobe_inst(bundle, slot, &kprobe_inst, &major_opcode);
450 * In this function, we check whether the target bundle modifies IP or
453 static int __kprobes can_boost(bundle_t *bundle, uint slot,
456 unsigned int template = bundle->quad0.template;
460 __is_ia64_break_inst(bundle, slot))
461 return 0; /* exception may occur in this bundle*/
472 /* Prepare long jump bundle and disables other boosters if need */
479 if (can_boost(&p->ainsn.insn[0].bundle, slot, addr)) {
480 set_brl_inst(&p->ainsn.insn[1].bundle, (bundle_t *)addr + 1);
498 bundle_t *bundle;
501 bundle = &((kprobe_opcode_t *)kprobe_addr)->bundle;
502 template = bundle->quad0.template;
507 /* Move to slot 2, if bundle is MLX type and kprobe slot is 1 */
511 /* Get kprobe_inst and major_opcode from the bundle */
512 get_kprobe_inst(bundle, slot, &kprobe_inst, &major_opcode);
537 dest = &((kprobe_opcode_t *)arm_addr)->bundle;
538 src = &p->opcode.bundle;
564 dest = &((kprobe_opcode_t *)arm_addr)->bundle;
566 src = &p->ainsn.insn->bundle;
592 * located in the kprobe (p->ainsn.insn->bundle). We still need to adjust
599 unsigned long bundle_addr = (unsigned long) (&p->ainsn.insn->bundle);
604 template = p->ainsn.insn->bundle.quad0.template;
667 unsigned long bundle_addr = (unsigned long) &p->ainsn.insn->bundle;
689 bundle_t bundle;
691 memcpy(&bundle, kprobe_addr, sizeof(bundle_t));
693 return __is_ia64_break_inst(&bundle, slot);
776 regs->cr_iip = (unsigned long)&p->ainsn.insn->bundle & ~0xFULL;