Lines Matching defs:instr

70 	kinst_patchval_t instr = kp->kp_savedval;
77 #define rs1_index ((instr & RS1_MASK) >> RS1_SHIFT)
78 #define rs2_index ((instr & RS2_MASK) >> RS2_SHIFT)
79 #define rd_index ((instr & RD_MASK) >> RD_SHIFT)
85 switch (instr & 0x7f) {
88 imm |= ((instr >> 21) & 0x03ff) << 1;
89 imm |= ((instr >> 20) & 0x0001) << 11;
90 imm |= ((instr >> 12) & 0x00ff) << 12;
91 imm |= ((instr >> 31) & 0x0001) << 20;
100 imm = (instr & IMM_MASK) >> IMM_SHIFT;
109 imm |= ((instr >> 8) & 0x000f) << 1;
110 imm |= ((instr >> 25) & 0x003f) << 5;
111 imm |= ((instr >> 7) & 0x0001) << 11;
112 imm |= ((instr >> 31) & 0x0001) << 12;
115 funct = (instr >> 12) & 0x07;
156 imm = instr & 0xfffff000;
172 switch (instr & 0x03) {
174 ((register_t *)frame)[kinst_c_regoff(frame, (instr >> 7) & 0x07)]
176 funct = (instr >> 13) & 0x07;
179 off = (instr >> 2) & 0x07ff;
196 imm |= ((instr >> 3) & 0x03) << 1;
197 imm |= ((instr >> 10) & 0x03) << 3;
198 imm |= ((instr >> 2) & 0x01) << 5;
199 imm |= ((instr >> 5) & 0x03) << 6;
200 imm |= ((instr >> 12) & 0x01) << 8;
213 #define rs1_index ((instr & RD_MASK) >> RD_SHIFT)
216 funct = (instr >> 13) & 0x07;
221 if (((instr >> 12) & 0x01) != 0)
365 kinst_patchval_t instr = kp->kp_savedval;
377 switch (instr & 0x7f) {
386 switch (instr & 0x03) {
388 funct = (instr >> 13) & 0x07;
398 funct = (instr >> 13) & 0x07;
400 ((instr >> 7) & 0x1f) != 0 &&
401 ((instr >> 2) & 0x1f) == 0)
412 kinst_instr_system(kinst_patchval_t instr)
414 if (dtrace_match_opcode(instr, MATCH_C_EBREAK, MASK_C_EBREAK) ||
415 (instr & 0x7f) == 0b1110011)
422 kinst_instr_lr(kinst_patchval_t instr)
424 if (dtrace_match_opcode(instr, MATCH_LR_W, MASK_LR_W) ||
425 dtrace_match_opcode(instr, MATCH_LR_D, MASK_LR_D))
432 kinst_instr_sc(kinst_patchval_t instr)
434 if (dtrace_match_opcode(instr, MATCH_SC_W, MASK_SC_W) ||
435 dtrace_match_opcode(instr, MATCH_SC_D, MASK_SC_D))
449 uint8_t *instr, *limit;
461 instr = (uint8_t *)(symval->value);
463 if (instr >= limit)
468 for (insn = (kinst_patchval_t *)instr;
480 while (instr < limit) {
481 instrsize = dtrace_instr_size(instr);
482 off = (int)(instr - (uint8_t *)symval->value);
485 * Avoid undefined behavior (i.e simply casting `*instr` to
489 memcpy(&v, instr, sizeof(kinst_patchval_t));
518 LIST_FOREACH(kp, KINST_GETPROBE(instr), kp_hashnext) {
531 kp->kp_patchpoint = (kinst_patchval_t *)instr;
538 KINST_LOG("cannot allocate trampoline for %p", instr);
545 instr += instrsize;