/[gxemul]/trunk/src/include/cpu.h
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/include/cpu.h

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

revision 12 by dpavlin, Mon Oct 8 16:18:38 2007 UTC revision 18 by dpavlin, Mon Oct 8 16:19:11 2007 UTC
# Line 28  Line 28 
28   *  SUCH DAMAGE.   *  SUCH DAMAGE.
29   *   *
30   *   *
31   *  $Id: cpu.h,v 1.43 2005/08/16 05:37:13 debug Exp $   *  $Id: cpu.h,v 1.51 2005/10/27 14:01:15 debug Exp $
32   *   *
33   *  See cpu.c.   *  See cpu.c.
34   */   */
# Line 41  Line 41 
41  /*  This is needed for undefining 'mips' or 'ppc', on weird systems:  */  /*  This is needed for undefining 'mips' or 'ppc', on weird systems:  */
42  #include "../../config.h"  #include "../../config.h"
43    
 #include "cpu_arm.h"  
44  #include "cpu_alpha.h"  #include "cpu_alpha.h"
45    #include "cpu_arm.h"
46    #include "cpu_avr.h"
47    #include "cpu_hppa.h"
48    #include "cpu_i960.h"
49  #include "cpu_ia64.h"  #include "cpu_ia64.h"
50  #include "cpu_m68k.h"  #include "cpu_m68k.h"
51  #include "cpu_mips.h"  #include "cpu_mips.h"
52  #include "cpu_ppc.h"  #include "cpu_ppc.h"
53    #include "cpu_sh.h"
54  #include "cpu_sparc.h"  #include "cpu_sparc.h"
55  #include "cpu_x86.h"  #include "cpu_x86.h"
56    
# Line 103  struct cpu_family { Line 107  struct cpu_family {
107  #define TRANSLATIONS                    1  #define TRANSLATIONS                    1
108  #define COMBINATIONS                    2  #define COMBINATIONS                    2
109    
110  #define DYNTRANS_CACHE_SIZE             (16*1048576)  #define DYNTRANS_CACHE_SIZE             (20*1048576)
111  #define DYNTRANS_CACHE_MARGIN           300000  #define DYNTRANS_CACHE_MARGIN           300000
112    
113  #define N_BASE_TABLE_ENTRIES            32768  #define N_BASE_TABLE_ENTRIES            32768
# Line 136  struct cpu { Line 140  struct cpu {
140          void            (*update_translation_table)(struct cpu *,          void            (*update_translation_table)(struct cpu *,
141                              uint64_t vaddr_page, unsigned char *host_page,                              uint64_t vaddr_page, unsigned char *host_page,
142                              int writeflag, uint64_t paddr_page);                              int writeflag, uint64_t paddr_page);
143          void            (*invalidate_translation_caches_paddr)(struct cpu *,          void            (*invalidate_translation_caches)(struct cpu *,
144                              uint64_t paddr);                              uint64_t paddr, int flags);
145          void            (*invalidate_code_translation_caches)(struct cpu *);          void            (*invalidate_code_translation)(struct cpu *,
146                                uint64_t paddr, int flags);
147          void            (*useremul_syscall)(struct cpu *cpu, uint32_t code);          void            (*useremul_syscall)(struct cpu *cpu, uint32_t code);
148    
149          uint64_t        pc;          uint64_t        pc;
150    
151  #ifdef TRACE_NULL_CRASHES  #ifdef TRACE_NULL_CRASHES
152            /*  TODO: remove this, it's MIPS only  */
153          int             trace_null_index;          int             trace_null_index;
154          uint64_t        trace_null_addr[TRACE_NULL_N_ENTRIES];          uint64_t        trace_null_addr[TRACE_NULL_N_ENTRIES];
155  #endif    #endif  
# Line 157  struct cpu { Line 163  struct cpu {
163          int             n_translated_instrs;          int             n_translated_instrs;
164          unsigned char   *translation_cache;          unsigned char   *translation_cache;
165          size_t          translation_cache_cur_ofs;          size_t          translation_cache_cur_ofs;
166            void            (*combination_check)(struct cpu *,
167                                void * /* instr call ptr */, int low_addr);
168    
169          /*          /*
170           *  CPU-family dependent:           *  CPU-family dependent:
# Line 164  struct cpu { Line 172  struct cpu {
172          union {          union {
173                  struct alpha_cpu   alpha;                  struct alpha_cpu   alpha;
174                  struct arm_cpu     arm;                  struct arm_cpu     arm;
175                    struct avr_cpu     avr;
176                    struct hppa_cpu    hppa;
177                    struct i960_cpu    i960;
178                  struct ia64_cpu    ia64;                  struct ia64_cpu    ia64;
179                  struct m68k_cpu    m68k;                  struct m68k_cpu    m68k;
180                  struct mips_cpu    mips;                  struct mips_cpu    mips;
181                  struct ppc_cpu     ppc;                  struct ppc_cpu     ppc;
182                    struct sh_cpu      sh;
183                  struct sparc_cpu   sparc;                  struct sparc_cpu   sparc;
184                  struct x86_cpu     x86;                  struct x86_cpu     x86;
185          } cd;          } cd;
# Line 200  struct cpu_family *cpu_family_ptr_by_num Line 212  struct cpu_family *cpu_family_ptr_by_num
212  void cpu_init(void);  void cpu_init(void);
213    
214    
215    #define JUST_MARK_AS_NON_WRITABLE       1
216    #define INVALIDATE_ALL                  2
217    #define INVALIDATE_PADDR                4
218    #define INVALIDATE_VADDR                8
219    
220    #define TLB_CODE                        0x02
221    
222    
223  #define CPU_FAMILY_INIT(n,s)    int n ## _cpu_family_init(              \  #define CPU_FAMILY_INIT(n,s)    int n ## _cpu_family_init(              \
224          struct cpu_family *fp) {                                        \          struct cpu_family *fp) {                                        \
225          /*  Fill in the cpu_family struct with valid data for this arch.  */ \          /*  Fill in the cpu_family struct with valid data for this arch.  */ \

Legend:
Removed from v.12  
changed lines
  Added in v.18

  ViewVC Help
Powered by ViewVC 1.1.26