dev_ram.cc Source File
Back to the index.
Go to the documentation of this file.
36 #include <sys/types.h>
68 fatal(
"[ %s: write %i byte%s from 0x%x:",
69 d->
name, (
int)len, len==1?
"":
"s", (
int)relative_addr);
70 for (
size_t i=0; i<len; i++)
97 fatal(
"[ %s: read %i byte%s from 0x%x:",
98 d->
name, (
int)len, len==1?
"":
"s", (
int)relative_addr);
99 for (
size_t i=0; i<len; i++)
109 memcpy(&d->
data[relative_addr],
data, len);
118 memcpy(
data, &d->
data[relative_addr], len);
121 fatal(
"[ %s: read %i byte%s from 0x%x:",
122 d->
name, (
int)len, len==1?
"":
"s", (
int)relative_addr);
123 for (
size_t i=0; i<len; i++)
131 fatal(
"dev_ram_access(): unknown mode %i\n", d->
mode);
153 memset(d, 0,
sizeof(
struct ram_data));
180 d->
name = (string(d->
name) +
" [mirror]").c_str();
203 d->
data = (
unsigned char *) mmap(NULL,
length,
204 PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
205 if (d->
data == NULL) {
222 fatal(
"dev_ram_access(): %s: unknown mode %i\n", d->
name, d->
mode);
void memory_device_register(struct memory *mem, const char *, uint64_t baseaddr, uint64_t len, int(*f)(struct cpu *, struct memory *, uint64_t, unsigned char *, size_t, int, void *), void *extra, int flags, unsigned char *dyntrans_data)
void(* invalidate_code_translation)(struct cpu *, uint64_t paddr, int flags)
#define DM_DYNTRANS_WRITE_OK
void fatal(const char *fmt,...)
int dev_ram_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *)
#define DEV_RAM_MIGHT_POINT_TO_DEVICES
#define DM_READS_HAVE_NO_SIDE_EFFECTS
int(* memory_rw)(struct cpu *cpu, struct memory *mem, uint64_t vaddr, unsigned char *data, size_t len, int writeflag, int cache_flags)
void dev_ram_init(struct machine *machine, uint64_t baseaddr, uint64_t length, int mode, uint64_t otheraddress, const char *name)
#define DEV_RAM_TRACE_ALL_ACCESSES
#define CHECK_ALLOCATION(ptr)
Generated on Tue Aug 25 2020 19:25:06 for GXemul by
1.8.18