sparc32: remove remaining users of btfixup
authorSam Ravnborg <sam@ravnborg.org>
Mon, 14 May 2012 15:30:35 +0000 (17:30 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 May 2012 21:05:08 +0000 (14:05 -0700)
Use sparc_config to hold the last two function pointers.  There was no
point generating dedicated _ops structures only for these.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/include/asm/leon.h
arch/sparc/kernel/irq.h
arch/sparc/kernel/leon_kernel.c
arch/sparc/kernel/pcic.c
arch/sparc/kernel/sun4d_irq.c
arch/sparc/kernel/sun4m_irq.c
arch/sparc/kernel/sun4m_smp.c
arch/sparc/kernel/time_32.c

index cf35a26454c8bdc0829035c1a9fc2e9a266674ef..8095be271825e9512ba773410d0e2d533ad5b80f 100644 (file)
@@ -321,11 +321,7 @@ extern unsigned int leon_build_device_irq(unsigned int real_irq,
 extern void leon_update_virq_handling(unsigned int virq,
                              irq_flow_handler_t flow_handler,
                              const char *name, int do_ack);
-extern void leon_clear_clock_irq(void);
-extern void leon_load_profile_irq(int cpu, unsigned int limit);
 extern void leon_init_timers(void);
-extern void leon_clear_clock_irq(void);
-extern void leon_load_profile_irq(int cpu, unsigned int limit);
 extern void leon_trans_init(struct device_node *dp);
 extern void leon_node_init(struct device_node *dp, struct device_node ***nextp);
 extern void leon_init_IRQ(void);
index e40ca6c0076adcee6e629a82bcde36419420a143..f558f710ee512d270c2b02511eb350de78aee1e5 100644 (file)
@@ -70,6 +70,9 @@ struct sparc_config {
 
        /* function to obtain offsett for cs period */
        unsigned int (*get_cycles_offset)(void);
+
+       void (*clear_clock_irq)(void);
+       void (*load_profile_irq)(int cpu, unsigned int limit);
 };
 extern struct sparc_config sparc_config;
 
@@ -78,27 +81,6 @@ void irq_link(unsigned int irq);
 void irq_unlink(unsigned int irq);
 void handler_irq(unsigned int pil, struct pt_regs *regs);
 
-/* Dave Redman (djhr@tadpole.co.uk)
- * changed these to function pointers.. it saves cycles and will allow
- * the irq dependencies to be split into different files at a later date
- * sun4m_irq.c etc so we could reduce the kernel size.
- * Jakub Jelinek (jj@sunsite.mff.cuni.cz)
- * Changed these to btfixup entities... It saves cycles :)
- */
-
-BTFIXUPDEF_CALL(void, clear_clock_irq, void)
-BTFIXUPDEF_CALL(void, load_profile_irq, int, unsigned int)
-
-static inline void clear_clock_irq(void)
-{
-       BTFIXUP_CALL(clear_clock_irq)();
-}
-
-static inline void load_profile_irq(int cpu, int limit)
-{
-       BTFIXUP_CALL(load_profile_irq)(cpu, limit);
-}
-
 unsigned long leon_get_irqmask(unsigned int irq);
 
 #ifdef CONFIG_SMP
index 1770b3c1cc74175b292fbd6418ec1d48919a47e7..77c1b916e4dd35c8b04422a1e7102583b1b8a45c 100644 (file)
@@ -463,11 +463,11 @@ bad:
        return;
 }
 
-void leon_clear_clock_irq(void)
+static void leon_clear_clock_irq(void)
 {
 }
 
-void leon_load_profile_irq(int cpu, unsigned int limit)
+static void leon_load_profile_irq(int cpu, unsigned int limit)
 {
 }
 
@@ -517,12 +517,9 @@ void __init leon_init_IRQ(void)
 {
        sparc_config.init_timers      = leon_init_timers;
        sparc_config.build_device_irq = _leon_build_device_irq;
-       sparc_config.clock_rate = 1000000;
-
-       BTFIXUPSET_CALL(clear_clock_irq, leon_clear_clock_irq,
-                       BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(load_profile_irq, leon_load_profile_irq,
-                       BTFIXUPCALL_NOP);
+       sparc_config.clock_rate       = 1000000;
+       sparc_config.clear_clock_irq  = leon_clear_clock_irq;
+       sparc_config.load_profile_irq = leon_load_profile_irq;
 }
 
 void __init leon_init(void)
index f0ec9396a40896c8e1e3841f0cbebd947155708e..ded3f6090c3f011d77c7791d34d377e0715dd46c 100644 (file)
@@ -880,9 +880,8 @@ static void pcic_load_profile_irq(int cpu, unsigned int limit)
 void __init sun4m_pci_init_IRQ(void)
 {
        sparc_config.build_device_irq = pcic_build_device_irq;
-
-       BTFIXUPSET_CALL(clear_clock_irq, pcic_clear_clock_irq, BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(load_profile_irq, pcic_load_profile_irq, BTFIXUPCALL_NORM);
+       sparc_config.clear_clock_irq  = pcic_clear_clock_irq;
+       sparc_config.load_profile_irq = pcic_load_profile_irq;
 }
 
 int pcibios_assign_resource(struct pci_dev *pdev, int resource)
index e8e4f1411585b74d9877fa4276369cef267a6761..e490ac9327c7463462e30a31bf03f65cfd3e98a0 100644 (file)
@@ -506,12 +506,11 @@ void __init sun4d_init_IRQ(void)
 {
        local_irq_disable();
 
-       BTFIXUPSET_CALL(clear_clock_irq, sun4d_clear_clock_irq, BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(load_profile_irq, sun4d_load_profile_irq, BTFIXUPCALL_NORM);
-
        sparc_config.init_timers      = sun4d_init_timers;
        sparc_config.build_device_irq = sun4d_build_device_irq;
        sparc_config.clock_rate       = SBUS_CLOCK_RATE;
+       sparc_config.clear_clock_irq  = sun4d_clear_clock_irq;
+       sparc_config.load_profile_irq = sun4d_load_profile_irq;
 
        /* Cannot enable interrupts until OBP ticker is disabled. */
 }
index eb2c277aaf948e325b1866c9dc3ea47e7453f39f..c5ade9d27a1d81d054624612c1f960d82ec5e134 100644 (file)
@@ -462,12 +462,12 @@ void __init sun4m_init_IRQ(void)
        if (num_cpu_iregs == 4)
                sbus_writel(0, &sun4m_irq_global->interrupt_target);
 
-       BTFIXUPSET_CALL(clear_clock_irq, sun4m_clear_clock_irq, BTFIXUPCALL_NORM);
-       BTFIXUPSET_CALL(load_profile_irq, sun4m_load_profile_irq, BTFIXUPCALL_NORM);
-
-       sparc_config.init_timers = sun4m_init_timers;
+       sparc_config.init_timers      = sun4m_init_timers;
        sparc_config.build_device_irq = sun4m_build_device_irq;
        sparc_config.clock_rate       = SBUS_CLOCK_RATE;
+       sparc_config.clear_clock_irq  = sun4m_clear_clock_irq;
+       sparc_config.load_profile_irq = sun4m_load_profile_irq;
+
 
        /* Cannot enable interrupts until OBP ticker is disabled. */
 }
index ee21c4375a903ea7d3d4b9048349e0b855ef0d2c..960e8ab47b1251c8d971076e22c8b93f452002ae 100644 (file)
@@ -268,7 +268,7 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs)
        if (ce->mode & CLOCK_EVT_MODE_PERIODIC)
                sun4m_clear_profile_irq(cpu);
        else
-               load_profile_irq(cpu, 0); /* Is this needless? */
+               sparc_config.load_profile_irq(cpu, 0); /* Is this needless? */
 
        irq_enter();
        ce->event_handler(ce);
index 1e25a7ab1ea5dae78f172657906f7da020d8065e..459cf66c143c4b920b7d56a3a2d84457455db164 100644 (file)
@@ -95,10 +95,10 @@ irqreturn_t notrace timer_interrupt(int dummy, void *dev_id)
        if (timer_cs_enabled) {
                write_seqlock(&timer_cs_lock);
                timer_cs_internal_counter++;
-               clear_clock_irq();
+               sparc_config.clear_clock_irq();
                write_sequnlock(&timer_cs_lock);
        } else {
-               clear_clock_irq();
+               sparc_config.clear_clock_irq();
        }
 
        if (timer_ce_enabled)
@@ -200,12 +200,13 @@ static void percpu_ce_setup(enum clock_event_mode mode,
 
        switch (mode) {
                case CLOCK_EVT_MODE_PERIODIC:
-                       load_profile_irq(cpu, SBUS_CLOCK_RATE / HZ);
+                       sparc_config.load_profile_irq(cpu,
+                                                     SBUS_CLOCK_RATE / HZ);
                        break;
                case CLOCK_EVT_MODE_ONESHOT:
                case CLOCK_EVT_MODE_SHUTDOWN:
                case CLOCK_EVT_MODE_UNUSED:
-                       load_profile_irq(cpu, 0);
+                       sparc_config.load_profile_irq(cpu, 0);
                        break;
                default:
                        break;
@@ -218,7 +219,7 @@ static int percpu_ce_set_next_event(unsigned long delta,
        int cpu = __first_cpu(evt->cpumask);
        unsigned int next = (unsigned int)delta;
 
-       load_profile_irq(cpu, next);
+       sparc_config.load_profile_irq(cpu, next);
        return 0;
 }