source: rtems/bsps/sparc64/include/boot/ofw.h @ 0f7913b

5
Last change on this file since 0f7913b 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.0 KB
Line 
1/*
2 * Copyright (c) 2005 Martin Decky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 *   notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 *   notice, this list of conditions and the following disclaimer in the
13 *   documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 *   derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef BOOT_OFW_H_
30#define BOOT_OFW_H_
31
32#include <boot/types.h>
33#include <stdarg.h>
34
35#define MEMMAP_MAX_RECORDS  32
36#define MAX_OFW_ARGS        12
37
38#define OFW_TREE_PATH_MAX_LEN           256
39#define OFW_TREE_PROPERTY_MAX_NAMELEN   32
40#define OFW_TREE_PROPERTY_MAX_VALUELEN  64
41
42typedef unative_t ofw_arg_t;
43typedef unsigned int ihandle;
44typedef unsigned int phandle;
45
46/** OpenFirmware command structure
47 *
48 */
49typedef struct {
50        ofw_arg_t service;             /**< Command name. */
51        ofw_arg_t nargs;               /**< Number of in arguments. */
52        ofw_arg_t nret;                /**< Number of out arguments. */
53        ofw_arg_t args[MAX_OFW_ARGS];  /**< List of arguments. */
54} ofw_args_t;
55
56typedef struct {
57        void *start;
58        uint32_t size;
59} memzone_t;
60
61typedef struct {
62        uint32_t total;
63        uint32_t count;
64        memzone_t zones[MEMMAP_MAX_RECORDS];
65} memmap_t;
66
67typedef struct {
68        uint32_t info;
69        uint32_t addr_hi;
70        uint32_t addr_lo;
71} pci_addr_t;
72
73typedef struct {
74        pci_addr_t addr;
75        uint32_t size_hi;
76        uint32_t size_lo;
77} pci_reg_t;
78
79extern uintptr_t ofw_cif;
80
81extern phandle ofw_chosen;
82extern ihandle ofw_stdout;
83extern phandle ofw_root;
84extern ihandle ofw_mmu;
85extern phandle ofw_memory;
86
87extern void ofw_init(void);
88
89extern void ofw_write(const char *str, const int len);
90
91extern int ofw_get_property(const phandle device, const char *name, void *buf, const int buflen);
92extern int ofw_get_proplen(const phandle device, const char *name);
93extern int ofw_next_property(const phandle device, char *previous, char *buf);
94
95extern phandle ofw_get_child_node(const phandle node);
96extern phandle ofw_get_peer_node(const phandle node);
97extern phandle ofw_find_device(const char *name);
98
99extern int ofw_package_to_path(const phandle device, char *buf, const int buflen);
100
101extern int ofw(ofw_args_t *arg);
102extern unsigned long ofw_call(const char *service, const int nargs, const int nret, ofw_arg_t *rets, ...);
103extern void ofw_write(const char *str, const int len);
104extern void ofw_read(void *str, const int len);
105extern unsigned int ofw_get_address_cells(const phandle device);
106extern unsigned int ofw_get_size_cells(const phandle device);
107extern void *ofw_translate(const void *virt);
108extern int ofw_translate_failed(ofw_arg_t flag);
109extern void *ofw_claim_virt(const void *virt, const unsigned int len);
110extern void *ofw_claim_phys(const void *virt, const unsigned int len);
111extern void *ofw_claim_phys_any(const unsigned int len, const unsigned int alignment);
112extern int ofw_map(const void *phys, const void *virt, const unsigned int size, const int mode);
113extern int ofw_memmap(memmap_t *map);
114extern void ofw_setup_screens(void);
115extern void ofw_quiesce(void);
116
117#endif
Note: See TracBrowser for help on using the repository browser.