82 uint64_t idata = 0, odata = 0;
87 switch (relative_addr) {
94 debug(
"[ kn02ba_mer: %s MER, data=0x%08x (%s %s %s %s %s %s %s) ]\n",
95 writeflag ==
MEM_WRITE ?
"write to" :
"read from",
110 fatal(
"[ kn02ba_mer: read from offset 0x%08lx ]\n",
111 (
long)relative_addr);
113 fatal(
"[ kn02ba_mer: write to offset 0x%08lx: 0x%08x ]\n",
114 (
long)relative_addr, (
int)idata);
129 uint64_t idata = 0, odata = 0;
134 switch (relative_addr) {
141 debug(
"[ kn02ba_msr: %s MSR, data=0x%08x (%s) ]\n",
142 writeflag ==
MEM_WRITE ?
"write to" :
"read from",
151 fatal(
"[ kn02ba_msr: read from offset 0x%08lx ]\n",
152 (
long)relative_addr);
154 fatal(
"[ kn02ba_msr: write to offset 0x%08lx: 0x%08x ]\n",
155 (
long)relative_addr, (
int)idata);
179 for (i = 0; i < 32; i++) {
182 snprintf(tmpstr,
sizeof(tmpstr),
"%s.kn02ba.0x%x",
185 memset(&templ, 0,
sizeof(templ));
195 KMIN_REG_MER,
sizeof(uint32_t), dev_kn02ba_mer_access, d,
199 KMIN_REG_MSR,
sizeof(uint32_t), dev_kn02ba_msr_access, d,
uint64_t memory_readmax64(struct cpu *cpu, unsigned char *buf, int len)
void fatal(const char *fmt,...)
void(* interrupt_assert)(struct interrupt *)
void dec_ioasic_reassert(struct dec_ioasic_data *d)
void kn02ba_interrupt_deassert(struct interrupt *interrupt)
void interrupt_handler_register(struct interrupt *templ)
void(* interrupt_deassert)(struct interrupt *)
struct dec_ioasic_data * dec_ioasic
#define CHECK_ALLOCATION(ptr)
DEVICE_ACCESS(kn02ba_mer)
#define INTERRUPT_CONNECT(name, istruct)
void kn02ba_interrupt_assert(struct interrupt *interrupt)
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)
#define KMIN_MER_PAGE_BRY
#define KMIN_MSR_SIZE_16Mb
struct dec_ioasic_data * dev_dec_ioasic_init(struct cpu *cpu, struct memory *mem, uint64_t baseaddr, int rackmount_flag, struct interrupt *irqp)