/[dynamips]/trunk/device.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/device.h

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

upstream/dynamips-0.2.6-RC5/device.h revision 6 by dpavlin, Sat Oct 6 16:09:07 2007 UTC upstream/dynamips-0.2.8-RC1/device.h revision 11 by dpavlin, Sat Oct 6 16:33:40 2007 UTC
# Line 1  Line 1 
1  /*  /*
2   * Cisco 7200 (Predator) simulation platform.   * Cisco router simulation platform.
3   * Copyright (c) 2005,2006 Christophe Fillot (cf@utc.fr)   * Copyright (c) 2005,2006 Christophe Fillot (cf@utc.fr)
4   */   */
5    
# Line 8  Line 8 
8    
9  #include <sys/types.h>  #include <sys/types.h>
10  #include "utils.h"  #include "utils.h"
 #include "mips64.h"  
11  #include "cpu.h"  #include "cpu.h"
12  #include "net_io.h"  #include "net_io.h"
13  #include "vm.h"  #include "vm.h"
14    
15  /* Device Flags */  /* Device Flags */
16  #define VDEVICE_FLAG_NO_MTS_MMAP  0x01 /* Prevent MMAPed access by MTS */  #define VDEVICE_FLAG_NO_MTS_MMAP  0x01  /* Prevent MMAPed access by MTS */
17  #define VDEVICE_FLAG_CACHING      0x02 /* Device does support caching */  #define VDEVICE_FLAG_CACHING      0x02  /* Device does support caching */
18  #define VDEVICE_FLAG_REMAP        0x04 /* Physical address remapping */  #define VDEVICE_FLAG_REMAP        0x04  /* Physical address remapping */
19  #define VDEVICE_FLAG_SYNC         0x08 /* Forced sync */  #define VDEVICE_FLAG_SYNC         0x08  /* Forced sync */
20    #define VDEVICE_FLAG_SPARSE       0x10  /* Sparse device */
21    #define VDEVICE_FLAG_GHOST        0x20  /* Ghost device */
22    
23  typedef void *(*dev_handler_t)(cpu_mips_t *cpu,struct vdevice *dev,  #define VDEVICE_PTE_DIRTY  0x01
24    
25    typedef void *(*dev_handler_t)(cpu_gen_t *cpu,struct vdevice *dev,
26                                 m_uint32_t offset,u_int op_size,u_int op_type,                                 m_uint32_t offset,u_int op_size,u_int op_type,
27                                 m_uint64_t *data);                                 m_uint64_t *data);
28    
# Line 34  struct vdevice { Line 37  struct vdevice {
37     int flags;     int flags;
38     int fd;     int fd;
39     dev_handler_t handler;     dev_handler_t handler;
40       m_iptr_t *sparse_map;
41     struct vdevice *next,**pprev;     struct vdevice *next,**pprev;
42  };  };
43    
# Line 42  struct vdevice { Line 46  struct vdevice {
46    
47  /* device access function */  /* device access function */
48  static forced_inline  static forced_inline
49  void *dev_access_fast(cpu_mips_t *cpu,u_int dev_id,m_uint32_t offset,  void *dev_access_fast(cpu_gen_t *cpu,u_int dev_id,m_uint32_t offset,
50                        u_int op_size,u_int op_type,m_uint64_t *data)                        u_int op_size,u_int op_type,m_uint64_t *data)
51  {  {
52     struct vdevice *dev = cpu->vm->dev_array[dev_id];     struct vdevice *dev = cpu->vm->dev_array[dev_id];
# Line 53  void *dev_access_fast(cpu_mips_t *cpu,u_ Line 57  void *dev_access_fast(cpu_mips_t *cpu,u_
57        return NULL;        return NULL;
58     }     }
59    
60    #if DEBUG_DEV_PERF_CNT
61       cpu->dev_access_counter++;
62    #endif
63    
64     return(dev->handler(cpu,dev,offset,op_size,op_type,data));     return(dev->handler(cpu,dev,offset,op_size,op_type,data));
65  }  }
66    
# Line 85  void dev_show(struct vdevice *dev); Line 93  void dev_show(struct vdevice *dev);
93  void dev_show_list(vm_instance_t *vm);  void dev_show_list(vm_instance_t *vm);
94    
95  /* device access function */  /* device access function */
96  void *dev_access(cpu_mips_t *cpu,u_int dev_id,m_uint32_t offset,  void *dev_access(cpu_gen_t *cpu,u_int dev_id,m_uint32_t offset,
97                   u_int op_size,u_int op_type,m_uint64_t *data);                   u_int op_size,u_int op_type,m_uint64_t *data);
98    
99  /* Synchronize memory for a memory-mapped (mmap) device */  /* Synchronize memory for a memory-mapped (mmap) device */
# Line 96  struct vdevice *dev_remap(char *name,str Line 104  struct vdevice *dev_remap(char *name,str
104                            m_uint64_t paddr,m_uint32_t len);                            m_uint64_t paddr,m_uint32_t len);
105    
106  /* Create a RAM device */  /* Create a RAM device */
107  struct vdevice *dev_create_ram(vm_instance_t *vm,char *name,char *filename,  struct vdevice *dev_create_ram(vm_instance_t *vm,char *name,
108                                   int sparse,char *filename,
109                                 m_uint64_t paddr,m_uint32_t len);                                 m_uint64_t paddr,m_uint32_t len);
110    
111  /* Create a ghosted RAM device */  /* Create a ghosted RAM device */
112  struct vdevice *  struct vdevice *
113  dev_create_ghost_ram(vm_instance_t *vm,char *name,char *filename,  dev_create_ghost_ram(vm_instance_t *vm,char *name,int sparse,char *filename,
114                       m_uint64_t paddr,m_uint32_t len);                       m_uint64_t paddr,m_uint32_t len);
115    
116  /* Create a memory alias */  /* Create a memory alias */
117  struct vdevice *dev_create_ram_alias(vm_instance_t *vm,char *name,char *orig,  struct vdevice *dev_create_ram_alias(vm_instance_t *vm,char *name,char *orig,
118                                       m_uint64_t paddr,m_uint32_t len);                                       m_uint64_t paddr,m_uint32_t len);
119    
120    /* Initialize a sparse device */
121    int dev_sparse_init(struct vdevice *dev);
122    
123    /* Shutdown sparse device structures */
124    int dev_sparse_shutdown(struct vdevice *dev);
125    
126    /* Get an host address for a sparse device */
127    m_iptr_t dev_sparse_get_host_addr(vm_instance_t *vm,struct vdevice *dev,
128                                      m_uint64_t paddr,u_int op_type,int *cow);
129    
130  /* Create a dummy console */  /* Create a dummy console */
131  int dev_create_dummy_console(vm_instance_t *vm);  int dev_create_dummy_console(vm_instance_t *vm);
132    
# Line 115  int dev_create_dummy_console(vm_instance Line 134  int dev_create_dummy_console(vm_instance
134  int dev_zero_init(vm_instance_t *vm,char *name,  int dev_zero_init(vm_instance_t *vm,char *name,
135                    m_uint64_t paddr,m_uint32_t len);                    m_uint64_t paddr,m_uint32_t len);
136    
137    /* Initialized a byte-swap device */
138    int dev_bswap_init(vm_instance_t *vm,char *name,
139                       m_uint64_t paddr,m_uint32_t len,m_uint64_t remap_addr);
140    
141  /* Initialize a RAM zone */  /* Initialize a RAM zone */
142  int dev_ram_init(vm_instance_t *vm,char *name,int use_mmap,int delete_file,  int dev_ram_init(vm_instance_t *vm,char *name,int use_mmap,int delete_file,
143                   char *alternate_name,m_uint64_t paddr,m_uint32_t len);                   char *alternate_name,int sparse,
144                     m_uint64_t paddr,m_uint32_t len);
145    
146  /* Initialize a ghosted RAM zone */  /* Initialize a ghosted RAM zone */
147  int dev_ram_ghost_init(vm_instance_t *vm,char *name,char *filename,  int dev_ram_ghost_init(vm_instance_t *vm,char *name,int sparse,char *filename,
148                         m_uint64_t paddr,m_uint32_t len);                         m_uint64_t paddr,m_uint32_t len);
149    
 /* Initialize a ROM zone */  
 int dev_rom_init(vm_instance_t *vm,char *name,m_uint64_t paddr,m_uint32_t len);  
   
