42 #define DEV_GC_LENGTH 0x100 87 uint64_t idata = 0, odata = 0;
92 switch (relative_addr) {
95 #define INT_STATE_REG_H (interrupt_reg + 0x00) 96 #define INT_ENABLE_REG_H (interrupt_reg + 0x04) 97 #define INT_CLEAR_REG_H (interrupt_reg + 0x08) 98 #define INT_LEVEL_REG_H (interrupt_reg + 0x0c) 99 #define INT_STATE_REG_L (interrupt_reg + 0x10) 100 #define INT_ENABLE_REG_L (interrupt_reg + 0x14) 101 #define INT_CLEAR_REG_L (interrupt_reg + 0x18) 102 #define INT_LEVEL_REG_L (interrupt_reg + 0x1c) 122 if (old_assert && !new_assert)
124 else if (!old_assert && new_assert)
139 if (old_assert && !new_assert)
141 else if (!old_assert && new_assert)
163 if (old_assert && !new_assert)
165 else if (!old_assert && new_assert)
180 if (old_assert && !new_assert)
182 else if (!old_assert && new_assert)
193 fatal(
"[ gc: unimplemented write to " 194 "offset 0x%x: data=0x%x ]\n", (
int)
195 relative_addr, (
int)idata);
197 fatal(
"[ gc: unimplemented read from " 198 "offset 0x%x ]\n", (
int)relative_addr);
215 memset(d, 0,
sizeof(
struct gc_data));
223 for (i=0; i<32; i++) {
226 snprintf(n,
sizeof(n),
"%s.gc.lo.%i",
228 memset(&templ, 0,
sizeof(templ));
236 snprintf(n,
sizeof(n),
"%s.gc.hi.%i",
238 memset(&templ, 0,
sizeof(templ));
uint64_t memory_readmax64(struct cpu *cpu, unsigned char *buf, int len)
void fatal(const char *fmt,...)
void(* interrupt_assert)(struct interrupt *)
void interrupt_handler_register(struct interrupt *templ)
void(* interrupt_deassert)(struct interrupt *)
void gc_hi_interrupt_deassert(struct interrupt *interrupt)
void gc_lo_interrupt_assert(struct interrupt *interrupt)
#define CHECK_ALLOCATION(ptr)
#define INTERRUPT_ASSERT(istruct)
void gc_hi_interrupt_assert(struct interrupt *interrupt)
#define INTERRUPT_CONNECT(name, istruct)
void memory_writemax64(struct cpu *cpu, unsigned char *buf, int len, uint64_t data)
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 gc_lo_interrupt_deassert(struct interrupt *interrupt)
addr & if(addr >=0x24 &&page !=NULL)
#define INTERRUPT_DEASSERT(istruct)