1. 15 Jun, 2009 1 commit
  2. 05 Jun, 2009 1 commit
  3. 16 May, 2009 3 commits
  4. 06 Mar, 2009 2 commits
    • Carl-Daniel Hailfinger's avatar
      FreeBSD definitions of (read|write)[bwl] collide with our own · 0472f3d8
      Carl-Daniel Hailfinger authored
      
      Before we attempt trickery, we can simply rename the accessor functions.
      
      Patch created with the help of Coccinelle.
      
      Corresponding to flashrom svn r420 and coreboot v2 svn r3984.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarIdwer Vollering <idwer_v@hotmail.com>
      Acked-by: default avatarPatrick Georgi <patrick@georgi-clan.de>
      0472f3d8
    • Carl-Daniel Hailfinger's avatar
      Reduce use of volatile variables · b8855697
      Carl-Daniel Hailfinger authored
      During the conversion of flash chip accesses to helper functions, I spotted
      assignments to volatile variables which were neither placed inside the mmapped
      ROM area nor were they counters.
      Due to the use of accessor functions, volatile usage can be reduced
      significantly because the accessor functions take care of actually
      performing the reads/writes correctly.
      
      The following semantic patch spotted them (linebreak in python string
      for readability reasons, please remove before usage):
      @r exists@
      expression b;
      typedef uint8_t;
      volatile uint8_t a;
      position p1;
      @@
       a@p1 = readb(b);
      
      @script:python@
      p1 << r.p1;
      a << r.a;
      b << r.b;
      @@
      print "* file: %s line %s has assignment to unnecessarily volatile
      variable: %s = readb(%s);" % (p1[0].file, p1[0].line, a, b)
      
      Result was:
      HANDLING: sst28sf040.c
      * file: sst28sf040.c line 44 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 43 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 42 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 41 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 40 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 39 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 38 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 58 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 57 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 56 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 55 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 54 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 53 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      * file: sst28sf040.c line 52 has assignment to unnecessarily volatile
      variable: tmp = readb(TODO: Binary);
      
      The following semantic patch uses the spatch builtin match printing
      functionality by prepending a "*" to the line with the pattern:
      @@
      expression b;
      typedef uint8_t;
      volatile uint8_t a;
      @@
      * a = readb(b);
      
      Result is:
      HANDLING: sst28sf040.c
      diff =
      -       tmp = readb(bios + 0x1823);
      -       tmp = readb(bios + 0x1820);
      -       tmp = readb(bios + 0x1822);
      -       tmp = readb(bios + 0x0418);
      -       tmp = readb(bios + 0x041B);
      -       tmp = readb(bios + 0x0419);
      -       tmp = readb(bios + 0x040A);
       }
       
       static __inline__ void unprotect_28sf040(volatile uint8_t *bios)
      @@ -49,13 +42,6 @@ static __inline__ void unprotect_28sf040
              /* ask compiler not to optimize this */
              volatile uint8_t tmp;
       
      -       tmp = readb(bios + 0x1823);
      -       tmp = readb(bios + 0x1820);
      -       tmp = readb(bios + 0x1822);
      -       tmp = readb(bios + 0x0418);
      -       tmp = readb(bios + 0x041B);
      -       tmp = readb(bios + 0x0419);
      -       tmp = readb(bios + 0x041A);
       }
       
       static __inline__ int erase_sector_28sf040(volatile uint8_t *bios,
      
      It's arguably a bit easier to read if you get used to the leading "-"
      for matching lines.
      
      This patch was enabled by Coccinelle:
      http://www.emn.fr/x-info/coccinelle/
      
      
      
      Corresponding to flashrom svn r419 and coreboot v2 svn r3973.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarJoseph Smith <joe@settoplinux.org>
      b8855697
  5. 05 Mar, 2009 1 commit
    • Carl-Daniel Hailfinger's avatar
      Use helper functions to access flash chips · 61a8bd27
      Carl-Daniel Hailfinger authored
      
      Right now we perform direct pointer manipulation without any abstraction
      to read from and write to memory mapped flash chips. That makes it
      impossible to drive any flasher which does not mmap the whole chip.
      
      Using helper functions readb() and writeb() allows a driver for external
      flash programmers like Paraflasher to replace readb and writeb with
      calls to its own chip access routines.
      
      This patch has the additional advantage of removing lots of unnecessary
      casts to volatile uint8_t * and now-superfluous parentheses which caused
      poor readability.
      
      I used the semantic patcher Coccinelle to create this patch. The
      semantic patch follows:
      @@
      expression a;
      typedef uint8_t;
      volatile uint8_t *b;
      @@
      - *(b) = (a);
      + writeb(a, b);
      @@
      volatile uint8_t *b;
      @@
      - *(b)
      + readb(b)
      @@
      type T;
      T b;
      @@
      (
       readb
      |
       writeb
      )
       (...,
      - (T)
      - (b)
      + b
       )
      
      In contrast to a sed script, the semantic patch performs type checking
      before converting anything.
      
      Tested-by: Joe Julian
      
      Corresponding to flashrom svn r418 and coreboot v2 svn r3971.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarFENG Yu Ning <fengyuning1984@gmail.com>
      61a8bd27
  6. 25 Jan, 2009 1 commit
  7. 17 Oct, 2007 1 commit
  8. 09 Sep, 2007 1 commit
  9. 29 Aug, 2007 1 commit
  10. 23 Aug, 2007 2 commits
  11. 13 Aug, 2007 1 commit
  12. 24 May, 2007 1 commit
  13. 23 May, 2007 1 commit
  14. 09 May, 2007 1 commit
  15. 26 Nov, 2005 1 commit
  16. 27 Mar, 2004 1 commit
  17. 20 Mar, 2004 1 commit
  18. 18 Mar, 2004 1 commit
  19. 12 Sep, 2003 1 commit
  20. 28 Feb, 2003 1 commit
  21. 29 Jan, 2002 2 commits