Commit a7a044f29e288c64aafc8e82ccfeeb9c6aa49017
1 parent
bc0129d9
Handle wrapped registers correctly when saving
Fix typo Save and load interrupt_index and pil_in Original patch by Luis Pureza git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4980 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
11 additions
and
1 deletions
target-sparc/machine.c
| ... | ... | @@ -31,6 +31,10 @@ void cpu_save(QEMUFile *f, void *opaque) |
| 31 | 31 | int i; |
| 32 | 32 | uint32_t tmp; |
| 33 | 33 | |
| 34 | + // if env->cwp == env->nwindows - 1, this will set the ins of the last | |
| 35 | + // window as the outs of the first window | |
| 36 | + cpu_set_cwp(env, env->cwp); | |
| 37 | + | |
| 34 | 38 | for(i = 0; i < 8; i++) |
| 35 | 39 | qemu_put_betls(f, &env->gregs[i]); |
| 36 | 40 | qemu_put_be32s(f, &env->nwindows); |
| ... | ... | @@ -54,6 +58,9 @@ void cpu_save(QEMUFile *f, void *opaque) |
| 54 | 58 | qemu_put_be32(f, tmp); |
| 55 | 59 | qemu_put_betls(f, &env->fsr); |
| 56 | 60 | qemu_put_betls(f, &env->tbr); |
| 61 | + tmp = env->interrupt_index; | |
| 62 | + qemu_put_be32(f, tmp); | |
| 63 | + qemu_put_be32s(f, &env->pil_in); | |
| 57 | 64 | #ifndef TARGET_SPARC64 |
| 58 | 65 | qemu_put_be32s(f, &env->wim); |
| 59 | 66 | /* MMU */ |
| ... | ... | @@ -110,7 +117,7 @@ void cpu_save(QEMUFile *f, void *opaque) |
| 110 | 117 | qemu_put_be64s(f, &env->hver); |
| 111 | 118 | qemu_put_be64s(f, &env->hstick_cmpr); |
| 112 | 119 | qemu_put_be64s(f, &env->ssr); |
| 113 | - qemu_get_ptimer(f, env->hstick); | |
| 120 | + qemu_put_ptimer(f, env->hstick); | |
| 114 | 121 | #endif |
| 115 | 122 | } |
| 116 | 123 | |
| ... | ... | @@ -147,6 +154,9 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id) |
| 147 | 154 | PUT_PSR(env, tmp); |
| 148 | 155 | qemu_get_betls(f, &env->fsr); |
| 149 | 156 | qemu_get_betls(f, &env->tbr); |
| 157 | + tmp = qemu_get_be32(f); | |
| 158 | + env->interrupt_index = tmp; | |
| 159 | + qemu_get_be32s(f, &env->pil_in); | |
| 150 | 160 | #ifndef TARGET_SPARC64 |
| 151 | 161 | qemu_get_be32s(f, &env->wim); |
| 152 | 162 | /* MMU */ | ... | ... |