RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
powerpc
include
libcpu
raw_exception.h
1
/*
2
* raw_execption.h
3
*
4
* This file contains implementation of C function to
5
* Instantiate mpc5xx primary exception entries.
6
* More detailled information can be found on the Motorola
7
* site and more precisely in the following book:
8
*
9
* MPC555/MPC556 User's Manual
10
* Motorola REF : MPC555UM/D Rev. 3, 2000 October 15
11
*
12
*
13
* MPC5xx port sponsored by Defence Research and Development Canada - Suffield
14
* Copyright (C) 2004, Real-Time Systems Inc. (querbach@realtime.bc.ca)
15
*
16
* Derived from libcpu/powerpc/mpc8xx/exceptions/raw_exception.h:
17
*
18
* Copyright (C) 1999 Eric Valette (valette@crf.canon.fr)
19
* Canon Centre Recherche France.
20
*
21
* The license and distribution terms for this file may be
22
* found in the file LICENSE in this distribution or at
23
* http://www.rtems.org/license/LICENSE.
24
*/
25
26
#ifndef _LIBCPU_RAW_EXCEPTION_H
27
#define _LIBCPU_RAW_EXCEPTION_H
28
29
#include <libcpu/vectors.h>
30
31
/*
32
* Exception Vectors as defined in the MPC555 User's Manual
33
*/
34
35
#define ASM_RESET_VECTOR 0x01
36
#define ASM_MACH_VECTOR 0x02
37
38
#define ASM_EXT_VECTOR 0x05
39
#define ASM_ALIGN_VECTOR 0x06
40
#define ASM_PROG_VECTOR 0x07
41
#define ASM_FLOAT_VECTOR 0x08
42
#define ASM_DEC_VECTOR 0x09
43
44
#define ASM_SYS_VECTOR 0x0C
45
#define ASM_TRACE_VECTOR 0x0D
46
#define ASM_FLOATASSIST_VECTOR 0x0E
47
48
#define ASM_SOFTEMUL_VECTOR 0x10
49
50
#define ASM_IPROT_VECTOR 0x13
51
#define ASM_DPROT_VECTOR 0x14
52
53
#define ASM_DBREAK_VECTOR 0x1C
54
#define ASM_IBREAK_VECTOR 0x1D
55
#define ASM_MEBREAK_VECTOR 0x1E
56
#define ASM_NMEBREAK_VECTOR 0x1F
57
58
#ifndef ASM
59
60
/*
61
* Type definition for raw exceptions.
62
*/
63
64
typedef
unsigned
char
rtems_vector;
65
struct
__rtems_raw_except_connect_data__
;
66
typedef
unsigned
char
rtems_raw_except_hdl_size;
67
68
typedef
struct
{
69
rtems_vector vector;
70
rtems_exception_handler_t* raw_hdl;
71
}
rtems_raw_except_hdl
;
72
73
typedef
void (*rtems_raw_except_enable) (
const
struct
__rtems_raw_except_connect_data__
*);
74
typedef
void (*rtems_raw_except_disable) (
const
struct
__rtems_raw_except_connect_data__
*);
75
typedef
int (*rtems_raw_except_is_enabled) (
const
struct
__rtems_raw_except_connect_data__
*);
76
77
typedef
struct
__rtems_raw_except_connect_data__
{
78
/*
79
* Exception vector (As defined in the manual)
80
*/
81
rtems_vector exceptIndex;
82
/*
83
* Exception raw handler. See comment on handler properties below in function prototype.
84
*/
85
rtems_raw_except_hdl
hdl;
86
/*
87
* function for enabling raw exceptions. In order to be consistent
88
* with the fact that the raw connexion can defined in the
89
* libcpu library, this library should have no knowledge of
90
* board specific hardware to manage exceptions and thus the
91
* "on" routine must enable the except at processor level only.
92
*
93
*/
94
rtems_raw_except_enable on;
95
/*
96
* function for disabling raw exceptions. In order to be consistent
97
* with the fact that the raw connexion can defined in the
98
* libcpu library, this library should have no knowledge of
99
* board specific hardware to manage exceptions and thus the
100
* "on" routine must disable the except both at device and PIC level.
101
*
102
*/
103
rtems_raw_except_disable off;
104
/*
105
* function enabling to know what exception may currently occur
106
*/
107
rtems_raw_except_is_enabled isOn;
108
}rtems_raw_except_connect_data;
109
110
typedef
struct
{
111
/*
112
* size of all the table fields (*Tbl) described below.
113
*/
114
unsigned
int
exceptSize;
115
/*
116
* Default handler used when disconnecting exceptions.
117
*/
118
rtems_raw_except_connect_data defaultRawEntry;
119
/*
120
* Table containing initials/current value.
121
*/
122
rtems_raw_except_connect_data* rawExceptHdlTbl;
123
}
rtems_raw_except_global_settings
;
124
125
/*
126
* C callable function enabling to set up one raw idt entry
127
*/
128
extern
int
mpc5xx_set_exception (
const
rtems_raw_except_connect_data*);
129
130
/*
131
* C callable function enabling to get one current raw idt entry
132
*/
133
extern
int
mpc5xx_get_current_exception (rtems_raw_except_connect_data*);
134
135
/*
136
* C callable function enabling to remove one current raw idt entry
137
*/
138
extern
int
mpc5xx_delete_exception (
const
rtems_raw_except_connect_data*);
139
140
/*
141
* C callable function enabling to check if vector is valid
142
*/
143
extern
int
mpc5xx_vector_is_valid(rtems_vector vector);
144
145
inline
static
void
* mpc5xx_get_vector_addr(rtems_vector vector)
146
{
147
return
((
void
*) (((
unsigned
) vector) << 8));
148
}
149
/*
150
* Exception global init.
151
*/
152
extern
int
mpc5xx_init_exceptions (
rtems_raw_except_global_settings
* config);
153
extern
int
mpc5xx_get_exception_config (
rtems_raw_except_global_settings
** config);
154
155
# endif
/* ASM */
156
157
#define SIZEOF_
158
159
#endif
__rtems_raw_except_connect_data__
Definition
raw_exception.h:77
rtems_raw_except_global_settings
Definition
raw_exception.h:110
rtems_raw_except_hdl
Definition
raw_exception.h:68
Generated by
1.18.0