Commit 8979596d1785fd52badbdb177a5ef09d4f182f40
1 parent
3ccacc4a
Fix Sparc64 double float gdb protocol (initial version by Paul Brook)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2666 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
8 additions
and
5 deletions
gdbstub.c
| @@ -377,9 +377,9 @@ static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf) | @@ -377,9 +377,9 @@ static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf) | ||
| 377 | for (i = 0; i < 64; i += 2) { | 377 | for (i = 0; i < 64; i += 2) { |
| 378 | uint64_t tmp; | 378 | uint64_t tmp; |
| 379 | 379 | ||
| 380 | - tmp = (uint64_t)tswap32(*((uint32_t *)&env->fpr[i])) << 32; | ||
| 381 | - tmp |= tswap32(*((uint32_t *)&env->fpr[i + 1])); | ||
| 382 | - registers[i/2 + 32] = tmp; | 380 | + tmp = ((uint64_t)*(uint32_t *)&env->fpr[i]) << 32; |
| 381 | + tmp |= *(uint32_t *)&env->fpr[i + 1]; | ||
| 382 | + registers[i / 2 + 32] = tswap64(tmp); | ||
| 383 | } | 383 | } |
| 384 | registers[64] = tswapl(env->pc); | 384 | registers[64] = tswapl(env->pc); |
| 385 | registers[65] = tswapl(env->npc); | 385 | registers[65] = tswapl(env->npc); |
| @@ -419,8 +419,11 @@ static void cpu_gdb_write_registers(CPUState *env, uint8_t *mem_buf, int size) | @@ -419,8 +419,11 @@ static void cpu_gdb_write_registers(CPUState *env, uint8_t *mem_buf, int size) | ||
| 419 | env->fsr = tswapl(registers[70]); | 419 | env->fsr = tswapl(registers[70]); |
| 420 | #else | 420 | #else |
| 421 | for (i = 0; i < 64; i += 2) { | 421 | for (i = 0; i < 64; i += 2) { |
| 422 | - *((uint32_t *)&env->fpr[i]) = tswap32(registers[i/2 + 32] >> 32); | ||
| 423 | - *((uint32_t *)&env->fpr[i + 1]) = tswap32(registers[i/2 + 32] & 0xffffffff); | 422 | + uint64_t tmp; |
| 423 | + | ||
| 424 | + tmp = tswap64(registers[i / 2 + 32]); | ||
| 425 | + *((uint32_t *)&env->fpr[i]) = tmp >> 32; | ||
| 426 | + *((uint32_t *)&env->fpr[i + 1]) = tmp & 0xffffffff; | ||
| 424 | } | 427 | } |
| 425 | env->pc = tswapl(registers[64]); | 428 | env->pc = tswapl(registers[64]); |
| 426 | env->npc = tswapl(registers[65]); | 429 | env->npc = tswapl(registers[65]); |