150  /* Create the NVRAM device */  /* Create the NVRAM device */
151  int dev_nvram_init(vm_instance_t *vm,char *name,  int dev_nvram_init(vm_instance_t *vm,char *name,
152                     m_uint64_t paddr,m_uint32_t len,                     m_uint64_t paddr,m_uint32_t len,
153                     u_int *conf_reg);                     u_int *conf_reg);
154    
155  /* Create a 8 Mb bootflash */  /* Create a 8 Mb bootflash */
156  int dev_bootflash_init(vm_instance_t *vm,char *name,  int dev_bootflash_init(vm_instance_t *vm,char *name,char *model,
157                         m_uint64_t paddr,m_uint32_t len);                         m_uint64_t paddr);
158    
159  /* Create a Flash device */  /* Create a Flash device */
160  vm_obj_t *dev_flash_init(vm_instance_t *vm,char *name,  vm_obj_t *dev_flash_init(vm_instance_t *vm,char *name,
# Line 159  int dev_dec21150_init(struct pci_bus *pc Line 180  int dev_dec21150_init(struct pci_bus *pc
180  int dev_dec21152_init(struct pci_bus *pci_bus,int pci_device,  int dev_dec21152_init(struct pci_bus *pci_bus,int pci_device,
181                        struct pci_bus *sec_bus);                        struct pci_bus *sec_bus);
182    
183    /* dev_dec21154_init() */
184    int dev_dec21154_init(struct pci_bus *pci_bus,int pci_device,
185                          struct pci_bus *sec_bus);
186    
187  /* dev_pericom_init() */  /* dev_pericom_init() */
188  int dev_pericom_init(struct pci_bus *pci_bus,int pci_device,  int dev_pericom_init(struct pci_bus *pci_bus,int pci_device,
189                        struct pci_bus *sec_bus);                        struct pci_bus *sec_bus);
# Line 171  int dev_ti2050b_init(struct pci_bus *pci Line 196  int dev_ti2050b_init(struct pci_bus *pci
196  int dev_ap1011_init(struct pci_bus *pci_bus,int pci_device,  int dev_ap1011_init(struct pci_bus *pci_bus,int pci_device,
197                      struct pci_bus *sec_bus);                      struct pci_bus *sec_bus);
198    
199    /* dev_plx6520cb_init() */
200    int dev_plx6520cb_init(struct pci_bus *pci_bus,int pci_device,
201                           struct pci_bus *sec_bus);
202    
203  /* dev_clpd6729_init() */  /* dev_clpd6729_init() */
204  int dev_clpd6729_init(vm_instance_t *vm,  int dev_clpd6729_init(vm_instance_t *vm,
205                        struct pci_bus *pci_bus,int pci_device,                        struct pci_bus *pci_bus,int pci_device,
# Line 191  vm_obj_t *dev_pcmcia_disk_init(vm_instan Line 220  vm_obj_t *dev_pcmcia_disk_init(vm_instan
220                                 m_uint64_t paddr,m_uint32_t len,                                 m_uint64_t paddr,m_uint32_t len,
221                                 u_int disk_size,int mode);                                 u_int disk_size,int mode);
222    
223    /* Get the device associated with a PCMCIA disk object */
224    struct vdevice *dev_pcmcia_disk_get_device(vm_obj_t *obj);
225    
226  /* Create SB-1 system control devices */  /* Create SB-1 system control devices */
227  int dev_sb1_init(vm_instance_t *vm);  int dev_sb1_init(vm_instance_t *vm);
228    

Legend:
Removed from v.6  
changed lines
  Added in v.11

  ViewVC Help
Powered by ViewVC 1.1.26