aboutsummaryrefslogtreecommitdiff
path: root/hw/arm/Makefile.objs
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-01-09 18:43:57 +0000
committerJason Wang <jasowang@redhat.com>2017-01-20 10:36:38 +0800
commit581f7b127dfe9ed10ce3216e440cc5be1582911b (patch)
tree778b6fcc6d21a2f46fbfa1ccdbc5bd73a30081f9 /hw/arm/Makefile.objs
parent6ac38ed42b3468e37f9ce681b65c796a3be4e387 (diff)
hw/net/dp8393x: Avoid unintentional sign extensions on addresses
The dp8393x has several 32-bit values which are formed by concatenating two 16 bit device register values. Attempting to do these inline with ((s->reg[HI] << 16) | s->reg[LO]) can result in an unintended sign extension because "x << 16" is of type 'int' even though s->reg is unsigned, and so if the expression is used in a context where it is cast to uint64_t the value is incorrectly sign-extended. Fix this by using accessor functions with a uint32_t return type; this also makes the code a bit easier to read. This should fix Coverity issues 1307765, 1307766, 1307767, 1307768. (To avoid having a ctda read function only used in a DPRINTF, we move the DPRINTF down slightly so it can use the ttda function.) Reviewed-by: Laurent Vivier <laurent@vivier.eu> Tested-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'hw/arm/Makefile.objs')
0 files changed, 0 insertions, 0 deletions