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

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

revision 4 by dpavlin, Mon Oct 8 16:18:00 2007 UTC revision 22 by dpavlin, Mon Oct 8 16:19:37 2007 UTC
# Line 1  Line 1 
1  /*  /*
2   *  Copyright (C) 2004-2005  Anders Gavare.  All rights reserved.   *  Copyright (C) 2004-2006  Anders Gavare.  All rights reserved.
3   *   *
4   *  Redistribution and use in source and binary forms, with or without   *  Redistribution and use in source and binary forms, with or without
5   *  modification, are permitted provided that the following conditions are met:   *  modification, are permitted provided that the following conditions are met:
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *     *  
27   *   *
28   *  $Id: dev_wdsc.c,v 1.24 2005/02/21 07:18:09 debug Exp $   *  $Id: dev_wdsc.c,v 1.30 2006/01/01 13:17:18 debug Exp $
29   *     *  
30   *  WDSC SCSI (WD33C93) controller.   *  WDSC SCSI (WD33C93) controller.
31   *  (For SGI-IP22. See sys/arch/sgimips/hpc/sbic* in NetBSD for details.)   *  (For SGI-IP22. See sys/arch/sgimips/hpc/sbic* in NetBSD for details.)
# Line 37  Line 37 
37  #include <stdlib.h>  #include <stdlib.h>
38  #include <string.h>  #include <string.h>
39    
 #include "console.h"  
40  #include "cpu.h"  #include "cpu.h"
41  #include "devices.h"  #include "devices.h"
42  #include "diskimage.h"  #include "diskimage.h"
# Line 200  static void dev_wdsc_regwrite(struct cpu Line 199  static void dev_wdsc_regwrite(struct cpu
199                          d->reg[SBIC_csr] = SBIC_CSR_SEL_TIMEO;                          d->reg[SBIC_csr] = SBIC_CSR_SEL_TIMEO;
200                          if (d->controller_nr == 0 && diskimage_exist(                          if (d->controller_nr == 0 && diskimage_exist(
201                              cpu->machine, d->reg[SBIC_selid] &                              cpu->machine, d->reg[SBIC_selid] &
202                              SBIC_SID_IDMASK)) {                              SBIC_SID_IDMASK, DISKIMAGE_SCSI)) {
203                                  if (d->xfer != NULL)                                  if (d->xfer != NULL)
204                                          scsi_transfer_free(d->xfer);                                          scsi_transfer_free(d->xfer);
205                                  d->xfer = scsi_transfer_alloc();                                  d->xfer = scsi_transfer_alloc();
# Line 273  static void dev_wdsc_regwrite(struct cpu Line 272  static void dev_wdsc_regwrite(struct cpu
272    
273                                  res = diskimage_scsicommand(cpu,                                  res = diskimage_scsicommand(cpu,
274                                      d->reg[SBIC_selid] & SBIC_SID_IDMASK,                                      d->reg[SBIC_selid] & SBIC_SID_IDMASK,
275                                      d->xfer);                                      DISKIMAGE_SCSI, d->xfer);
276                                  debug("{ res = %i }", res);                                  debug("{ res = %i }", res);
277    
278                                  d->irq_pending = 1;                                  d->irq_pending = 1;
# Line 309  static void dev_wdsc_regwrite(struct cpu Line 308  static void dev_wdsc_regwrite(struct cpu
308  /*  /*
309   *  dev_wdsc_access():   *  dev_wdsc_access():
310   */   */
311  int dev_wdsc_access(struct cpu *cpu, struct memory *mem,  DEVICE_ACCESS(wdsc)
         uint64_t relative_addr, unsigned char *data, size_t len,  
         int writeflag, void *extra)  
312  {  {
313          int i;          size_t i;
314          struct wdsc_data *d = extra;          struct wdsc_data *d = extra;
315          uint64_t idata = 0, odata = 0;          uint64_t idata = 0, odata = 0;
316    
317          idata = memory_readmax64(cpu, data, len);          if (writeflag == MEM_WRITE)
318                    idata = memory_readmax64(cpu, data, len);
319    
320          /*          /*
321           *  All registers on the WDSC seem to be accessed by writing the           *  All registers on the WDSC seem to be accessed by writing the
# Line 410  void dev_wdsc_init(struct machine *machi Line 408  void dev_wdsc_init(struct machine *machi
408          d->controller_nr = controller_nr;          d->controller_nr = controller_nr;
409    
410          memory_device_register(mem, "wdsc", baseaddr, DEV_WDSC_LENGTH,          memory_device_register(mem, "wdsc", baseaddr, DEV_WDSC_LENGTH,
411              dev_wdsc_access, d, MEM_DEFAULT, NULL);              dev_wdsc_access, d, DM_DEFAULT, NULL);
412    
413          machine_add_tickfunction(machine, dev_wdsc_tick, d, 14);          machine_add_tickfunction(machine, dev_wdsc_tick, d, 14);
414  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.26