)]}'
{
  "commit": "78185dcb3c58552acb652780c4182a77a74f16f0",
  "tree": "81c15dc84a3217eb3359b300fea38bca68421ed0",
  "parents": [
    "05fab75d73019f430c16ad9a9d3800f8e7e40173"
  ],
  "author": {
    "name": "Carl-Daniel Hailfinger",
    "email": "c-d.hailfinger.devel.2006@gmx.net",
    "time": "Sun May 17 15:49:24 2009 +0000"
  },
  "committer": {
    "name": "Carl-Daniel Hailfinger",
    "email": "c-d.hailfinger.devel.2006@gmx.net",
    "time": "Sun May 17 15:49:24 2009 +0000"
  },
  "message": "Use accessor functions for MMIO\n\nSome MMIO accesses used volatile, others didn\u0027t (and risked\nnon-execution of side effects) and even with volatile, some accesses\nlooked dubious.\n\nSince the MMIO accessor functions and the onboard flash accessor\nfunctions are functionally identical (but have different signatures),\nmake the flash accessors wrappers for the MMIO accessors.\n\nFor some of the conversions, I used Coccinelle. Semantic patch follows:\n\n@@ typedef uint8_t; expression a; volatile uint8_t *b; @@ - b[a] + *(b\n+ a) @@ expression a; volatile uint8_t *b; @@ - *(b) |\u003d (a); + *(b) \u003d\n*(b) | (a); @@ expression a; volatile uint8_t *b; @@ - *(b) \u003d (a); +\nmmio_writeb(a, b); @@ volatile uint8_t *b; @@ - *(b) + mmio_readb(b) @@\ntype T; T b; @@ ( mmio_readb | mmio_writeb ) (..., - (T) - (b) + b )\n\nCorresponding to flashrom svn r524.\n\nSigned-off-by: Carl-Daniel Hailfinger \u003cc-d.hailfinger.devel.2006@gmx.net\u003e\n\nUwe tested read, write, erase with this patch on a random board to make\nsure nothing breaks.\n\nAcked-by: Uwe Hermann \u003cuwe@hermann-uwe.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d9e82ec86b9dce29b39cef8fe897f58e9776b832",
      "old_mode": 33188,
      "old_path": "chipset_enable.c",
      "new_id": "15e5df4ca2f9e057850ace88c4a233fc16012006",
      "new_mode": 33188,
      "new_path": "chipset_enable.c"
    },
    {
      "type": "modify",
      "old_id": "f6bdab0e0a42648625a9d5bbb9ea8eafa652b01f",
      "old_mode": 33188,
      "old_path": "flash.h",
      "new_id": "d172ac116231ab2baed74f5c7dcbc2aea0ce5408",
      "new_mode": 33188,
      "new_path": "flash.h"
    },
    {
      "type": "modify",
      "old_id": "4ddf2ad665ec92a8a7f5d16a71e7806725ab7be9",
      "old_mode": 33188,
      "old_path": "ichspi.c",
      "new_id": "5ae5f7d8de694cc163bc361d9372b7e4f09e8e15",
      "new_mode": 33188,
      "new_path": "ichspi.c"
    },
    {
      "type": "modify",
      "old_id": "a9829a82ed18dfc681bc0a8f21cf56b8d8d549ab",
      "old_mode": 33188,
      "old_path": "internal.c",
      "new_id": "d2a9ae21b363023094c8ac23ae3e5053bbb3a7a4",
      "new_mode": 33188,
      "new_path": "internal.c"
    },
    {
      "type": "modify",
      "old_id": "eaf92d2474246d9355ee1e55ed992ea7b561bc85",
      "old_mode": 33188,
      "old_path": "sb600spi.c",
      "new_id": "03e1ab8d8e9df76400add99a0e23f2a77c310afc",
      "new_mode": 33188,
      "new_path": "sb600spi.c"
    }
  ]
}
