qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]