Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(201)

Side by Side Diff: opcodes/tic54x-dis.c

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « opcodes/sparc-opc.c ('k') | opcodes/tic6x-dis.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Disassembly routines for TMS320C54X architecture 1 /* Disassembly routines for TMS320C54X architecture
2 Copyright 1999, 2000, 2001, 2005, 2007, 2009, 2012 2 Copyright 1999, 2000, 2001, 2005, 2007, 2009, 2012
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 Contributed by Timothy Wall (twall@cygnus.com) 4 Contributed by Timothy Wall (twall@cygnus.com)
5 5
6 This file is part of the GNU opcodes library. 6 This file is part of the GNU opcodes library.
7 7
8 This library is free software; you can redistribute it and/or modify 8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option) 10 the Free Software Foundation; either version 3, or (at your option)
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 } 161 }
162 else 162 else
163 { 163 {
164 size = insn->words + has_lkaddr (memdata, insn); 164 size = insn->words + has_lkaddr (memdata, insn);
165 } 165 }
166 166
167 return size; 167 return size;
168 } 168 }
169 169
170 int 170 int
171 print_instruction (info, memaddr, opcode, tm_name, tm_operands, size, ext) 171 print_instruction (disassemble_info *info,
172 disassemble_info *info; 172 » » bfd_vma memaddr,
173 bfd_vma memaddr; 173 » » unsigned short opcode,
174 unsigned short opcode; 174 » » const char *tm_name,
175 const char *tm_name; 175 » » const enum optype tm_operands[],
176 const enum optype tm_operands[]; 176 » » int size,
177 int size; 177 » » int ext)
178 int ext;
179 { 178 {
180 static int n; 179 static int n;
181 /* string storage for multiple operands */ 180 /* string storage for multiple operands */
182 char operand[4][64] = { {0},{0},{0},{0}, }; 181 char operand[4][64] = { {0},{0},{0},{0}, };
183 bfd_byte buf[2]; 182 bfd_byte buf[2];
184 unsigned long opcode2 = 0; 183 unsigned long opcode2 = 0;
185 unsigned long lkaddr = 0; 184 unsigned long lkaddr = 0;
186 enum optype src = OP_None; 185 enum optype src = OP_None;
187 enum optype dst = OP_None; 186 enum optype dst = OP_None;
188 int i, shift; 187 int i, shift;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 sprintf (operand[i], "??? (0x%x)", tm_operands[i]); 461 sprintf (operand[i], "??? (0x%x)", tm_operands[i]);
463 info->fprintf_func (info->stream, "%s%s", comma, operand[i]); 462 info->fprintf_func (info->stream, "%s%s", comma, operand[i]);
464 break; 463 break;
465 } 464 }
466 comma = next_comma; 465 comma = next_comma;
467 } 466 }
468 return 1; 467 return 1;
469 } 468 }
470 469
471 static int 470 static int
472 print_parallel_instruction (info, memaddr, opcode, ptm, size) 471 print_parallel_instruction (disassemble_info *info,
473 disassemble_info *info; 472 » » » bfd_vma memaddr,
474 bfd_vma memaddr; 473 » » » unsigned short opcode,
475 unsigned short opcode; 474 » » » const insn_template *ptm,
476 const insn_template *ptm; 475 » » » int size)
477 int size;
478 { 476 {
479 print_instruction (info, memaddr, opcode, 477 print_instruction (info, memaddr, opcode,
480 ptm->name, ptm->operand_types, size, 0); 478 ptm->name, ptm->operand_types, size, 0);
481 info->fprintf_func (info->stream, " || "); 479 info->fprintf_func (info->stream, " || ");
482 return print_instruction (info, memaddr, opcode, 480 return print_instruction (info, memaddr, opcode,
483 ptm->parname, ptm->paroperand_types, size, 0); 481 ptm->parname, ptm->paroperand_types, size, 0);
484 } 482 }
485 483
486 static int 484 static int
487 sprint_dual_address (info, buf, code) 485 sprint_dual_address (disassemble_info *info ATTRIBUTE_UNUSED,
488 disassemble_info *info ATTRIBUTE_UNUSED; 486 » » char buf[],
489 char buf[]; 487 » » unsigned short code)
490 unsigned short code;
491 { 488 {
492 const char *formats[] = { 489 const char *formats[] = {
493 "*ar%d", 490 "*ar%d",
494 "*ar%d-", 491 "*ar%d-",
495 "*ar%d+", 492 "*ar%d+",
496 "*ar%d+0%%", 493 "*ar%d+0%%",
497 }; 494 };
498 return sprintf (buf, formats[XMOD (code)], XARX (code)); 495 return sprintf (buf, formats[XMOD (code)], XARX (code));
499 } 496 }
500 497
501 static int 498 static int
502 sprint_indirect_address (info, buf, opcode) 499 sprint_indirect_address (disassemble_info *info ATTRIBUTE_UNUSED,
503 disassemble_info *info ATTRIBUTE_UNUSED; 500 » » » char buf[],
504 char buf[]; 501 » » » unsigned short opcode)
505 unsigned short opcode;
506 { 502 {
507 const char *formats[] = { 503 const char *formats[] = {
508 "*ar%d", 504 "*ar%d",
509 "*ar%d-", 505 "*ar%d-",
510 "*ar%d+", 506 "*ar%d+",
511 "*+ar%d", 507 "*+ar%d",
512 "*ar%d-0B", 508 "*ar%d-0B",
513 "*ar%d-0", 509 "*ar%d-0",
514 "*ar%d+0", 510 "*ar%d+0",
515 "*ar%d+0B", 511 "*ar%d+0B",
516 "*ar%d-%%", 512 "*ar%d-%%",
517 "*ar%d-0%%", 513 "*ar%d-0%%",
518 "*ar%d+%%", 514 "*ar%d+%%",
519 "*ar%d+0%%", 515 "*ar%d+0%%",
520 }; 516 };
521 return sprintf (buf, formats[MOD (opcode)], ARF (opcode)); 517 return sprintf (buf, formats[MOD (opcode)], ARF (opcode));
522 } 518 }
523 519
524 static int 520 static int
525 sprint_direct_address (info, buf, opcode) 521 sprint_direct_address (disassemble_info *info ATTRIBUTE_UNUSED,
526 disassemble_info *info ATTRIBUTE_UNUSED; 522 » » char buf[],
527 char buf[]; 523 » » unsigned short opcode)
528 unsigned short opcode;
529 { 524 {
530 /* FIXME -- look up relocation if available */ 525 /* FIXME -- look up relocation if available */
531 return sprintf (buf, "DP+0x%02x", (int) (opcode & 0x7F)); 526 return sprintf (buf, "DP+0x%02x", (int) (opcode & 0x7F));
532 } 527 }
533 528
534 static int 529 static int
535 sprint_mmr (info, buf, mmr) 530 sprint_mmr (disassemble_info *info ATTRIBUTE_UNUSED,
536 disassemble_info *info ATTRIBUTE_UNUSED; 531 » char buf[],
537 char buf[]; 532 » int mmr)
538 int mmr;
539 { 533 {
540 symbol *reg = (symbol *) mmregs; 534 symbol *reg = (symbol *) mmregs;
541 while (reg->name != NULL) 535 while (reg->name != NULL)
542 { 536 {
543 if (mmr == reg->value) 537 if (mmr == reg->value)
544 { 538 {
545 sprintf (buf, "%s", (reg + 1)->name); 539 sprintf (buf, "%s", (reg + 1)->name);
546 return 1; 540 return 1;
547 } 541 }
548 ++reg; 542 ++reg;
549 } 543 }
550 sprintf (buf, "MMR(%d)", mmr); /* FIXME -- different targets. */ 544 sprintf (buf, "MMR(%d)", mmr); /* FIXME -- different targets. */
551 return 0; 545 return 0;
552 } 546 }
553 547
554 static int 548 static int
555 sprint_cc2 (info, buf, opcode) 549 sprint_cc2 (disassemble_info *info ATTRIBUTE_UNUSED,
556 disassemble_info *info ATTRIBUTE_UNUSED; 550 » char *buf,
557 char *buf; 551 » unsigned short opcode)
558 unsigned short opcode;
559 { 552 {
560 const char *cc2[] = { 553 const char *cc2[] = {
561 "??", "??", "ageq", "alt", "aneq", "aeq", "agt", "aleq", 554 "??", "??", "ageq", "alt", "aneq", "aeq", "agt", "aleq",
562 "??", "??", "bgeq", "blt", "bneq", "beq", "bgt", "bleq", 555 "??", "??", "bgeq", "blt", "bneq", "beq", "bgt", "bleq",
563 }; 556 };
564 return sprintf (buf, "%s", cc2[opcode & 0xF]); 557 return sprintf (buf, "%s", cc2[opcode & 0xF]);
565 } 558 }
566 559
567 static int 560 static int
568 sprint_condition (info, buf, opcode) 561 sprint_condition (disassemble_info *info ATTRIBUTE_UNUSED,
569 disassemble_info *info ATTRIBUTE_UNUSED; 562 » » char *buf,
570 char *buf; 563 » » unsigned short opcode)
571 unsigned short opcode;
572 { 564 {
573 char *start = buf; 565 char *start = buf;
574 const char *cmp[] = { 566 const char *cmp[] = {
575 "??", "??", "geq", "lt", "neq", "eq", "gt", "leq" 567 "??", "??", "geq", "lt", "neq", "eq", "gt", "leq"
576 }; 568 };
577 if (opcode & 0x40) 569 if (opcode & 0x40)
578 { 570 {
579 char acc = (opcode & 0x8) ? 'b' : 'a'; 571 char acc = (opcode & 0x8) ? 'b' : 'a';
580 if (opcode & 0x7) 572 if (opcode & 0x7)
581 buf += sprintf (buf, "%c%s%s", acc, cmp[(opcode & 0x7)], 573 buf += sprintf (buf, "%c%s%s", acc, cmp[(opcode & 0x7)],
(...skipping 13 matching lines...) Expand all
595 (opcode & 0x03) ? ", " : ""); 587 (opcode & 0x03) ? ", " : "");
596 if (opcode & 0x03) 588 if (opcode & 0x03)
597 buf += sprintf (buf, "%s", 589 buf += sprintf (buf, "%s",
598 ((opcode & 0x03) == 0x03) ? "bio" : "nbio"); 590 ((opcode & 0x03) == 0x03) ? "bio" : "nbio");
599 } 591 }
600 else 592 else
601 buf += sprintf (buf, "unc"); 593 buf += sprintf (buf, "unc");
602 594
603 return buf - start; 595 return buf - start;
604 } 596 }
OLDNEW
« no previous file with comments | « opcodes/sparc-opc.c ('k') | opcodes/tic6x-dis.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698