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

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

revision 8 by dpavlin, Mon Oct 8 16:18:19 2007 UTC revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC
# Line 25  Line 25 
25   *  SUCH DAMAGE.   *  SUCH DAMAGE.
26   *     *  
27   *   *
28   *  $Id: dev_mp.c,v 1.27 2005/06/11 20:51:41 debug Exp $   *  $Id: dev_mp.c,v 1.30 2005/11/13 00:14:09 debug Exp $
29   *   *
30   *  This is a fake multiprocessor (MP) device. It can be useful for   *  This is a fake multiprocessor (MP) device. It can be useful for
31   *  theoretical experiments, but probably bares no resemblance to any   *  theoretical experiments, but probably bares no resemblance to any
# Line 70  int dev_mp_access(struct cpu *cpu, struc Line 70  int dev_mp_access(struct cpu *cpu, struc
70          int i, which_cpu;          int i, which_cpu;
71          uint64_t idata = 0, odata = 0;          uint64_t idata = 0, odata = 0;
72    
73          idata = memory_readmax64(cpu, data, len);          if (writeflag == MEM_WRITE)
74                    idata = memory_readmax64(cpu, data, len);
75    
76          /*          /*
77           *  NOTE: It is up to the user of this device to read or write           *  NOTE: It is up to the user of this device to read or write
# Line 221  int dev_mp_access(struct cpu *cpu, struc Line 222  int dev_mp_access(struct cpu *cpu, struc
222                          cpu_interrupt_ack(d->cpus[cpu->cpu_id], MIPS_IPI_INT);                          cpu_interrupt_ack(d->cpus[cpu->cpu_id], MIPS_IPI_INT);
223                  break;                  break;
224    
225            case DEV_MP_NCYCLES:
226                    /*
227                     *  Return approximately the number of cycles executed
228                     *  in this machine.  (This value is not updated for each
229                     *  instruction.)
230                     */
231                    odata = cpu->machine->ncycles;
232                    break;
233    
234          default:          default:
235                  fatal("[ dev_mp: unimplemented relative addr 0x%x ]\n",                  fatal("[ dev_mp: unimplemented relative addr 0x%x ]\n",
236                      relative_addr);                      relative_addr);
# Line 262  int devinit_mp(struct devinit *devinit) Line 272  int devinit_mp(struct devinit *devinit)
272          memset(d->ipi, 0, sizeof(int *) * n);          memset(d->ipi, 0, sizeof(int *) * n);
273    
274          memory_device_register(devinit->machine->memory, devinit->name,          memory_device_register(devinit->machine->memory, devinit->name,
275              devinit->addr, DEV_MP_LENGTH, dev_mp_access, d, MEM_DEFAULT, NULL);              devinit->addr, DEV_MP_LENGTH, dev_mp_access, d, DM_DEFAULT, NULL);
276    
277          return 1;          return 1;
278  }  }

Legend:
Removed from v.8  
changed lines
  Added in v.20

  ViewVC Help
Powered by ViewVC 1.1.26