source: rtems/bsps/powerpc/include/libcpu/raw_exception.h @ 2afb22b

5
Last change on this file since 2afb22b was 2afb22b, checked in by Chris Johns <chrisj@…>, on Dec 23, 2017 at 7:18:56 AM

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 4.5 KB
Line 
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#define LAST_VALID_EXC          ASM_NMEBREAK_VECTOR
59
60#ifndef ASM
61
62/*
63 * Type definition for raw exceptions.
64 */
65
66typedef unsigned char  rtems_vector;
67struct  __rtems_raw_except_connect_data__;
68typedef unsigned char   rtems_raw_except_hdl_size;
69
70typedef struct {
71  rtems_vector                  vector;
72  rtems_exception_handler_t*    raw_hdl;
73}rtems_raw_except_hdl;
74
75typedef void (*rtems_raw_except_enable)         (const struct __rtems_raw_except_connect_data__*);
76typedef void (*rtems_raw_except_disable)        (const struct __rtems_raw_except_connect_data__*);
77typedef int  (*rtems_raw_except_is_enabled)     (const struct __rtems_raw_except_connect_data__*);
78
79typedef struct __rtems_raw_except_connect_data__{
80 /*
81  * Exception vector (As defined in the manual)
82  */
83  rtems_vector                  exceptIndex;
84  /*
85   * Exception raw handler. See comment on handler properties below in function prototype.
86   */
87  rtems_raw_except_hdl          hdl;
88  /*
89   * function for enabling raw exceptions. In order to be consistent
90   * with the fact that the raw connexion can defined in the
91   * libcpu library, this library should have no knowledge of
92   * board specific hardware to manage exceptions and thus the
93   * "on" routine must enable the except at processor level only.
94   *
95   */
96    rtems_raw_except_enable     on;
97  /*
98   * function for disabling raw exceptions. In order to be consistent
99   * with the fact that the raw connexion can defined in the
100   * libcpu library, this library should have no knowledge of
101   * board specific hardware to manage exceptions and thus the
102   * "on" routine must disable the except both at device and PIC level.
103   *
104   */
105  rtems_raw_except_disable      off;
106  /*
107   * function enabling to know what exception may currently occur
108   */
109  rtems_raw_except_is_enabled   isOn;
110}rtems_raw_except_connect_data;
111
112typedef struct {
113  /*
114   * size of all the table fields (*Tbl) described below.
115   */
116  unsigned int                          exceptSize;
117  /*
118   * Default handler used when disconnecting exceptions.
119   */
120  rtems_raw_except_connect_data         defaultRawEntry;
121  /*
122   * Table containing initials/current value.
123   */
124  rtems_raw_except_connect_data*        rawExceptHdlTbl;
125}rtems_raw_except_global_settings;
126
127/*
128 * C callable function enabling to set up one raw idt entry
129 */
130extern int mpc5xx_set_exception (const rtems_raw_except_connect_data*);
131
132/*
133 * C callable function enabling to get one current raw idt entry
134 */
135extern int mpc5xx_get_current_exception (rtems_raw_except_connect_data*);
136
137/*
138 * C callable function enabling to remove one current raw idt entry
139 */
140extern int mpc5xx_delete_exception (const rtems_raw_except_connect_data*);
141
142/*
143 * C callable function enabling to check if vector is valid
144 */
145extern int mpc5xx_vector_is_valid(rtems_vector vector);
146
147inline static  void* mpc5xx_get_vector_addr(rtems_vector vector)
148{
149  return ((void*)  (((unsigned) vector) << 8));
150}
151/*
152 * Exception global init.
153 */
154extern int mpc5xx_init_exceptions (rtems_raw_except_global_settings* config);
155extern int mpc5xx_get_exception_config (rtems_raw_except_global_settings** config);
156
157# endif /* ASM */
158
159#define SIZEOF_
160
161#endif
Note: See TracBrowser for help on using the repository browser.