)]}'
{
  "commit": "196bd485ee4f03ce4c690bfcf38138abfcd0a4bc",
  "tree": "a3cc45bbdcfb19bb4a46fd0713b34862da6c2657",
  "parents": [
    "bc829ee36e0ec92383c9d9b88fe08f00d4d592f8"
  ],
  "author": {
    "name": "Andrey Ryabinin",
    "email": "aryabinin@virtuozzo.com",
    "time": "Fri Sep 29 17:15:36 2017 +0300"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Fri Sep 29 19:39:44 2017 +0200"
  },
  "message": "x86/asm: Use register variable to get stack pointer value\n\nCurrently we use current_stack_pointer() function to get the value\nof the stack pointer register. Since commit:\n\n  f5caf621ee35 (\"x86/asm: Fix inline asm call constraints for Clang\")\n\n... we have a stack register variable declared. It can be used instead of\ncurrent_stack_pointer() function which allows to optimize away some\nexcessive \"mov %rsp, %\u003cdst\u003e\" instructions:\n\n -mov    %rsp,%rdx\n -sub    %rdx,%rax\n -cmp    $0x3fff,%rax\n -ja     ffffffff810722fd \u003cist_begin_non_atomic+0x2d\u003e\n\n +sub    %rsp,%rax\n +cmp    $0x3fff,%rax\n +ja     ffffffff810722fa \u003cist_begin_non_atomic+0x2a\u003e\n\nRemove current_stack_pointer(), rename __asm_call_sp to current_stack_pointer\nand use it instead of the removed function.\n\nSigned-off-by: Andrey Ryabinin \u003caryabinin@virtuozzo.com\u003e\nReviewed-by: Josh Poimboeuf \u003cjpoimboe@redhat.com\u003e\nCc: Andy Lutomirski \u003cluto@kernel.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLink: http://lkml.kernel.org/r/20170929141537.29167-1-aryabinin@virtuozzo.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "30c3c9ac784a6c711d140f162be160d6e2f12f93",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/asm.h",
      "new_id": "b0dc91f4bedc680ac69d7ecc481a71c863bade77",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/asm.h"
    },
    {
      "type": "modify",
      "old_id": "5161da1a0fa0a522c80b93f758a84914a88fad46",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/thread_info.h",
      "new_id": "89e7eeb5cec1dfa6804d5bba2dfe010e6ad8f455",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/thread_info.h"
    },
    {
      "type": "modify",
      "old_id": "1f38d9a4d9deaf707af2b7e658bd9e9022ba8d75",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/irq_32.c",
      "new_id": "d4eb450144fdb42c4f667b9f5b1a69d91aa78a2e",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/irq_32.c"
    },
    {
      "type": "modify",
      "old_id": "34ea3651362ef8383fb456f24125ec4881f42668",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/traps.c",
      "new_id": "67db4f43309ecadc86f4d7e95c6a0db0650a0d18",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/traps.c"
    },
    {
      "type": "modify",
      "old_id": "93fe97cce5819fd230da1d357cbec8f694a172ad",
      "old_mode": 33188,
      "old_path": "arch/x86/mm/tlb.c",
      "new_id": "49d9778376d774c3d6f17eb47118176efb99b718",
      "new_mode": 33188,
      "new_path": "arch/x86/mm/tlb.c"
    }
  ]
}
