)]}'
{
  "commit": "f2b4a98930c122648e9dc494e49cea5dffbcc2be",
  "tree": "d9efa553d1f508012bc17b4ee64254cb7e72990a",
  "parents": [
    "282a48eca4c84c3f146165aab3a64e82b4b60670"
  ],
  "author": {
    "name": "Peter Maydell",
    "email": "peter.maydell@linaro.org",
    "time": "Tue Feb 06 13:29:22 2024 +0000"
  },
  "committer": {
    "name": "Peter Maydell",
    "email": "peter.maydell@linaro.org",
    "time": "Thu Feb 15 14:32:38 2024 +0000"
  },
  "message": "target/arm: Allow access to SPSR_hyp from hyp mode\n\nArchitecturally, the AArch32 MSR/MRS to/from banked register\ninstructions are UNPREDICTABLE for attempts to access a banked\nregister that the guest could access in a more direct way (e.g.\nusing this insn to access r8_fiq when already in FIQ mode).  QEMU has\nchosen to UNDEF on all of these.\n\nHowever, for the case of accessing SPSR_hyp from hyp mode, it turns\nout that real hardware permits this, with the same effect as if the\nguest had directly written to SPSR. Further, there is some\nguest code out there that assumes it can do this, because it\nhappens to work on hardware: an example Cortex-R52 startup code\nfragment uses this, and it got copied into various other places,\nincluding Zephyr. Zephyr was fixed to not use this:\n https://github.com/zephyrproject-rtos/zephyr/issues/47330\nbut other examples are still out there, like the selftest\nbinary for the MPS3-AN536.\n\nFor convenience of being able to run guest code, permit\nthis UNPREDICTABLE access instead of UNDEFing it.\n\nSigned-off-by: Peter Maydell \u003cpeter.maydell@linaro.org\u003e\nReviewed-by: Richard Henderson \u003crichard.henderson@linaro.org\u003e\nMessage-id: 20240206132931.38376-5-peter.maydell@linaro.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b5ac26061c785969e98a6f49f8c99caa910de632",
      "old_mode": 33188,
      "old_path": "target/arm/tcg/op_helper.c",
      "new_id": "c199b69fbff3f87e49a823a4a256f124f9c4b247",
      "new_mode": 33188,
      "new_path": "target/arm/tcg/op_helper.c"
    },
    {
      "type": "modify",
      "old_id": "5fa82497238735244aaef97c52989a7932f2b9c0",
      "old_mode": 33188,
      "old_path": "target/arm/tcg/translate.c",
      "new_id": "f947c62c6bedf2bdb7d1d4d59188621056084694",
      "new_mode": 33188,
      "new_path": "target/arm/tcg/translate.c"
    }
  ]
}
