Go to the documentation of this file.
5 #ifndef _ASM_ARCH_IRQ_H
6 #define _ASM_ARCH_IRQ_H
16 #define SOME_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, some)
17 #define NMI_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, nmi)
18 #define TIMER0_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, timer0)
19 #define TIMER1_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, timer1)
22 #define NETWORK_STATUS_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, network)
24 #define SERIAL_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, serial)
25 #define PA_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, pa)
27 #define EXTDMA0_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, ext_dma0)
28 #define EXTDMA1_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, ext_dma1)
32 #define DMA0_TX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma0)
33 #define DMA1_RX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma1)
34 #define NETWORK_DMA_TX_IRQ_NBR DMA0_TX_IRQ_NBR
35 #define NETWORK_DMA_RX_IRQ_NBR DMA1_RX_IRQ_NBR
38 #define DMA2_TX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma2)
39 #define DMA3_RX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma3)
40 #define SER2_DMA_TX_IRQ_NBR DMA2_TX_IRQ_NBR
41 #define SER2_DMA_RX_IRQ_NBR DMA3_RX_IRQ_NBR
44 #define DMA4_TX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma4)
45 #define DMA5_RX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma5)
46 #define SER3_DMA_TX_IRQ_NBR DMA4_TX_IRQ_NBR
47 #define SER3_DMA_RX_IRQ_NBR DMA5_RX_IRQ_NBR
50 #define DMA6_TX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma6)
51 #define DMA7_RX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma7)
52 #define SER0_DMA_TX_IRQ_NBR DMA6_TX_IRQ_NBR
53 #define SER0_DMA_RX_IRQ_NBR DMA7_RX_IRQ_NBR
54 #define MEM2MEM_DMA_TX_IRQ_NBR DMA6_TX_IRQ_NBR
55 #define MEM2MEM_DMA_RX_IRQ_NBR DMA7_RX_IRQ_NBR
58 #define DMA8_TX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma8)
59 #define DMA9_RX_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, dma9)
60 #define SER1_DMA_TX_IRQ_NBR DMA8_TX_IRQ_NBR
61 #define SER1_DMA_RX_IRQ_NBR DMA9_RX_IRQ_NBR
62 #define USB_DMA_TX_IRQ_NBR DMA8_TX_IRQ_NBR
63 #define USB_DMA_RX_IRQ_NBR DMA9_RX_IRQ_NBR
66 #define USB_HC_IRQ_NBR IO_BITNR(R_VECT_MASK_RD, usb)
81 #define STR(x) __STR(x)
86 "move $irp,[$sp=$sp-16]\n\t" \
92 "movem $r13,[$sp]\n\t" \
94 "clear.d [$sp=$sp-4]\n\t"
99 #define BLOCK_IRQ(mask,nr) \
100 "move.d " #mask ",$r0\n\t" \
101 "move.d $r0,[0xb00000d8]\n\t"
103 #define UNBLOCK_IRQ(mask) \
104 "move.d " #mask ",$r0\n\t" \
105 "move.d $r0,[0xb00000dc]\n\t"
107 #define IRQ_NAME2(nr) nr##_interrupt(void)
108 #define IRQ_NAME(nr) IRQ_NAME2(IRQ##nr)
109 #define sIRQ_NAME(nr) IRQ_NAME2(sIRQ##nr)
110 #define BAD_IRQ_NAME(nr) IRQ_NAME2(bad_IRQ##nr)
120 #define BUILD_IRQ(nr,mask) \
124 "IRQ" #nr "_interrupt:\n\t" \
127 "moveq "#nr",$r10\n\t" \
128 "move.d $sp,$r11\n\t" \
132 "jump ret_from_intr\n\t");
149 #define BUILD_TIMER_IRQ(nr,mask) \
153 "IRQ" #nr "_interrupt:\n\t" \
155 "moveq "#nr",$r10\n\t" \
156 "move.d $sp,$r11\n\t" \
159 "jump ret_from_intr\n\t");