Revision e64d7d59 hw/eccmemctl.c
b/hw/eccmemctl.c | ||
---|---|---|
114 | 114 |
|
115 | 115 |
#define ECC_NREGS 9 |
116 | 116 |
#define ECC_SIZE (ECC_NREGS * sizeof(uint32_t)) |
117 |
#define ECC_ADDR_MASK 0x1f |
|
118 | 117 |
|
119 | 118 |
#define ECC_DIAG_SIZE 4 |
120 | 119 |
#define ECC_DIAG_MASK (ECC_DIAG_SIZE - 1) |
... | ... | |
129 | 128 |
{ |
130 | 129 |
ECCState *s = opaque; |
131 | 130 |
|
132 |
switch ((addr & ECC_ADDR_MASK) >> 2) {
|
|
131 |
switch (addr >> 2) {
|
|
133 | 132 |
case ECC_MER: |
134 | 133 |
s->regs[ECC_MER] = (s->regs[ECC_MER] & (ECC_MER_VER | ECC_MER_IMPL)) | |
135 | 134 |
(val & ~(ECC_MER_VER | ECC_MER_IMPL)); |
... | ... | |
167 | 166 |
ECCState *s = opaque; |
168 | 167 |
uint32_t ret = 0; |
169 | 168 |
|
170 |
switch ((addr & ECC_ADDR_MASK) >> 2) {
|
|
169 |
switch (addr >> 2) {
|
|
171 | 170 |
case ECC_MER: |
172 | 171 |
ret = s->regs[ECC_MER]; |
173 | 172 |
DPRINTF("Read memory enable %08x\n", ret); |
... | ... | |
225 | 224 |
{ |
226 | 225 |
ECCState *s = opaque; |
227 | 226 |
|
228 |
DPRINTF("Write diagnostic[%d] = %02x\n", (int)(addr & ECC_DIAG_MASK), val);
|
|
227 |
DPRINTF("Write diagnostic[%d] = %02x\n", (int)addr, val);
|
|
229 | 228 |
s->diag[addr & ECC_DIAG_MASK] = val; |
230 | 229 |
} |
231 | 230 |
|
232 | 231 |
static uint32_t ecc_diag_mem_readb(void *opaque, target_phys_addr_t addr) |
233 | 232 |
{ |
234 | 233 |
ECCState *s = opaque; |
235 |
uint32_t ret = s->diag[addr & ECC_DIAG_MASK]; |
|
236 |
DPRINTF("Read diagnostic[%d] = %02x\n", (int)(addr & ECC_DIAG_MASK), ret); |
|
234 |
uint32_t ret = s->diag[(int)addr]; |
|
235 |
|
|
236 |
DPRINTF("Read diagnostic[%d] = %02x\n", (int)addr, ret); |
|
237 | 237 |
return ret; |
238 | 238 |
} |
239 | 239 |
|
Also available in: Unified diff