static void slirp_sbuf_save(QEMUFile *f, struct sbuf *sbuf) { uint32_t off; qemu_put_be32(f, sbuf->sb_cc); qemu_put_be32(f, sbuf->sb_datalen); off = (uint32_t)(sbuf->sb_wptr - sbuf->sb_data); qemu_put_sbe32(f, off); off = (uint32_t)(sbuf->sb_rptr - sbuf->sb_data); qemu_put_sbe32(f, off); qemu_put_buffer(f, (unsigned char*)sbuf->sb_data, sbuf->sb_datalen); }
static void pipeConnector_save( void* pipe, QEMUFile* file ) { PipeConnector* pcon = pipe; qemu_put_sbe32(file, pcon->buffpos); qemu_put_sbuffer(file, (const int8_t*)pcon->buffer, pcon->buffpos); }
static void goldfish_pipe_save( QEMUFile* file, void* opaque ) { PipeDevice* dev = opaque; Pipe* pipe; qemu_put_be32(file, dev->address); qemu_put_be32(file, dev->size); qemu_put_be32(file, dev->status); qemu_put_be32(file, dev->channel); qemu_put_be32(file, dev->wakes); qemu_put_be64(file, dev->params_addr); int count = 0; for ( pipe = dev->pipes; pipe; pipe = pipe->next ) count++; qemu_put_sbe32(file, count); for ( pipe = dev->pipes; pipe; pipe = pipe->next ) { pipe_save(pipe, file); } }
void cpu_save(QEMUFile *f, void *opaque) { CPUPPCState *env = (CPUPPCState *)opaque; unsigned int i, j; uint32_t fpscr; for (i = 0; i < 32; i++) qemu_put_betls(f, &env->gpr[i]); #if !defined(TARGET_PPC64) for (i = 0; i < 32; i++) qemu_put_betls(f, &env->gprh[i]); #endif qemu_put_betls(f, &env->lr); qemu_put_betls(f, &env->ctr); for (i = 0; i < 8; i++) qemu_put_be32s(f, &env->crf[i]); qemu_put_betls(f, &env->xer); qemu_put_betls(f, &env->reserve_addr); qemu_put_betls(f, &env->msr); for (i = 0; i < 4; i++) qemu_put_betls(f, &env->tgpr[i]); for (i = 0; i < 32; i++) { union { float64 d; uint64_t l; } u; u.d = env->fpr[i]; qemu_put_be64(f, u.l); } fpscr = env->fpscr; qemu_put_be32s(f, &fpscr); qemu_put_sbe32s(f, &env->access_type); #if defined(TARGET_PPC64) qemu_put_betls(f, &env->asr); qemu_put_sbe32s(f, &env->slb_nr); #endif qemu_put_betls(f, &env->spr[SPR_SDR1]); for (i = 0; i < 32; i++) qemu_put_betls(f, &env->sr[i]); for (i = 0; i < 2; i++) for (j = 0; j < 8; j++) qemu_put_betls(f, &env->DBAT[i][j]); for (i = 0; i < 2; i++) for (j = 0; j < 8; j++) qemu_put_betls(f, &env->IBAT[i][j]); qemu_put_sbe32s(f, &env->nb_tlb); qemu_put_sbe32s(f, &env->tlb_per_way); qemu_put_sbe32s(f, &env->nb_ways); qemu_put_sbe32s(f, &env->last_way); qemu_put_sbe32s(f, &env->id_tlbs); qemu_put_sbe32s(f, &env->nb_pids); if (env->tlb.tlb6) { // XXX assumes 6xx for (i = 0; i < env->nb_tlb; i++) { qemu_put_betls(f, &env->tlb.tlb6[i].pte0); qemu_put_betls(f, &env->tlb.tlb6[i].pte1); qemu_put_betls(f, &env->tlb.tlb6[i].EPN); } } for (i = 0; i < 4; i++) qemu_put_betls(f, &env->pb[i]); for (i = 0; i < 1024; i++) qemu_put_betls(f, &env->spr[i]); qemu_put_be32s(f, &env->vscr); qemu_put_be64s(f, &env->spe_acc); qemu_put_be32s(f, &env->spe_fscr); qemu_put_betls(f, &env->msr_mask); qemu_put_be32s(f, &env->flags); qemu_put_sbe32s(f, &env->error_code); qemu_put_be32s(f, &env->pending_interrupts); qemu_put_be32s(f, &env->irq_input_state); for (i = 0; i < POWERPC_EXCP_NB; i++) qemu_put_betls(f, &env->excp_vectors[i]); qemu_put_betls(f, &env->excp_prefix); qemu_put_betls(f, &env->hreset_excp_prefix); qemu_put_betls(f, &env->ivor_mask); qemu_put_betls(f, &env->ivpr_mask); qemu_put_betls(f, &env->hreset_vector); qemu_put_betls(f, &env->nip); qemu_put_betls(f, &env->hflags); qemu_put_betls(f, &env->hflags_nmsr); qemu_put_sbe32s(f, &env->mmu_idx); qemu_put_sbe32(f, 0); }