)]}'
{
  "commit": "1b050077d2d72b15c73257c13e2e46932786f7e2",
  "tree": "dc42c285ca15dc1901ef7f6ae268d583521300d5",
  "parents": [
    "d9f4bb27dbff2e40ec2e36eb8017c9dedce77f30"
  ],
  "author": {
    "name": "Andre Przywara",
    "email": "andre.przywara@amd.com",
    "time": "Sat Sep 19 00:30:49 2009 +0200"
  },
  "committer": {
    "name": "Aurelien Jarno",
    "email": "aurelien@aurel32.net",
    "time": "Sun Oct 04 14:46:34 2009 +0200"
  },
  "message": "target-i386: add RDTSCP support\n\nRDTSCP reads the time stamp counter and atomically also the content\nof a 32-bit MSR, which can be freely set by the OS. This allows CPU\nlocal data to be queried by userspace.\nLinux uses this to allow a fast implementation of the getcpu()\nsyscall, which uses the vsyscall page to avoid a context switch.\nAMD CPUs since K8RevF and Intel CPUs since Nehalem support this\ninstruction.\nRDTSCP is guarded by the RDTSCP CPUID bit (Fn8000_0001:EDX[27]).\n\nSigned-off-by: Andre Przywara \u003candre.przywara@amd.com\u003e\nSigned-off-by: Aurelien Jarno \u003caurelien@aurel32.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b9a6392cf112344140044217be99cbcb2ea09457",
      "old_mode": 33188,
      "old_path": "target-i386/cpu.h",
      "new_id": "f318942eec1b68e05ba6708be43ffb524a413a66",
      "new_mode": 33188,
      "new_path": "target-i386/cpu.h"
    },
    {
      "type": "modify",
      "old_id": "68d57b130ad6729f684a1641c3da06e45e13be4d",
      "old_mode": 33188,
      "old_path": "target-i386/helper.h",
      "new_id": "ca953f47d9eb5a729a054d4e17ca452461c2be57",
      "new_mode": 33188,
      "new_path": "target-i386/helper.h"
    },
    {
      "type": "modify",
      "old_id": "ab3132902452b61784581ca4a7b35417be45c7f6",
      "old_mode": 33188,
      "old_path": "target-i386/machine.c",
      "new_id": "e5a060fcc2b70d495a32ffead7f934994f837e37",
      "new_mode": 33188,
      "new_path": "target-i386/machine.c"
    },
    {
      "type": "modify",
      "old_id": "33d44b0037db80cdee78b097555dbeb9c0947981",
      "old_mode": 33188,
      "old_path": "target-i386/op_helper.c",
      "new_id": "ef0acfcf0be6da336ac1772d4efb5f6fd8296f0e",
      "new_mode": 33188,
      "new_path": "target-i386/op_helper.c"
    },
    {
      "type": "modify",
      "old_id": "66aa21bb65f60e7959b1a0001cf8a0c535ce8ce9",
      "old_mode": 33188,
      "old_path": "target-i386/translate.c",
      "new_id": "82ee3d50f151c30ab5788e5c732d1a3e0b8c6d0e",
      "new_mode": 33188,
      "new_path": "target-i386/translate.c"
    }
  ]
}
