Lines Matching +full:0 +full:x0007ffff

29 	if (((instr >> 24) & 0x1f) == 0b10000) {  in kinst_emulate()
31 reg = instr & 0x1f; in kinst_emulate()
32 imm = (instr >> 29) & 0x3; in kinst_emulate()
33 imm |= ((instr >> 5) & 0x0007ffff) << 2; in kinst_emulate()
34 if (((instr >> 31) & 0x1) == 0) { in kinst_emulate()
36 if (imm & 0x0000000000100000) in kinst_emulate()
37 imm |= 0xfffffffffff00000; in kinst_emulate()
42 if (imm & 0x0000000100000000) in kinst_emulate()
43 imm |= 0xffffffff00000000; in kinst_emulate()
44 frame->tf_x[reg] = (frame->tf_elr & ~0xfff) + imm; in kinst_emulate()
47 } else if (((instr >> 26) & 0x3f) == 0b000101) { in kinst_emulate()
49 imm = instr & 0x03ffffff; in kinst_emulate()
50 if (imm & 0x0000000002000000) in kinst_emulate()
51 imm |= 0xfffffffffe000000; in kinst_emulate()
53 } else if (((instr >> 24) & 0xff) == 0b01010100) { in kinst_emulate()
55 imm = (instr >> 5) & 0x0007ffff; in kinst_emulate()
56 if (imm & 0x0000000000040000) in kinst_emulate()
57 imm |= 0xfffffffffffc0000; in kinst_emulate()
58 cond = instr & 0xf; in kinst_emulate()
59 switch ((cond >> 1) & 0x7) { in kinst_emulate()
60 case 0b000: /* eq/ne */ in kinst_emulate()
61 res = (frame->tf_spsr & PSR_Z) != 0; in kinst_emulate()
63 case 0b001: /* cs/cc */ in kinst_emulate()
64 res = (frame->tf_spsr & PSR_C) != 0; in kinst_emulate()
66 case 0b010: /* mi/pl */ in kinst_emulate()
67 res = (frame->tf_spsr & PSR_N) != 0; in kinst_emulate()
69 case 0b011: /* vs/vc */ in kinst_emulate()
70 res = (frame->tf_spsr & PSR_V) != 0; in kinst_emulate()
72 case 0b100: /* hi/ls */ in kinst_emulate()
73 res = ((frame->tf_spsr & PSR_C) != 0) && in kinst_emulate()
74 ((frame->tf_spsr & PSR_Z) == 0); in kinst_emulate()
76 case 0b101: /* ge/lt */ in kinst_emulate()
77 res = ((frame->tf_spsr & PSR_N) != 0) == in kinst_emulate()
78 ((frame->tf_spsr & PSR_V) != 0); in kinst_emulate()
80 case 0b110: /* gt/le */ in kinst_emulate()
81 res = ((frame->tf_spsr & PSR_Z) == 0) && in kinst_emulate()
82 (((frame->tf_spsr & PSR_N) != 0) == in kinst_emulate()
83 ((frame->tf_spsr & PSR_V) != 0)); in kinst_emulate()
85 case 0b111: /* al */ in kinst_emulate()
89 if ((cond & 0x1) && cond != 0b1111) in kinst_emulate()
95 } else if (((instr >> 26) & 0x3f) == 0b100101) { in kinst_emulate()
97 imm = instr & 0x03ffffff; in kinst_emulate()
98 if (imm & 0x0000000002000000) in kinst_emulate()
99 imm |= 0xfffffffffe000000; in kinst_emulate()
102 } else if (((instr >> 25) & 0x3f) == 0b011010) { in kinst_emulate()
104 cond = (instr >> 24) & 0x1; in kinst_emulate()
105 reg = instr & 0x1f; in kinst_emulate()
106 imm = (instr >> 5) & 0x0007ffff; in kinst_emulate()
107 if (imm & 0x0000000000040000) in kinst_emulate()
108 imm |= 0xfffffffffffc0000; in kinst_emulate()
109 if (cond == 1 && frame->tf_x[reg] != 0) in kinst_emulate()
112 else if (cond == 0 && frame->tf_x[reg] == 0) in kinst_emulate()
117 } else if (((instr >> 25) & 0x3f) == 0b011011) { in kinst_emulate()
119 cond = (instr >> 24) & 0x1; in kinst_emulate()
120 reg = instr & 0x1f; in kinst_emulate()
121 bitpos = (instr >> 19) & 0x1f; in kinst_emulate()
122 bitpos |= ((instr >> 31) & 0x1) << 5; in kinst_emulate()
123 imm = (instr >> 5) & 0x3fff; in kinst_emulate()
124 if (imm & 0x0000000000002000) in kinst_emulate()
125 imm |= 0xffffffffffffe000; in kinst_emulate()
126 if (cond == 1 && (frame->tf_x[reg] & (1 << bitpos)) != 0) in kinst_emulate()
129 else if (cond == 0 && (frame->tf_x[reg] & (1 << bitpos)) == 0) in kinst_emulate()
136 return (0); in kinst_emulate()
145 return (0); in kinst_jump_next_instr()
200 if ((ks->status & PSR_I) == 0) in kinst_invop()
211 return (0); in kinst_invop()
215 dtrace_probe(kp->kp_id, 0, 0, 0, 0, 0); in kinst_invop()
216 cpu->cpu_dtrace_caller = 0; in kinst_invop()
232 return (0); in kinst_invop()
255 if (((instr >> 24) & 0x1f) == 0b10000) in kinst_instr_dissect()
257 else if (((instr >> 26) & 0x3f) == 0b000101) in kinst_instr_dissect()
259 else if (((instr >> 24) & 0xff) == 0b01010100) in kinst_instr_dissect()
261 else if (((instr >> 26) & 0x3f) == 0b100101) in kinst_instr_dissect()
263 else if (((instr >> 25) & 0x3f) == 0b011010) in kinst_instr_dissect()
265 else if (((instr >> 25) & 0x3f) == 0b011011) in kinst_instr_dissect()
275 if (((instr >> 22) & 0xff) == 0b00100001) in kinst_instr_ldx()
284 if (((instr >> 22) & 0xff) == 0b00100000) in kinst_instr_stx()
305 return (0); in kinst_make_probe()
306 if (strcmp(func, pd->kpd_func) != 0) in kinst_make_probe()
307 return (0); in kinst_make_probe()
312 return (0); in kinst_make_probe()
356 return (0); in kinst_make_probe()
359 for (n = 0; instr < limit; instr++) { in kinst_make_probe()
383 if (((*instr >> 24) & 0x1f) == 0b10000) in kinst_make_probe()
394 if (strcmp(kp->kp_func, func) == 0 && in kinst_make_probe()
396 return (0); in kinst_make_probe()
420 return (0); in kinst_make_probe()
434 return (0); in kinst_md_init()
448 if (strcmp(name, "handle_el1h_sync") == 0 || in kinst_md_excluded()
449 strcmp(name, "do_el1h_sync") == 0) in kinst_md_excluded()