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

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

revision 22 by dpavlin, Mon Oct 8 16:19:37 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_ia64.c,v 1.4 2006/02/09 22:40:27 debug Exp $   *  $Id: cpu_ia64.c,v 1.14 2006/09/19 10:50:08 debug Exp $
29   *   *
30   *  IA64 CPU emulation.   *  IA64 CPU emulation.
31   *   *
# Line 41  Line 41 
41  #include "machine.h"  #include "machine.h"
42  #include "memory.h"  #include "memory.h"
43  #include "misc.h"  #include "misc.h"
44    #include "settings.h"
45  #include "symbol.h"  #include "symbol.h"
46    
47  #include "tmp_ia64_head.c"  #include "tmp_ia64_head.c"
# Line 58  int ia64_cpu_new(struct cpu *cpu, struct Line 59  int ia64_cpu_new(struct cpu *cpu, struct
59          if (strcasecmp(cpu_type_name, "IA64") != 0)          if (strcasecmp(cpu_type_name, "IA64") != 0)
60                  return 0;                  return 0;
61    
62            cpu->run_instr = ia64_run_instr;
63          cpu->memory_rw = ia64_memory_rw;          cpu->memory_rw = ia64_memory_rw;
64          cpu->update_translation_table = ia64_update_translation_table;          cpu->update_translation_table = ia64_update_translation_table;
65          cpu->invalidate_translation_caches =          cpu->invalidate_translation_caches =
# Line 70  int ia64_cpu_new(struct cpu *cpu, struct Line 72  int ia64_cpu_new(struct cpu *cpu, struct
72                  debug("%s", cpu->name);                  debug("%s", cpu->name);
73          }          }
74    
75            /*  Add all register names to the settings:  */
76            CPU_SETTINGS_ADD_REGISTER64("pc", cpu->pc);
77    
78          return 1;          return 1;
79  }  }
80    
# Line 98  void ia64_cpu_list_available_types(void) Line 103  void ia64_cpu_list_available_types(void)
103    
104    
105  /*  /*
  *  ia64_cpu_register_match():  
  */  
 void ia64_cpu_register_match(struct machine *m, char *name,  
         int writeflag, uint64_t *valuep, int *match_register)  
 {  
         int cpunr = 0;  
   
         /*  CPU number:  */  
   
         /*  TODO  */  
   
         if (strcasecmp(name, "pc") == 0) {  
                 if (writeflag) {  
                         m->cpus[cpunr]->pc = *valuep;  
                 } else  
                         *valuep = m->cpus[cpunr]->pc;  
                 *match_register = 1;  
         }  
   
         /*  TODO  */  
 }  
   
   
 /*  
106   *  ia64_cpu_register_dump():   *  ia64_cpu_register_dump():
107   *     *  
108   *  Dump cpu registers in a relatively readable format.   *  Dump cpu registers in a relatively readable format.
# Line 138  void ia64_cpu_register_dump(struct cpu * Line 119  void ia64_cpu_register_dump(struct cpu *
119          if (gprs) {          if (gprs) {
120                  symbol = get_symbol_name(&cpu->machine->symbol_context,                  symbol = get_symbol_name(&cpu->machine->symbol_context,
121                      cpu->pc, &offset);                      cpu->pc, &offset);
122                  debug("cpu%i:\t pc = 0x%016llx", x, (long long)cpu->pc);                  debug("cpu%i:\t pc = 0x%016"PRIx64, x, (uint64_t)cpu->pc);
123                  debug("  <%s>\n", symbol != NULL? symbol : " no symbol ");                  debug("  <%s>\n", symbol != NULL? symbol : " no symbol ");
124    
125                  /*  TODO  */                  /*  TODO  */
# Line 147  void ia64_cpu_register_dump(struct cpu * Line 128  void ia64_cpu_register_dump(struct cpu *
128    
129    
130  /*  /*
131     *  mips_cpu_tlbdump():
132     *
133     *  Called from the debugger to dump the TLB in a readable format.
134     *  x is the cpu number to dump, or -1 to dump all CPUs.
135     *
136     *  If rawflag is nonzero, then the TLB contents isn't formated nicely,
137     *  just dumped.
138     */
139    void ia64_cpu_tlbdump(struct machine *m, int x, int rawflag)
140    {
141    }
142    
143    
144    /*
145     *  ia64_cpu_gdb_stub():
146     *
147     *  Execute a "remote GDB" command. Returns a newly allocated response string
148     *  on success, NULL on failure.
149     */
150    char *ia64_cpu_gdb_stub(struct cpu *cpu, char *cmd)
151    {
152            fatal("ia64_cpu_gdb_stub(): TODO\n");
153            return NULL;
154    }
155    
156    
157    /*
158   *  ia64_cpu_interrupt():   *  ia64_cpu_interrupt():
159   */   */
160  int ia64_cpu_interrupt(struct cpu *cpu, uint64_t irq_nr)  int ia64_cpu_interrupt(struct cpu *cpu, uint64_t irq_nr)
# Line 179  int ia64_cpu_interrupt_ack(struct cpu *c Line 187  int ia64_cpu_interrupt_ack(struct cpu *c
187   *  cpu->pc for relative addresses.   *  cpu->pc for relative addresses.
188   */                       */                    
189  int ia64_cpu_disassemble_instr(struct cpu *cpu, unsigned char *ib,  int ia64_cpu_disassemble_instr(struct cpu *cpu, unsigned char *ib,
190          int running, uint64_t dumpaddr, int bintrans)          int running, uint64_t dumpaddr)
191  {  {
192          uint64_t offset;          uint64_t offset;
193          char *symbol;          char *symbol;
# Line 195  int ia64_cpu_disassemble_instr(struct cp Line 203  int ia64_cpu_disassemble_instr(struct cp
203          if (cpu->machine->ncpus > 1 && running)          if (cpu->machine->ncpus > 1 && running)
204                  debug("cpu%i:\t", cpu->cpu_id);                  debug("cpu%i:\t", cpu->cpu_id);
205    
206          debug("%016llx:  ", (long long)dumpaddr);          debug("%016"PRIx64":  ", (uint64_t) dumpaddr);
207    
208  debug("TODO\n");  debug("TODO\n");
209    

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

  ViewVC Help
Powered by ViewVC 1.1.26