OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-m68k/] [amigaints.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
2
** amigaints.h -- Amiga Linux interrupt handling structs and prototypes
3
**
4
** Copyright 1992 by Greg Harp
5
**
6
** This file is subject to the terms and conditions of the GNU General Public
7
** License.  See the file COPYING in the main directory of this archive
8
** for more details.
9
**
10
** Created 10/2/92 by Greg Harp
11
*/
12
 
13
#ifndef _ASMm68k_AMIGAINTS_H_
14
#define _ASMm68k_AMIGAINTS_H_
15
 
16
/*
17
** Amiga Interrupt sources.
18
**
19
*/
20
 
21
#define AUTO_IRQS           (8)
22
#define AMI_STD_IRQS        (14)
23
#define CIA_IRQS            (5)
24
#define AMI_IRQS            (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */
25
 
26
/* vertical blanking interrupt */
27
#define IRQ_AMIGA_VERTB     0
28
 
29
/* copper interrupt */
30
#define IRQ_AMIGA_COPPER    1
31
 
32
/* Audio interrupts */
33
#define IRQ_AMIGA_AUD0      2
34
#define IRQ_AMIGA_AUD1      3
35
#define IRQ_AMIGA_AUD2      4
36
#define IRQ_AMIGA_AUD3      5
37
 
38
/* Blitter done interrupt */
39
#define IRQ_AMIGA_BLIT      6
40
 
41
/* floppy disk interrupts */
42
#define IRQ_AMIGA_DSKSYN    7
43
#define IRQ_AMIGA_DSKBLK    8
44
 
45
/* builtin serial port interrupts */
46
#define IRQ_AMIGA_RBF       9
47
#define IRQ_AMIGA_TBE       10
48
 
49
/* software interrupts */
50
#define IRQ_AMIGA_SOFT      11
51
 
52
/* interrupts from external hardware */
53
#define IRQ_AMIGA_PORTS     12
54
#define IRQ_AMIGA_EXTER     13
55
 
56
/* CIA interrupt sources */
57
#define IRQ_AMIGA_CIAA      14
58
#define IRQ_AMIGA_CIAA_TA   14
59
#define IRQ_AMIGA_CIAA_TB   15
60
#define IRQ_AMIGA_CIAA_ALRM 16
61
#define IRQ_AMIGA_CIAA_SP   17
62
#define IRQ_AMIGA_CIAA_FLG  18
63
#define IRQ_AMIGA_CIAB      19
64
#define IRQ_AMIGA_CIAB_TA   19
65
#define IRQ_AMIGA_CIAB_TB   20
66
#define IRQ_AMIGA_CIAB_ALRM 21
67
#define IRQ_AMIGA_CIAB_SP   22
68
#define IRQ_AMIGA_CIAB_FLG  23
69
 
70
/* auto-vector interrupts */
71
#define IRQ_AMIGA_AUTO      24
72
#define IRQ_AMIGA_AUTO_0    24 /* This is just a dummy */
73
#define IRQ_AMIGA_AUTO_1    25
74
#define IRQ_AMIGA_AUTO_2    26
75
#define IRQ_AMIGA_AUTO_3    27
76
#define IRQ_AMIGA_AUTO_4    28
77
#define IRQ_AMIGA_AUTO_5    29
78
#define IRQ_AMIGA_AUTO_6    30
79
#define IRQ_AMIGA_AUTO_7    31
80
 
81
#define IRQ_FLOPPY          IRQ_AMIGA_DSKBLK
82
 
83
/* INTREQR masks */
84
#define IRQ1_MASK   0x0007      /* INTREQR mask for IRQ 1 */
85
#define IRQ2_MASK   0x0008      /* INTREQR mask for IRQ 2 */
86
#define IRQ3_MASK   0x0070      /* INTREQR mask for IRQ 3 */
87
#define IRQ4_MASK   0x0780      /* INTREQR mask for IRQ 4 */
88
#define IRQ5_MASK   0x1800      /* INTREQR mask for IRQ 5 */
89
#define IRQ6_MASK   0x2000      /* INTREQR mask for IRQ 6 */
90
#define IRQ7_MASK   0x4000      /* INTREQR mask for IRQ 7 */
91
 
92
#define IF_SETCLR   0x8000      /* set/clr bit */
93
#define IF_INTEN    0x4000      /* master interrupt bit in INT* registers */
94
#define IF_EXTER    0x2000      /* external level 6 and CIA B interrupt */
95
#define IF_DSKSYN   0x1000      /* disk sync interrupt */
96
#define IF_RBF      0x0800      /* serial receive buffer full interrupt */
97
#define IF_AUD3     0x0400      /* audio channel 3 done interrupt */
98
#define IF_AUD2     0x0200      /* audio channel 2 done interrupt */
99
#define IF_AUD1     0x0100      /* audio channel 1 done interrupt */
100
#define IF_AUD0     0x0080      /* audio channel 0 done interrupt */
101
#define IF_BLIT     0x0040      /* blitter done interrupt */
102
#define IF_VERTB    0x0020      /* vertical blanking interrupt */
103
#define IF_COPER    0x0010      /* copper interrupt */
104
#define IF_PORTS    0x0008      /* external level 2 and CIA A interrupt */
105
#define IF_SOFT     0x0004      /* software initiated interrupt */
106
#define IF_DSKBLK   0x0002      /* diskblock DMA finished */
107
#define IF_TBE      0x0001      /* serial transmit buffer empty interrupt */
108
 
109
extern void amiga_do_irq(int irq, struct pt_regs *fp);
110
extern void amiga_do_irq_list(int irq, struct pt_regs *fp);
111
 
112
extern unsigned short amiga_intena_vals[];
113
 
114
/* CIA interrupt control register bits */
115
 
116
#define CIA_ICR_TA      0x01
117
#define CIA_ICR_TB      0x02
118
#define CIA_ICR_ALRM    0x04
119
#define CIA_ICR_SP      0x08
120
#define CIA_ICR_FLG     0x10
121
#define CIA_ICR_ALL     0x1f
122
#define CIA_ICR_SETCLR  0x80
123
 
124
/* to access the interrupt control registers of CIA's use only
125
** these functions, they behave exactly like the amiga os routines
126
*/
127
 
128
extern struct ciabase ciaa_base, ciab_base;
129
 
130
extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask);
131
extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask);
132
 
133
#endif /* asm-m68k/amigaints.h */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.