Revision 4d2c2b77
b/target-sparc/cpu.h | ||
---|---|---|
403 | 403 |
uint32_t mmuregs[32]; |
404 | 404 |
uint64_t mxccdata[4]; |
405 | 405 |
uint64_t mxccregs[8]; |
406 |
uint32_t mmubpctrv, mmubpctrc, mmubpctrs; |
|
407 |
uint64_t mmubpaction; |
|
406 | 408 |
uint64_t mmubpregs[4]; |
407 | 409 |
uint64_t prom_addr; |
408 | 410 |
#endif |
... | ... | |
521 | 523 |
#define cpu_signal_handler cpu_sparc_signal_handler |
522 | 524 |
#define cpu_list sparc_cpu_list |
523 | 525 |
|
524 |
#define CPU_SAVE_VERSION 6
|
|
526 |
#define CPU_SAVE_VERSION 7
|
|
525 | 527 |
|
526 | 528 |
/* MMU modes definitions */ |
527 | 529 |
#if defined (TARGET_SPARC64) |
b/target-sparc/machine.c | ||
---|---|---|
45 | 45 |
/* MMU */ |
46 | 46 |
for (i = 0; i < 32; i++) |
47 | 47 |
qemu_put_be32s(f, &env->mmuregs[i]); |
48 |
for (i = 0; i < 4; i++) { |
|
49 |
qemu_put_be64s(f, &env->mxccdata[i]); |
|
50 |
} |
|
51 |
for (i = 0; i < 8; i++) { |
|
52 |
qemu_put_be64s(f, &env->mxccregs[i]); |
|
53 |
} |
|
54 |
qemu_put_be32s(f, &env->mmubpctrv); |
|
55 |
qemu_put_be32s(f, &env->mmubpctrc); |
|
56 |
qemu_put_be32s(f, &env->mmubpctrs); |
|
57 |
qemu_put_be64s(f, &env->mmubpaction); |
|
58 |
for (i = 0; i < 4; i++) { |
|
59 |
qemu_put_be64s(f, &env->mmubpregs[i]); |
|
60 |
} |
|
48 | 61 |
#else |
49 | 62 |
qemu_put_be64s(f, &env->lsu); |
50 | 63 |
for (i = 0; i < 16; i++) { |
... | ... | |
141 | 154 |
/* MMU */ |
142 | 155 |
for (i = 0; i < 32; i++) |
143 | 156 |
qemu_get_be32s(f, &env->mmuregs[i]); |
157 |
for (i = 0; i < 4; i++) { |
|
158 |
qemu_get_be64s(f, &env->mxccdata[i]); |
|
159 |
} |
|
160 |
for (i = 0; i < 8; i++) { |
|
161 |
qemu_get_be64s(f, &env->mxccregs[i]); |
|
162 |
} |
|
163 |
qemu_get_be32s(f, &env->mmubpctrv); |
|
164 |
qemu_get_be32s(f, &env->mmubpctrc); |
|
165 |
qemu_get_be32s(f, &env->mmubpctrs); |
|
166 |
qemu_get_be64s(f, &env->mmubpaction); |
|
167 |
for (i = 0; i < 4; i++) { |
|
168 |
qemu_get_be64s(f, &env->mmubpregs[i]); |
|
169 |
} |
|
144 | 170 |
#else |
145 | 171 |
qemu_get_be64s(f, &env->lsu); |
146 | 172 |
for (i = 0; i < 16; i++) { |
b/target-sparc/op_helper.c | ||
---|---|---|
1940 | 1940 |
case 0x31: // Turbosparc RAM snoop |
1941 | 1941 |
case 0x32: // Turbosparc page table descriptor diagnostic |
1942 | 1942 |
case 0x39: /* data cache diagnostic register */ |
1943 |
case 0x4c: /* SuperSPARC MMU Breakpoint Action register */ |
|
1944 | 1943 |
ret = 0; |
1945 | 1944 |
break; |
1946 | 1945 |
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers */ |
... | ... | |
1966 | 1965 |
ret); |
1967 | 1966 |
} |
1968 | 1967 |
break; |
1968 |
case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */ |
|
1969 |
ret = env->mmubpctrv; |
|
1970 |
break; |
|
1971 |
case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */ |
|
1972 |
ret = env->mmubpctrc; |
|
1973 |
break; |
|
1974 |
case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */ |
|
1975 |
ret = env->mmubpctrs; |
|
1976 |
break; |
|
1977 |
case 0x4c: /* SuperSPARC MMU Breakpoint Action */ |
|
1978 |
ret = env->mmubpaction; |
|
1979 |
break; |
|
1969 | 1980 |
case 8: /* User code access, XXX */ |
1970 | 1981 |
default: |
1971 | 1982 |
do_unassigned_access(addr, 0, 0, asi, size); |
... | ... | |
2304 | 2315 |
// descriptor diagnostic |
2305 | 2316 |
case 0x36: /* I-cache flash clear */ |
2306 | 2317 |
case 0x37: /* D-cache flash clear */ |
2307 |
case 0x4c: /* breakpoint action */ |
|
2308 | 2318 |
break; |
2309 | 2319 |
case 0x38: /* SuperSPARC MMU Breakpoint Control Registers*/ |
2310 | 2320 |
{ |
... | ... | |
2328 | 2338 |
env->mmuregs[reg]); |
2329 | 2339 |
} |
2330 | 2340 |
break; |
2341 |
case 0x49: /* SuperSPARC MMU Counter Breakpoint Value */ |
|
2342 |
env->mmubpctrv = val & 0xffffffff; |
|
2343 |
break; |
|
2344 |
case 0x4a: /* SuperSPARC MMU Counter Breakpoint Control */ |
|
2345 |
env->mmubpctrc = val & 0x3; |
|
2346 |
break; |
|
2347 |
case 0x4b: /* SuperSPARC MMU Counter Breakpoint Status */ |
|
2348 |
env->mmubpctrs = val & 0x3; |
|
2349 |
break; |
|
2350 |
case 0x4c: /* SuperSPARC MMU Breakpoint Action */ |
|
2351 |
env->mmubpaction = val & 0x1fff; |
|
2352 |
break; |
|
2331 | 2353 |
case 8: /* User code access, XXX */ |
2332 | 2354 |
case 9: /* Supervisor code access, XXX */ |
2333 | 2355 |
default: |
Also available in: Unified diff