|
|
1.1 ! root 1: #include "hw/hw.h" ! 2: #include "hw/boards.h" ! 3: ! 4: void register_machines(void) ! 5: { ! 6: qemu_register_machine(&heathrow_machine); ! 7: qemu_register_machine(&core99_machine); ! 8: qemu_register_machine(&prep_machine); ! 9: qemu_register_machine(&ref405ep_machine); ! 10: qemu_register_machine(&taihu_machine); ! 11: qemu_register_machine(&bamboo_machine); ! 12: qemu_register_machine(&mpc8544ds_machine); ! 13: } ! 14: ! 15: void cpu_save(QEMUFile *f, void *opaque) ! 16: { ! 17: CPUState *env = (CPUState *)opaque; ! 18: unsigned int i, j; ! 19: ! 20: for (i = 0; i < 32; i++) ! 21: qemu_put_betls(f, &env->gpr[i]); ! 22: #if !defined(TARGET_PPC64) ! 23: for (i = 0; i < 32; i++) ! 24: qemu_put_betls(f, &env->gprh[i]); ! 25: #endif ! 26: qemu_put_betls(f, &env->lr); ! 27: qemu_put_betls(f, &env->ctr); ! 28: for (i = 0; i < 8; i++) ! 29: qemu_put_be32s(f, &env->crf[i]); ! 30: qemu_put_betls(f, &env->xer); ! 31: qemu_put_betls(f, &env->reserve); ! 32: qemu_put_betls(f, &env->msr); ! 33: for (i = 0; i < 4; i++) ! 34: qemu_put_betls(f, &env->tgpr[i]); ! 35: for (i = 0; i < 32; i++) { ! 36: union { ! 37: float64 d; ! 38: uint64_t l; ! 39: } u; ! 40: u.d = env->fpr[i]; ! 41: qemu_put_be64(f, u.l); ! 42: } ! 43: qemu_put_be32s(f, &env->fpscr); ! 44: qemu_put_sbe32s(f, &env->access_type); ! 45: #if !defined(CONFIG_USER_ONLY) ! 46: #if defined(TARGET_PPC64) ! 47: qemu_put_betls(f, &env->asr); ! 48: qemu_put_sbe32s(f, &env->slb_nr); ! 49: #endif ! 50: qemu_put_betls(f, &env->sdr1); ! 51: for (i = 0; i < 32; i++) ! 52: qemu_put_betls(f, &env->sr[i]); ! 53: for (i = 0; i < 2; i++) ! 54: for (j = 0; j < 8; j++) ! 55: qemu_put_betls(f, &env->DBAT[i][j]); ! 56: for (i = 0; i < 2; i++) ! 57: for (j = 0; j < 8; j++) ! 58: qemu_put_betls(f, &env->IBAT[i][j]); ! 59: qemu_put_sbe32s(f, &env->nb_tlb); ! 60: qemu_put_sbe32s(f, &env->tlb_per_way); ! 61: qemu_put_sbe32s(f, &env->nb_ways); ! 62: qemu_put_sbe32s(f, &env->last_way); ! 63: qemu_put_sbe32s(f, &env->id_tlbs); ! 64: qemu_put_sbe32s(f, &env->nb_pids); ! 65: if (env->tlb) { ! 66: // XXX assumes 6xx ! 67: for (i = 0; i < env->nb_tlb; i++) { ! 68: qemu_put_betls(f, &env->tlb[i].tlb6.pte0); ! 69: qemu_put_betls(f, &env->tlb[i].tlb6.pte1); ! 70: qemu_put_betls(f, &env->tlb[i].tlb6.EPN); ! 71: } ! 72: } ! 73: for (i = 0; i < 4; i++) ! 74: qemu_put_betls(f, &env->pb[i]); ! 75: #endif ! 76: for (i = 0; i < 1024; i++) ! 77: qemu_put_betls(f, &env->spr[i]); ! 78: qemu_put_be32s(f, &env->vscr); ! 79: qemu_put_be64s(f, &env->spe_acc); ! 80: qemu_put_be32s(f, &env->spe_fscr); ! 81: qemu_put_betls(f, &env->msr_mask); ! 82: qemu_put_be32s(f, &env->flags); ! 83: qemu_put_sbe32s(f, &env->error_code); ! 84: qemu_put_be32s(f, &env->pending_interrupts); ! 85: #if !defined(CONFIG_USER_ONLY) ! 86: qemu_put_be32s(f, &env->irq_input_state); ! 87: for (i = 0; i < POWERPC_EXCP_NB; i++) ! 88: qemu_put_betls(f, &env->excp_vectors[i]); ! 89: qemu_put_betls(f, &env->excp_prefix); ! 90: qemu_put_betls(f, &env->ivor_mask); ! 91: qemu_put_betls(f, &env->ivpr_mask); ! 92: qemu_put_betls(f, &env->hreset_vector); ! 93: #endif ! 94: qemu_put_betls(f, &env->nip); ! 95: qemu_put_betls(f, &env->hflags); ! 96: qemu_put_betls(f, &env->hflags_nmsr); ! 97: qemu_put_sbe32s(f, &env->mmu_idx); ! 98: qemu_put_sbe32s(f, &env->power_mode); ! 99: } ! 100: ! 101: int cpu_load(QEMUFile *f, void *opaque, int version_id) ! 102: { ! 103: CPUState *env = (CPUState *)opaque; ! 104: unsigned int i, j; ! 105: ! 106: for (i = 0; i < 32; i++) ! 107: qemu_get_betls(f, &env->gpr[i]); ! 108: #if !defined(TARGET_PPC64) ! 109: for (i = 0; i < 32; i++) ! 110: qemu_get_betls(f, &env->gprh[i]); ! 111: #endif ! 112: qemu_get_betls(f, &env->lr); ! 113: qemu_get_betls(f, &env->ctr); ! 114: for (i = 0; i < 8; i++) ! 115: qemu_get_be32s(f, &env->crf[i]); ! 116: qemu_get_betls(f, &env->xer); ! 117: qemu_get_betls(f, &env->reserve); ! 118: qemu_get_betls(f, &env->msr); ! 119: for (i = 0; i < 4; i++) ! 120: qemu_get_betls(f, &env->tgpr[i]); ! 121: for (i = 0; i < 32; i++) { ! 122: union { ! 123: float64 d; ! 124: uint64_t l; ! 125: } u; ! 126: u.l = qemu_get_be64(f); ! 127: env->fpr[i] = u.d; ! 128: } ! 129: qemu_get_be32s(f, &env->fpscr); ! 130: qemu_get_sbe32s(f, &env->access_type); ! 131: #if !defined(CONFIG_USER_ONLY) ! 132: #if defined(TARGET_PPC64) ! 133: qemu_get_betls(f, &env->asr); ! 134: qemu_get_sbe32s(f, &env->slb_nr); ! 135: #endif ! 136: qemu_get_betls(f, &env->sdr1); ! 137: for (i = 0; i < 32; i++) ! 138: qemu_get_betls(f, &env->sr[i]); ! 139: for (i = 0; i < 2; i++) ! 140: for (j = 0; j < 8; j++) ! 141: qemu_get_betls(f, &env->DBAT[i][j]); ! 142: for (i = 0; i < 2; i++) ! 143: for (j = 0; j < 8; j++) ! 144: qemu_get_betls(f, &env->IBAT[i][j]); ! 145: qemu_get_sbe32s(f, &env->nb_tlb); ! 146: qemu_get_sbe32s(f, &env->tlb_per_way); ! 147: qemu_get_sbe32s(f, &env->nb_ways); ! 148: qemu_get_sbe32s(f, &env->last_way); ! 149: qemu_get_sbe32s(f, &env->id_tlbs); ! 150: qemu_get_sbe32s(f, &env->nb_pids); ! 151: if (env->tlb) { ! 152: // XXX assumes 6xx ! 153: for (i = 0; i < env->nb_tlb; i++) { ! 154: qemu_get_betls(f, &env->tlb[i].tlb6.pte0); ! 155: qemu_get_betls(f, &env->tlb[i].tlb6.pte1); ! 156: qemu_get_betls(f, &env->tlb[i].tlb6.EPN); ! 157: } ! 158: } ! 159: for (i = 0; i < 4; i++) ! 160: qemu_get_betls(f, &env->pb[i]); ! 161: #endif ! 162: for (i = 0; i < 1024; i++) ! 163: qemu_get_betls(f, &env->spr[i]); ! 164: qemu_get_be32s(f, &env->vscr); ! 165: qemu_get_be64s(f, &env->spe_acc); ! 166: qemu_get_be32s(f, &env->spe_fscr); ! 167: qemu_get_betls(f, &env->msr_mask); ! 168: qemu_get_be32s(f, &env->flags); ! 169: qemu_get_sbe32s(f, &env->error_code); ! 170: qemu_get_be32s(f, &env->pending_interrupts); ! 171: #if !defined(CONFIG_USER_ONLY) ! 172: qemu_get_be32s(f, &env->irq_input_state); ! 173: for (i = 0; i < POWERPC_EXCP_NB; i++) ! 174: qemu_get_betls(f, &env->excp_vectors[i]); ! 175: qemu_get_betls(f, &env->excp_prefix); ! 176: qemu_get_betls(f, &env->ivor_mask); ! 177: qemu_get_betls(f, &env->ivpr_mask); ! 178: qemu_get_betls(f, &env->hreset_vector); ! 179: #endif ! 180: qemu_get_betls(f, &env->nip); ! 181: qemu_get_betls(f, &env->hflags); ! 182: qemu_get_betls(f, &env->hflags_nmsr); ! 183: qemu_get_sbe32s(f, &env->mmu_idx); ! 184: qemu_get_sbe32s(f, &env->power_mode); ! 185: ! 186: return 0; ! 187: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.