clk_total += jiffy_ticks;
clk_offset = 0;
timer_routine(0, NULL);
+ timer_heartbeat();
return IRQ_HANDLED;
}
volatile unsigned char x;
timer_handler(irq, dev_id);
+ timer_heartbeat();
x = *(volatile unsigned char *)(apollo_timer + 3);
x = *(volatile unsigned char *)(apollo_timer + 5);
#include <linux/export.h>
#include <asm/atariints.h>
+#include <asm/machdep.h>
DEFINE_SPINLOCK(rtc_lock);
EXPORT_SYMBOL_GPL(rtc_lock);
} while (last_timer_count == 1);
clk_total += INT_TICKS;
timer_routine(0, NULL);
+ timer_heartbeat();
local_irq_restore(flags);
return IRQ_HANDLED;
clk_total += INTVAL;
clk_offset = 0;
timer_routine(0, NULL);
+ timer_heartbeat();
local_irq_restore(flags);
/* Turn off the network and SCSI leds */
/* Hardware clock functions */
extern void hw_timer_init(irq_handler_t handler);
extern unsigned long hw_timer_offset(void);
+#ifdef CONFIG_HEARTBEAT
+extern void timer_heartbeat(void);
+#else
+static inline void timer_heartbeat(void)
+{
+}
+#endif
extern void config_BSP(char *command, int len);
xtime_update(1);
update_process_times(user_mode(get_irq_regs()));
profile_tick(CPU_PROFILING);
+ return IRQ_HANDLED;
+}
#ifdef CONFIG_HEARTBEAT
+void timer_heartbeat(void)
+{
/* use power LED as a heartbeat instead -- much more useful
for debugging -- based on the version for PReP by Cort */
/* acts like an actual heart beat -- ie thump-thump-pause... */
dist = period / 4;
}
}
-#endif /* CONFIG_HEARTBEAT */
- return IRQ_HANDLED;
}
+#endif /* CONFIG_HEARTBEAT */
#ifdef CONFIG_M68KCLASSIC
#if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC)
#include <linux/interrupt.h>
#include <linux/irq.h>
+#include <asm/machdep.h>
#include <asm/ptrace.h>
#include <asm/traps.h>
local_irq_save(flags);
timer_routine(0, NULL);
+ timer_heartbeat();
local_irq_restore(flags);
}
return IRQ_HANDLED;