1 |
/* |
/* |
2 |
* Cisco C7200 (Predator) Bootflash. |
* Cisco router simulation platform. |
3 |
* Copyright (c) 2006 Christophe Fillot. All rights reserved. |
* Copyright (c) 2006 Christophe Fillot. All rights reserved. |
4 |
* |
* |
5 |
* Intel Flash SIMM emulation (28F008SA/28F016SA) |
* Intel Flash SIMM emulation (28F008SA/28F016SA) |
25 |
#include <time.h> |
#include <time.h> |
26 |
#include <errno.h> |
#include <errno.h> |
27 |
|
|
28 |
#include "mips64.h" |
#include "cpu.h" |
29 |
|
#include "vm.h" |
30 |
#include "dynamips.h" |
#include "dynamips.h" |
31 |
#include "memory.h" |
#include "memory.h" |
32 |
#include "device.h" |
#include "device.h" |
48 |
/* |
/* |
49 |
* dev_bootflash_access() |
* dev_bootflash_access() |
50 |
*/ |
*/ |
51 |
void *dev_bootflash_access(cpu_mips_t *cpu,struct vdevice *dev, |
void *dev_bootflash_access(cpu_gen_t *cpu,struct vdevice *dev, |
52 |
m_uint32_t offset,u_int op_size,u_int op_type, |
m_uint32_t offset,u_int op_size,u_int op_type, |
53 |
m_uint64_t *data) |
m_uint64_t *data) |
54 |
{ |
{ |
58 |
if (op_type == MTS_READ) |
if (op_type == MTS_READ) |
59 |
cpu_log(cpu,dev->name,"read access to offset = 0x%x, pc = 0x%llx " |
cpu_log(cpu,dev->name,"read access to offset = 0x%x, pc = 0x%llx " |
60 |
"(stat=%u,cui_cmd=0x%x)\n", |
"(stat=%u,cui_cmd=0x%x)\n", |
61 |
offset,cpu->pc,d->status,d->cui_cmd); |
offset,cpu_get_pc(cpu),d->status,d->cui_cmd); |
62 |
else |
else |
63 |
cpu_log(cpu,dev->name,"write access to vaddr = 0x%x, pc = 0x%llx, " |
cpu_log(cpu,dev->name,"write access to vaddr = 0x%x, pc = 0x%llx, " |
64 |
"val = 0x%llx\n",offset,cpu->pc,*data); |
"val = 0x%llx\n",offset,cpu_get_pc(cpu),*data); |
65 |
#endif |
#endif |
66 |
|
|
67 |
if (op_type == MTS_READ) { |
if (op_type == MTS_READ) { |
68 |
|
*data = 0; |
69 |
|
|
70 |
/* Read Array mode */ |
/* Read Array mode */ |
71 |
if (d->status == 0) |
if (d->status == 0) |
72 |
return(BPTR(d,offset)); |
return(BPTR(d,offset)); |