1 #ifndef CYGONCE_HAL_BASETYPE_H
2 # define CYGONCE_HAL_BASETYPE_H
4 //======================================================================
8 // HAL emulation for the host-side infrastructure.
10 //======================================================================
11 //####COPYRIGHTBEGIN####
13 // ----------------------------------------------------------------------------
14 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
16 // This file is part of the eCos host tools.
18 // This program is free software; you can redistribute it and/or modify it
19 // under the terms of the GNU General Public License as published by the Free
20 // Software Foundation; either version 2 of the License, or (at your option)
23 // This program is distributed in the hope that it will be useful, but WITHOUT
24 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
28 // You should have received a copy of the GNU General Public License along with
29 // this program; if not, write to the Free Software Foundation, Inc.,
30 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
32 // ----------------------------------------------------------------------------
34 //####COPYRIGHTEND####
35 //======================================================================
36 //#####DESCRIPTIONBEGIN####
43 //####DESCRIPTIONEND####
44 //======================================================================
46 // The purpose of this header file is to replicate the functionality
47 // provided by <cyg/hal/basetype.h> on the target side. Essentially
48 // this file has to define endianness. Optionally it can also define
49 // the correct data types for e.g. cyg_count32 etc.
51 // On the host side portability is achieved by means of autoconf and
52 // feature tests, as opposed to re-implementing the HAL for each
53 // platform. In particular there will be a generated header file
54 // <pkgconf/hostinfra.h> which gets filled in during the configure
57 // It has been decided that the host side should use exactly the same
58 // infrastructure header files as the target side (although extra
59 // functionality may be defined in these header files where
60 // appropriate). This means that the host side needs to provide
61 // <cyg/hal/basetype.h>, even though it does not contain a HAL.
63 // This implementation of <cyg/hal/basetype.h> reads in the
64 // configuration header generated by the configure script and adapts
65 // this information into whatever is required by
66 // <cyg/infra/cyg_type.h>.
68 #ifndef CYGONCE_PKGCONF_INFRA_H
69 # include <pkgconf/infra.h>
72 // The autoconf test for endianness will result in a #define for
73 // LITTLE_ENDIAN_HOST on appropriate platforms. This needs to be
74 // converted into a definition of CYG_BYTEORDER as per the target-side
77 #ifdef WORDS_BIGENDIAN
78 # define CYG_BYTEORDER CYG_MSBFIRST
80 # define CYG_BYTEORDER CYG_LSBFIRST
83 // The default definitions for cyg_halint8/16/32 and cyg_halcount8/16/32
84 // should be fine (although eventually we may come across a platform
85 // where int's are 64 bit). 64 bit arithmetic is a bit more of a problem.
86 // on the majority of systems so there is an autoconf test which will
87 // generate appropriate #define's for cyg_halint64 and cyg_halcount64,
88 // which means this header file does not to do anything more.
89 // cyg_halbool and cyg_halatomic should both be ok.
92 // Any symbols defined in <cyg/infra/config.h> which have been processed
93 // here should no longer be of any interest, and in the interests of
94 // reducing name space pollution they get undef'ed here.
95 #undef WORDS_BIGENDIAN
97 #endif // CYGONCE_HAL_BASETYPE_H