source: rtems/bsps/i386/include/bsp/irq_asm.h @ 7632906

Last change on this file since 7632906 was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

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

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

Update #3254.

  • Property mode set to 100644
File size: 1.6 KB
2 * @file
3 * @ingroup i386_irq
4 * @brief
5 */
7/* irq_asm.h
8 *
9 *  This include file has defines to represent some contant used
10 *  to program and manage the  Intel 8259 interrupt controller
11 *
12 *
13 *  COPYRIGHT (c) 1998
14 *
15 *  Copyright (c) 2016 Chris Johns <>
16 *
17 *  The license and distribution terms for this file may be
18 *  found in the file LICENSE in this distribution or at
19 *
20 */
21#ifndef __I8259S_H__
22#define __I8259S_H__
24#define BSP_ASM_IRQ_VECTOR_BASE 0x20
25    /** @brief PIC's command and mask registers */
26#define PIC_MASTER_COMMAND_IO_PORT              0x20    ///< Master PIC command register
27#define PIC_SLAVE_COMMAND_IO_PORT               0xa0    ///< Slave PIC command register
28#define PIC_MASTER_IMR_IO_PORT                  0x21    ///< Master PIC Interrupt Mask Register
29#define PIC_SLAVE_IMR_IO_PORT                   0xa1    ///< Slave PIC Interrupt Mask Register
31    /** @brief Command for specific EOI (End Of Interrupt): Interrupt acknowledge */
32#define PIC_EOSI        0x60    ///< End of Specific Interrupt (EOSI)
33#define PIC_EOI         0x20    ///< Generic End of Interrupt (EOI)
35/* Operation control word type 3.  Bit 3 (0x08) must be set. Even address. */
36#define PIC_OCW3_RIS        0x01            /* 1 = read IS, 0 = read IR */
37#define PIC_OCW3_RR         0x02            /* register read */
38#define PIC_OCW3_P          0x04            /* poll mode command */
39/* 0x08 must be 1 to select OCW3 vs OCW2 */
40#define PIC_OCW3_SEL        0x08            /* must be 1 */
41/* 0x10 must be 0 to select OCW3 vs ICW1 */
42#define PIC_OCW3_SMM        0x20            /* special mode mask */
43#define PIC_OCW3_ESMM       0x40            /* enable SMM */
Note: See TracBrowser for help on using the repository browser.