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

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

revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC revision 30 by dpavlin, Mon Oct 8 16:20:40 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_vr41xx.c,v 1.33 2005/11/13 00:14:10 debug Exp $   *  $Id: dev_vr41xx.c,v 1.38 2006/07/23 19:36:04 debug Exp $
29   *     *  
30   *  VR41xx (actually, VR4122 and VR4131) misc functions.   *  VR41xx (actually, VR4122 and VR4131) misc functions.
31   *   *
# Line 289  static void vr41xx_keytick(struct cpu *c Line 289  static void vr41xx_keytick(struct cpu *c
289  }  }
290    
291    
292  /*  DEVICE_TICK(vr41xx)
  *  dev_vr41xx_tick():  
  */  
 void dev_vr41xx_tick(struct cpu *cpu, void *extra)  
293  {  {
294          struct vr41xx_data *d = extra;          struct vr41xx_data *d = extra;
295    
# Line 376  static uint64_t vr41xx_kiu(struct cpu *c Line 373  static uint64_t vr41xx_kiu(struct cpu *c
373          default:          default:
374                  if (writeflag == MEM_WRITE)                  if (writeflag == MEM_WRITE)
375                          debug("[ vr41xx KIU: unimplemented write to offset "                          debug("[ vr41xx KIU: unimplemented write to offset "
376                              "0x%x, data=0x%016llx ]\n", ofs, (long long)idata);                              "0x%x, data=0x%016"PRIx64" ]\n", ofs,
377                                (uint64_t) idata);
378                  else                  else
379                          debug("[ vr41xx KIU: unimplemented read from offset "                          debug("[ vr41xx KIU: unimplemented read from offset "
380                              "0x%x ]\n", ofs);                              "0x%x ]\n", ofs);
# Line 386  static uint64_t vr41xx_kiu(struct cpu *c Line 384  static uint64_t vr41xx_kiu(struct cpu *c
384  }  }
385    
386    
387  /*  DEVICE_ACCESS(vr41xx)
  *  dev_vr41xx_access():  
  */  
 int dev_vr41xx_access(struct cpu *cpu, struct memory *mem,  
         uint64_t relative_addr, unsigned char *data, size_t len,  
         int writeflag, void *extra)  
388  {  {
389          struct vr41xx_data *d = (struct vr41xx_data *) extra;          struct vr41xx_data *d = (struct vr41xx_data *) extra;
390          uint64_t idata = 0, odata = 0;          uint64_t idata = 0, odata = 0;
# Line 519  int dev_vr41xx_access(struct cpu *cpu, s Line 512  int dev_vr41xx_access(struct cpu *cpu, s
512          default:          default:
513                  if (writeflag == MEM_WRITE)                  if (writeflag == MEM_WRITE)
514                          debug("[ vr41xx: unimplemented write to address "                          debug("[ vr41xx: unimplemented write to address "
515                              "0x%llx, data=0x%016llx ]\n",                              "0x%"PRIx64", data=0x%016"PRIx64" ]\n",
516                              (long long)relative_addr, (long long)idata);                              (uint64_t) relative_addr, (uint64_t) idata);
517                  else                  else
518                          debug("[ vr41xx: unimplemented read from address "                          debug("[ vr41xx: unimplemented read from address "
519                              "0x%llx ]\n", (long long)relative_addr);                              "0x%"PRIx64" ]\n", (uint64_t) relative_addr);
520          }          }
521    
522  ret:  ret:
# Line 559  struct vr41xx_data *dev_vr41xx_init(stru Line 552  struct vr41xx_data *dev_vr41xx_init(stru
552    
553          /*  TODO: VRC4173 has the KIU at offset 0x100?  */          /*  TODO: VRC4173 has the KIU at offset 0x100?  */
554          d->kiu_offset = 0x180;          d->kiu_offset = 0x180;
555          d->kiu_console_handle = console_start_slave_inputonly(machine, "kiu");          d->kiu_console_handle = console_start_slave_inputonly(
556                machine, "kiu", 1);
557          d->kiu_irq_nr = VRIP_INTR_KIU;          d->kiu_irq_nr = VRIP_INTR_KIU;
558    
559          switch (cpumodel) {          switch (cpumodel) {
# Line 591  struct vr41xx_data *dev_vr41xx_init(stru Line 585  struct vr41xx_data *dev_vr41xx_init(stru
585           *  which chips.           *  which chips.
586           */           */
587          if (cpumodel == 4131) {          if (cpumodel == 4131) {
588                  snprintf(tmps, sizeof(tmps), "ns16550 irq=%i addr=0x%llx "                  snprintf(tmps, sizeof(tmps), "ns16550 irq=%i addr=0x%"PRIx64" "
589                      "name2=siu", 8+VRIP_INTR_SIU, (long long)(baseaddr+0x800));                      "name2=siu", 8+VRIP_INTR_SIU, (uint64_t) (baseaddr+0x800));
590                  device_add(machine, tmps);                  device_add(machine, tmps);
591          } else {          } else {
592                  /*  This is used by Linux and NetBSD:  */                  /*  This is used by Linux and NetBSD:  */
# Line 605  struct vr41xx_data *dev_vr41xx_init(stru Line 599  struct vr41xx_data *dev_vr41xx_init(stru
599          device_add(machine, "pcic addr=0x140003e0");          device_add(machine, "pcic addr=0x140003e0");
600    
601          machine_add_tickfunction(machine, dev_vr41xx_tick, d,          machine_add_tickfunction(machine, dev_vr41xx_tick, d,
602              DEV_VR41XX_TICKSHIFT);              DEV_VR41XX_TICKSHIFT, 0.0);
603    
604          /*  Some machines (?) use ISA space at 0x15000000 instead of          /*  Some machines (?) use ISA space at 0x15000000 instead of
605              0x14000000, eg IBM WorkPad Z50.  */              0x14000000, eg IBM WorkPad Z50.  */

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

  ViewVC Help
Powered by ViewVC 1.1.26