Revision 97bf4851 hw/eccmemctl.c

b/hw/eccmemctl.c
23 23
 */
24 24

  
25 25
#include "sysbus.h"
26

  
27
//#define DEBUG_ECC
28

  
29
#ifdef DEBUG_ECC
30
#define DPRINTF(fmt, ...)                                       \
31
    do { printf("ECC: " fmt , ## __VA_ARGS__); } while (0)
32
#else
33
#define DPRINTF(fmt, ...)
34
#endif
26
#include "trace.h"
35 27

  
36 28
/* There are 3 versions of this chip used in SMP sun4m systems:
37 29
 * MCC (version 0, implementation 0) SS-600MP
......
148 140
            s->regs[ECC_MER] = s->version | (val & ECC_MER_MASK_1);
149 141
        else if (s->version == ECC_SMC)
150 142
            s->regs[ECC_MER] = s->version | (val & ECC_MER_MASK_2);
151
        DPRINTF("Write memory enable %08x\n", val);
143
        trace_ecc_mem_writel_mer(val);
152 144
        break;
153 145
    case ECC_MDR:
154 146
        s->regs[ECC_MDR] =  val & ECC_MDR_MASK;
155
        DPRINTF("Write memory delay %08x\n", val);
147
        trace_ecc_mem_writel_mdr(val);
156 148
        break;
157 149
    case ECC_MFSR:
158 150
        s->regs[ECC_MFSR] =  val;
159 151
        qemu_irq_lower(s->irq);
160
        DPRINTF("Write memory fault status %08x\n", val);
152
        trace_ecc_mem_writel_mfsr(val);
161 153
        break;
162 154
    case ECC_VCR:
163 155
        s->regs[ECC_VCR] =  val;
164
        DPRINTF("Write slot configuration %08x\n", val);
156
        trace_ecc_mem_writel_vcr(val);
165 157
        break;
166 158
    case ECC_DR:
167 159
        s->regs[ECC_DR] =  val;
168
        DPRINTF("Write diagnostic %08x\n", val);
160
        trace_ecc_mem_writel_dr(val);
169 161
        break;
170 162
    case ECC_ECR0:
171 163
        s->regs[ECC_ECR0] =  val;
172
        DPRINTF("Write event count 1 %08x\n", val);
164
        trace_ecc_mem_writel_ecr0(val);
173 165
        break;
174 166
    case ECC_ECR1:
175 167
        s->regs[ECC_ECR0] =  val;
176
        DPRINTF("Write event count 2 %08x\n", val);
168
        trace_ecc_mem_writel_ecr1(val);
177 169
        break;
178 170
    }
179 171
}
......
186 178
    switch (addr >> 2) {
187 179
    case ECC_MER:
188 180
        ret = s->regs[ECC_MER];
189
        DPRINTF("Read memory enable %08x\n", ret);
181
        trace_ecc_mem_readl_mer(ret);
190 182
        break;
191 183
    case ECC_MDR:
192 184
        ret = s->regs[ECC_MDR];
193
        DPRINTF("Read memory delay %08x\n", ret);
185
        trace_ecc_mem_readl_mdr(ret);
194 186
        break;
195 187
    case ECC_MFSR:
196 188
        ret = s->regs[ECC_MFSR];
197
        DPRINTF("Read memory fault status %08x\n", ret);
189
        trace_ecc_mem_readl_mfsr(ret);
198 190
        break;
199 191
    case ECC_VCR:
200 192
        ret = s->regs[ECC_VCR];
201
        DPRINTF("Read slot configuration %08x\n", ret);
193
        trace_ecc_mem_readl_vcr(ret);
202 194
        break;
203 195
    case ECC_MFAR0:
204 196
        ret = s->regs[ECC_MFAR0];
205
        DPRINTF("Read memory fault address 0 %08x\n", ret);
197
        trace_ecc_mem_readl_mfar0(ret);
206 198
        break;
207 199
    case ECC_MFAR1:
208 200
        ret = s->regs[ECC_MFAR1];
209
        DPRINTF("Read memory fault address 1 %08x\n", ret);
201
        trace_ecc_mem_readl_mfar1(ret);
210 202
        break;
211 203
    case ECC_DR:
212 204
        ret = s->regs[ECC_DR];
213
        DPRINTF("Read diagnostic %08x\n", ret);
205
        trace_ecc_mem_readl_dr(ret);
214 206
        break;
215 207
    case ECC_ECR0:
216 208
        ret = s->regs[ECC_ECR0];
217
        DPRINTF("Read event count 1 %08x\n", ret);
209
        trace_ecc_mem_readl_ecr0(ret);
218 210
        break;
219 211
    case ECC_ECR1:
220 212
        ret = s->regs[ECC_ECR0];
221
        DPRINTF("Read event count 2 %08x\n", ret);
213
        trace_ecc_mem_readl_ecr1(ret);
222 214
        break;
223 215
    }
224 216
    return ret;
......
241 233
{
242 234
    ECCState *s = opaque;
243 235

  
244
    DPRINTF("Write diagnostic[%d] = %02x\n", (int)addr, val);
236
    trace_ecc_diag_mem_writeb(addr, val);
245 237
    s->diag[addr & ECC_DIAG_MASK] = val;
246 238
}
247 239

  
......
250 242
    ECCState *s = opaque;
251 243
    uint32_t ret = s->diag[(int)addr];
252 244

  
253
    DPRINTF("Read diagnostic[%d] = %02x\n", (int)addr, ret);
245
    trace_ecc_diag_mem_readb(addr, ret);
254 246
    return ret;
255 247
}
256 248

  

Also available in: Unified diff