static int nvram_write_reg_port(struct guest_info * core, uint16_t port,
void * src, uint_t length, void * priv_data) {
-
+ uint8_t reg;
struct nvram_internal * data = priv_data;
+
+ memcpy(®,src,1);
+
+ data->thereg = reg & 0x7f; //discard NMI bit if it's there
- memcpy(&(data->thereg), src, 1);
- PrintDebug("nvram: Writing To NVRAM reg: 0x%x\n", data->thereg);
+ PrintDebug("nvram: Writing To NVRAM reg: 0x%x (NMI_disable=%d)\n", data->thereg,reg>>7);
return 1;
}
PrintDebug("nvram: init_device\n");
nvram_state = (struct nvram_internal *)V3_Malloc(sizeof(struct nvram_internal) + 1000);
+ if (!nvram_state) {
+ PrintError("Cannot allocate in init\n");
+ return -1;
+ }
+
PrintDebug("nvram: internal at %p\n", (void *)nvram_state);
nvram_state->ide = ide;