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

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

revision 32 by dpavlin, Mon Oct 8 16:20:58 2007 UTC revision 34 by dpavlin, Mon Oct 8 16:21:17 2007 UTC
# Line 1  Line 1 
1  /*  /*
2   *  Copyright (C) 2006  Anders Gavare.  All rights reserved.   *  Copyright (C) 2006-2007  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_dreamcast_asic.c,v 1.4 2006/10/28 01:37:54 debug Exp $   *  $Id: dev_dreamcast_asic.c,v 1.7 2007/02/03 20:14:23 debug Exp $
29   *     *  
30   *  Dreamcast ASIC.   *  Dreamcast ASIC.
31   *   *
# Line 40  Line 40 
40    
41  #include "cpu.h"  #include "cpu.h"
42  #include "device.h"  #include "device.h"
 #include "devices.h"  
43  #include "machine.h"  #include "machine.h"
44  #include "memory.h"  #include "memory.h"
45  #include "misc.h"  #include "misc.h"
# Line 62  struct dreamcast_asic_data { Line 61  struct dreamcast_asic_data {
61          int             asserted_13;          int             asserted_13;
62          int             asserted_11;          int             asserted_11;
63          int             asserted_9;          int             asserted_9;
64    
65            struct interrupt irq_13;
66            struct interrupt irq_11;
67            struct interrupt irq_9;
68  };  };
69    
70    
# Line 86  DEVICE_TICK(dreamcast_asic) Line 89  DEVICE_TICK(dreamcast_asic)
89    
90          if (d->asserted_13 != old_asserted_13) {          if (d->asserted_13 != old_asserted_13) {
91                  if (d->asserted_13)                  if (d->asserted_13)
92                          cpu_interrupt(cpu, SH_INTEVT_IRL13);                          INTERRUPT_ASSERT(d->irq_13);
93                  else                  else
94                          cpu_interrupt_ack(cpu, SH_INTEVT_IRL13);                          INTERRUPT_DEASSERT(d->irq_13);
95          }          }
96          if (d->asserted_11 != old_asserted_11) {          if (d->asserted_11 != old_asserted_11) {
97                  if (d->asserted_11)                  if (d->asserted_11)
98                          cpu_interrupt(cpu, SH_INTEVT_IRL11);                          INTERRUPT_ASSERT(d->irq_11);
99                  else                  else
100                          cpu_interrupt_ack(cpu, SH_INTEVT_IRL11);                          INTERRUPT_DEASSERT(d->irq_11);
101          }          }
102          if (d->asserted_9 != old_asserted_9) {          if (d->asserted_9 != old_asserted_9) {
103                  if (d->asserted_9)                  if (d->asserted_9)
104                          cpu_interrupt(cpu, SH_INTEVT_IRL9);                          INTERRUPT_ASSERT(d->irq_9);
105                  else                  else
106                          cpu_interrupt_ack(cpu, SH_INTEVT_IRL9);                          INTERRUPT_DEASSERT(d->irq_9);
107          }          }
108  }  }
109    
# Line 190  DEVICE_ACCESS(dreamcast_asic) Line 193  DEVICE_ACCESS(dreamcast_asic)
193    
194  DEVINIT(dreamcast_asic)  DEVINIT(dreamcast_asic)
195  {  {
196            char tmpstr[300];
197          struct machine *machine = devinit->machine;          struct machine *machine = devinit->machine;
198          struct dreamcast_asic_data *d =          struct dreamcast_asic_data *d =
199              malloc(sizeof(struct dreamcast_asic_data));              malloc(sizeof(struct dreamcast_asic_data));
# Line 197  DEVINIT(dreamcast_asic) Line 201  DEVINIT(dreamcast_asic)
201                  fprintf(stderr, "out of memory\n");                  fprintf(stderr, "out of memory\n");
202                  exit(1);                  exit(1);
203          }          }
204    
205          memset(d, 0, sizeof(struct dreamcast_asic_data));          memset(d, 0, sizeof(struct dreamcast_asic_data));
206    
207            /*  Connect to SH4 interrupt levels 13, 11, and 9:  */
208            snprintf(tmpstr, sizeof(tmpstr), "%s.irq[0x%x]",
209                devinit->interrupt_path, SH_INTEVT_IRL13);
210            INTERRUPT_CONNECT(tmpstr, d->irq_13);
211            snprintf(tmpstr, sizeof(tmpstr), "%s.irq[0x%x]",
212                devinit->interrupt_path, SH_INTEVT_IRL11);
213            INTERRUPT_CONNECT(tmpstr, d->irq_11);
214            snprintf(tmpstr, sizeof(tmpstr), "%s.irq[0x%x]",
215                devinit->interrupt_path, SH_INTEVT_IRL9);
216            INTERRUPT_CONNECT(tmpstr, d->irq_9);
217    
218          memory_device_register(machine->memory, devinit->name, SYSASIC_BASE,          memory_device_register(machine->memory, devinit->name, SYSASIC_BASE,
219              SYSASIC_SIZE, dev_dreamcast_asic_access, d, DM_DEFAULT, NULL);              SYSASIC_SIZE, dev_dreamcast_asic_access, d, DM_DEFAULT, NULL);
220    

Legend:
Removed from v.32  
changed lines
  Added in v.34

  ViewVC Help
Powered by ViewVC 1.1.26