~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/asm-generic/irq.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/asm-generic/irq.h (Version linux-6.11.5) and /include/asm-sparc64/irq.h (Version linux-2.6.0)


  1 /* SPDX-License-Identifier: GPL-2.0 */         !!   1 /* $Id: irq.h,v 1.21 2002/01/23 11:27:36 davem Exp $
  2 #ifndef __ASM_GENERIC_IRQ_H                    !!   2  * irq.h: IRQ registers on the 64-bit Sparc.
  3 #define __ASM_GENERIC_IRQ_H                    !!   3  *
  4                                                !!   4  * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
  5 /*                                             !!   5  * Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz)
  6  * NR_IRQS is the upper bound of how many inte << 
  7  * in the platform. It is used to size the sta << 
  8  * so don't make it too big.                   << 
  9  */                                                 6  */
 10 #ifndef NR_IRQS                                !!   7 
 11 #define NR_IRQS 64                             !!   8 #ifndef _SPARC64_IRQ_H
                                                   >>   9 #define _SPARC64_IRQ_H
                                                   >>  10 
                                                   >>  11 #include <linux/config.h>
                                                   >>  12 #include <linux/linkage.h>
                                                   >>  13 #include <linux/kernel.h>
                                                   >>  14 #include <linux/errno.h>
                                                   >>  15 #include <linux/interrupt.h>
                                                   >>  16 #include <asm/pil.h>
                                                   >>  17 #include <asm/ptrace.h>
                                                   >>  18 
                                                   >>  19 /* You should not mess with this directly. That's the job of irq.c.
                                                   >>  20  *
                                                   >>  21  * If you make changes here, please update hand coded assembler of
                                                   >>  22  * SBUS/floppy interrupt handler in entry.S -DaveM
                                                   >>  23  *
                                                   >>  24  * This is currently one DCACHE line, two buckets per L2 cache
                                                   >>  25  * line.  Keep this in mind please.
                                                   >>  26  */
                                                   >>  27 struct ino_bucket {
                                                   >>  28         /* Next handler in per-CPU PIL worklist.  We know that
                                                   >>  29          * bucket pointers have the high 32-bits clear, so to
                                                   >>  30          * save space we only store the bits we need.
                                                   >>  31          */
                                                   >>  32 /*0x00*/unsigned int irq_chain;
                                                   >>  33 
                                                   >>  34         /* PIL to schedule this IVEC at. */
                                                   >>  35 /*0x04*/unsigned char pil;
                                                   >>  36 
                                                   >>  37         /* If an IVEC arrives while irq_info is NULL, we
                                                   >>  38          * set this to notify request_irq() about the event.
                                                   >>  39          */
                                                   >>  40 /*0x05*/unsigned char pending;
                                                   >>  41 
                                                   >>  42         /* Miscellaneous flags. */
                                                   >>  43 /*0x06*/unsigned char flags;
                                                   >>  44 
                                                   >>  45         /* This is used to deal with IBF_DMA_SYNC on
                                                   >>  46          * Sabre systems.
                                                   >>  47          */
                                                   >>  48 /*0x07*/unsigned char synctab_ent;
                                                   >>  49 
                                                   >>  50         /* Reference to handler for this IRQ.  If this is
                                                   >>  51          * non-NULL this means it is active and should be
                                                   >>  52          * serviced.  Else the pending member is set to one
                                                   >>  53          * and later registry of the interrupt checks for
                                                   >>  54          * this condition.
                                                   >>  55          *
                                                   >>  56          * Normally this is just an irq_action structure.
                                                   >>  57          * But, on PCI, if multiple interrupt sources behind
                                                   >>  58          * a bridge have multiple interrupt sources that share
                                                   >>  59          * the same INO bucket, this points to an array of
                                                   >>  60          * pointers to four IRQ action structures.
                                                   >>  61          */
                                                   >>  62 /*0x08*/void *irq_info;
                                                   >>  63 
                                                   >>  64         /* Sun5 Interrupt Clear Register. */
                                                   >>  65 /*0x10*/unsigned long iclr;
                                                   >>  66 
                                                   >>  67         /* Sun5 Interrupt Mapping Register. */
                                                   >>  68 /*0x18*/unsigned long imap;
                                                   >>  69 
                                                   >>  70 };
                                                   >>  71 
                                                   >>  72 #ifdef CONFIG_PCI
                                                   >>  73 extern unsigned long pci_dma_wsync;
                                                   >>  74 extern unsigned long dma_sync_reg_table[256];
                                                   >>  75 extern unsigned char dma_sync_reg_table_entry;
 12 #endif                                             76 #endif
 13                                                    77 
 14 static inline int irq_canonicalize(int irq)    !!  78 /* IMAP/ICLR register defines */
                                                   >>  79 #define IMAP_VALID              0x80000000      /* IRQ Enabled          */
                                                   >>  80 #define IMAP_TID_UPA            0x7c000000      /* UPA TargetID         */
                                                   >>  81 #define IMAP_TID_JBUS           0x7c000000      /* JBUS TargetID        */
                                                   >>  82 #define IMAP_AID_SAFARI         0x7c000000      /* Safari AgentID       */
                                                   >>  83 #define IMAP_NID_SAFARI         0x03e00000      /* Safari NodeID        */
                                                   >>  84 #define IMAP_IGN                0x000007c0      /* IRQ Group Number     */
                                                   >>  85 #define IMAP_INO                0x0000003f      /* IRQ Number           */
                                                   >>  86 #define IMAP_INR                0x000007ff      /* Full interrupt number*/
                                                   >>  87 
                                                   >>  88 #define ICLR_IDLE               0x00000000      /* Idle state           */
                                                   >>  89 #define ICLR_TRANSMIT           0x00000001      /* Transmit state       */
                                                   >>  90 #define ICLR_PENDING            0x00000003      /* Pending state        */
                                                   >>  91 
                                                   >>  92 /* Only 8-bits are available, be careful.  -DaveM */
                                                   >>  93 #define IBF_DMA_SYNC    0x01    /* DMA synchronization behind PCI bridge needed. */
                                                   >>  94 #define IBF_PCI         0x02    /* Indicates PSYCHO/SABRE/SCHIZO PCI interrupt.  */
                                                   >>  95 #define IBF_ACTIVE      0x04    /* This interrupt is active and has a handler.   */
                                                   >>  96 #define IBF_MULTI       0x08    /* On PCI, indicates shared bucket.              */
                                                   >>  97 #define IBF_INPROGRESS  0x10    /* IRQ is being serviced.                        */
                                                   >>  98 
                                                   >>  99 #define NUM_IVECS       (IMAP_INR + 1)
                                                   >> 100 extern struct ino_bucket ivector_table[NUM_IVECS];
                                                   >> 101 
                                                   >> 102 #define __irq_ino(irq) \
                                                   >> 103         (((struct ino_bucket *)(unsigned long)(irq)) - &ivector_table[0])
                                                   >> 104 #define __irq_pil(irq) ((struct ino_bucket *)(unsigned long)(irq))->pil
                                                   >> 105 #define __bucket(irq) ((struct ino_bucket *)(unsigned long)(irq))
                                                   >> 106 #define __irq(bucket) ((unsigned int)(unsigned long)(bucket))
                                                   >> 107 
                                                   >> 108 static __inline__ char *__irq_itoa(unsigned int irq)
                                                   >> 109 {
                                                   >> 110         static char buff[16];
                                                   >> 111 
                                                   >> 112         sprintf(buff, "%d,%x", __irq_pil(irq), (unsigned int)__irq_ino(irq));
                                                   >> 113         return buff;
                                                   >> 114 }
                                                   >> 115 
                                                   >> 116 #define NR_IRQS    16
                                                   >> 117 
                                                   >> 118 #define irq_canonicalize(irq)   (irq)
                                                   >> 119 extern void disable_irq(unsigned int);
                                                   >> 120 #define disable_irq_nosync disable_irq
                                                   >> 121 extern void enable_irq(unsigned int);
                                                   >> 122 extern unsigned int build_irq(int pil, int inofixup, unsigned long iclr, unsigned long imap);
                                                   >> 123 extern unsigned int sbus_build_irq(void *sbus, unsigned int ino);
                                                   >> 124 
                                                   >> 125 extern int request_fast_irq(unsigned int irq,
                                                   >> 126                             irqreturn_t (*handler)(int, void *, struct pt_regs *),
                                                   >> 127                             unsigned long flags, __const__ char *devname,
                                                   >> 128                             void *dev_id);
                                                   >> 129 
                                                   >> 130 static __inline__ void set_softint(unsigned long bits)
 15 {                                                 131 {
 16         return irq;                            !! 132         __asm__ __volatile__("wr        %0, 0x0, %%set_softint"
                                                   >> 133                              : /* No outputs */
                                                   >> 134                              : "r" (bits));
 17 }                                                 135 }
 18                                                   136 
 19 #endif /* __ASM_GENERIC_IRQ_H */               !! 137 static __inline__ void clear_softint(unsigned long bits)
                                                   >> 138 {
                                                   >> 139         __asm__ __volatile__("wr        %0, 0x0, %%clear_softint"
                                                   >> 140                              : /* No outputs */
                                                   >> 141                              : "r" (bits));
                                                   >> 142 }
                                                   >> 143 
                                                   >> 144 static __inline__ unsigned long get_softint(void)
                                                   >> 145 {
                                                   >> 146         unsigned long retval;
                                                   >> 147 
                                                   >> 148         __asm__ __volatile__("rd        %%softint, %0"
                                                   >> 149                              : "=r" (retval));
                                                   >> 150         return retval;
                                                   >> 151 }
                                                   >> 152 
                                                   >> 153 #endif
 20                                                   154 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php