)]}'
{
  "commit": "ff593e5abebd899b0b41c11280e2fbeff4103375",
  "tree": "d4ebafad5ab7a358114e82acd251379d01ba6855",
  "parents": [
    "c20363006af64cf397519da5e984b18e6bdffd82"
  ],
  "author": {
    "name": "Laurent Vivier",
    "email": "Laurent.Vivier@bull.net",
    "time": "Thu Oct 25 14:18:55 2007 +0200"
  },
  "committer": {
    "name": "Avi Kivity",
    "email": "avi@qumranet.com",
    "time": "Wed Jan 30 17:52:56 2008 +0200"
  },
  "message": "KVM: VMX: Let gcc to choose which registers to save (i386)\n\nThis patch lets GCC to determine which registers to save when we\nswitch to/from a VCPU in the case of intel i386.\n\n* Original code saves following registers:\n\n    eax, ebx, ecx, edx, edi, esi, ebp (using popa)\n\n* Patched code:\n\n  - informs GCC that we modify following registers\n    using the clobber description:\n\n    ebx, edi, rsi\n\n  - doesn\u0027t save eax because it is an output operand (vmx-\u003efail)\n\n  - cannot put ecx in clobber description because it is an input operand,\n    but as we modify it and we want to keep its value (vcpu), we must\n    save it (pop/push)\n\n  - ebp is saved (pop/push) because GCC seems to ignore its use the clobber\n    description.\n\n  - edx is saved (pop/push) because it is reserved by GCC (REGPARM) and\n    cannot be put in the clobber description.\n\n  - line \"mov (%%esp), %3 \\n\\t\" has been removed because %3\n    is ecx and ecx is restored just after.\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nSigned-off-by: Avi Kivity \u003cavi@qumranet.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "56c9bcc828368b36ab85d87c603837136dcfafca",
      "old_mode": 33188,
      "old_path": "drivers/kvm/vmx.c",
      "new_id": "2d7d638d72d0e17358bc7959a5f235dbac509eae",
      "new_mode": 33188,
      "new_path": "drivers/kvm/vmx.c"
    }
  ]
}
