/[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.7-RC1/device.h revision 7 by dpavlin, Sat Oct 6 16:23:47 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 85  void dev_show(struct vdevice *dev); Line 89  void dev_show(struct vdevice *dev);
89  void dev_show_list(vm_instance_t *vm);  void dev_show_list(vm_instance_t *vm);
90    
91  /* device access function */  /* device access function */
92  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,
93                   u_int op_size,u_int op_type,m_uint64_t *data);                   u_int op_size,u_int op_type,m_uint64_t *data);
94    
95  /* 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 100  struct vdevice *dev_remap(char *name,str
100                            m_uint64_t paddr,m_uint32_t len);                            m_uint64_t paddr,m_uint32_t len);
101    
102  /* Create a RAM device */  /* Create a RAM device */
103  struct vdevice *dev_create_ram(vm_instance_t *vm,char *name,char *filename,  struct vdevice *dev_create_ram(vm_instance_t *vm,char *name,
104                                   int sparse,char *filename,
105                                 m_uint64_t paddr,m_uint32_t len);                                 m_uint64_t paddr,m_uint32_t len);
106    
107  /* Create a ghosted RAM device */  /* Create a ghosted RAM device */
108  struct vdevice *  struct vdevice *
109  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,
110                       m_uint64_t paddr,m_uint32_t len);                       m_uint64_t paddr,m_uint32_t len);
111    
112  /* Create a memory alias */  /* Create a memory alias */
113  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,
114                                       m_uint64_t paddr,m_uint32_t len);                                       m_uint64_t paddr,m_uint32_t len);
115    
116    /* Initialize a sparse device */
117    int dev_sparse_init(struct vdevice *dev);
118    
119    /* Shutdown sparse device structures */
120    int dev_sparse_shutdown(struct vdevice *dev);
121    
122    /* Get an host address for a sparse device */
123    m_iptr_t dev_sparse_get_host_addr(vm_instance_t *vm,struct vdevice *dev,
124                                      m_uint64_t paddr,u_int op_type,int *cow);
125    
126  /* Create a dummy console */  /* Create a dummy console */
127  int dev_create_dummy_console(vm_instance_t *vm);  int dev_create_dummy_console(vm_instance_t *vm);
128    
# Line 115  int dev_create_dummy_console(vm_instance Line 130  int dev_create_dummy_console(vm_instance
130  int dev_zero_init(vm_instance_t *vm,char *name,  int dev_zero_init(vm_instance_t *vm,char *name,
131                    m_uint64_t paddr,m_uint32_t len);                    m_uint64_t paddr,m_uint32_t len);
132    
133    /* Initialized a byte-swap device */
134    int dev_bswap_init(vm_instance_t *vm,char *name,
135                       m_uint64_t paddr,m_uint32_t len,m_uint64_t remap_addr);
136    
137  /* Initialize a RAM zone */  /* Initialize a RAM zone */
138  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,
139                   char *alternate_name,m_uint64_t paddr,m_uint32_t len);                   char *alternate_name,int sparse,
140                     m_uint64_t paddr,m_uint32_t len);
141    
142  /* Initialize a ghosted RAM zone */  /* Initialize a ghosted RAM zone */
143  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,
144                         m_uint64_t paddr,m_uint32_t len);                         m_uint64_t paddr,m_uint32_t len);
145    
 /* Initialize a ROM zone */  
 int dev_rom_init(vm_instance_t *vm,char *name,m_uint64_t paddr,m_uint32_t len);  
   
146  /* Create the NVRAM device */  /* Create the NVRAM device */
147  int dev_nvram_init(vm_instance_t *vm,char *name,  int dev_nvram_init(vm_instance_t *vm,char *name,
148                     m_uint64_t paddr,m_uint32_t len,                     m_uint64_t paddr,m_uint32_t len,
# Line 159  int dev_dec21150_init(struct pci_bus *pc Line 176  int dev_dec21150_init(struct pci_bus *pc
176  int dev_dec21152_init(struct pci_bus *pci_bus,int pci_device,  int dev_dec21152_init(struct pci_bus *pci_bus,int pci_device,
177                        struct pci_bus *sec_bus);                        struct pci_bus *sec_bus);
178    
179    /* dev_dec21154_init() */
180    int dev_dec21154_init(struct pci_bus *pci_bus,int pci_device,
181                          struct pci_bus *sec_bus);
182    
183  /* dev_pericom_init() */  /* dev_pericom_init() */
184  int dev_pericom_init(struct pci_bus *pci_bus,int pci_device,  int dev_pericom_init(struct pci_bus *pci_bus,int pci_device,
185                        struct pci_bus *sec_bus);                        struct pci_bus *sec_bus);
# Line 171  int dev_ti2050b_init(struct pci_bus *pci Line 192  int dev_ti2050b_init(struct pci_bus *pci
192  int dev_ap1011_init(struct pci_bus *pci_bus,int pci_device,  int dev_ap1011_init(struct pci_bus *pci_bus,int pci_device,
193                      struct pci_bus *sec_bus);                      struct pci_bus *sec_bus);
194    
195    /* dev_plx6520cb_init() */
196    int dev_plx6520cb_init(struct pci_bus *pci_bus,int pci_device,
197                           struct pci_bus *sec_bus);
198    
199  /* dev_clpd6729_init() */  /* dev_clpd6729_init() */
200  int dev_clpd6729_init(vm_instance_t *vm,  int dev_clpd6729_init(vm_instance_t *vm,
201                        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 216  vm_obj_t *dev_pcmcia_disk_init(vm_instan
216                                 m_uint64_t paddr,m_uint32_t len,                                 m_uint64_t paddr,m_uint32_t len,
217                                 u_int disk_size,int mode);                                 u_int disk_size,int mode);
218    
219    /* Get the device associated with a PCMCIA disk object */
220    struct vdevice *dev_pcmcia_disk_get_device(vm_obj_t *obj);
221    
222  /* Create SB-1 system control devices */  /* Create SB-1 system control devices */
223  int dev_sb1_init(vm_instance_t *vm);  int dev_sb1_init(vm_instance_t *vm);
224    

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

  ViewVC Help
Powered by ViewVC 1.1.26