)]}'
{
  "commit": "16c358e96e0597b7d60754547166ad05ecc6d93d",
  "tree": "a6dd01d544604c356119994ac6d36f37eb362ed1",
  "parents": [
    "239618707637ec87eba8c452d2b2f75dc5ca20c7"
  ],
  "author": {
    "name": "Sebastian Huber",
    "email": "sebastian.huber@embedded-brains.de",
    "time": "Tue Mar 11 10:36:00 2014 +0100"
  },
  "committer": {
    "name": "Mark Cave-Ayland",
    "email": "mark.cave-ayland@ilande.co.uk",
    "time": "Wed Mar 12 00:22:01 2014 +0000"
  },
  "message": "target-sparc: Add and use CPU_FEATURE_CASA\n\nThe LEON3 processor has support for the CASA instruction which is\nnormally only available for SPARC V9 processors.  Binutils 2.24\nand GCC 4.9 will support this instruction for LEON3.  GCC uses it to\ngenerate C11 atomic operations.\n\nThe CAS synthetic instruction uses an ASI of 0x80.  If TARGET_SPARC64 is\nnot defined use a supervisor data load/store for an ASI of 0x80 in\nhelper_ld_asi()/helper_st_asi().  The supervisor data load/store was\nchoosen according to the LEON3 documentation.\n\nThe ASI 0x80 is defined in the SPARC V9 manual, Table 12—Address Space\nIdentifiers (ASIs).  Here we have: 0x80, ASI_PRIMARY, Unrestricted\naccess, Primary address space.\n\nTested with the following program:\n\n  #include \u003cassert.h\u003e\n  #include \u003cstdatomic.h\u003e\n\n  void test(void)\n  {\n    atomic_int a;\n    int e;\n    _Bool b;\n\n    atomic_store(\u0026a, 1);\n    e \u003d 1;\n    b \u003d atomic_compare_exchange_strong(\u0026a, \u0026e, 2);\n    assert(b);\n    assert(atomic_load(\u0026a) \u003d\u003d 2);\n\n    atomic_store(\u0026a, 3);\n    e \u003d 4;\n    b \u003d atomic_compare_exchange_strong(\u0026a, \u0026e, 5);\n    assert(!b);\n    assert(atomic_load(\u0026a) \u003d\u003d 3);\n  }\n\nTested also on a NGMP board with a LEON4 processor.\n\nReviewed-by: Fabien Chouteau \u003cchouteau@adacore.com\u003e\nReviewed-by: Andreas Färber \u003cafaerber@suse.de\u003e\nTested-by: Mark Cave-Ayland \u003cmark.cave-ayland@ilande.co.uk\u003e\nReviewed-by: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Sebastian Huber \u003csebastian.huber@embedded-brains.de\u003e\nSigned-off-by: Mark Cave-Ayland \u003cmark.cave-ayland@ilande.co.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e7f878ee819c2cb8a5cc65553ba1fddd20b11326",
      "old_mode": 33188,
      "old_path": "target-sparc/cpu.c",
      "new_id": "5806e59af374f3d10242494a00cced9a0b8bfbd4",
      "new_mode": 33188,
      "new_path": "target-sparc/cpu.c"
    },
    {
      "type": "modify",
      "old_id": "c519063ba9b3b7e59b111778e470352439859ce4",
      "old_mode": 33188,
      "old_path": "target-sparc/cpu.h",
      "new_id": "ed6d2d120414bc892e1f7a22c64109985e005e2e",
      "new_mode": 33188,
      "new_path": "target-sparc/cpu.h"
    },
    {
      "type": "modify",
      "old_id": "2a771b20936481055abb57637b4ded3ee3354635",
      "old_mode": 33188,
      "old_path": "target-sparc/helper.h",
      "new_id": "cd8d3fa9f4cc75a4971781cb5a9f251a5dc01aa4",
      "new_mode": 33188,
      "new_path": "target-sparc/helper.h"
    },
    {
      "type": "modify",
      "old_id": "92761ad17bd439d9e6f76061e2aa921c8733baa0",
      "old_mode": 33188,
      "old_path": "target-sparc/ldst_helper.c",
      "new_id": "32491b499ad4831db6d07ca4b7e73aa565f505cf",
      "new_mode": 33188,
      "new_path": "target-sparc/ldst_helper.c"
    },
    {
      "type": "modify",
      "old_id": "6150b22f8f8118c66405c2c1e38598d1e88f3170",
      "old_mode": 33188,
      "old_path": "target-sparc/translate.c",
      "new_id": "46d7859e97fa83f8eaf046b3978534d50c63eb77",
      "new_mode": 33188,
      "new_path": "target-sparc/translate.c"
    }
  ]
}
