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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-armnommu/] [arch-rpc/] [irq.h] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
/*
2
 * include/asm-arm/arch-rpc/irq.h
3
 *
4
 * Copyright (C) 1996 Russell King
5
 *
6
 * Changelog:
7
 *   10-10-1996 RMK     Brought up to date with arch-sa110eval
8
 */
9
 
10
#define BUILD_IRQ(s,n,m) \
11
        void IRQ##n##_interrupt(void); \
12
        void fast_IRQ##n##_interrupt(void); \
13
        void bad_IRQ##n##_interrupt(void); \
14
        void probe_IRQ##n##_interrupt(void);
15
 
16
/*
17
 * The timer is a special interrupt
18
 */
19
#define IRQ5_interrupt          timer_IRQ_interrupt
20
 
21
#define IRQ_INTERRUPT(n)        IRQ##n##_interrupt
22
#define FAST_INTERRUPT(n)       fast_IRQ##n##_interrupt
23
#define BAD_INTERRUPT(n)        bad_IRQ##n##_interrupt
24
#define PROBE_INTERRUPT(n)      probe_IRQ##n##_interrupt
25
 
26
static __inline__ void mask_irq(unsigned int irq)
27
{
28
        extern void ecard_disableirq (unsigned int);
29
        extern void ecard_disablefiq (unsigned int);
30
        unsigned char mask = 1 << (irq & 7);
31
 
32
        switch (irq >> 3) {
33
        case 0:
34
                outb(inb(IOMD_IRQMASKA) & ~mask, IOMD_IRQMASKA);
35
                break;
36
        case 1:
37
                outb(inb(IOMD_IRQMASKB) & ~mask, IOMD_IRQMASKB);
38
                break;
39
        case 2:
40
                outb(inb(IOMD_DMAMASK) & ~mask, IOMD_DMAMASK);
41
                break;
42
        case 4:
43
                ecard_disableirq (irq & 7);
44
                break;
45
        case 8:
46
                outb(inb(IOMD_FIQMASK) & ~mask, IOMD_FIQMASK);
47
                break;
48
        case 12:
49
                ecard_disablefiq (irq & 7);
50
        }
51
}
52
 
53
static __inline__ void unmask_irq(unsigned int irq)
54
{
55
        extern void ecard_enableirq (unsigned int);
56
        extern void ecard_enablefiq (unsigned int);
57
        unsigned char mask = 1 << (irq & 7);
58
 
59
        switch (irq >> 3) {
60
        case 0:
61
                outb(inb(IOMD_IRQMASKA) | mask, IOMD_IRQMASKA);
62
                break;
63
        case 1:
64
                outb(inb(IOMD_IRQMASKB) | mask, IOMD_IRQMASKB);
65
                break;
66
        case 2:
67
                outb(inb(IOMD_DMAMASK) | mask, IOMD_DMAMASK);
68
                break;
69
        case 4:
70
                ecard_enableirq (irq & 7);
71
                break;
72
        case 8:
73
                outb(inb(IOMD_FIQMASK) | mask, IOMD_FIQMASK);
74
                break;
75
        case 12:
76
                ecard_enablefiq (irq & 7);
77
        }
78
}
79
 
80
static __inline__ unsigned long get_enabled_irqs(void)
81
{
82
        return inb(IOMD_IRQMASKA) | inb(IOMD_IRQMASKB) << 8 | inb(IOMD_DMAMASK) << 16;
83
}
84
 
85
static __inline__ void irq_init_irq(void)
86
{
87
        outb(0, IOMD_IRQMASKA);
88
        outb(0, IOMD_IRQMASKB);
89
        outb(0, IOMD_FIQMASK);
90
        outb(0, IOMD_DMAMASK);
91
        outb(0, IOMD_IO0CR);
92
        outb(0, IOMD_IO1CR);
93
        outb(0, IOMD_IO2CR);
94
        outb(0, IOMD_IO3CR);
95
}

powered by: WebSVN 2.1.0

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