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

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

revision 18 by dpavlin, Mon Oct 8 16:19:11 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_ram.c,v 1.19 2005/10/25 15:51:04 debug Exp $   *  $Id: dev_ram.c,v 1.21 2006/01/01 13:17:17 debug Exp $
29   *     *  
30   *  A generic RAM (memory) device. Can also be used to mirror/alias another   *  A generic RAM (memory) device. Can also be used to mirror/alias another
31   *  part of RAM.   *  part of RAM.
# Line 62  struct ram_data { Line 62  struct ram_data {
62  /*  /*
63   *  dev_ram_access():   *  dev_ram_access():
64   */   */
65  int dev_ram_access(struct cpu *cpu, struct memory *mem,  DEVICE_ACCESS(ram)
         uint64_t relative_addr, unsigned char *data, size_t len,  
         int writeflag, void *extra)  
66  {  {
67          struct ram_data *d = extra;          struct ram_data *d = extra;
68    
# Line 113  void dev_ram_init(struct machine *machin Line 111  void dev_ram_init(struct machine *machin
111          int mode, uint64_t otheraddress)          int mode, uint64_t otheraddress)
112  {  {
113          struct ram_data *d;          struct ram_data *d;
114          int flags = MEM_DEFAULT, points_to_ram = 1;          int flags = DM_DEFAULT, points_to_ram = 1;
115    
116          d = malloc(sizeof(struct ram_data));          d = malloc(sizeof(struct ram_data));
117          if (d == NULL) {          if (d == NULL) {
# Line 137  void dev_ram_init(struct machine *machin Line 135  void dev_ram_init(struct machine *machin
135                  /*                  /*
136                   *  Calculate the amount that the mirror memory is offset from                   *  Calculate the amount that the mirror memory is offset from
137                   *  the real (physical) memory. This is used in src/memory_rw.c                   *  the real (physical) memory. This is used in src/memory_rw.c
138                   *  with dyntrans accesses if MEM_EMULATED_RAM is set.                   *  with dyntrans accesses if DM_EMULATED_RAM is set.
139                   */                   */
140                  d->offset = baseaddr - otheraddress;                  d->offset = baseaddr - otheraddress;
141    
# Line 146  void dev_ram_init(struct machine *machin Line 144  void dev_ram_init(struct machine *machin
144                      (baseaddr & (machine->arch_pagesize-1)) == 0 &&                      (baseaddr & (machine->arch_pagesize-1)) == 0 &&
145                      (otheraddress & (machine->arch_pagesize - 1)) == 0 &&                      (otheraddress & (machine->arch_pagesize - 1)) == 0 &&
146                      (length & (machine->arch_pagesize - 1)) == 0)                      (length & (machine->arch_pagesize - 1)) == 0)
147                          flags |= MEM_DYNTRANS_OK | MEM_DYNTRANS_WRITE_OK                          flags |= DM_DYNTRANS_OK | DM_DYNTRANS_WRITE_OK
148                              | MEM_EMULATED_RAM;                              | DM_EMULATED_RAM;
149    
150                  memory_device_register(machine->memory, "ram [mirror]",                  memory_device_register(machine->memory, "ram [mirror]",
151                      baseaddr, length, dev_ram_access, d, flags                      baseaddr, length, dev_ram_access, d, flags
152                      | MEM_READING_HAS_NO_SIDE_EFFECTS, (void *) &d->offset);                      | DM_READS_HAVE_NO_SIDE_EFFECTS, (void *) &d->offset);
153                  break;                  break;
154    
155          case DEV_RAM_RAM:          case DEV_RAM_RAM:
# Line 175  void dev_ram_init(struct machine *machin Line 173  void dev_ram_init(struct machine *machin
173                  /*  Aligned memory? Then it works with dyntrans.  */                  /*  Aligned memory? Then it works with dyntrans.  */
174                  if ((baseaddr & (machine->arch_pagesize - 1)) == 0 &&                  if ((baseaddr & (machine->arch_pagesize - 1)) == 0 &&
175                      (length & (machine->arch_pagesize - 1)) == 0)                      (length & (machine->arch_pagesize - 1)) == 0)
176                          flags |= MEM_DYNTRANS_OK | MEM_DYNTRANS_WRITE_OK;                          flags |= DM_DYNTRANS_OK | DM_DYNTRANS_WRITE_OK;
177    
178                  memory_device_register(machine->memory, "ram", baseaddr,                  memory_device_register(machine->memory, "ram", baseaddr,
179                      d->length, dev_ram_access, d, flags                      d->length, dev_ram_access, d, flags
180                      | MEM_READING_HAS_NO_SIDE_EFFECTS, d->data);                      | DM_READS_HAVE_NO_SIDE_EFFECTS, d->data);
181                  break;                  break;
182    
183          default:          default:

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

  ViewVC Help
Powered by ViewVC 1.1.26