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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [arm/] [xscale/] [picasso/] [current/] [include/] [hal_plf_ints.h] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_HAL_PLF_INTS_H
2
#define CYGONCE_HAL_PLF_INTS_H
3
//==========================================================================
4
//
5
//      hal_plf_ints.h
6
//
7
//      HAL Platform Interrupt support
8
//
9
//==========================================================================
10
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
11
// -------------------------------------------                              
12
// This file is part of eCos, the Embedded Configurable Operating System.   
13
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
14
//
15
// eCos is free software; you can redistribute it and/or modify it under    
16
// the terms of the GNU General Public License as published by the Free     
17
// Software Foundation; either version 2 or (at your option) any later      
18
// version.                                                                 
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT      
21
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
23
// for more details.                                                        
24
//
25
// You should have received a copy of the GNU General Public License        
26
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
27
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
28
//
29
// As a special exception, if other files instantiate templates or use      
30
// macros or inline functions from this file, or you compile this file      
31
// and link it with other works to produce a work based on this file,       
32
// this file does not by itself cause the resulting work to be covered by   
33
// the GNU General Public License. However the source code for this file    
34
// must still be made available in accordance with section (3) of the GNU   
35
// General Public License v2.                                               
36
//
37
// This exception does not invalidate any other reasons why a work based    
38
// on this file might be covered by the GNU General Public License.         
39
// -------------------------------------------                              
40
// ####ECOSGPLCOPYRIGHTEND####                                              
41
//==========================================================================
42
//#####DESCRIPTIONBEGIN####
43
//
44
// Author(s):    msalter
45
// Contributors: msalter
46
// Date:         2001-12-03
47
// Purpose:      Define Interrupt support
48
// Description:  The interrupt details for a specific platform is defined here.
49
// Usage:
50
//              
51
//
52
//####DESCRIPTIONEND####
53
//
54
//==========================================================================
55
 
56
// start with variant ints
57
#include <pkgconf/hal.h>
58
#include CYGBLD_HAL_VAR_INTS_H
59
#include <cyg/hal/plf_io.h>
60
 
61
//----------------------------------------------------------------------------
62
// Additional interrupts from PCI & Motherboard
63
#define _uPCI_BASE_INTERRUPT   (96+17)
64
 
65
#define CYGNUM_HAL_INTERRUPT_PCI_INTA    (_uPCI_BASE_INTERRUPT+0)   
66
#define CYGNUM_HAL_INTERRUPT_PCI_INTB    (_uPCI_BASE_INTERRUPT+1)   
67
#define CYGNUM_HAL_INTERRUPT_PCI_INTC    (_uPCI_BASE_INTERRUPT+2)   
68
#define CYGNUM_HAL_INTERRUPT_PCI_INTD    (_uPCI_BASE_INTERRUPT+3)   
69
#define CYGNUM_HAL_INTERRUPT_PXA         (_uPCI_BASE_INTERRUPT+4)   
70
 
71
#undef  CYGNUM_HAL_ISR_MIN
72
#undef  CYGNUM_HAL_ISR_MAX
73
#define CYGNUM_HAL_ISR_MIN               0
74
#define CYGNUM_HAL_ISR_MAX               (_uPCI_BASE_INTERRUPT+4)   
75
 
76
//----------------------------------------------------------------------------
77
// Platform specific interrupt handling
78
externC int  _picasso_extended_irq(void);
79
externC void _picasso_extended_int_mask(int vector);
80
externC void _picasso_extended_int_unmask(int vector);
81
externC void _picasso_extended_int_acknowledge(int vector);
82
externC void _picasso_extended_int_configure(int vector, int level, int up);
83
externC void _picasso_extended_int_set_level(int vector, int level);
84
 
85
#define HAL_EXTENDED_IRQ_HANDLER(sources)                       \
86
    if ((sources & (1 << CYGNUM_HAL_INTERRUPT_GPIO1)) != 0) {   \
87
        int res = _picasso_extended_irq();                        \
88
        if (res) return res;                                    \
89
    };
90
#define HAL_EXTENDED_INTERRUPT_MASK(vector)     \
91
    if (vector >= _uPCI_BASE_INTERRUPT) {       \
92
        _picasso_extended_int_mask(vector);       \
93
        return;                                 \
94
    }
95
#define HAL_EXTENDED_INTERRUPT_UNMASK(vector)   \
96
    if (vector >= _uPCI_BASE_INTERRUPT) {       \
97
        _picasso_extended_int_unmask(vector);     \
98
        return;                                 \
99
    }
100
#define HAL_EXTENDED_INTERRUPT_ACKNOWLEDGE(vector)      \
101
    if (vector >= _uPCI_BASE_INTERRUPT) {               \
102
        _picasso_extended_int_acknowledge(vector);        \
103
        return;                                         \
104
    }
105
#define HAL_EXTENDED_INTERRUPT_CONFIGURE(vector, level, up)     \
106
    if (vector >= _uPCI_BASE_INTERRUPT) {                       \
107
        _picasso_extended_int_configure(vector, level, up);       \
108
        return;                                                 \
109
    }
110
#define HAL_EXTENDED_INTERRUPT_SET_LEVEL(vector, level) \
111
    if (vector >= _uPCI_BASE_INTERRUPT) {               \
112
        _picasso_extended_int_set_level(vector, level);   \
113
        return;                                         \
114
    }
115
 
116
 
117
//----------------------------------------------------------------------------
118
// Reset.
119
#undef  HAL_PLATFORM_RESET
120
#define HAL_PLATFORM_RESET()                                               \
121
    CYG_MACRO_START                                                        \
122
    cyg_uint32 ctrl;                                                       \
123
                                                                           \
124
    /* By disabling interupts we will just hang in the loop below      */  \
125
    /* if for some reason the software reset fails.                    */  \
126
    HAL_DISABLE_INTERRUPTS(ctrl);                                          \
127
                                                                           \
128
    PCICTL_MISC = PCI_SYSTEM_RESET;                                              \
129
                                                                           \
130
    for(;;); /* hang here forever if reset fails */                        \
131
    CYG_MACRO_END
132
 
133
// Fallback (never really used)
134
#define HAL_PLATFORM_RESET_ENTRY 0x00000000
135
 
136
 
137
#endif // CYGONCE_HAL_PLF_INTS_H

powered by: WebSVN 2.1.0

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