RTEMS 6.1-rc6
Loading...
Searching...
No Matches
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
64typedef unsigned char rtems_vector;
66typedef unsigned char rtems_raw_except_hdl_size;
67
68typedef struct {
69 rtems_vector vector;
70 rtems_exception_handler_t* raw_hdl;
72
73typedef void (*rtems_raw_except_enable) (const struct __rtems_raw_except_connect_data__*);
74typedef void (*rtems_raw_except_disable) (const struct __rtems_raw_except_connect_data__*);
75typedef int (*rtems_raw_except_is_enabled) (const struct __rtems_raw_except_connect_data__*);
76
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 */
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;
109
110typedef 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;
124
125/*
126 * C callable function enabling to set up one raw idt entry
127 */
128extern 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 */
133extern 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 */
138extern int mpc5xx_delete_exception (const rtems_raw_except_connect_data*);
139
140/*
141 * C callable function enabling to check if vector is valid
142 */
143extern int mpc5xx_vector_is_valid(rtems_vector vector);
144
145inline static void* mpc5xx_get_vector_addr(rtems_vector vector)
146{
147 return ((void*) (((unsigned) vector) << 8));
148}
149/*
150 * Exception global init.
151 */
152extern int mpc5xx_init_exceptions (rtems_raw_except_global_settings* config);
153extern int mpc5xx_get_exception_config (rtems_raw_except_global_settings** config);
154
155# endif /* ASM */
156
157#define SIZEOF_
158
159#endif
Definition: raw_exception.h:77
Definition: deflate.c:114
Definition: raw_exception.h:110
Definition: raw_exception.h:68