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

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

revision 14 by dpavlin, Mon Oct 8 16:18:51 2007 UTC revision 22 by dpavlin, Mon Oct 8 16:19:37 2007 UTC
# Line 2  Line 2 
2  #define CPU_ALPHA_H  #define CPU_ALPHA_H
3    
4  /*  /*
5   *  Copyright (C) 2005  Anders Gavare.  All rights reserved.   *  Copyright (C) 2005-2006  Anders Gavare.  All rights reserved.
6   *   *
7   *  Redistribution and use in source and binary forms, with or without   *  Redistribution and use in source and binary forms, with or without
8   *  modification, are permitted provided that the following conditions are met:   *  modification, are permitted provided that the following conditions are met:
# Line 28  Line 28 
28   *  SUCH DAMAGE.   *  SUCH DAMAGE.
29   *   *
30   *   *
31   *  $Id: cpu_alpha.h,v 1.23 2005/08/28 20:16:24 debug Exp $   *  $Id: cpu_alpha.h,v 1.30 2006/02/09 22:40:27 debug Exp $
32   */   */
33    
34  #include "misc.h"  #include "misc.h"
# Line 72  struct alpha_instr_call { Line 72  struct alpha_instr_call {
72    
73  /*  Translation cache struct for each physical page:  */  /*  Translation cache struct for each physical page:  */
74  struct alpha_tc_physpage {  struct alpha_tc_physpage {
75            struct alpha_instr_call ics[ALPHA_IC_ENTRIES_PER_PAGE + 1];
76          uint32_t        next_ofs;       /*  or 0 for end of chain  */          uint32_t        next_ofs;       /*  or 0 for end of chain  */
77          uint32_t        physaddr;          uint32_t        physaddr;
78          int             flags;          int             flags;
         struct alpha_instr_call ics[ALPHA_IC_ENTRIES_PER_PAGE + 1];  
79  };  };
80    
81    
# Line 104  struct alpha_vph_page { Line 104  struct alpha_vph_page {
104    
105  #define ALPHA_MAX_VPH_TLB_ENTRIES       128  #define ALPHA_MAX_VPH_TLB_ENTRIES       128
106  struct alpha_vpg_tlb_entry {  struct alpha_vpg_tlb_entry {
107          int             valid;          unsigned char   valid;
108          int             writeflag;          unsigned char   writeflag;
109          int64_t         timestamp;          int64_t         timestamp;
         unsigned char   *host_page;  
110          uint64_t        vaddr_page;          uint64_t        vaddr_page;
111          uint64_t        paddr_page;          uint64_t        paddr_page;
112            unsigned char   *host_page;
113  };  };
114    
115  struct alpha_cpu {  struct alpha_cpu {
# Line 124  struct alpha_cpu { Line 124  struct alpha_cpu {
124          /*  Misc.:  */          /*  Misc.:  */
125          uint64_t                pcc;                    /*  Cycle Counter  */          uint64_t                pcc;                    /*  Cycle Counter  */
126          uint64_t                ipl;          uint64_t                ipl;
127            uint64_t                sysvalue;
128          uint64_t                load_linked_addr;          uint64_t                load_linked_addr;
129          int                     ll_flag;          int                     ll_flag;
130    
# Line 131  struct alpha_cpu { Line 132  struct alpha_cpu {
132          /*          /*
133           *  Instruction translation cache:           *  Instruction translation cache:
134           */           */
135            DYNTRANS_ITC(alpha)
         /*  cur_ic_page is a pointer to an array of ALPHA_IC_ENTRIES_PER_PAGE  
             instruction call entries. next_ic points to the next such  
             call to be executed.  */  
         struct alpha_tc_physpage *cur_physpage;  
         struct alpha_instr_call *cur_ic_page;  
         struct alpha_instr_call *next_ic;  
   
136    
137          /*          /*
138           *  Virtual -> physical -> host address translation:           *  Hardcoded Alpha virtual -> physical -> host address translation:
139           */           */
140            VPH_TLBS(alpha,ALPHA)
         struct alpha_vpg_tlb_entry vph_tlb_entry[ALPHA_MAX_VPH_TLB_ENTRIES];  
141          struct alpha_vph_page   *vph_default_page;          struct alpha_vph_page   *vph_default_page;
142          struct alpha_vph_page   *vph_next_free_page;          struct alpha_vph_page   *vph_next_free_page;
143          struct alpha_vph_table  *vph_next_free_table;          struct alpha_vph_table  *vph_next_free_table;
# Line 156  struct alpha_cpu { Line 149  struct alpha_cpu {
149  /*  cpu_alpha.c:  */  /*  cpu_alpha.c:  */
150  void alpha_update_translation_table(struct cpu *cpu, uint64_t vaddr_page,  void alpha_update_translation_table(struct cpu *cpu, uint64_t vaddr_page,
151          unsigned char *host_page, int writeflag, uint64_t paddr_page);          unsigned char *host_page, int writeflag, uint64_t paddr_page);
152  void alpha_invalidate_translation_caches_paddr(struct cpu *cpu, uint64_t, int);  void alpha_invalidate_translation_caches(struct cpu *cpu, uint64_t, int);
153  void alpha_invalidate_code_translation(struct cpu *cpu, uint64_t, int);  void alpha_invalidate_code_translation(struct cpu *cpu, uint64_t, int);
154  int alpha_memory_rw(struct cpu *cpu, struct memory *mem, uint64_t vaddr,  int alpha_memory_rw(struct cpu *cpu, struct memory *mem, uint64_t vaddr,
155          unsigned char *data, size_t len, int writeflag, int cache_flags);          unsigned char *data, size_t len, int writeflag, int cache_flags);

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

  ViewVC Help
Powered by ViewVC 1.1.26