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

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

revision 31 by dpavlin, Mon Oct 8 16:20:26 2007 UTC revision 32 by dpavlin, Mon Oct 8 16:20:58 2007 UTC
# Line 28  Line 28 
28   *  SUCH DAMAGE.   *  SUCH DAMAGE.
29   *   *
30   *   *
31   *  $Id: cpu_mips.h,v 1.45 2006/07/16 13:32:27 debug Exp $   *  $Id: cpu_mips.h,v 1.50 2006/10/14 23:47:37 debug Exp $
32   */   */
33    
34  #include "misc.h"  #include "misc.h"
# Line 36  Line 36 
36  struct cpu_family;  struct cpu_family;
37  struct emul;  struct emul;
38  struct machine;  struct machine;
39    struct timer;
40    
41  /*  /*
42   *  CPU type definitions:  See mips_cpu_types.h.   *  CPU type definitions:  See mips_cpu_types.h.
# Line 93  struct mips_tlb { Line 94  struct mips_tlb {
94  #define    MIPS_FCSR_FCC0_SHIFT            23  #define    MIPS_FCSR_FCC0_SHIFT            23
95  #define    MIPS_FCSR_FCC1_SHIFT            25  #define    MIPS_FCSR_FCC1_SHIFT            25
96    
97    #define N_VADDR_TO_TLB_INDEX_ENTRIES    (1 << 20)
98    
99  struct mips_coproc {  struct mips_coproc {
100          int             coproc_nr;          int             coproc_nr;
101          uint64_t        reg[N_MIPS_COPROC_REGS];          uint64_t        reg[N_MIPS_COPROC_REGS];
# Line 164  struct mips_coproc { Line 167  struct mips_coproc {
167  #define N_SPECIAL               64  #define N_SPECIAL               64
168  #define N_REGIMM                32  #define N_REGIMM                32
169    
 /*******************************  OLD:  *****************************/  
170    
171  /*  An "impossible" paddr:  */  /*  An "impossible" paddr:  */
172  #define IMPOSSIBLE_PADDR                0x1212343456566767ULL  #define IMPOSSIBLE_PADDR                0x1212343456566767ULL
# Line 183  struct r4000_cache_line { Line 185  struct r4000_cache_line {
185          char            dummy;          char            dummy;
186  };  };
187    
 /********************************************************************/  
188    
189  #ifdef ONEKPAGE  #ifdef ONEKPAGE
190  #define MIPS_IC_ENTRIES_SHIFT           8  #define MIPS_IC_ENTRIES_SHIFT           8
# Line 202  struct r4000_cache_line { Line 203  struct r4000_cache_line {
203  #define MIPS_L2N                17  #define MIPS_L2N                17
204  #define MIPS_L3N                18  #define MIPS_L3N                18
205    
206  #define MIPS_MAX_VPH_TLB_ENTRIES        128  #define MIPS_MAX_VPH_TLB_ENTRIES        192
207  DYNTRANS_MISC_DECLARATIONS(mips,MIPS,uint64_t)  DYNTRANS_MISC_DECLARATIONS(mips,MIPS,uint64_t)
208  DYNTRANS_MISC64_DECLARATIONS(mips,MIPS,uint8_t)  DYNTRANS_MISC64_DECLARATIONS(mips,MIPS,uint8_t)
209    
 #if 0  
 struct mips_instr_call {  
         void    (*f)(struct cpu *, struct mips_instr_call *);  
         size_t  arg[MIPS_N_IC_ARGS];  
 };  
   
 /*  Translation cache struct for each physical page:  */  
 struct mips_tc_physpage {  
         struct mips_instr_call ics[MIPS_IC_ENTRIES_PER_PAGE + 3];  
         uint32_t        next_ofs;       /*  or 0 for end of chain  */  
         int             flags;  
         uint64_t        physaddr;  
 };  
   
 struct mips_vpg_tlb_entry {  
         uint8_t         valid;  
         uint8_t         writeflag;  
         unsigned char   *host_page;  
         int64_t         timestamp;  
         uint64_t        vaddr_page;  
         uint64_t        paddr_page;  
 };  
 #endif  
   
 /********************************************************************/  
210    
211  struct mips_cpu {  struct mips_cpu {
212          struct mips_cpu_type_def cpu_type;          struct mips_cpu_type_def cpu_type;
213    
214          struct mips_coproc *coproc[N_MIPS_COPROCS];          /*  General purpose registers:  */
215            uint64_t        gpr[N_MIPS_GPRS];
216    
217          int             compare_register_set;          /*  Dummy destination register when writing to the zero register:  */
218            uint64_t        scratch;
219    
220          /*  Special purpose registers:  */          /*  Special purpose registers:  */
221          uint64_t        hi;          uint64_t        hi;
222          uint64_t        lo;          uint64_t        lo;
223    
224          /*  Dummy destination register when writing to the zero register:  */          /*  Coprocessors:  */
225          uint64_t        scratch;          struct mips_coproc *coproc[N_MIPS_COPROCS];
226            uint64_t        cop0_config_select1;
         /*  General purpose registers:  */  
         uint64_t        gpr[N_MIPS_GPRS];  
   
         int             nullify_next;           /*  set to 1 if next instruction  
                                                         is to be nullified  */  
227    
228          int             show_trace_delay;       /*  0=normal, > 0 = delay until show_trace  */          int             last_written_tlb_index;
         uint64_t        show_trace_addr;  
229    
230          int             last_was_jumptoself;          /*  Count/compare timer:  */
231          int             jump_to_self_reg;          int             compare_register_set;
232            int             compare_interrupts_pending;
233            struct timer    *timer;
234    
235          int             rmw;            /*  Read-Modify-Write  */          int             rmw;            /*  Read-Modify-Write  */
236          int             rmw_len;        /*  Length of rmw modification  */          int             rmw_len;        /*  Length of rmw modification  */
# Line 279  struct mips_cpu { Line 253  struct mips_cpu {
253          uint64_t        lo1;          uint64_t        lo1;
254          uint32_t        r5900_sa;          uint32_t        r5900_sa;
255    
   
256          /*  Data and Instruction caches:  */          /*  Data and Instruction caches:  */
257          unsigned char   *cache[2];          unsigned char   *cache[2];
258          void            *cache_tags[2];          void            *cache_tags[2];
# Line 289  struct mips_cpu { Line 262  struct mips_cpu {
262          int             cache_mask[2];          int             cache_mask[2];
263          int             cache_miss_penalty[2];          int             cache_miss_penalty[2];
264    
         /*  Other stuff:  */  
         uint64_t        cop0_config_select1;  
   
   
         /*  NEW DYNTRANS:  */  
   
265    
266          /*          /*
267           *  Instruction translation cache and Virtual->Physical->Host           *  Instruction translation cache and Virtual->Physical->Host

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

  ViewVC Help
Powered by ViewVC 1.1.26