/[gxemul]/trunk/src/devices/dev_turbochannel.c
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/devices/dev_turbochannel.c

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

revision 9 by dpavlin, Mon Oct 8 16:18:00 2007 UTC revision 10 by dpavlin, Mon Oct 8 16:18:27 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *     *  
27   *   *
28   *  $Id: dev_turbochannel.c,v 1.40 2005/02/18 06:19:19 debug Exp $   *  $Id: dev_turbochannel.c,v 1.42 2005/06/26 11:43:48 debug Exp $
29   *     *  
30   *  Generic framework for TURBOchannel devices, used in DECstation machines.   *  Generic framework for TURBOchannel devices, used in DECstation machines.
31   */   */
# Line 41  Line 41 
41  #include "sfbreg.h"  #include "sfbreg.h"
42    
43    
44    #define DEVICE_NAME_BUFLEN              9
45    #define CARD_NAME_BUFLEN                9
46    #define CARD_FIRMWARE_BUFLEN            5
47    
48  struct turbochannel_data {  struct turbochannel_data {
49          int             slot_nr;          int             slot_nr;
50          uint64_t        baseaddr;          uint64_t        baseaddr;
# Line 49  struct turbochannel_data { Line 53  struct turbochannel_data {
53    
54          int             rom_skip;          int             rom_skip;
55    
56          char            device_name[9];         /*  NUL-terminated  */          char            device_name[DEVICE_NAME_BUFLEN];  /*  NUL-terminated  */
57    
58          /*  These should be terminated with spaces  */          /*  These should be terminated with spaces  */
59          char            card_firmware_version[8];          char            card_firmware_version[CARD_NAME_BUFLEN];
60          char            card_vendor_name[8];          char            card_vendor_name[CARD_NAME_BUFLEN];
61          char            card_module_name[8];          char            card_module_name[CARD_NAME_BUFLEN];
62          char            card_firmware_type[4];          char            card_firmware_type[CARD_FIRMWARE_BUFLEN];
63  };  };
64    
65    
# Line 179  void dev_turbochannel_init(struct machin Line 183  void dev_turbochannel_init(struct machin
183  {  {
184          struct vfb_data *fb;          struct vfb_data *fb;
185          struct turbochannel_data *d;          struct turbochannel_data *d;
186          int rom_offset = 0x3c0000;          int rom_offset=0x3c0000, rom_length=DEV_TURBOCHANNEL_LEN, rom_skip=0;
         int rom_length = DEV_TURBOCHANNEL_LEN;  
         int rom_skip = 0;  
187          char *name2;          char *name2;
188            size_t nlen;
189    
190          if (device_name == NULL)          if (device_name == NULL)
191                  return;                  return;
# Line 203  void dev_turbochannel_init(struct machin Line 206  void dev_turbochannel_init(struct machin
206          d->endaddr  = endaddr;          d->endaddr  = endaddr;
207          d->irq      = irq;          d->irq      = irq;
208    
209          strcpy(d->device_name, device_name);          strlcpy(d->device_name, device_name, DEVICE_NAME_BUFLEN);
210    
211          strncpy(d->card_firmware_version, "V5.3a   ", 8);          strncpy(d->card_firmware_version, "V5.3a   ", CARD_NAME_BUFLEN);
212          strncpy(d->card_vendor_name,      "DEC     ", 8);          strncpy(d->card_vendor_name,      "DEC     ", CARD_NAME_BUFLEN);
213          strncpy(d->card_firmware_type,    "TCF0", 4);          strncpy(d->card_firmware_type,    "TCF0", CARD_FIRMWARE_BUFLEN);
214    
215          memset(d->card_module_name, ' ', 8);          memset(d->card_module_name, ' ', 8);
216          strncpy(d->card_module_name, device_name, strlen(device_name));          memcpy(d->card_module_name, device_name, strlen(device_name));
217    
218          /*          /*
219           *  According to NetBSD/pmax:           *  According to NetBSD/pmax:
# Line 320  void dev_turbochannel_init(struct machin Line 323  void dev_turbochannel_init(struct machin
323    
324          d->rom_skip = rom_skip;          d->rom_skip = rom_skip;
325    
326          name2 = malloc(strlen(device_name) + 30);          nlen = strlen(device_name) + 30;
327            name2 = malloc(nlen);
328          if (name2 == NULL) {          if (name2 == NULL) {
329                  fprintf(stderr, "out of memory in dev_turbochannel_init()\n");                  fprintf(stderr, "out of memory in dev_turbochannel_init()\n");
330                  exit(1);                  exit(1);
331          }          }
332          if (*device_name)          if (*device_name)
333                  sprintf(name2, "turbochannel [%s]", device_name);                  snprintf(name2, nlen, "turbochannel [%s]", device_name);
334          else          else
335                  sprintf(name2, "turbochannel");                  snprintf(name2, nlen, "turbochannel");
336    
337          memory_device_register(mem, name2, baseaddr + rom_offset + rom_skip,          memory_device_register(mem, name2, baseaddr + rom_offset + rom_skip,
338              rom_length-rom_skip, dev_turbochannel_access, d, MEM_DEFAULT, NULL);              rom_length-rom_skip, dev_turbochannel_access, d, MEM_DEFAULT, NULL);

Legend:
Removed from v.9  
changed lines
  Added in v.10

  ViewVC Help
Powered by ViewVC 1.1.26