/[gxemul]/trunk/src/cpus/cpu_alpha.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/src/cpus/cpu_alpha.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 21 by dpavlin, Mon Oct 8 16:19:23 2007 UTC revision 22 by dpavlin, Mon Oct 8 16:19:37 2007 UTC
# Line 1  Line 1 
1  /*  /*
2   *  Copyright (C) 2005  Anders Gavare.  All rights reserved.   *  Copyright (C) 2005-2006  Anders Gavare.  All rights reserved.
3   *   *
4   *  Redistribution and use in source and binary forms, with or without   *  Redistribution and use in source and binary forms, with or without
5   *  modification, are permitted provided that the following conditions are met:   *  modification, are permitted provided that the following conditions are met:
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *   *
27   *   *
28   *  $Id: cpu_alpha.c,v 1.3 2005/11/13 00:14:07 debug Exp $   *  $Id: cpu_alpha.c,v 1.5 2006/01/01 16:08:25 debug Exp $
29   *   *
30   *  Alpha CPU emulation.   *  Alpha CPU emulation.
31   *   *
# Line 487  int alpha_cpu_disassemble_instr(struct c Line 487  int alpha_cpu_disassemble_instr(struct c
487                  break;                  break;
488          case 0x16:          case 0x16:
489                  switch (func & 0x7ff) {                  switch (func & 0x7ff) {
490                    case 0x02f: mnem = "cvttq/c"; rbrc = 1; break;
491                  case 0x080: mnem = "adds"; break;                  case 0x080: mnem = "adds"; break;
492                  case 0x081: mnem = "subs"; break;                  case 0x081: mnem = "subs"; break;
493                  case 0x082: mnem = "muls"; break;                  case 0x082: mnem = "muls"; break;
494                  case 0x083: mnem = "mult"; break;                  case 0x083: mnem = "XXXx083"; break;
495                  case 0x0a0: mnem = "addt"; break;                  case 0x0a0: mnem = "addt"; break;
496                  case 0x0a1: mnem = "subt"; break;                  case 0x0a1: mnem = "subt"; break;
497                  case 0x0a2: mnem = "mult"; break;                  case 0x0a2: mnem = "mult"; break;
498                  case 0x0a3: mnem = "divt"; break;                  case 0x0a3: mnem = "divt"; break;
499                    case 0x0a5: mnem = "cmpteq"; break;
500                    case 0x0a6: mnem = "cmptlt"; break;
501                    case 0x0a7: mnem = "cmptle"; break;
502                  case 0x0be: mnem = "cvtqt"; rbrc = 1; break;                  case 0x0be: mnem = "cvtqt"; rbrc = 1; break;
503                  default:debug("UNIMPLEMENTED opcode 0x%x func 0x%x\n",                  default:debug("UNIMPLEMENTED opcode 0x%x func 0x%x\n",
504                              opcode, func);                              opcode, func);
# Line 509  int alpha_cpu_disassemble_instr(struct c Line 513  int alpha_cpu_disassemble_instr(struct c
513          case 0x17:          case 0x17:
514                  switch (func & 0x7ff) {                  switch (func & 0x7ff) {
515                  case 0x020: mnem = "fabs"; rbrc = 1; break;                  case 0x020: mnem = "fabs"; rbrc = 1; break;
516                    case 0x021: mnem = "fneg"; rbrc = 1; break;
517                  default:debug("UNIMPLEMENTED opcode 0x%x func 0x%x\n",                  default:debug("UNIMPLEMENTED opcode 0x%x func 0x%x\n",
518                              opcode, func);                              opcode, func);
519                  }                  }
# Line 592  int alpha_cpu_disassemble_instr(struct c Line 597  int alpha_cpu_disassemble_instr(struct c
597                          debug("\t<%s>", symbol);                          debug("\t<%s>", symbol);
598                  debug("\n");                  debug("\n");
599                  break;                  break;
600            case 0x31:
601            case 0x35:
602          case 0x38:          case 0x38:
603          case 0x39:          case 0x39:
604          case 0x3a:          case 0x3a:
# Line 600  int alpha_cpu_disassemble_instr(struct c Line 607  int alpha_cpu_disassemble_instr(struct c
607          case 0x3d:          case 0x3d:
608          case 0x3e:          case 0x3e:
609          case 0x3f:          case 0x3f:
610                    floating = 0;
611                  switch (opcode) {                  switch (opcode) {
612                    case 0x31: mnem = "fbeq"; floating = 1; break;
613                    case 0x35: mnem = "fbne"; floating = 1; break;
614                  case 0x38: mnem = "blbc"; break;                  case 0x38: mnem = "blbc"; break;
615                  case 0x39: mnem = "beq"; break;                  case 0x39: mnem = "beq"; break;
616                  case 0x3a: mnem = "blt"; break;                  case 0x3a: mnem = "blt"; break;
# Line 615  int alpha_cpu_disassemble_instr(struct c Line 625  int alpha_cpu_disassemble_instr(struct c
625                          tmp |= 0xffffffffffe00000ULL;                          tmp |= 0xffffffffffe00000ULL;
626                  tmp <<= 2;                  tmp <<= 2;
627                  tmp += dumpaddr + sizeof(uint32_t);                  tmp += dumpaddr + sizeof(uint32_t);
628                  debug("%s\t%s,", mnem, alpha_regname[ra]);                  debug("%s\t", mnem);
629                    if (floating)
630                            debug("f%i,", ra);
631                    else
632                            debug("%s,", alpha_regname[ra]);
633                  debug("0x%llx", (long long)tmp);                  debug("0x%llx", (long long)tmp);
634                  symbol = get_symbol_name(&cpu->machine->symbol_context,                  symbol = get_symbol_name(&cpu->machine->symbol_context,
635                      tmp, &offset);                      tmp, &offset);

Legend:
Removed from v.21  
changed lines
  Added in v.22

  ViewVC Help
Powered by ViewVC 1.1.26