Lines Matching refs:instr

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