)]}'
{
  "commit": "803f4e1eab7a8938ba3a3c30dd4eb5e9eeef5e63",
  "tree": "4a7096939a4a914eedad1fba212cee0e88ba3ec5",
  "parents": [
    "d40d8179482c330df5b9049797fe94c2e8eb4f6e"
  ],
  "author": {
    "name": "Arnd Bergmann",
    "email": "arnd@arndb.de",
    "time": "Sat May 08 00:07:57 2021 +0200"
  },
  "committer": {
    "name": "Arnd Bergmann",
    "email": "arnd@arndb.de",
    "time": "Mon May 17 13:30:29 2021 +0200"
  },
  "message": "asm-generic: simplify asm/unaligned.h\n\nThe get_unaligned()/put_unaligned() implementations are much more complex\nthan necessary, now that all architectures use the same code.\n\nMove everything into one file and use a much more compact way to express\nthe same logic.\n\nI\u0027ve compared the binary output using gcc-11 across defconfig builds for\nall architectures and found this patch to make no difference, except for\na single function on powerpc that needs two additional register moves\nbecause of random differences in register allocation.\n\nThere are a handful of callers of the low-level __get_unaligned_cpu32,\nso leave that in place for the time being even though the common code\nno longer uses it.\n\nThis adds a warning for any caller of get_unaligned()/put_unaligned()\nthat passes in a single-byte pointer, but I\u0027ve sent patches for all\ninstances that show up in x86 and randconfig builds. It would be nice\nto change the arguments of the endian-specific accessors to take the\nmatching __be16/__be32/__be64/__le16/__le32/__le64 arguments instead of\na void pointer, but that requires more changes to the rest of the kernel.\n\nThis new version does allow aggregate types into get_unaligned(), which\nwas not the original goal but might come in handy.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "36bf03aaa674073cc1a62ca3404b5ca7fa29ce36",
      "old_mode": 33188,
      "old_path": "include/asm-generic/unaligned.h",
      "new_id": "1c4242416c9ff6f08d43c1c423d9890bcecbbf92",
      "new_mode": 33188,
      "new_path": "include/asm-generic/unaligned.h"
    },
    {
      "type": "delete",
      "old_id": "76d9fe297c3329f56d8fe85cfc44f68788fa2500",
      "old_mode": 33188,
      "old_path": "include/linux/unaligned/be_struct.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "30328949285916e51733a205875a17323bf5a8d6",
      "old_mode": 33188,
      "old_path": "include/linux/unaligned/generic.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "22f90a4afaa524d172fc5039a78184c086105e35",
      "old_mode": 33188,
      "old_path": "include/linux/unaligned/le_struct.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    }
  ]
}
