)]}'
{
  "commit": "d6be29e3fb5659102ac0e48e295d177cb67e32c5",
  "tree": "f5658b03ccd9c31765b3020f4ac1b35a599d860d",
  "parents": [
    "1aba4be97eb01b650d146c7f01dc961d55da62ab"
  ],
  "author": {
    "name": "Peter Maydell",
    "email": "peter.maydell@linaro.org",
    "time": "Thu Nov 13 14:56:09 2014 +0000"
  },
  "committer": {
    "name": "Peter Maydell",
    "email": "peter.maydell@linaro.org",
    "time": "Mon Nov 17 19:30:28 2014 +0000"
  },
  "message": "target-arm: handle address translations that start at level 3\n\nThe ARMv8 address translation system defines that a page table walk\nstarts at a level which depends on the translation granule size\nand the number of bits of virtual address that need to be resolved.\nWhere the translation granule is 64KB and the guest sets the\nTCR.TxSZ field to between 35 and 39, it\u0027s actually possible to\nstart at level 3 (the final level). QEMU\u0027s implementation failed\nto handle this case, and so we would set level to 2 and behave\nincorrectly (including invoking the C undefined behaviour of\nshifting left by a negative number). Correct the code that\ndetermines the starting level to deal with the start-at-3 case,\nby replacing the if-else ladder with an expression derived from\nthe ARM ARM pseudocode version.\n\nThis error was detected by the Coverity scan, which spotted\nthe potential shift by a negative number.\n\nSigned-off-by: Peter Maydell \u003cpeter.maydell@linaro.org\u003e\nMessage-id: 1415890569-7454-1-git-send-email-peter.maydell@linaro.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c47487a0af76a69a2ebf78bd869404d35bb3116e",
      "old_mode": 33188,
      "old_path": "target-arm/helper.c",
      "new_id": "b74d348a3b74461e24f26f7f2b248947e2323bab",
      "new_mode": 33188,
      "new_path": "target-arm/helper.c"
    }
  ]
}
