| #include "hw/hw.h" |
| #include "hw/boards.h" |
| |
| void cpu_save(QEMUFile *f, void *opaque) |
| { |
| CPUCRISState *env = opaque; |
| int i; |
| int s; |
| int mmu; |
| |
| for (i = 0; i < 16; i++) |
| qemu_put_be32(f, env->regs[i]); |
| for (i = 0; i < 16; i++) |
| qemu_put_be32(f, env->pregs[i]); |
| |
| qemu_put_be32(f, env->pc); |
| qemu_put_be32(f, env->ksp); |
| |
| qemu_put_be32(f, env->dslot); |
| qemu_put_be32(f, env->btaken); |
| qemu_put_be32(f, env->btarget); |
| |
| qemu_put_be32(f, env->cc_op); |
| qemu_put_be32(f, env->cc_mask); |
| qemu_put_be32(f, env->cc_dest); |
| qemu_put_be32(f, env->cc_src); |
| qemu_put_be32(f, env->cc_result); |
| qemu_put_be32(f, env->cc_size); |
| qemu_put_be32(f, env->cc_x); |
| |
| for (s = 0; s < 4; s++) { |
| for (i = 0; i < 16; i++) |
| qemu_put_be32(f, env->sregs[s][i]); |
| } |
| |
| qemu_put_be32(f, env->mmu_rand_lfsr); |
| for (mmu = 0; mmu < 2; mmu++) { |
| for (s = 0; s < 4; s++) { |
| for (i = 0; i < 16; i++) { |
| qemu_put_be32(f, env->tlbsets[mmu][s][i].lo); |
| qemu_put_be32(f, env->tlbsets[mmu][s][i].hi); |
| } |
| } |
| } |
| } |
| |
| int cpu_load(QEMUFile *f, void *opaque, int version_id) |
| { |
| CPUCRISState *env = opaque; |
| int i; |
| int s; |
| int mmu; |
| |
| for (i = 0; i < 16; i++) |
| env->regs[i] = qemu_get_be32(f); |
| for (i = 0; i < 16; i++) |
| env->pregs[i] = qemu_get_be32(f); |
| |
| env->pc = qemu_get_be32(f); |
| env->ksp = qemu_get_be32(f); |
| |
| env->dslot = qemu_get_be32(f); |
| env->btaken = qemu_get_be32(f); |
| env->btarget = qemu_get_be32(f); |
| |
| env->cc_op = qemu_get_be32(f); |
| env->cc_mask = qemu_get_be32(f); |
| env->cc_dest = qemu_get_be32(f); |
| env->cc_src = qemu_get_be32(f); |
| env->cc_result = qemu_get_be32(f); |
| env->cc_size = qemu_get_be32(f); |
| env->cc_x = qemu_get_be32(f); |
| |
| for (s = 0; s < 4; s++) { |
| for (i = 0; i < 16; i++) |
| env->sregs[s][i] = qemu_get_be32(f); |
| } |
| |
| env->mmu_rand_lfsr = qemu_get_be32(f); |
| for (mmu = 0; mmu < 2; mmu++) { |
| for (s = 0; s < 4; s++) { |
| for (i = 0; i < 16; i++) { |
| env->tlbsets[mmu][s][i].lo = qemu_get_be32(f); |
| env->tlbsets[mmu][s][i].hi = qemu_get_be32(f); |
| } |
| } |
| } |
| |
| return 0; |
| } |