Revision 96d19126 gdbstub.c

b/gdbstub.c
469 469
    ppc_store_xer(env, tswapl(registers[101]));
470 470
}
471 471
#elif defined (TARGET_SPARC)
472
#ifdef TARGET_ABI32
473
#define tswap_abi(val) tswap32(val &0xffffffff)
474
#else
475
#define tswap_abi(val) tswapl(val)
476
#endif
472 477
static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf)
473 478
{
479
#ifdef TARGET_ABI32
480
    abi_ulong *registers = (abi_ulong *)mem_buf;
481
#else
474 482
    target_ulong *registers = (target_ulong *)mem_buf;
483
#endif
475 484
    int i;
476 485

  
477 486
    /* fill in g0..g7 */
478 487
    for(i = 0; i < 8; i++) {
479
        registers[i] = tswapl(env->gregs[i]);
488
        registers[i] = tswap_abi(env->gregs[i]);
480 489
    }
481 490
    /* fill in register window */
482 491
    for(i = 0; i < 24; i++) {
483
        registers[i + 8] = tswapl(env->regwptr[i]);
492
        registers[i + 8] = tswap_abi(env->regwptr[i]);
484 493
    }
485
#ifndef TARGET_SPARC64
494
#if !defined(TARGET_SPARC64) || defined(TARGET_ABI32)
486 495
    /* fill in fprs */
487 496
    for (i = 0; i < 32; i++) {
488
        registers[i + 32] = tswapl(*((uint32_t *)&env->fpr[i]));
497
        registers[i + 32] = tswap_abi(*((uint32_t *)&env->fpr[i]));
489 498
    }
490 499
    /* Y, PSR, WIM, TBR, PC, NPC, FPSR, CPSR */
491
    registers[64] = tswapl(env->y);
500
    registers[64] = tswap_abi(env->y);
492 501
    {
493
	target_ulong tmp;
502
        uint32_t tmp;
494 503

  
495
	tmp = GET_PSR(env);
496
	registers[65] = tswapl(tmp);
504
        tmp = GET_PSR(env);
505
        registers[65] = tswap32(tmp);
497 506
    }
498
    registers[66] = tswapl(env->wim);
499
    registers[67] = tswapl(env->tbr);
500
    registers[68] = tswapl(env->pc);
501
    registers[69] = tswapl(env->npc);
502
    registers[70] = tswapl(env->fsr);
507
    registers[66] = tswap_abi(env->wim);
508
    registers[67] = tswap_abi(env->tbr);
509
    registers[68] = tswap_abi(env->pc);
510
    registers[69] = tswap_abi(env->npc);
511
    registers[70] = tswap_abi(env->fsr);
503 512
    registers[71] = 0; /* csr */
504 513
    registers[72] = 0;
505
    return 73 * sizeof(target_ulong);
514
    return 73 * sizeof(uint32_t);
506 515
#else
507 516
    /* fill in fprs */
508 517
    for (i = 0; i < 64; i += 2) {
......
527 536

  
528 537
static void cpu_gdb_write_registers(CPUState *env, uint8_t *mem_buf, int size)
529 538
{
539
#ifdef TARGET_ABI32
540
    abi_ulong *registers = (abi_ulong *)mem_buf;
541
#else
530 542
    target_ulong *registers = (target_ulong *)mem_buf;
543
#endif
531 544
    int i;
532 545

  
533 546
    /* fill in g0..g7 */
534 547
    for(i = 0; i < 7; i++) {
535
        env->gregs[i] = tswapl(registers[i]);
548
        env->gregs[i] = tswap_abi(registers[i]);
536 549
    }
537 550
    /* fill in register window */
538 551
    for(i = 0; i < 24; i++) {
539
        env->regwptr[i] = tswapl(registers[i + 8]);
552
        env->regwptr[i] = tswap_abi(registers[i + 8]);
540 553
    }
541
#ifndef TARGET_SPARC64
554
#if !defined(TARGET_SPARC64) || defined(TARGET_ABI32)
542 555
    /* fill in fprs */
543 556
    for (i = 0; i < 32; i++) {
544
        *((uint32_t *)&env->fpr[i]) = tswapl(registers[i + 32]);
557
        *((uint32_t *)&env->fpr[i]) = tswap_abi(registers[i + 32]);
545 558
    }
546 559
    /* Y, PSR, WIM, TBR, PC, NPC, FPSR, CPSR */
547
    env->y = tswapl(registers[64]);
548
    PUT_PSR(env, tswapl(registers[65]));
549
    env->wim = tswapl(registers[66]);
550
    env->tbr = tswapl(registers[67]);
551
    env->pc = tswapl(registers[68]);
552
    env->npc = tswapl(registers[69]);
553
    env->fsr = tswapl(registers[70]);
560
    env->y = tswap_abi(registers[64]);
561
    PUT_PSR(env, tswap_abi(registers[65]));
562
    env->wim = tswap_abi(registers[66]);
563
    env->tbr = tswap_abi(registers[67]);
564
    env->pc = tswap_abi(registers[68]);
565
    env->npc = tswap_abi(registers[69]);
566
    env->fsr = tswap_abi(registers[70]);
554 567
#else
555 568
    for (i = 0; i < 64; i += 2) {
556 569
        uint64_t tmp;
......
574 587
    env->y = tswapl(registers[69]);
575 588
#endif
576 589
}
590
#undef tswap_abi
577 591
#elif defined (TARGET_ARM)
578 592
static int cpu_gdb_read_registers(CPUState *env, uint8_t *mem_buf)
579 593
{

Also available in: Unified diff