Mercurial > ecos-v3_0-branch
changeset 2807:9a8446cf24e9
* src/spi_at91.c (cyg_spi_at91_bus_init): Partially revert change of
2009-02-11. Define an empty CYGBLD_ATTRIB_C_INIT_PRI and rely on
spi_at91_init.cxx to call, in case the compiler does not supply
that macro (e.g. if too old).
* cdl/spi_at91.cdl: Revert change of 2009-02-11.
* src/spi_at91_init.cxx: Revive. Set priority to CYG_INIT_BUS_SPI.
Conditionalise on CYGBLD_ATTRIB_C_INIT_PRI.
| author | jlarmour |
|---|---|
| date | Mon, 16 Feb 2009 23:34:51 +0000 |
| parents | 6730c20e4ca3 |
| children | ef21b86ad6b9 |
| files | packages/devs/spi/arm/at91/current/ChangeLog packages/devs/spi/arm/at91/current/cdl/spi_at91.cdl packages/devs/spi/arm/at91/current/src/spi_at91.c packages/devs/spi/arm/at91/current/src/spi_at91_init.cxx |
| diffstat | 4 files changed, 92 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/devs/spi/arm/at91/current/ChangeLog +++ b/packages/devs/spi/arm/at91/current/ChangeLog @@ -1,3 +1,13 @@ +2009-02-16 Jonathan Larmour <jifl@eCosCentric.com> + + * src/spi_at91.c (cyg_spi_at91_bus_init): Partially revert change of + 2009-02-11. Define an empty CYGBLD_ATTRIB_C_INIT_PRI and rely on + spi_at91_init.cxx to call, in case the compiler does not supply + that macro (e.g. if too old). + * cdl/spi_at91.cdl: Revert change of 2009-02-11. + * src/spi_at91_init.cxx: Revive. Set priority to CYG_INIT_BUS_SPI. + Conditionalise on CYGBLD_ATTRIB_C_INIT_PRI. + 2009-02-12 Nick Garnett <nickg@ecoscentric.com> * cdl/spi_at91.cdl: Add a requires for CYGPKG_ERROR.
--- a/packages/devs/spi/arm/at91/current/cdl/spi_at91.cdl +++ b/packages/devs/spi/arm/at91/current/cdl/spi_at91.cdl @@ -55,6 +55,7 @@ cdl_package CYGPKG_DEVS_SPI_ARM_AT91 { hardware include_dir cyg/io compile spi_at91.c + compile -library=libextras.a spi_at91_init.cxx cdl_option CYGHWR_DEVS_SPI_ARM_AT91_BUS0 { display "Enable support for SPI bus 0"
--- a/packages/devs/spi/arm/at91/current/src/spi_at91.c +++ b/packages/devs/spi/arm/at91/current/src/spi_at91.c @@ -175,8 +175,14 @@ CYG_SPI_DEFINE_BUS_TABLE(cyg_spi_at91_de #endif // ------------------------------------------------------------------------- -static void CYGBLD_ATTRIB_C_INIT_PRI(CYG_INIT_BUS_SPI) -spi_at91_bus_init(void) +// If C constructor with init priority functionality is not in compiler, +// rely on spi_at91_init.cxx to init us. +#ifndef CYGBLD_ATTRIB_C_INIT_PRI +# define CYGBLD_ATTRIB_C_INIT_PRI(x) +#endif + +void CYGBLD_ATTRIB_C_INIT_PRI(CYG_INIT_BUS_SPI) +cyg_spi_at91_bus_init(void) { #ifdef CYGHWR_DEVS_SPI_ARM_AT91_BUS0
new file mode 100644 --- /dev/null +++ b/packages/devs/spi/arm/at91/current/src/spi_at91_init.cxx @@ -0,0 +1,73 @@ +//========================================================================== +// +// spi_at91_init.cxx +// +// Atmel AT91 (ARM) SPI bus init +// +//========================================================================== +// ####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2009 Free Software Foundation, Inc. +// +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later +// version. +// +// eCos is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License +// along with eCos; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// As a special exception, if other files instantiate templates or use +// macros or inline functions from this file, or you compile this file +// and link it with other works to produce a work based on this file, +// this file does not by itself cause the resulting work to be covered by +// the GNU General Public License. However the source code for this file +// must still be made available in accordance with section (3) of the GNU +// General Public License v2. +// +// This exception does not invalidate any other reasons why a work based +// on this file might be covered by the GNU General Public License. +// ------------------------------------------- +// ####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): Savin Zlobec <savin@elatec.si> +// Date: 2004-08-25 +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include <cyg/infra/cyg_type.h> + +// This file is not needed if we support CYGBLD_ATTRIB_C_INIT_PRI, as the +// init happens directly in spi_at91.c then. +#ifndef CYGBLD_ATTRIB_C_INIT_PRI + +// ------------------------------------------------------------------------- + +externC void cyg_spi_at91_bus_init(void); + +class cyg_spi_at91_bus_init_class { +public: + cyg_spi_at91_bus_init_class(void) { + cyg_spi_at91_bus_init(); + } +}; + +// ------------------------------------------------------------------------- + +static cyg_spi_at91_bus_init_class spi_at91_bus_init CYGBLD_ATTRIB_INIT_PRI(CYG_INIT_BUS_SPI); + +#endif // ifndef CYGBLD_ATTRIB_C_INIT_PRI + +// ------------------------------------------------------------------------- +// EOF spi_at91_init.cxx
