Anton Blanchard 7df1027542 powerpc/time: Optimise decrementer_check_overflow
decrementer_check_overflow is called from arch_local_irq_restore so
we want to make it as light weight as possible. As such, turn
decrementer_check_overflow into an inline function.

To avoid a circular mess of includes, separate out the two components
of struct decrementer_clock and keep the struct clock_event_device
part local to time.c.

The fast path improves from:

arch_local_irq_restore
     0:       mflr    r0
     4:       std     r0,16(r1)
     8:       stdu    r1,-112(r1)
     c:       stb     r3,578(r13)
    10:       cmpdi   cr7,r3,0
    14:       beq-    cr7,24 <.arch_local_irq_restore+0x24>
...
    24:       addi    r1,r1,112
    28:       ld      r0,16(r1)
    2c:       mtlr    r0
    30:       blr

to:

arch_local_irq_restore
    0:       std     r30,-16(r1)
    4:       ld      r30,0(r2)
    8:       stb     r3,578(r13)
    c:       cmpdi   cr7,r3,0
   10:       beq-    cr7,6c <.arch_local_irq_restore+0x6c>
...
   6c:       ld      r30,-16(r1)
   70:       blr

Unfortunately we still setup a local TOC (due to -mminimal-toc). Yet
another sign we should be moving to -mcmodel=medium.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-11-25 14:11:26 +11:00
..
2010-08-04 10:26:03 +10:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-06-20 11:21:48 +10:00
2011-07-26 16:49:47 -07:00
2011-11-08 14:51:46 +11:00
2009-12-10 20:08:15 -06:00
2010-10-26 16:52:08 -07:00
2011-09-20 09:19:40 +10:00
2011-03-02 16:50:24 +11:00
2008-08-18 21:40:03 +02:00
2011-05-19 14:30:43 +10:00
2008-08-04 13:18:17 +10:00
2011-07-26 16:49:47 -07:00
2010-08-14 22:26:51 +02:00
2011-03-31 11:26:23 -03:00
2011-05-22 08:47:53 -04:00
2010-05-17 12:18:23 +03:00
2010-06-09 11:12:36 +02:00
2011-07-26 16:49:47 -07:00
2010-05-05 09:11:10 -04:00
2011-09-20 09:19:40 +10:00
2011-09-20 09:19:40 +10:00
2011-09-20 09:19:40 +10:00
2011-09-20 09:19:40 +10:00
2011-09-20 09:19:40 +10:00
2011-03-31 11:26:23 -03:00
2010-03-05 03:04:08 -06:00
2010-10-26 16:52:08 -07:00
2011-03-02 16:50:24 +11:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2009-04-07 15:18:58 +10:00
2009-12-09 17:10:37 +11:00
2011-09-20 09:19:40 +10:00
2011-09-27 18:08:04 +02:00
2010-03-05 03:04:08 -06:00
2011-04-20 17:01:19 +10:00
2011-03-31 11:26:23 -03:00
2008-09-06 19:30:15 +01:00
2009-08-28 14:24:10 +10:00
2011-10-31 17:30:44 -07:00
2011-07-26 16:49:43 -07:00
2011-03-23 19:47:18 -07:00
2011-10-31 17:30:44 -07:00
2011-03-31 11:26:23 -03:00
2011-05-06 13:32:35 +10:00
2011-11-08 14:51:46 +11:00