diff --git a/payloads/coreinfo/cbfs_module.c b/payloads/coreinfo/cbfs_module.c index 274356dd2e..ceb0e3cce2 100644 --- a/payloads/coreinfo/cbfs_module.c +++ b/payloads/coreinfo/cbfs_module.c @@ -18,7 +18,7 @@ */ #include "coreinfo.h" -#include "arch/endian.h" +#include "endian.h" #ifdef CONFIG_MODULE_CBFS diff --git a/payloads/libpayload/Config.in b/payloads/libpayload/Config.in index 701988dff4..8b54f8f4f6 100644 --- a/payloads/libpayload/Config.in +++ b/payloads/libpayload/Config.in @@ -377,3 +377,12 @@ config DEBUG_MALLOC endmenu +config BIG_ENDIAN + default n + bool + +config LITTLE_ENDIAN + default n + bool + +source "arch/Config.in" diff --git a/payloads/libpayload/arch/Config.in b/payloads/libpayload/arch/Config.in new file mode 100644 index 0000000000..6734f5a49e --- /dev/null +++ b/payloads/libpayload/arch/Config.in @@ -0,0 +1,24 @@ +## +## Copyright (c) 2012 The Chromium OS Authors. +## +## See file CREDITS for list of people who contributed to this +## project. +## +## This program 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 of +## the License, or (at your option) any later version. +## +## This program 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 this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, +## MA 02111-1307 USA +## + +source "arch/i386/Config.in" +source "arch/powerpc/Config.in" diff --git a/payloads/libpayload/arch/i386/Config.in b/payloads/libpayload/arch/i386/Config.in new file mode 100644 index 0000000000..ec4c97870d --- /dev/null +++ b/payloads/libpayload/arch/i386/Config.in @@ -0,0 +1,29 @@ +## +## Copyright (c) 2012 The Chromium OS Authors. +## +## See file CREDITS for list of people who contributed to this +## project. +## +## This program 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 of +## the License, or (at your option) any later version. +## +## This program 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 this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, +## MA 02111-1307 USA +## + +if TARGET_I386 + +config ARCH_SPECIFIC_OPTIONS # dummy + def_bool y + select LITTLE_ENDIAN + +endif diff --git a/payloads/libpayload/arch/powerpc/Config.in b/payloads/libpayload/arch/powerpc/Config.in new file mode 100644 index 0000000000..37318f0da3 --- /dev/null +++ b/payloads/libpayload/arch/powerpc/Config.in @@ -0,0 +1,29 @@ +## +## Copyright (c) 2012 The Chromium OS Authors. +## +## See file CREDITS for list of people who contributed to this +## project. +## +## This program 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 of +## the License, or (at your option) any later version. +## +## This program 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 this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, +## MA 02111-1307 USA +## + +if TARGET_POWERPC + +config ARCH_SPECIFIC_OPTIONS # dummy + def_bool y + select BIG_ENDIAN + +endif diff --git a/payloads/libpayload/drivers/usb/usbmsc.c b/payloads/libpayload/drivers/usb/usbmsc.c index db369f7bd1..5cfb3c63cb 100644 --- a/payloads/libpayload/drivers/usb/usbmsc.c +++ b/payloads/libpayload/drivers/usb/usbmsc.c @@ -27,7 +27,7 @@ * SUCH DAMAGE. */ -#include +#include #include #include #include diff --git a/payloads/libpayload/include/arpa/inet.h b/payloads/libpayload/include/arpa/inet.h index 4fc8a895ed..9a5b39bd00 100644 --- a/payloads/libpayload/include/arpa/inet.h +++ b/payloads/libpayload/include/arpa/inet.h @@ -30,7 +30,7 @@ #ifndef _ARPA_INET_H #define _ARPA_INET_H -// arch/endian.h already provides ?to?[lwb] -#include +// endian.h already provides ?to?[lwb] +#include #endif diff --git a/payloads/libpayload/include/endian.h b/payloads/libpayload/include/endian.h new file mode 100644 index 0000000000..cd805e0f4e --- /dev/null +++ b/payloads/libpayload/include/endian.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2012 The Chromium OS Authors. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program 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 of + * the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _ENDIAN_H_ +#define _ENDIAN_H_ + +#include +#include + +#define swap_bytes16(in) (((in & 0xFF) << 8) | ((in & 0xFF00) >> 8)) +#define swap_bytes32(in) (((in & 0xFF) << 24) | ((in & 0xFF00) << 8) | \ + ((in & 0xFF0000) >> 8) | ((in & 0xFF000000) >> 24)) +#define swap_bytes64(in) (((uint64_t)swap_bytes32((uint32_t)(in)) << 32) | \ + ((uint64_t)swap_bytes32((uint32_t)((in) >> 32)))) + + +#if defined CONFIG_BIG_ENDIAN + +#define htobew(in) (in) +#define htobel(in) (in) +#define htobell(in) (in) + +#define htolew(in) swap_bytes16(in) +#define htolel(in) swap_bytes32(in) +#define htolell(in) swap_bytes64(in) + +#elif defined CONFIG_LITTLE_ENDIAN + +#define htobew(in) swap_bytes16(in) +#define htobel(in) swap_bytes32(in) +#define htobell(in) swap_bytes64(in) + +#define htolew(in) (in) +#define htolel(in) (in) +#define htolell(in) (in) + +#else + +#error Cant tell if the CPU is little or big endian. + +#endif + +#define betohw(in) htobew(in) +#define betohl(in) htobel(in) +#define betohll(in) htobell(in) + +#define letohw(in) htolew(in) +#define letohl(in) htolel(in) +#define letohll(in) htolell(in) + +#define htonw(in) htobew(in) +#define htonl(in) htobel(in) +#define htonll(in) htobell(in) + +#define ntohw(in) htonw(in) +#define ntohl(in) htonl(in) +#define ntohll(in) htonll(in) + +#endif diff --git a/payloads/libpayload/include/i386/arch/endian.h b/payloads/libpayload/include/i386/arch/endian.h deleted file mode 100644 index e0114069fe..0000000000 --- a/payloads/libpayload/include/i386/arch/endian.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is part of the libpayload project. - * - * Copyright (C) 2008 Advanced Micro Devices, Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _ARCH_ENDIAN_H -#define _ARCH_ENDIAN_H - -#include - -#define ntohw(in) ((( (in) & 0xFF) << 8) | (( (in) & 0xFF00) >> 8)) - -#define ntohl(in) ((( (in) & 0xFF) << 24) | (( (in) & 0xFF00) << 8) | \ - (( (in) & 0xFF0000) >> 8) | (( (in) & 0xFF000000) >> 24)) - -#define ntohll(in) (((u64) ntohl( (in) & 0xFFFFFFFF) << 32) | ((u64) ntohl( (in) >> 32))) - -#define htonw(in) ntohw(in) -#define htonl(in) ntohl(in) -#define htonll(in) ntohll(in) - -#endif diff --git a/payloads/libpayload/include/powerpc/arch/endian.h b/payloads/libpayload/include/powerpc/arch/endian.h deleted file mode 100644 index 1b8ff8a808..0000000000 --- a/payloads/libpayload/include/powerpc/arch/endian.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of the libpayload project. - * - * Copyright (C) 2008 Advanced Micro Devices, Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef _ARCH_ENDIAN_H -#define _ARCH_ENDIAN_H - -#include - -#define ntohw(in) (in) - -#define ntohl(in) (in) - -#define ntohll(in) (in) - -#define htonw(in) ntohw(in) -#define htonl(in) ntohw(in) -#define htonll(in) ntohll(in) - -#endif diff --git a/payloads/libpayload/libc/lar.c b/payloads/libpayload/libc/lar.c index 9ee09e2ec6..71f240d80b 100644 --- a/payloads/libpayload/libc/lar.c +++ b/payloads/libpayload/libc/lar.c @@ -27,8 +27,8 @@ * SUCH DAMAGE. */ +#include #include -#include #define ROM_RESET_VECTOR 0xFFFFFFF0 diff --git a/payloads/libpayload/libcbfs/cbfs.c b/payloads/libpayload/libcbfs/cbfs.c index 7da2d58364..fd4cfb2319 100644 --- a/payloads/libpayload/libcbfs/cbfs.c +++ b/payloads/libpayload/libcbfs/cbfs.c @@ -27,7 +27,7 @@ * SUCH DAMAGE. */ -#include +#include #include #include #include