Revision 986a2998

b/gdbstub.c
489 489
    return put_packet_binary(s, buf, strlen(buf));
490 490
}
491 491

  
492
/* The GDB remote protocol transfers values in target byte order.  This means
493
   we can use the raw memory access routines to access the value buffer.
494
   Conveniently, these also handle the case where the buffer is mis-aligned.
495
 */
496
#define GET_REG8(val) do { \
497
    stb_p(mem_buf, val); \
498
    return 1; \
499
    } while(0)
500
#define GET_REG16(val) do { \
501
    stw_p(mem_buf, val); \
502
    return 2; \
503
    } while(0)
504
#define GET_REG32(val) do { \
505
    stl_p(mem_buf, val); \
506
    return 4; \
507
    } while(0)
508
#define GET_REG64(val) do { \
509
    stq_p(mem_buf, val); \
510
    return 8; \
511
    } while(0)
512

  
513
#if TARGET_LONG_BITS == 64
514
#define GET_REGL(val) GET_REG64(val)
515
#define ldtul_p(addr) ldq_p(addr)
516
#else
517
#define GET_REGL(val) GET_REG32(val)
518
#define ldtul_p(addr) ldl_p(addr)
519
#endif
520

  
521 492
#if defined(TARGET_I386)
522 493

  
523 494
#include "target-i386/gdbstub.c"
b/include/exec/gdbstub.h
39 39
#endif
40 40
}
41 41

  
42
/* The GDB remote protocol transfers values in target byte order.  This means
43
 * we can use the raw memory access routines to access the value buffer.
44
 * Conveniently, these also handle the case where the buffer is mis-aligned.
45
 */
46

  
47
static inline int gdb_get_reg8(uint8_t *mem_buf, uint8_t val)
48
{
49
    stb_p(mem_buf, val);
50
    return 1;
51
}
52

  
53
static inline int gdb_get_reg16(uint8_t *mem_buf, uint16_t val)
54
{
55
    stw_p(mem_buf, val);
56
    return 2;
57
}
58

  
59
static inline int gdb_get_reg32(uint8_t *mem_buf, uint32_t val)
60
{
61
    stl_p(mem_buf, val);
62
    return 4;
63
}
64

  
65
static inline int gdb_get_reg64(uint8_t *mem_buf, uint64_t val)
66
{
67
    stq_p(mem_buf, val);
68
    return 8;
69
}
70

  
71
#if TARGET_LONG_BITS == 64
72
#define gdb_get_regl(buf, val) gdb_get_reg64(buf, val)
73
#define ldtul_p(addr) ldq_p(addr)
74
#else
75
#define gdb_get_regl(buf, val) gdb_get_reg32(buf, val)
76
#define ldtul_p(addr) ldl_p(addr)
77
#endif
78

  
42 79
#endif
43 80

  
44 81
#ifdef CONFIG_USER_ONLY
b/target-alpha/gdbstub.c
49 49
    default:
50 50
        return 0;
51 51
    }
52
    GET_REGL(val);
52
    return gdb_get_regl(mem_buf, val);
