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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [kernel/] [current/] [include/] [except.hxx] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_KERNEL_EXCEPT_HXX
2
#define CYGONCE_KERNEL_EXCEPT_HXX
3
 
4
//==========================================================================
5
//
6
//      except.hxx
7
//
8
//      Exception handling declarations
9
//
10
//==========================================================================
11
// ####ECOSGPLCOPYRIGHTBEGIN####
12
// -------------------------------------------
13
// This file is part of eCos, the Embedded Configurable Operating System.
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under
17
// the terms of the GNU General Public License as published by the Free
18
// Software Foundation; either version 2 or (at your option) any later
19
// version.
20
//
21
// eCos is distributed in the hope that it will be useful, but WITHOUT
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
24
// for more details.
25
//
26
// You should have received a copy of the GNU General Public License
27
// along with eCos; if not, write to the Free Software Foundation, Inc.,
28
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
29
//
30
// As a special exception, if other files instantiate templates or use
31
// macros or inline functions from this file, or you compile this file
32
// and link it with other works to produce a work based on this file,
33
// this file does not by itself cause the resulting work to be covered by
34
// the GNU General Public License. However the source code for this file
35
// must still be made available in accordance with section (3) of the GNU
36
// General Public License v2.
37
//
38
// This exception does not invalidate any other reasons why a work based
39
// on this file might be covered by the GNU General Public License.
40
// -------------------------------------------
41
// ####ECOSGPLCOPYRIGHTEND####
42
//==========================================================================
43
//#####DESCRIPTIONBEGIN####
44
//
45
// Author(s):    nickg
46
// Contributors: nickg, jlarmour
47
// Date:         1999-02-16
48
// Purpose:      Define exception interfaces
49
// Description:  The classes defined here collectively implement the
50
//               internal API used to register, manage and deliver
51
//               exceptions.
52
// Usage:        #include 
53
//
54
//####DESCRIPTIONEND####
55
//
56
//==========================================================================
57
 
58
#include 
59
#include           // assertion macros
60
#include            // exception defines
61
 
62
// -------------------------------------------------------------------------
63
// Exception handler function prototype
64
 
65
typedef void cyg_exception_handler(
66
    CYG_ADDRWORD        data,                   // user supplied data
67
    cyg_code            exception_number,       // exception being raised
68
    CYG_ADDRWORD        exception_info          // any exception specific info
69
    );
70
 
71
// -------------------------------------------------------------------------
72
// Exception delivery interface. This function is exported to the HAL which
73
// invokes it for all exceptions that it is not able to handle itself.
74
 
75
externC void cyg_hal_deliver_exception( CYG_WORD code, CYG_ADDRWORD data );
76
 
77
// -------------------------------------------------------------------------
78
// Exception control class. Depending on the configuration there is either
79
// one of these per thread, or one for the entire system.
80
 
81
#ifdef CYGPKG_KERNEL_EXCEPTIONS
82
 
83
class Cyg_Exception_Control
84
{
85
 
86
#ifdef CYGSEM_KERNEL_EXCEPTIONS_DECODE
87
    cyg_exception_handler   *exception_handler[CYGNUM_HAL_EXCEPTION_COUNT];
88
 
89
    CYG_ADDRWORD            exception_data[CYGNUM_HAL_EXCEPTION_COUNT];
90
#else
91
    cyg_exception_handler   *exception_handler; // Handler function
92
 
93
    CYG_ADDRWORD            exception_data;     // Handler data
94
#endif
95
 
96
public:
97
 
98
    Cyg_Exception_Control();
99
 
100
    // Register an exception handler for either the specific exception
101
    // or for all exceptions.
102
    void register_exception(
103
        cyg_code                exception_number,       // exception number
104
        cyg_exception_handler   handler,                // handler function
105
        CYG_ADDRWORD            data,                   // data argument
106
        cyg_exception_handler   **old_handler,          // handler function
107
        CYG_ADDRWORD            *old_data               // data argument
108
        );
109
 
110
    // Remove an exception handler.
111
    void deregister_exception(
112
        cyg_code                exception_number        // exception number
113
        );
114
 
115
    // Deliver the given exception now by invoking the appropriate
116
    // exception handler.
117
    void deliver_exception(
118
        cyg_code            exception_number,       // exception being raised
119
        CYG_ADDRWORD        exception_info          // exception specific info
120
        );
121
};
122
 
123
#endif
124
 
125
// -------------------------------------------------------------------------
126
#endif // ifndef CYGONCE_KERNEL_EXCEPT_HXX
127
// EOF except.hxx

powered by: WebSVN 2.1.0

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