)]}'
{
  "log": [
    {
      "commit": "28baebae73c3ea8b75c7cae225a7db817ab825a9",
      "tree": "940476b4d03b96480d451b7b5b6f3df3f0ff18dc",
      "parents": [
        "68f624fc8b9fa50de9cc0ebd612ef7b7b9fa32d0"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Feb 14 13:53:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 14 16:09:35 2006 -0800"
      },
      "message": "[PATCH] FRV: Use virtual interrupt disablement\n\nMake the FRV arch use virtual interrupt disablement because accesses to the\nprocessor status register (PSR) are relatively slow and because we will\nsoon have the need to deal with multiple interrupt controls at the same\ntime (separate h/w and inter-core interrupts).\n\nThe way this is done is to dedicate one of the four integer condition code\nregisters (ICC2) to maintaining a virtual interrupt disablement state\nwhilst inside the kernel.  This uses the ICC2.Z flag (Zero) to indicate\nwhether the interrupts are virtually disabled and the ICC2.C flag (Carry)\nto indicate whether the interrupts are physically disabled.\n\nICC2.Z is set to indicate interrupts are virtually disabled.  ICC2.C is set\nto indicate interrupts are physically enabled.  Under normal running\nconditions Z\u003d\u003d0 and C\u003d\u003d1.\n\nDisabling interrupts with local_irq_disable() doesn\u0027t then actually\nphysically disable interrupts - it merely sets ICC2.Z to 1.  Should an\ninterrupt then happen, the exception prologue will note ICC2.Z is set and\nbranch out of line using one instruction (an unlikely BEQ).  Here it will\nphysically disable interrupts and clear ICC2.C.\n\nWhen it comes time to enable interrupts (local_irq_enable()), this simply\nclears the ICC2.Z flag and invokes a trap #2 if both Z and C flags are\nclear (the HI integer condition).  This can be done with the TIHI\nconditional trap instruction.\n\nThe trap then physically reenables interrupts and sets ICC2.C again.  Upon\nreturning the interrupt will be taken as interrupts will then be enabled.\nNote that whilst processing the trap, the whole exceptions system is\ndisabled, and so an interrupt can\u0027t happen till it returns.\n\nIf no pending interrupt had happened, ICC2.C would still be set, the HI\ncondition would not be fulfilled, and no trap will happen.\n\nSaving interrupts (local_irq_save) is simply a matter of pulling the ICC2.Z\nflag out of the CCR register, shifting it down and masking it off.  This\ngives a result of 0 if interrupts were enabled and 1 if they weren\u0027t.\n\nRestoring interrupts (local_irq_restore) is then a matter of taking the\nsaved value mentioned previously and XOR\u0027ing it against 1.  If it was one,\nthe result will be zero, and if it was zero the result will be non-zero.\nThis result is then used to affect the ICC2.Z flag directly (it is a\ncondition code flag after all).  An XOR instruction does not affect the\nCarry flag, and so that bit of state is unchanged.  The two flags can then\nbe sampled to see if they\u0027re both zero using the trap (TIHI) as for the\nunconditional reenablement (local_irq_enable).\n\nThis patch also:\n\n (1) Modifies the debugging stub (break.S) to handle single-stepping crossing\n     into the trap #2 handler and into virtually disabled interrupts.\n\n (2) Removes superseded fixup pointers from the second instructions in the trap\n     tables (there\u0027s no a separate fixup table for this).\n\n (3) Declares the trap #3 vector for use in .org directives in the trap table.\n\n (4) Moves irq_enter() and irq_exit() in do_IRQ() to avoid problems with\n     virtual interrupt handling, and removes the duplicate code that has now\n     been folded into irq_exit() (softirq and preemption handling).\n\n (5) Tells the compiler in the arch Makefile that ICC2 is now reserved.\n\n (6) Documents the in-kernel ABI, including the virtual interrupts.\n\n (7) Renames the old irq management functions to different names.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
