m68k: sun3/sun3c: use legacy_timer_tick
authorArnd Bergmann <arnd@arndb.de>
Thu, 24 Sep 2020 14:40:58 +0000 (16:40 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 30 Oct 2020 20:57:06 +0000 (21:57 +0100)
These two are different from all other machines:

* sun3 does not call timer_routine() but open-codes it
  except for the profile_tick() call that appears to
  be unintentionally missing.

* sun3x has a commented-out timer irq handler but no
  functional timer tick I could find.

Change both to calling the new legacy_timer_tick here,
which includes the call to profile_tick() but does not
fix sun3x as that is still commented out.

Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/m68k/Kconfig.machine
arch/m68k/sun3/sun3ints.c
arch/m68k/sun3x/time.c

index 17e8c3a..e3c8354 100644 (file)
@@ -99,6 +99,7 @@ config HP300
 config SUN3X
        bool "Sun3x support"
        depends on MMU
+       select LEGACY_TIMER_TICK
        select MMU_MOTOROLA if MMU
        select M68030
        help
@@ -126,6 +127,7 @@ config SUN3
        depends on MMU
        depends on !MMU_MOTOROLA
        select MMU_SUN3 if MMU
+       select LEGACY_TIMER_TICK
        select NO_DMA
        select M68020
        help
index a5824ab..41ae422 100644 (file)
@@ -73,8 +73,7 @@ static irqreturn_t sun3_int5(int irq, void *dev_id)
 #ifdef CONFIG_SUN3
        intersil_clear();
 #endif
-       xtime_update(1);
-       update_process_times(user_mode(get_irq_regs()));
+       legacy_timer_tick(1);
        cnt = kstat_irqs_cpu(irq, 0);
        if (!(cnt % 20))
                sun3_leds(led_pattern[cnt % 160 / 20]);
index 9163294..f6e25fd 100644 (file)
@@ -77,14 +77,13 @@ int sun3x_hwclk(int set, struct rtc_time *t)
 #if 0
 static irqreturn_t sun3x_timer_tick(int irq, void *dev_id)
 {
-       irq_handler_t timer_routine = dev_id;
        unsigned long flags;
 
        local_irq_save(flags);
        /* Clear the pending interrupt - pulse the enable line low */
        disable_irq(5);
        enable_irq(5);
-       timer_routine(0, NULL);
+       legacy_timer_tick(1);
        local_irq_restore(flags);
 
        return IRQ_HANDLED;