/[gxemul]/trunk/src/cpus/cpu_i960.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_i960.c

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

revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC revision 32 by dpavlin, Mon Oct 8 16:20:58 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_i960.c,v 1.4 2005/11/13 00:14:07 debug Exp $   *  $Id: cpu_i960.c,v 1.12 2006/09/19 10:50:08 debug Exp $
29   *   *
30   *  Intel i960 CPU emulation.   *  Intel i960 CPU emulation.
31   */   */
# Line 39  Line 39 
39  #include "machine.h"  #include "machine.h"
40  #include "memory.h"  #include "memory.h"
41  #include "misc.h"  #include "misc.h"
42    #include "settings.h"
43  #include "symbol.h"  #include "symbol.h"
44    
45  #define DYNTRANS_32  #define DYNTRANS_32
# Line 60  int i960_cpu_new(struct cpu *cpu, struct Line 61  int i960_cpu_new(struct cpu *cpu, struct
61          if (strcasecmp(cpu_type_name, "i960") != 0)          if (strcasecmp(cpu_type_name, "i960") != 0)
62                  return 0;                  return 0;
63    
64            cpu->run_instr = i960_run_instr;
65          cpu->memory_rw = i960_memory_rw;          cpu->memory_rw = i960_memory_rw;
66          cpu->update_translation_table = i960_update_translation_table;          cpu->update_translation_table = i960_update_translation_table;
67          cpu->invalidate_translation_caches =          cpu->invalidate_translation_caches =
# Line 74  int i960_cpu_new(struct cpu *cpu, struct Line 76  int i960_cpu_new(struct cpu *cpu, struct
76                  debug("%s", cpu->name);                  debug("%s", cpu->name);
77          }          }
78    
79            /*  Add all register names to the settings:  */
80            CPU_SETTINGS_ADD_REGISTER64("pc", cpu->pc);
81    
82          return 1;          return 1;
83  }  }
84    
# Line 119  void i960_cpu_register_dump(struct cpu * Line 124  void i960_cpu_register_dump(struct cpu *
124                  symbol = get_symbol_name(&cpu->machine->symbol_context,                  symbol = get_symbol_name(&cpu->machine->symbol_context,
125                      cpu->pc, &offset);                      cpu->pc, &offset);
126    
127                  debug("cpu%i: pc  = 0x%08x", x, (int)cpu->pc);                  debug("cpu%i: pc  = 0x%08"PRIx32, x, (uint32_t)cpu->pc);
128                  debug("  <%s>\n", symbol != NULL? symbol : " no symbol ");                  debug("  <%s>\n", symbol != NULL? symbol : " no symbol ");
129          }          }
130  }  }
131    
132    
133  /*  /*
134   *  i960_cpu_register_match():   *  i960_cpu_tlbdump():
135     *
136     *  Called from the debugger to dump the TLB in a readable format.
137     *  x is the cpu number to dump, or -1 to dump all CPUs.
138     *
139     *  If rawflag is nonzero, then the TLB contents isn't formated nicely,
140     *  just dumped.
141   */   */
142  void i960_cpu_register_match(struct machine *m, char *name,  void i960_cpu_tlbdump(struct machine *m, int x, int rawflag)
         int writeflag, uint64_t *valuep, int *match_register)  
143  {  {
144          int cpunr = 0;  }
   
         /*  CPU number:  */  
145    
         /*  TODO  */  
146    
147          /*  Register name:  */  /*
148          if (strcasecmp(name, "pc") == 0) {   *  i960_cpu_gdb_stub():
149                  if (writeflag) {   *
150                          m->cpus[cpunr]->pc = *valuep;   *  Execute a "remote GDB" command. Returns a newly allocated response string
151                  } else   *  on success, NULL on failure.
152                          *valuep = m->cpus[cpunr]->pc;   */
153                  *match_register = 1;  char *i960_cpu_gdb_stub(struct cpu *cpu, char *cmd)
154          }  {
155            fatal("i960_cpu_gdb_stub(): TODO\n");
156            return NULL;
157  }  }
158    
159    
# Line 189  static void print_spaces(int len) { int Line 198  static void print_spaces(int len) { int
198   *  cpu->pc for relative addresses.   *  cpu->pc for relative addresses.
199   */   */
200  int i960_cpu_disassemble_instr(struct cpu *cpu, unsigned char *ib,  int i960_cpu_disassemble_instr(struct cpu *cpu, unsigned char *ib,
201          int running, uint64_t dumpaddr, int bintrans)          int running, uint64_t dumpaddr)
202  {  {
203          uint64_t offset;          uint64_t offset;
204          int len = 0;          int len = 0;

Legend:
Removed from v.20  
changed lines
  Added in v.32

  ViewVC Help
Powered by ViewVC 1.1.26