[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 1637974] Re: dead code in pl080 functions
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [Bug 1637974] Re: dead code in pl080 functions |
Date: |
Mon, 31 Oct 2016 13:05:32 -0000 |
I have no requirement for a working pl080, since I have no guest code
that requires one. If somebody else (you?) wants to send a patch that
fixes it, I'm happy to review it.
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1637974
Title:
dead code in pl080 functions
Status in QEMU:
New
Bug description:
pl080 is arm dma controller virtual device.
source code path: hw/dma/pl080.c
I find there are two same dead code in pl080_read and pl080_write,
Here's the code, comments are my opinion:
=========================
240 static uint64_t pl080_read(void *opaque, hwaddr offset,
241 unsigned size)
242 {
243 PL080State *s = (PL080State *)opaque;
244 uint32_t i;
245 uint32_t mask;
246
247 if (offset >= 0xfe0 && offset < 0x1000) {
248 if (s->nchannels == 8) {
249 return pl080_id[(offset - 0xfe0) >> 2];
250 } else {
251 return pl081_id[(offset - 0xfe0) >> 2];
252 }
253 }
254 if (offset >= 0x100 && offset < 0x200) { //// here offset is
limited in 0x100~0x200
255 i = (offset & 0xe0) >> 5;
256 if (i >= s->nchannels)
257 goto bad_offset;
258 switch (offset >> 2) { //// then here, offset>>2
is in range 64~128
259 case 0: /* SrcAddr */ //// while the switch case
is 0,1,2,3,4,
260 return s->chan[i].src; //// so, NONE of the
switch case would be selected !
261 case 1: /* DestAddr */ //// this switch is A DEAD
CODE, it is contradictory with if.
262 return s->chan[i].dest;
263 case 2: /* LLI */
264 return s->chan[i].lli;
265 case 3: /* Control */
266 return s->chan[i].ctrl;
267 case 4: /* Configuration */
268 return s->chan[i].conf;
269 default:
270 goto bad_offset;
271 }
272 }
.....................................
=============================================
I guess, switch statement should like this :
switch((offset-0x100)>>2)
{
...
}
if this DEADCODE is not the author's original purpose,
Then there must be something in logic goes wrong, pl080 have NEVER works
correctly ?
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1637974/+subscriptions