Revision 986a2998 target-sparc/gdbstub.c

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;

Also available in: Unified diff