hw/arm/stellaris: Correct handling of GPTM TAR register

We don't implement very much of the GPTM TAR register, and what we
do is wrong. The "are we in RT mode?" field is in s->config, not
s->control. Correct this, use LOG_UNIMP rather than hw_error()
for the cases we don't support, and avoid an unlabelled fallthrough
that makes Coverity complain.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
This commit is contained in:
Peter Maydell 2014-05-13 16:09:39 +01:00
parent c3a699be3c
commit 1a7917210b

View File

@ -185,12 +185,19 @@ static uint64_t gptm_read(void *opaque, hwaddr offset,
case 0x44: /* TBPMR */ case 0x44: /* TBPMR */
return s->match_prescale[1]; return s->match_prescale[1];
case 0x48: /* TAR */ case 0x48: /* TAR */
if (s->control == 1) if (s->config == 1) {
return s->rtc; return s->rtc;
}
qemu_log_mask(LOG_UNIMP,
"GPTM: read of TAR but timer read not supported");
return 0;
case 0x4c: /* TBR */ case 0x4c: /* TBR */
hw_error("TODO: Timer value read\n"); qemu_log_mask(LOG_UNIMP,
"GPTM: read of TBR but timer read not supported");
return 0;
default: default:
hw_error("gptm_read: Bad offset 0x%x\n", (int)offset); qemu_log_mask(LOG_GUEST_ERROR,
"GPTM: read at bad offset 0x%x\n", (int)offset);
return 0; return 0;
} }
} }