Lines Matching +full:write +full:- +full:assist

1 /* Disassembler for the PA-RISC. Somewhat derived from sparc-pinsn.c.
6 University of Utah (pa-gdb-bugs@cs.utah.edu).
22 #include "disas/dis-asm.h"
24 /* HP PA-RISC SOM object file format: definitions internal to BFD.
29 University of Utah (pa-gdb-bugs@cs.utah.edu).
55 /* HP PA-RISC relocation types */
173 ((((bfd_signed_vma)(a)) << (BFD_ARCH_SIZE-22)) >> (BFD_ARCH_SIZE-22))
205 int signbit = (1 << (len - 1)); in sign_extend()
206 int mask = (signbit << 1) - 1; in sign_extend()
207 return ((x & mask) ^ signbit) - signbit; in sign_extend()
213 return (x >> 1) - ((x & 1) << (len - 1)); in low_sign_extend()
218 insertion into an opcode. pa-risc uses all sorts of weird bitfields
226 len_ones = (1 << len) - 1; in sign_unext()
237 sign = (x >> (len-1)) & 1; in low_sign_unext()
239 temp = sign_unext (x, len-1); in low_sign_unext()
247 return (( (as3 & 4) << (13-2)) in re_assemble_3()
255 | ((as12 & 0x400) >> (10 - 2)) in re_assemble_12()
271 /* Unusual 16-bit encoding, for wide mode only. */ in re_assemble_16()
281 | ((as17 & 0x0f800) << (16 - 11)) in re_assemble_17()
282 | ((as17 & 0x00400) >> (10 - 2)) in re_assemble_17()
300 | ((as22 & 0x1f0000) << (21 - 16)) in re_assemble_22()
301 | ((as22 & 0x00f800) << (16 - 11)) in re_assemble_22()
302 | ((as22 & 0x000400) >> (10 - 2)) in re_assemble_22()
335 This fixup is used to identify three-instruction sequences to in hppa_field_adjust()
360 ie. RS'x = x - ((x + 0x400) & -0x800) in hppa_field_adjust()
362 value = ((value & 0x7ff) ^ 0x400) - 0x400; in hppa_field_adjust()
368 next one. RD in this case will be -2048. */ in hppa_field_adjust()
374 /* RD: Set bits 0-20 to one. */ in hppa_field_adjust()
375 value = value | -0x800; in hppa_field_adjust()
381 value = sym_val + ((addend + 0x1000) & -0x2000); in hppa_field_adjust()
388 ie. RR'x = s+a - (s + (((a + 0x1000) & -0x2000) & -0x800)) in hppa_field_adjust()
389 . = s+a - ((s & -0x800) + ((a + 0x1000) & -0x2000)) in hppa_field_adjust()
390 . = (s & 0x7ff) + a - ((a + 0x1000) & -0x2000) */ in hppa_field_adjust()
391 value = (sym_val & 0x7ff) + (((addend & 0x1fff) ^ 0x1000) - 0x1000); in hppa_field_adjust()
400 /* PA-RISC OPCODES */
497 return (insn & ~ 0x3ff1) | re_assemble_14 (value & -8); in hppa_rebuild_insn()
499 case -11: in hppa_rebuild_insn()
500 return (insn & ~ 0x3ff9) | re_assemble_14 (value & -4); in hppa_rebuild_insn()
506 case -10: in hppa_rebuild_insn()
507 return (insn & ~ 0xfff1) | re_assemble_16 (value & -8); in hppa_rebuild_insn()
509 case -16: in hppa_rebuild_insn()
510 return (insn & ~ 0xfff9) | re_assemble_16 (value & -4); in hppa_rebuild_insn()
535 /* Table of opcodes for the PA-RISC.
541 University of Utah (pa-gdb-bugs@cs.utah.edu).
609 ' " - / 34 678 :; '
615 ' !"#$%&'()*+-,./0123456789:;<=>?'
644 31-p
645 ~ 6 bit shift count at 20,22:26 encoded as 63-~.
648 T 5 bit field length at 31 (encoded as 32-T)
688 Z %r1 -- implicit target of addil instruction.
702 Y %sr0,%r31 -- implicit target of be,l instruction.
730 cw read/write completer for PROBE
758 ?d non-negated add branch conditions
760 ?w wide mode non-negated add branch conditions
765 ?t non-negated compare and branch conditions
850 /* Pseudo-instructions. */
1329 /* completely undocumented, but used by ODE, HP-UX and Linux: */
1521 /* Assist Instructions. */
1675 ((X) >> (31 - (TO)) & ((1 << ((TO) - (FROM) + 1)) - 1))
1680 /* Some of these have been converted to 2-d arrays because they
1682 problem, convert them back to const 1-d pointer arrays. */
1784 #define fputs_filtered(STR,F) (*info->fprintf_func) (info->stream, "%s", STR)
1789 (*info->fprintf_func) (info->stream, "%s", reg ? reg_names[reg] : "r0"); in fput_reg()
1795 (*info->fprintf_func) (info->stream, "%s", reg ? fp_reg_names[reg] : "fr0"); in fput_fp_reg()
1803 (*info->fprintf_func) (info->stream, "fpe%d", reg * 2 + 1); in fput_fp_reg_r()
1805 (*info->fprintf_func) (info->stream, "%sR", fp_reg_names[reg]); in fput_fp_reg_r()
1811 (*info->fprintf_func) (info->stream, "%s", control_reg[reg]); in fput_creg()
1817 (*info->fprintf_func) (info->stream, "dr%d", reg); in fput_dreg()
1826 (*info->fprintf_func) (info->stream, "-%x", - (int) num); in fput_const()
1828 (*info->fprintf_func) (info->stream, "%x", num); in fput_const()
1834 /* Extract a 3-bit space register number from a be, ble, mtsp or mfsp. */
1981 (*info->read_memory_func) (memaddr, buffer, sizeof (buffer), info); in print_insn_hppa()
1984 (*info->memory_error_func) (status, memaddr, info); in print_insn_hppa()
1985 return -1; in print_insn_hppa()
1991 if (info->show_opcodes) { in print_insn_hppa()
1992 info->fprintf_func(info->stream, " %02x %02x %02x %02x ", in print_insn_hppa()
2001 if ((insn & opcode->mask) == opcode->match) in print_insn_hppa()
2005 if (opcode->arch == pa20w) in print_insn_hppa()
2008 (*info->fprintf_func) (info->stream, "%s", opcode->name); in print_insn_hppa()
2010 if (!strchr ("cfCY?-+nHNZFIuv{", opcode->args[0])) in print_insn_hppa()
2011 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2012 for (s = opcode->args; *s != '\0'; ++s) in print_insn_hppa()
2158 (*info->fprintf_func) (info->stream, "sr%d", space); in print_insn_hppa()
2163 (*info->fprintf_func) (info->stream, "sr%d", in print_insn_hppa()
2172 (*info->fprintf_func) in print_insn_hppa()
2173 (info->stream, "%s", in print_insn_hppa()
2177 (*info->fprintf_func) in print_insn_hppa()
2178 (info->stream, "%s ", in print_insn_hppa()
2182 (*info->fprintf_func) in print_insn_hppa()
2183 (info->stream, "%s", in print_insn_hppa()
2187 (*info->fprintf_func) in print_insn_hppa()
2188 (info->stream, "%s ", in print_insn_hppa()
2192 (*info->fprintf_func) in print_insn_hppa()
2193 (info->stream, "%s ", in print_insn_hppa()
2197 (*info->fprintf_func) in print_insn_hppa()
2198 (info->stream, "%s", in print_insn_hppa()
2206 (*info->fprintf_func) (info->stream, ",bc "); in print_insn_hppa()
2209 (*info->fprintf_func) (info->stream, ",sl "); in print_insn_hppa()
2212 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2219 (*info->fprintf_func) (info->stream, ",co "); in print_insn_hppa()
2222 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2226 (*info->fprintf_func) (info->stream, ",o"); in print_insn_hppa()
2229 (*info->fprintf_func) (info->stream, ",gate"); in print_insn_hppa()
2232 (*info->fprintf_func) (info->stream, ",l,push"); in print_insn_hppa()
2235 (*info->fprintf_func) (info->stream, ",pop"); in print_insn_hppa()
2239 (*info->fprintf_func) (info->stream, ",l"); in print_insn_hppa()
2242 (*info->fprintf_func) in print_insn_hppa()
2243 (info->stream, "%s ", in print_insn_hppa()
2247 (*info->fprintf_func) (info->stream, ",w "); in print_insn_hppa()
2251 (*info->fprintf_func) (info->stream, ",r"); in print_insn_hppa()
2255 (*info->fprintf_func) (info->stream, ",m "); in print_insn_hppa()
2257 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2261 (*info->fprintf_func) (info->stream, ",i"); in print_insn_hppa()
2265 (*info->fprintf_func) (info->stream, ",z"); in print_insn_hppa()
2268 (*info->fprintf_func) in print_insn_hppa()
2269 (info->stream, "%s", in print_insn_hppa()
2273 (*info->fprintf_func) in print_insn_hppa()
2274 (info->stream, ",dc%s", in print_insn_hppa()
2278 (*info->fprintf_func) in print_insn_hppa()
2279 (info->stream, ",c%s", in print_insn_hppa()
2284 (*info->fprintf_func) (info->stream, ",tsv"); in print_insn_hppa()
2287 (*info->fprintf_func) (info->stream, ",tc"); in print_insn_hppa()
2289 (*info->fprintf_func) (info->stream, ",tsv"); in print_insn_hppa()
2292 (*info->fprintf_func) (info->stream, ",db"); in print_insn_hppa()
2294 (*info->fprintf_func) (info->stream, ",tsv"); in print_insn_hppa()
2297 (*info->fprintf_func) (info->stream, ",b"); in print_insn_hppa()
2299 (*info->fprintf_func) (info->stream, ",tsv"); in print_insn_hppa()
2303 (*info->fprintf_func) (info->stream, ",tc"); in print_insn_hppa()
2308 (*info->fprintf_func) in print_insn_hppa()
2309 (info->stream, "%s", in print_insn_hppa()
2312 (*info->fprintf_func) in print_insn_hppa()
2313 (info->stream, "%s ", in print_insn_hppa()
2317 (*info->fprintf_func) in print_insn_hppa()
2318 (info->stream, "%s", in print_insn_hppa()
2322 (*info->fprintf_func) in print_insn_hppa()
2323 (info->stream, "%s ", in print_insn_hppa()
2327 (*info->fprintf_func) in print_insn_hppa()
2328 (info->stream, ",%d%d%d%d ", in print_insn_hppa()
2398 (*info->fprintf_func) in print_insn_hppa()
2399 (info->stream, "%s ", in print_insn_hppa()
2435 (*info->fprintf_func) in print_insn_hppa()
2436 (info->stream, "%s ", in print_insn_hppa()
2440 (*info->fprintf_func) in print_insn_hppa()
2441 (info->stream, "%s ", in print_insn_hppa()
2445 (*info->fprintf_func) in print_insn_hppa()
2446 (info->stream, "%s ", in print_insn_hppa()
2450 (*info->fprintf_func) in print_insn_hppa()
2451 (info->stream, "%s ", in print_insn_hppa()
2455 (*info->fprintf_func) in print_insn_hppa()
2456 (info->stream, "%s", in print_insn_hppa()
2461 (*info->fprintf_func) in print_insn_hppa()
2462 (info->stream, "%s", in print_insn_hppa()
2468 (*info->fprintf_func) in print_insn_hppa()
2469 (info->stream, "%s ", in print_insn_hppa()
2473 (*info->fprintf_func) in print_insn_hppa()
2474 (info->stream, "%s ", in print_insn_hppa()
2478 (*info->fprintf_func) in print_insn_hppa()
2479 (info->stream, "%s ", in print_insn_hppa()
2483 (*info->fprintf_func) in print_insn_hppa()
2484 (info->stream, "%s ", in print_insn_hppa()
2490 (*info->fprintf_func) in print_insn_hppa()
2491 (info->stream, "%s", in print_insn_hppa()
2497 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2500 (*info->fprintf_func) in print_insn_hppa()
2501 (info->stream, "%s ", in print_insn_hppa()
2505 (*info->fprintf_func) in print_insn_hppa()
2506 (info->stream, "%s", in print_insn_hppa()
2512 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2546 /* 16-bit long disp., PA2.0 wide only. */ in print_insn_hppa()
2551 (*info->fprintf_func) (info->stream, ",n "); in print_insn_hppa()
2553 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2557 (*info->fprintf_func) (info->stream, ",n "); in print_insn_hppa()
2559 (*info->fprintf_func) (info->stream, ",n"); in print_insn_hppa()
2561 (*info->fprintf_func) (info->stream, " "); in print_insn_hppa()
2564 (*info->print_address_func) in print_insn_hppa()
2568 /* 17 bit PC-relative branch. */ in print_insn_hppa()
2569 (*info->print_address_func) in print_insn_hppa()
2590 (*info->fprintf_func) (info->stream, "0"); in print_insn_hppa()
2594 (*info->fprintf_func) (info->stream, "%d", in print_insn_hppa()
2598 (*info->fprintf_func) (info->stream, "%d", in print_insn_hppa()
2605 (*info->fprintf_func) (info->stream, "%d", in print_insn_hppa()
2606 31 - GET_FIELD (insn, 22, 26)); in print_insn_hppa()
2613 (*info->fprintf_func) (info->stream, "%d", 63 - num); in print_insn_hppa()
2617 (*info->fprintf_func) (info->stream, "%d", in print_insn_hppa()
2625 (*info->fprintf_func) (info->stream, "%d", num); in print_insn_hppa()
2629 (*info->fprintf_func) (info->stream, "%d", in print_insn_hppa()
2630 32 - GET_FIELD (insn, 27, 31)); in print_insn_hppa()
2636 num -= GET_FIELD (insn, 27, 31); in print_insn_hppa()
2637 (*info->fprintf_func) (info->stream, "%d", num); in print_insn_hppa()
2644 num -= GET_FIELD (insn, 27, 31); in print_insn_hppa()
2645 (*info->fprintf_func) (info->stream, "%d", num); in print_insn_hppa()
2658 (*info->fprintf_func) (info->stream, ",%d", in print_insn_hppa()
2681 (*info->fprintf_func) (info->stream, ",%d", in print_insn_hppa()
2691 (*info->fprintf_func) in print_insn_hppa()
2692 (info->stream, "%s ", in print_insn_hppa()
2696 (*info->fprintf_func) in print_insn_hppa()
2697 (info->stream, "%s ", in print_insn_hppa()
2702 (*info->fprintf_func) (info->stream, "%s ", in print_insn_hppa()
2705 (*info->fprintf_func) (info->stream, "%s ", in print_insn_hppa()
2715 (*info->fprintf_func) in print_insn_hppa()
2716 (info->stream, "%s ", in print_insn_hppa()
2731 disp = (-1 << 10) | imm10; in print_insn_hppa()
2747 disp = (-1 << 11) | imm11; in print_insn_hppa()
2759 /* 16-bit long disp., PA2.0 wide only. */ in print_insn_hppa()
2768 /* 16-bit long disp., PA2.0 wide only. */ in print_insn_hppa()
2799 (*info->fprintf_func) (info->stream, "%s%s%s ", in print_insn_hppa()
2809 fput_const ((y ^ 1) - 1, info); in print_insn_hppa()
2820 (*info->fprintf_func) (info->stream, ",%d", cbit - 1); in print_insn_hppa()
2844 (*info->print_address_func) in print_insn_hppa()
2851 (*info->fprintf_func) (info->stream, "%c", *s); in print_insn_hppa()
2858 info->fprintf_func(info->stream, "<unknown>"); in print_insn_hppa()