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

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

revision 24 by dpavlin, Mon Oct 8 16:19:56 2007 UTC revision 28 by dpavlin, Mon Oct 8 16:20:26 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *   *
27   *   *
28   *  $Id: cpu_mips.c,v 1.56 2006/06/22 13:22:41 debug Exp $   *  $Id: cpu_mips.c,v 1.61 2006/07/16 13:32:26 debug Exp $
29   *   *
30   *  MIPS core CPU emulation.   *  MIPS core CPU emulation.
31   */   */
# Line 53  Line 53 
53    
54    
55  extern volatile int single_step;  extern volatile int single_step;
 extern int old_show_trace_tree;  
 extern int old_instruction_trace;  
 extern int old_quiet_mode;  
 extern int quiet_mode;  
56    
57  static char *exception_names[] = EXCEPTION_NAMES;  static char *exception_names[] = EXCEPTION_NAMES;
58    
# Line 148  int mips_cpu_new(struct cpu *cpu, struct Line 144  int mips_cpu_new(struct cpu *cpu, struct
144                  cpu->is_32bit = 1;                  cpu->is_32bit = 1;
145    
146          if (cpu->is_32bit) {          if (cpu->is_32bit) {
147                    cpu->run_instr = mips32_run_instr;
148                  cpu->update_translation_table = mips32_update_translation_table;                  cpu->update_translation_table = mips32_update_translation_table;
149                  cpu->invalidate_translation_caches =                  cpu->invalidate_translation_caches =
150                      mips32_invalidate_translation_caches;                      mips32_invalidate_translation_caches;
151                  cpu->invalidate_code_translation =                  cpu->invalidate_code_translation =
152                      mips32_invalidate_code_translation;                      mips32_invalidate_code_translation;
153          } else {          } else {
154                    cpu->run_instr = mips_run_instr;
155                  cpu->update_translation_table = mips_update_translation_table;                  cpu->update_translation_table = mips_update_translation_table;
156                  cpu->invalidate_translation_caches =                  cpu->invalidate_translation_caches =
157                      mips_invalidate_translation_caches;                      mips_invalidate_translation_caches;
# Line 309  int mips_cpu_new(struct cpu *cpu, struct Line 307  int mips_cpu_new(struct cpu *cpu, struct
307    
308          switch (cpu->cd.mips.cpu_type.mmu_model) {          switch (cpu->cd.mips.cpu_type.mmu_model) {
309          case MMU3K:          case MMU3K:
310                  cpu->translate_address = translate_address_mmu3k;                  cpu->translate_v2p = translate_v2p_mmu3k;
311                  break;                  break;
312          case MMU8K:          case MMU8K:
313                  cpu->translate_address = translate_address_mmu8k;                  cpu->translate_v2p = translate_v2p_mmu8k;
314                  break;                  break;
315          case MMU10K:          case MMU10K:
316                  cpu->translate_address = translate_address_mmu10k;                  cpu->translate_v2p = translate_v2p_mmu10k;
317                  break;                  break;
318          default:          default:
319                  if (cpu->cd.mips.cpu_type.rev == MIPS_R4100)                  if (cpu->cd.mips.cpu_type.rev == MIPS_R4100)
320                          cpu->translate_address = translate_address_mmu4100;                          cpu->translate_v2p = translate_v2p_mmu4100;
321                  else                  else
322                          cpu->translate_address = translate_address_generic;                          cpu->translate_v2p = translate_v2p_generic;
323          }          }
324    
         mips_init_64bit_dummy_tables(cpu);  
   
325          return 1;          return 1;
326  }  }
327    
# Line 753  void mips_cpu_register_match(struct mach Line 749  void mips_cpu_register_match(struct mach
749          }          }
750    
751          /*  TODO: Coprocessor 1,2,3 registers.  */          /*  TODO: Coprocessor 1,2,3 registers.  */
752    
753            /*  Only return lowest 32 bits when doing 32-bit emulation:  */
754            if (!writeflag && m->cpus[cpunr]->is_32bit)
755                    *valuep = (uint32_t) (*valuep);
756  }  }
757    
758    
# Line 1603  void mips_cpu_register_dump(struct cpu * Line 1603  void mips_cpu_register_dump(struct cpu *
1603                  }                  }
1604    
1605                  /*  Coprocessor registers:  */                  /*  Coprocessor registers:  */
                 /*  TODO: multiple selections per register?  */  
1606                  for (i=0; i<32; i++) {                  for (i=0; i<32; i++) {
1607                          /*  32-bit:  */                          /*  32-bit:  */
1608                          if ((i & nm1) == 0)                          if ((i & nm1) == 0)

Legend:
Removed from v.24  
changed lines
  Added in v.28

  ViewVC Help
Powered by ViewVC 1.1.26