)]}'
{
  "commit": "3f2829a31573e3e502b874c8d69a765f7a778793",
  "tree": "40f64826c0d2964c56c366f770e2d3959123eb59",
  "parents": [
    "ba95e4e4a0a8a3c6aba363d45f78d5f2e2d111eb"
  ],
  "author": {
    "name": "Nicolas Pitre",
    "email": "nico@cam.org",
    "time": "Sat Jan 14 16:31:29 2006 +0000"
  },
  "committer": {
    "name": "Russell King",
    "email": "rmk+kernel@arm.linux.org.uk",
    "time": "Sat Jan 14 16:31:29 2006 +0000"
  },
  "message": "[ARM] 3105/4: ARM EABI: new syscall entry convention\n\nPatch from Nicolas Pitre\n\nFor a while we wanted to change the way syscalls were called on ARM.\nInstead of encoding the syscall number in the swi instruction which\nrequires reading back the instruction from memory to extract that number\nand polluting the data cache, it was decided that simply storing the\nsyscall number into r7 would be more efficient. Since this represents\nan ABI change then making that change at the same time as EABI support\nis the right thing to do.\n\nIt is now expected that EABI user space binaries put the syscall number\ninto r7 and use \"swi 0\" to call the kernel. Syscall register argument\nare also expected to have \"EABI arrangement\" i.e. 64-bit arguments\nshould be put in a pair of registers from an even register number.\n\nExample with long ftruncate64(unsigned int fd, loff_t length):\n\n\tlegacy ABI:\n\t- put fd into r0\n\t- put length into r1-r2\n\t- use \"swi #(0x900000 + 194)\" to call the kernel\n\n\tnew ARM EABI:\n\t- put fd into r0\n\t- put length into r2-r3 (skipping over r1)\n\t- put 194 into r7\n\t- use \"swi 0\" to call the kernel\n\nNote that it is important to use 0 for the swi argument as backward\ncompatibility with legacy ABI user space relies on this.\nThe syscall macros in asm-arm/unistd.h were also updated to support\nboth ABIs and implement the right call method automatically.\n\nSigned-off-by: Nicolas Pitre \u003cnico@cam.org\u003e\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e2b42997ad33ee0f1da6ec4a75440d16ce3c3b06",
      "old_mode": 33188,
      "old_path": "arch/arm/kernel/entry-common.S",
      "new_id": "34826bcceb7aa07dadb9c5a1999b7f96b5adc355",
      "new_mode": 33188,
      "new_path": "arch/arm/kernel/entry-common.S"
    },
    {
      "type": "modify",
      "old_id": "93cfd3ffcc72b6cbc90ff6c7ff8f808b15e3ea15",
      "old_mode": 33188,
      "old_path": "arch/arm/kernel/traps.c",
      "new_id": "10235b01582eb8fa2653d26e077536d4ffab0a75",
      "new_mode": 33188,
      "new_path": "arch/arm/kernel/traps.c"
    },
    {
      "type": "modify",
      "old_id": "d626e70fadedd520fd342fa49f51cc39b2118014",
      "old_mode": 33188,
      "old_path": "include/asm-arm/unistd.h",
      "new_id": "c9e087fe7e11c895460c714612da168ee04ba9d3",
      "new_mode": 33188,
      "new_path": "include/asm-arm/unistd.h"
    }
  ]
}
