434 |
434 |
|
435 |
435 |
/*ARGSUSED*/
|
436 |
436 |
static unsigned
|
437 |
|
insert_rba(insn, value, errmsg)
|
438 |
|
unsigned insn;
|
439 |
|
int value ATTRIBUTE_UNUSED;
|
440 |
|
const char **errmsg ATTRIBUTE_UNUSED;
|
|
437 |
insert_rba(unsigned insn, int value ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED)
|
441 |
438 |
{
|
442 |
439 |
return insn | (((insn >> 21) & 0x1f) << 16);
|
443 |
440 |
}
|
444 |
441 |
|
445 |
442 |
static int
|
446 |
|
extract_rba(insn, invalid)
|
447 |
|
unsigned insn;
|
448 |
|
int *invalid;
|
|
443 |
extract_rba(unsigned insn, int *invalid)
|
449 |
444 |
{
|
450 |
445 |
if (invalid != (int *) NULL
|
451 |
446 |
&& ((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f))
|
... | ... | |
458 |
453 |
|
459 |
454 |
/*ARGSUSED*/
|
460 |
455 |
static unsigned
|
461 |
|
insert_rca(insn, value, errmsg)
|
462 |
|
unsigned insn;
|
463 |
|
int value ATTRIBUTE_UNUSED;
|
464 |
|
const char **errmsg ATTRIBUTE_UNUSED;
|
|
456 |
insert_rca(unsigned insn, int value ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED)
|
465 |
457 |
{
|
466 |
458 |
return insn | ((insn >> 21) & 0x1f);
|
467 |
459 |
}
|
468 |
460 |
|
469 |
461 |
static int
|
470 |
|
extract_rca(insn, invalid)
|
471 |
|
unsigned insn;
|
472 |
|
int *invalid;
|
|
462 |
extract_rca(unsigned insn, int *invalid)
|
473 |
463 |
{
|
474 |
464 |
if (invalid != (int *) NULL
|
475 |
465 |
&& ((insn >> 21) & 0x1f) != (insn & 0x1f))
|
... | ... | |
482 |
472 |
|
483 |
473 |
/*ARGSUSED*/
|
484 |
474 |
static unsigned
|
485 |
|
insert_za(insn, value, errmsg)
|
486 |
|
unsigned insn;
|
487 |
|
int value ATTRIBUTE_UNUSED;
|
488 |
|
const char **errmsg ATTRIBUTE_UNUSED;
|
|
475 |
insert_za(unsigned insn, int value ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED)
|
489 |
476 |
{
|
490 |
477 |
return insn | (31 << 21);
|
491 |
478 |
}
|
492 |
479 |
|
493 |
480 |
static int
|
494 |
|
extract_za(insn, invalid)
|
495 |
|
unsigned insn;
|
496 |
|
int *invalid;
|
|
481 |
extract_za(unsigned insn, int *invalid)
|
497 |
482 |
{
|
498 |
483 |
if (invalid != (int *) NULL && ((insn >> 21) & 0x1f) != 31)
|
499 |
484 |
*invalid = 1;
|
... | ... | |
502 |
487 |
|
503 |
488 |
/*ARGSUSED*/
|
504 |
489 |
static unsigned
|
505 |
|
insert_zb(insn, value, errmsg)
|
506 |
|
unsigned insn;
|
507 |
|
int value ATTRIBUTE_UNUSED;
|
508 |
|
const char **errmsg ATTRIBUTE_UNUSED;
|
|
490 |
insert_zb(unsigned insn, int value ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED)
|
509 |
491 |
{
|
510 |
492 |
return insn | (31 << 16);
|
511 |
493 |
}
|
512 |
494 |
|
513 |
495 |
static int
|
514 |
|
extract_zb(insn, invalid)
|
515 |
|
unsigned insn;
|
516 |
|
int *invalid;
|
|
496 |
extract_zb(unsigned insn, int *invalid)
|
517 |
497 |
{
|
518 |
498 |
if (invalid != (int *) NULL && ((insn >> 16) & 0x1f) != 31)
|
519 |
499 |
*invalid = 1;
|
... | ... | |
522 |
502 |
|
523 |
503 |
/*ARGSUSED*/
|
524 |
504 |
static unsigned
|
525 |
|
insert_zc(insn, value, errmsg)
|
526 |
|
unsigned insn;
|
527 |
|
int value ATTRIBUTE_UNUSED;
|
528 |
|
const char **errmsg ATTRIBUTE_UNUSED;
|
|
505 |
insert_zc(unsigned insn, int value ATTRIBUTE_UNUSED, const char **errmsg ATTRIBUTE_UNUSED)
|
529 |
506 |
{
|
530 |
507 |
return insn | 31;
|
531 |
508 |
}
|
532 |
509 |
|
533 |
510 |
static int
|
534 |
|
extract_zc(insn, invalid)
|
535 |
|
unsigned insn;
|
536 |
|
int *invalid;
|
|
511 |
extract_zc(unsigned insn, int *invalid)
|
537 |
512 |
{
|
538 |
513 |
if (invalid != (int *) NULL && (insn & 0x1f) != 31)
|
539 |
514 |
*invalid = 1;
|
... | ... | |
544 |
519 |
/* The displacement field of a Branch format insn. */
|
545 |
520 |
|
546 |
521 |
static unsigned
|
547 |
|
insert_bdisp(insn, value, errmsg)
|
548 |
|
unsigned insn;
|
549 |
|
int value;
|
550 |
|
const char **errmsg;
|
|
522 |
insert_bdisp(unsigned insn, int value, const char **errmsg)
|
551 |
523 |
{
|
552 |
524 |
if (errmsg != (const char **)NULL && (value & 3))
|
553 |
525 |
*errmsg = _("branch operand unaligned");
|
... | ... | |
556 |
528 |
|
557 |
529 |
/*ARGSUSED*/
|
558 |
530 |
static int
|
559 |
|
extract_bdisp(insn, invalid)
|
560 |
|
unsigned insn;
|
561 |
|
int *invalid ATTRIBUTE_UNUSED;
|
|
531 |
extract_bdisp(unsigned insn, int *invalid ATTRIBUTE_UNUSED)
|
562 |
532 |
{
|
563 |
533 |
return 4 * (((insn & 0x1FFFFF) ^ 0x100000) - 0x100000);
|
564 |
534 |
}
|
... | ... | |
567 |
537 |
/* The hint field of a JMP/JSR insn. */
|
568 |
538 |
|
569 |
539 |
static unsigned
|
570 |
|
insert_jhint(insn, value, errmsg)
|
571 |
|
unsigned insn;
|
572 |
|
int value;
|
573 |
|
const char **errmsg;
|
|
540 |
insert_jhint(unsigned insn, int value, const char **errmsg)
|
574 |
541 |
{
|
575 |
542 |
if (errmsg != (const char **)NULL && (value & 3))
|
576 |
543 |
*errmsg = _("jump hint unaligned");
|
... | ... | |
579 |
546 |
|
580 |
547 |
/*ARGSUSED*/
|
581 |
548 |
static int
|
582 |
|
extract_jhint(insn, invalid)
|
583 |
|
unsigned insn;
|
584 |
|
int *invalid ATTRIBUTE_UNUSED;
|
|
549 |
extract_jhint(unsigned insn, int *invalid ATTRIBUTE_UNUSED)
|
585 |
550 |
{
|
586 |
551 |
return 4 * (((insn & 0x3FFF) ^ 0x2000) - 0x2000);
|
587 |
552 |
}
|
... | ... | |
589 |
554 |
/* The hint field of an EV6 HW_JMP/JSR insn. */
|
590 |
555 |
|
591 |
556 |
static unsigned
|
592 |
|
insert_ev6hwjhint(insn, value, errmsg)
|
593 |
|
unsigned insn;
|
594 |
|
int value;
|
595 |
|
const char **errmsg;
|
|
557 |
insert_ev6hwjhint(unsigned insn, int value, const char **errmsg)
|
596 |
558 |
{
|
597 |
559 |
if (errmsg != (const char **)NULL && (value & 3))
|
598 |
560 |
*errmsg = _("jump hint unaligned");
|
... | ... | |
601 |
563 |
|
602 |
564 |
/*ARGSUSED*/
|
603 |
565 |
static int
|
604 |
|
extract_ev6hwjhint(insn, invalid)
|
605 |
|
unsigned insn;
|
606 |
|
int *invalid ATTRIBUTE_UNUSED;
|
|
566 |
extract_ev6hwjhint(unsigned insn, int *invalid ATTRIBUTE_UNUSED)
|
607 |
567 |
{
|
608 |
568 |
return 4 * (((insn & 0x1FFF) ^ 0x1000) - 0x1000);
|
609 |
569 |
}
|
... | ... | |
1804 |
1764 |
/* Disassemble Alpha instructions. */
|
1805 |
1765 |
|
1806 |
1766 |
int
|
1807 |
|
print_insn_alpha (memaddr, info)
|
1808 |
|
bfd_vma memaddr;
|
1809 |
|
struct disassemble_info *info;
|
|
1767 |
print_insn_alpha (bfd_vma memaddr, struct disassemble_info *info)
|
1810 |
1768 |
{
|
1811 |
1769 |
static const struct alpha_opcode *opcode_index[AXP_NOPS+1];
|
1812 |
1770 |
const char * const * regnames;
|