53 53
}
54 54

  
55 55
static int cpu_gdb_write_register(CPUAlphaState *env, uint8_t *mem_buf, int n)
b/target-arm/gdbstub.c
28 28
{
29 29
    if (n < 16) {
30 30
        /* Core integer register.  */
31
        GET_REG32(env->regs[n]);
31
        return gdb_get_reg32(mem_buf, env->regs[n]);
32 32
    }
33 33
    if (n < 24) {
34 34
        /* FPA registers.  */
......
44 44
        if (gdb_has_xml) {
45 45
            return 0;
46 46
        }
47
        GET_REG32(0);
47
        return gdb_get_reg32(mem_buf, 0);
48 48
    case 25:
49 49
        /* CPSR */
50
        GET_REG32(cpsr_read(env));
50
        return gdb_get_reg32(mem_buf, cpsr_read(env));
51 51
    }
52 52
    /* Unknown register.  */
53 53
    return 0;
b/target-cris/gdbstub.c
22 22
read_register_crisv10(CPUCRISState *env, uint8_t *mem_buf, int n)
23 23
{
24 24
    if (n < 15) {
25
        GET_REG32(env->regs[n]);
25
        return gdb_get_reg32(mem_buf, env->regs[n]);
26 26
    }
27 27

  
28 28
    if (n == 15) {
29
        GET_REG32(env->pc);
29
        return gdb_get_reg32(mem_buf, env->pc);
30 30
    }
31 31

  
32 32
    if (n < 32) {
33 33
        switch (n) {
34 34
        case 16:
35
            GET_REG8(env->pregs[n - 16]);
35
            return gdb_get_reg8(mem_buf, env->pregs[n - 16]);
36 36
        case 17:
37
            GET_REG8(env->pregs[n - 16]);
37
            return gdb_get_reg8(mem_buf, env->pregs[n - 16]);
38 38
        case 20:
39 39
        case 21:
40
            GET_REG16(env->pregs[n - 16]);
40
            return gdb_get_reg16(mem_buf, env->pregs[n - 16]);
41 41
        default:
42 42
            if (n >= 23) {
43
                GET_REG32(env->pregs[n - 16]);
43
                return gdb_get_reg32(mem_buf, env->pregs[n - 16]);
44 44
            }
45 45
            break;
46 46
        }
......
58 58

  
59 59
    srs = env->pregs[PR_SRS];
60 60
    if (n < 16) {
61
        GET_REG32(env->regs[n]);
61
        return gdb_get_reg32(mem_buf, env->regs[n]);
62 62
    }
63 63

  
64 64
    if (n >= 21 && n < 32) {
65
        GET_REG32(env->pregs[n - 16]);
65
        return gdb_get_reg32(mem_buf, env->pregs[n - 16]);
66 66
    }
67 67
    if (n >= 33 && n < 49) {
68
        GET_REG32(env->sregs[srs][n - 33]);
68
        return gdb_get_reg32(mem_buf, env->sregs[srs][n - 33]);
69 69
    }
70 70
    switch (n) {
71 71
    case 16:
72
        GET_REG8(env->pregs[0]);
72
        return gdb_get_reg8(mem_buf, env->pregs[0]);
73 73
    case 17:
74
        GET_REG8(env->pregs[1]);
74
        return gdb_get_reg8(mem_buf, env->pregs[1]);
75 75
    case 18:
76
        GET_REG32(env->pregs[2]);
76
        return gdb_get_reg32(mem_buf, env->pregs[2]);
77 77
    case 19:
78
        GET_REG8(srs);
78
        return gdb_get_reg8(mem_buf, srs);
79 79
    case 20:
80
        GET_REG16(env->pregs[4]);
80
        return gdb_get_reg16(mem_buf, env->pregs[4]);
81 81
    case 32:
82
        GET_REG32(env->pc);
82
        return gdb_get_reg32(mem_buf, env->pc);
83 83
    }
84 84

  
85 85
    return 0;
b/target-i386/gdbstub.c
39 39
{
40 40
    if (n < CPU_NB_REGS) {
41 41
        if (TARGET_LONG_BITS == 64 && env->hflags & HF_CS64_MASK) {
42
            GET_REG64(env->regs[gpr_map[n]]);
42
            return gdb_get_reg64(mem_buf, env->regs[gpr_map[n]]);
43 43
        } else if (n < CPU_NB_REGS32) {
44
            GET_REG32(env->regs[gpr_map32[n]]);
44
            return gdb_get_reg32(mem_buf, env->regs[gpr_map32[n]]);
45 45
        }
46 46
    } else if (n >= IDX_FP_REGS && n < IDX_FP_REGS + 8) {
47 47
#ifdef USE_X86LDOUBLE
......
63 63
        switch (n) {
64 64
        case IDX_IP_REG:
65 65
            if (TARGET_LONG_BITS == 64 && env->hflags & HF_CS64_MASK) {
66
                GET_REG64(env->eip);
66
                return gdb_get_reg64(mem_buf, env->eip);
67 67
            } else {
68
                GET_REG32(env->eip);
68
                return gdb_get_reg32(mem_buf, env->eip);
69 69
            }
70 70
        case IDX_FLAGS_REG:
71
            GET_REG32(env->eflags);
71
            return gdb_get_reg32(mem_buf, env->eflags);
72 72

  
73 73
        case IDX_SEG_REGS:
74
            GET_REG32(env->segs[R_CS].selector);
74
            return gdb_get_reg32(mem_buf, env->segs[R_CS].selector);
75 75
        case IDX_SEG_REGS + 1:
76
            GET_REG32(env->segs[R_SS].selector);
76
            return gdb_get_reg32(mem_buf, env->segs[R_SS].selector);
77 77
        case IDX_SEG_REGS + 2:
78
            GET_REG32(env->segs[R_DS].selector);
78
            return gdb_get_reg32(mem_buf, env->segs[R_DS].selector);
79 79
        case IDX_SEG_REGS + 3:
80
            GET_REG32(env->segs[R_ES].selector);
80
            return gdb_get_reg32(mem_buf, env->segs[R_ES].selector);
81 81
        case IDX_SEG_REGS + 4:
82
            GET_REG32(env->segs[R_FS].selector);
82
            return gdb_get_reg32(mem_buf, env->segs[R_FS].selector);
83 83
        case IDX_SEG_REGS + 5:
84
            GET_REG32(env->segs[R_GS].selector);
84
            return gdb_get_reg32(mem_buf, env->segs[R_GS].selector);
85 85

  
86 86
        case IDX_FP_REGS + 8:
87
            GET_REG32(env->fpuc);
87
            return gdb_get_reg32(mem_buf, env->fpuc);
88 88
        case IDX_FP_REGS + 9:
89
            GET_REG32((env->fpus & ~0x3800) |
90
                      (env->fpstt & 0x7) << 11);
89
            return gdb_get_reg32(mem_buf, (env->fpus & ~0x3800) |
90
                                          (env->fpstt & 0x7) << 11);
91 91
        case IDX_FP_REGS + 10:
92
            GET_REG32(0); /* ftag */
92
            return gdb_get_reg32(mem_buf, 0); /* ftag */
93 93
        case IDX_FP_REGS + 11:
94
            GET_REG32(0); /* fiseg */
94
            return gdb_get_reg32(mem_buf, 0); /* fiseg */
95 95
        case IDX_FP_REGS + 12:
96
            GET_REG32(0); /* fioff */
96
            return gdb_get_reg32(mem_buf, 0); /* fioff */
97 97
        case IDX_FP_REGS + 13:
98
            GET_REG32(0); /* foseg */
98
            return gdb_get_reg32(mem_buf, 0); /* foseg */
99 99
        case IDX_FP_REGS + 14:
100
            GET_REG32(0); /* fooff */
100
            return gdb_get_reg32(mem_buf, 0); /* fooff */
101 101
        case IDX_FP_REGS + 15:
102
            GET_REG32(0); /* fop */
102
            return gdb_get_reg32(mem_buf, 0); /* fop */
103 103

  
104 104
        case IDX_MXCSR_REG:
105
            GET_REG32(env->mxcsr);
105
            return gdb_get_reg32(mem_buf, env->mxcsr);
106 106
        }
107 107
    }
108 108
    return 0;
b/target-lm32/gdbstub.c
22 22
static int cpu_gdb_read_register(CPULM32State *env, uint8_t *mem_buf, int n)
23 23
{
24 24
    if (n < 32) {
25
        GET_REG32(env->regs[n]);
25
        return gdb_get_reg32(mem_buf, env->regs[n]);
26 26
    } else {
27 27
        switch (n) {
28 28
        case 32:
29
            GET_REG32(env->pc);
29
            return gdb_get_reg32(mem_buf, env->pc);
30 30
        /* FIXME: put in right exception ID */
31 31
        case 33:
32
            GET_REG32(0);
32
            return gdb_get_reg32(mem_buf, 0);
33 33
        case 34:
34
            GET_REG32(env->eba);
34
            return gdb_get_reg32(mem_buf, env->eba);
35 35
        case 35:
36
            GET_REG32(env->deba);
36
            return gdb_get_reg32(mem_buf, env->deba);
37 37
        case 36:
38
            GET_REG32(env->ie);
38
            return gdb_get_reg32(mem_buf, env->ie);
39 39
        case 37:
40
            GET_REG32(lm32_pic_get_im(env->pic_state));
40
            return gdb_get_reg32(mem_buf, lm32_pic_get_im(env->pic_state));
41 41
        case 38:
42
            GET_REG32(lm32_pic_get_ip(env->pic_state));
42
            return gdb_get_reg32(mem_buf, lm32_pic_get_ip(env->pic_state));
43 43
        }
44 44
    }
45 45
    return 0;
b/target-m68k/gdbstub.c
22 22
{
23 23
    if (n < 8) {
24 24
        /* D0-D7 */
25
        GET_REG32(env->dregs[n]);
25
        return gdb_get_reg32(mem_buf, env->dregs[n]);
26 26
    } else if (n < 16) {
27 27
        /* A0-A7 */
28
        GET_REG32(env->aregs[n - 8]);
28
        return gdb_get_reg32(mem_buf, env->aregs[n - 8]);
29 29
    } else {
30 30
        switch (n) {
31 31
        case 16:
32
            GET_REG32(env->sr);
32
            return gdb_get_reg32(mem_buf, env->sr);
33 33
        case 17:
34
            GET_REG32(env->pc);
34
            return gdb_get_reg32(mem_buf, env->pc);
35 35
        }
36 36
    }
37 37
    /* FP registers not included here because they vary between
b/target-microblaze/gdbstub.c
21 21
static int cpu_gdb_read_register(CPUMBState *env, uint8_t *mem_buf, int n)
22 22
{
23 23
    if (n < 32) {
24
        GET_REG32(env->regs[n]);
24
        return gdb_get_reg32(mem_buf, env->regs[n]);
25 25
    } else {
26
        GET_REG32(env->sregs[n - 32]);
26
        return gdb_get_reg32(mem_buf, env->sregs[n - 32]);
27 27
    }
28 28
    return 0;
29 29
}
b/target-mips/gdbstub.c
21 21
static int cpu_gdb_read_register(CPUMIPSState *env, uint8_t *mem_buf, int n)
22 22
{
23 23
    if (n < 32) {
24
        GET_REGL(env->active_tc.gpr[n]);
24
        return gdb_get_regl(mem_buf, env->active_tc.gpr[n]);
25 25
    }
26 26
    if (env->CP0_Config1 & (1 << CP0C1_FP)) {
27 27
        if (n >= 38 && n < 70) {
28 28
            if (env->CP0_Status & (1 << CP0St_FR)) {
29
                GET_REGL(env->active_fpu.fpr[n - 38].d);
29
                return gdb_get_regl(mem_buf,
30
                    env->active_fpu.fpr[n - 38].d);
30 31
            } else {
31
                GET_REGL(env->active_fpu.fpr[n - 38].w[FP_ENDIAN_IDX]);
32
                return gdb_get_regl(mem_buf,
33
                    env->active_fpu.fpr[n - 38].w[FP_ENDIAN_IDX]);
32 34
            }
33 35
        }
34 36
        switch (n) {
35 37
        case 70:
36
            GET_REGL((int32_t)env->active_fpu.fcr31);
38
            return gdb_get_regl(mem_buf, (int32_t)env->active_fpu.fcr31);
37 39
        case 71:
38
            GET_REGL((int32_t)env->active_fpu.fcr0);
40
            return gdb_get_regl(mem_buf, (int32_t)env->active_fpu.fcr0);
39 41
        }
40 42
    }
41 43
    switch (n) {
42 44
    case 32:
43
        GET_REGL((int32_t)env->CP0_Status);
45
        return gdb_get_regl(mem_buf, (int32_t)env->CP0_Status);
44 46
    case 33:
45
        GET_REGL(env->active_tc.LO[0]);
47
        return gdb_get_regl(mem_buf, env->active_tc.LO[0]);
46 48
    case 34:
47
        GET_REGL(env->active_tc.HI[0]);
49
        return gdb_get_regl(mem_buf, env->active_tc.HI[0]);
48 50
    case 35:
49
        GET_REGL(env->CP0_BadVAddr);
51
        return gdb_get_regl(mem_buf, env->CP0_BadVAddr);
50 52
    case 36:
51
        GET_REGL((int32_t)env->CP0_Cause);
53
        return gdb_get_regl(mem_buf, (int32_t)env->CP0_Cause);
52 54
    case 37:
53
        GET_REGL(env->active_tc.PC | !!(env->hflags & MIPS_HFLAG_M16));
55
        return gdb_get_regl(mem_buf, env->active_tc.PC |
56
                                     !!(env->hflags & MIPS_HFLAG_M16));
54 57
    case 72:
55
        GET_REGL(0); /* fp */
58
        return gdb_get_regl(mem_buf, 0); /* fp */
56 59
    case 89:
57
        GET_REGL((int32_t)env->CP0_PRid);
60
        return gdb_get_regl(mem_buf, (int32_t)env->CP0_PRid);
58 61
    }
59 62
    if (n >= 73 && n <= 88) {
60 63
        /* 16 embedded regs.  */
61
        GET_REGL(0);
64
        return gdb_get_regl(mem_buf, 0);
62 65
    }
63 66

  
64 67
    return 0;
b/target-openrisc/gdbstub.c
21 21
static int cpu_gdb_read_register(CPUOpenRISCState *env, uint8_t *mem_buf, int n)
22 22
{
23 23
    if (n < 32) {
24
        GET_REG32(env->gpr[n]);
24
        return gdb_get_reg32(mem_buf, env->gpr[n]);
25 25
    } else {
26 26
        switch (n) {
27 27
        case 32:    /* PPC */
28
            GET_REG32(env->ppc);
28
            return gdb_get_reg32(mem_buf, env->ppc);
29 29

  
30 30
        case 33:    /* NPC */
31
            GET_REG32(env->npc);
31
            return gdb_get_reg32(mem_buf, env->npc);
32 32

  
33 33
        case 34:    /* SR */
34
            GET_REG32(env->sr);
34
            return gdb_get_reg32(mem_buf, env->sr);
35 35

  
36 36
        default:
37 37
            break;
b/target-ppc/gdbstub.c
29 29
{
30 30
    if (n < 32) {
31 31
        /* gprs */
32
        GET_REGL(env->gpr[n]);
32
        return gdb_get_regl(mem_buf, env->gpr[n]);
33 33
    } else if (n < 64) {
34 34
        /* fprs */
35 35
        if (gdb_has_xml) {
......
40 40
    } else {
41 41
        switch (n) {
42 42
        case 64:
43
            GET_REGL(env->nip);
43
            return gdb_get_regl(mem_buf, env->nip);
44 44
        case 65:
45
            GET_REGL(env->msr);
45
            return gdb_get_regl(mem_buf, env->msr);
46 46
        case 66:
47 47
            {
48 48
                uint32_t cr = 0;
......
50 50
                for (i = 0; i < 8; i++) {
51 51
                    cr |= env->crf[i] << (32 - ((i + 1) * 4));
52 52
                }
53
                GET_REG32(cr);
53
                return gdb_get_reg32(mem_buf, cr);
54 54
            }
55 55
        case 67:
56
            GET_REGL(env->lr);
56
            return gdb_get_regl(mem_buf, env->lr);
57 57
        case 68:
58
            GET_REGL(env->ctr);
58
            return gdb_get_regl(mem_buf, env->ctr);
59 59
        case 69:
60
            GET_REGL(env->xer);
60
            return gdb_get_regl(mem_buf, env->xer);
61 61
        case 70:
62 62
            {
63 63
                if (gdb_has_xml) {
64 64
                    return 0;
65 65
                }
66
                GET_REG32(env->fpscr);
66
                return gdb_get_reg32(mem_buf, env->fpscr);
67 67
            }
68 68
        }
69 69
    }
b/target-s390x/gdbstub.c
27 27
    case S390_PSWM_REGNUM:
28 28
        cc_op = calc_cc(env, env->cc_op, env->cc_src, env->cc_dst, env->cc_vr);
29 29
        val = deposit64(env->psw.mask, 44, 2, cc_op);
30
        GET_REGL(val);
30
        return gdb_get_regl(mem_buf, val);
31 31
    case S390_PSWA_REGNUM:
32
        GET_REGL(env->psw.addr);
32
        return gdb_get_regl(mem_buf, env->psw.addr);
33 33
    case S390_R0_REGNUM ... S390_R15_REGNUM:
34
        GET_REGL(env->regs[n-S390_R0_REGNUM]);
34
        return gdb_get_regl(mem_buf, env->regs[n-S390_R0_REGNUM]);
35 35
    case S390_A0_REGNUM ... S390_A15_REGNUM:
36
        GET_REG32(env->aregs[n-S390_A0_REGNUM]);
36
        return gdb_get_reg32(mem_buf, env->aregs[n-S390_A0_REGNUM]);
37 37
    case S390_FPC_REGNUM:
38
        GET_REG32(env->fpc);
38
        return gdb_get_reg32(mem_buf, env->fpc);
39 39
    case S390_F0_REGNUM ... S390_F15_REGNUM:
40
        GET_REG64(env->fregs[n-S390_F0_REGNUM].ll);
40
        return gdb_get_reg64(mem_buf, env->fregs[n-S390_F0_REGNUM].ll);
41 41
    }
42 42

  
43 43
    return 0;
b/target-sh4/gdbstub.c
26 26
    switch (n) {
27 27
    case 0 ... 7:
28 28
        if ((env->sr & (SR_MD | SR_RB)) == (SR_MD | SR_RB)) {
29
            GET_REGL(env->gregs[n + 16]);
29
            return gdb_get_regl(mem_buf, env->gregs[n + 16]);
30 30
        } else {
31
            GET_REGL(env->gregs[n]);
31
            return gdb_get_regl(mem_buf, env->gregs[n]);
32 32
        }
33 33
    case 8 ... 15:
34
        GET_REGL(env->gregs[n]);
34
        return gdb_get_regl(mem_buf, env->gregs[n]);
35 35
    case 16:
36
        GET_REGL(env->pc);
36
        return gdb_get_regl(mem_buf, env->pc);
37 37
    case 17:
38
        GET_REGL(env->pr);
38
        return gdb_get_regl(mem_buf, env->pr);
39 39
    case 18:
40
        GET_REGL(env->gbr);
40
        return gdb_get_regl(mem_buf, env->gbr);
41 41
    case 19:
42
        GET_REGL(env->vbr);
42
        return gdb_get_regl(mem_buf, env->vbr);
43 43
    case 20:
44
        GET_REGL(env->mach);
44
        return gdb_get_regl(mem_buf, env->mach);
45 45
    case 21:
46
        GET_REGL(env->macl);
46
        return gdb_get_regl(mem_buf, env->macl);
47 47
    case 22:
48
        GET_REGL(env->sr);
48
        return gdb_get_regl(mem_buf, env->sr);
49 49
    case 23:
50
        GET_REGL(env->fpul);
50
        return gdb_get_regl(mem_buf, env->fpul);
51 51
    case 24:
52
        GET_REGL(env->fpscr);
52
        return gdb_get_regl(mem_buf, env->fpscr);
53 53
    case 25 ... 40:
54 54
        if (env->fpscr & FPSCR_FR) {
55 55
            stfl_p(mem_buf, env->fregs[n - 9]);
......
58 58
        }
59 59
        return 4;
60 60
    case 41:
61
        GET_REGL(env->ssr);
61
        return gdb_get_regl(mem_buf, env->ssr);
62 62
    case 42:
63
        GET_REGL(env->spc);
63
        return gdb_get_regl(mem_buf, env->spc);
64 64
    case 43 ... 50:
65
        GET_REGL(env->gregs[n - 43]);
65
        return gdb_get_regl(mem_buf, env->gregs[n - 43]);
66 66
    case 51 ... 58:
67
        GET_REGL(env->gregs[n - (51 - 16)]);
67
        return gdb_get_regl(mem_buf, env->gregs[n - (51 - 16)]);
68 68
    }
69 69

  
70 70
    return 0;
b/target-sparc/gdbstub.c
19 19
 */
20 20

  
21 21
#ifdef TARGET_ABI32
22
#define GET_REGA(val) GET_REG32(val)
22
#define gdb_get_rega(buf, val) gdb_get_reg32(buf, val)
23 23
#else
24
#define GET_REGA(val) GET_REGL(val)
24
#define gdb_get_rega(buf, val) gdb_get_regl(buf, val)
25 25
#endif
26 26

  
27 27
static int cpu_gdb_read_register(CPUSPARCState *env, uint8_t *mem_buf, int n)
28 28
{
29 29
    if (n < 8) {
30 30
        /* g0..g7 */
31
        GET_REGA(env->gregs[n]);
31
        return gdb_get_rega(mem_buf, env->gregs[n]);
32 32
    }
33 33
    if (n < 32) {
34 34
        /* register window */
35
        GET_REGA(env->regwptr[n - 8]);
35
        return gdb_get_rega(mem_buf, env->regwptr[n - 8]);
36 36
    }
37 37
#if defined(TARGET_ABI32) || !defined(TARGET_SPARC64)
38 38
    if (n < 64) {
39 39
        /* fprs */
40 40
        if (n & 1) {
41
            GET_REG32(env->fpr[(n - 32) / 2].l.lower);
41
            return gdb_get_reg32(mem_buf, env->fpr[(n - 32) / 2].l.lower);
42 42
        } else {
43
            GET_REG32(env->fpr[(n - 32) / 2].l.upper);
43
            return gdb_get_reg32(mem_buf, env->fpr[(n - 32) / 2].l.upper);
44 44
        }
45 45
    }
46 46
    /* Y, PSR, WIM, TBR, PC, NPC, FPSR, CPSR */
47 47
    switch (n) {
48 48
    case 64:
49
        GET_REGA(env->y);
49
        return gdb_get_rega(mem_buf, env->y);
50 50
    case 65:
51
        GET_REGA(cpu_get_psr(env));
51
        return gdb_get_rega(mem_buf, cpu_get_psr(env));
52 52
    case 66:
53
        GET_REGA(env->wim);
53
        return gdb_get_rega(mem_buf, env->wim);
54 54
    case 67:
55
        GET_REGA(env->tbr);
55
        return gdb_get_rega(mem_buf, env->tbr);
56 56
    case 68:
57
        GET_REGA(env->pc);
57
        return gdb_get_rega(mem_buf, env->pc);
58 58
    case 69:
59
        GET_REGA(env->npc);
59
        return gdb_get_rega(mem_buf, env->npc);
60 60
    case 70:
61
        GET_REGA(env->fsr);
61
        return gdb_get_rega(mem_buf, env->fsr);
62 62
    case 71:
63
        GET_REGA(0); /* csr */
63
        return gdb_get_rega(mem_buf, 0); /* csr */
64 64
    default:
65
        GET_REGA(0);
65
        return gdb_get_rega(mem_buf, 0);
66 66
    }
67 67
#else
68 68
    if (n < 64) {
69 69
        /* f0-f31 */
70 70
        if (n & 1) {
71
            GET_REG32(env->fpr[(n - 32) / 2].l.lower);
71
            return gdb_get_reg32(mem_buf, env->fpr[(n - 32) / 2].l.lower);
72 72
        } else {
73
            GET_REG32(env->fpr[(n - 32) / 2].l.upper);
73
            return gdb_get_reg32(mem_buf, env->fpr[(n - 32) / 2].l.upper);
74 74
        }
75 75
    }
76 76
    if (n < 80) {
77 77
        /* f32-f62 (double width, even numbers only) */
78
        GET_REG64(env->fpr[(n - 32) / 2].ll);
78
        return gdb_get_reg64(mem_buf, env->fpr[(n - 32) / 2].ll);
79 79
    }
80 80
    switch (n) {
81 81
    case 80:
82
        GET_REGL(env->pc);
82
        return gdb_get_regl(mem_buf, env->pc);
83 83
    case 81:
84
        GET_REGL(env->npc);
84
        return gdb_get_regl(mem_buf, env->npc);
85 85
    case 82:
86
        GET_REGL((cpu_get_ccr(env) << 32) |
87
                 ((env->asi & 0xff) << 24) |
88
                 ((env->pstate & 0xfff) << 8) |
89
                 cpu_get_cwp64(env));
86
        return gdb_get_regl(mem_buf, (cpu_get_ccr(env) << 32) |
87
                                     ((env->asi & 0xff) << 24) |
88
                                     ((env->pstate & 0xfff) << 8) |
89
                                     cpu_get_cwp64(env));
90 90
    case 83:
91
        GET_REGL(env->fsr);
91
        return gdb_get_regl(mem_buf, env->fsr);
92 92
    case 84:
93
        GET_REGL(env->fprs);
93
        return gdb_get_regl(mem_buf, env->fprs);
94 94
    case 85:
95
        GET_REGL(env->y);
95
        return gdb_get_regl(mem_buf, env->y);
96 96
    }
97 97
#endif
98 98
    return 0;
b/target-xtensa/gdbstub.c
28 28

  
29 29
    switch (reg->type) {
30 30
    case 9: /*pc*/
31
        GET_REG32(env->pc);
31
        return gdb_get_reg32(mem_buf, env->pc);
32 32

  
33 33
    case 1: /*ar*/
34 34
        xtensa_sync_phys_from_window(env);
35
        GET_REG32(env->phys_regs[(reg->targno & 0xff) % env->config->nareg]);
35
        return gdb_get_reg32(mem_buf, env->phys_regs[(reg->targno & 0xff)
36
                                                     % env->config->nareg]);
36 37

  
37 38
    case 2: /*SR*/
38
        GET_REG32(env->sregs[reg->targno & 0xff]);
39
        return gdb_get_reg32(mem_buf, env->sregs[reg->targno & 0xff]);
39 40

  
40 41
    case 3: /*UR*/
41
        GET_REG32(env->uregs[reg->targno & 0xff]);
42
        return gdb_get_reg32(mem_buf, env->uregs[reg->targno & 0xff]);
42 43

  
43 44
    case 4: /*f*/
44
        GET_REG32(float32_val(env->fregs[reg->targno & 0x0f]));
45
        return gdb_get_reg32(mem_buf, float32_val(env->fregs[reg->targno
46
                                                             & 0x0f]));
45 47

  
46 48
    case 8: /*a*/
47
        GET_REG32(env->regs[reg->targno & 0x0f]);
49
        return gdb_get_reg32(mem_buf, env->regs[reg->targno & 0x0f]);
48 50

  
49 51
    default:
50 52
        qemu_log("%s from reg %d of unsupported type %d\n",

Also available in: Unified diff