1#ifndef __M68K_HARDIRQ_H 2#define __M68K_HARDIRQ_H 3 4#include <linux/threads.h> 5#include <linux/cache.h> 6 7/* entry.S is sensitive to the offsets of these fields */ 8typedef struct { 9 unsigned int __softirq_pending; 10 unsigned int __local_irq_count; 11 unsigned int __local_bh_count; 12 unsigned int __syscall_count; 13 struct task_struct * __ksoftirqd_task; 14} ____cacheline_aligned irq_cpustat_t; 15 16#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ 17 18#define in_interrupt() (local_irq_count(smp_processor_id()) + local_bh_count(smp_processor_id()) != 0) 19 20#define in_irq() (local_irq_count(smp_processor_id()) != 0) 21 22#define hardirq_trylock(cpu) (local_irq_count(cpu) == 0) 23#define hardirq_endlock(cpu) do { } while (0) 24 25#define irq_enter(cpu) (local_irq_count(cpu)++) 26#define irq_exit(cpu) (local_irq_count(cpu)--) 27 28#define synchronize_irq() barrier() 29 30#endif 31