Marc Jones (marc.jones@se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7323
-gerrit
commit 8e4eb077d3bff4ab97f6ddffcba44ba9b5192ae6 Author: Julius Werner jwerner@chromium.org Date: Thu Dec 12 20:24:48 2013 -0800
arm: Move libgcc assembly macros to arch/asm.h
libgcc/macros.h contains some useful assembly macros that are common in Linux kernel code and facilitate things such as unified ARM/THUMB assembly. This patch moves it to a more general place where it can be used by other code as well.
BUG=None TEST=Snow still boots.
Original-Change-Id: If68e8930aaafa706c54cf9a156fac826b31bb193 Original-Signed-off-by: Julius Werner jwerner@chromium.org Original-Reviewed-on: https://chromium-review.googlesource.com/182178 Original-Reviewed-by: Vincent Palatin vpalatin@chromium.org (cherry picked from commit a780670def94a969829811fa8cf257f12b88f085)
This is cherry-picked again to pick up the libgcc changes. Signed-off-by: Marc Jones marc.jones@se-eng.com
Change-Id: I6098eb3c8032357d6f303f08e48054e6100aebe8 --- payloads/libpayload/include/arm/arch/asm.h | 2 -- src/arch/arm/libgcc/ashldi3.S | 2 +- src/arch/arm/libgcc/bpabi_asm.S | 2 +- src/arch/arm/libgcc/lib1funcs.S | 2 +- src/arch/arm/libgcc/lshrdi3.S | 2 +- src/arch/arm/libgcc/macros.h | 47 ------------------------------ src/arch/arm/libgcc/muldi3.S | 2 +- src/arch/arm/libgcc/ucmpdi2.S | 2 +- src/arch/arm/libgcc/uldivmod.S | 10 +++---- 9 files changed, 10 insertions(+), 61 deletions(-)
diff --git a/payloads/libpayload/include/arm/arch/asm.h b/payloads/libpayload/include/arm/arch/asm.h index 2f88599..1c3f7a2 100644 --- a/payloads/libpayload/include/arm/arch/asm.h +++ b/payloads/libpayload/include/arm/arch/asm.h @@ -23,11 +23,9 @@ #if defined __arm__ # define ARM(x...) x # define THUMB(x...) -# define W(instr) instr #elif defined __thumb__ # define ARM(x...) # define THUMB(x...) x -# define W(instr) instr.w #else # error Not in ARM or thumb mode! #endif diff --git a/src/arch/arm/libgcc/ashldi3.S b/src/arch/arm/libgcc/ashldi3.S index 4a9b97c..bf7e7e7 100644 --- a/src/arch/arm/libgcc/ashldi3.S +++ b/src/arch/arm/libgcc/ashldi3.S @@ -28,7 +28,7 @@ Boston, MA 02110-1301, USA. */
#if defined __GNUC__
-#include "macros.h" +#include <arch/asm.h>
#ifdef __ARMEB__ #define al r1 diff --git a/src/arch/arm/libgcc/bpabi_asm.S b/src/arch/arm/libgcc/bpabi_asm.S index a3942df..27b4a1c 100644 --- a/src/arch/arm/libgcc/bpabi_asm.S +++ b/src/arch/arm/libgcc/bpabi_asm.S @@ -28,7 +28,7 @@ Boston, MA 02110-1301, USA. */
-#include "macros.h" +#include <arch/asm.h>
#ifdef __ARMEB__ #define xxh r0 diff --git a/src/arch/arm/libgcc/lib1funcs.S b/src/arch/arm/libgcc/lib1funcs.S index bdef583..533c369 100644 --- a/src/arch/arm/libgcc/lib1funcs.S +++ b/src/arch/arm/libgcc/lib1funcs.S @@ -35,7 +35,7 @@ Boston, MA 02111-1307, USA. */
#if defined __GNUC__
-#include "macros.h" +#include <arch/asm.h>
.macro ARM_DIV_BODY dividend, divisor, result, curbit
diff --git a/src/arch/arm/libgcc/lshrdi3.S b/src/arch/arm/libgcc/lshrdi3.S index cdf9095..5a5809a 100644 --- a/src/arch/arm/libgcc/lshrdi3.S +++ b/src/arch/arm/libgcc/lshrdi3.S @@ -28,7 +28,7 @@ Boston, MA 02110-1301, USA. */
#if defined __GNUC__
-#include "macros.h" +#include <arch/asm.h>
#ifdef __ARMEB__ #define al r1 diff --git a/src/arch/arm/libgcc/macros.h b/src/arch/arm/libgcc/macros.h deleted file mode 100644 index 1e9e96c..0000000 --- a/src/arch/arm/libgcc/macros.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2013 Google Inc. - * - * 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; version 2 of the License. - * - * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __ARCH_ARM_LIBGCC_H__ -#define __ARCH_ARM_LIBGCC_H__ - -#if defined __arm__ -# define ARM(x...) x -# define THUMB(x...) -#elif defined __thumb__ -# define ARM(x...) -# define THUMB(x...) x -#else -# error Not in ARM or thumb mode! -#endif - -#define ALIGN .align 0 - -#define ENDPROC(name) \ - .type name, %function; \ - END(name) - -#define ENTRY(name) \ - .globl name; \ - ALIGN; \ - name: - -#define END(name) \ - .size name, .-name - -#endif /* __ARCH_ARM_LIBGCC_H__ */ diff --git a/src/arch/arm/libgcc/muldi3.S b/src/arch/arm/libgcc/muldi3.S index faa92b5..f6a40a8 100644 --- a/src/arch/arm/libgcc/muldi3.S +++ b/src/arch/arm/libgcc/muldi3.S @@ -12,7 +12,7 @@
#if defined __GNUC__
-#include "macros.h" +#include <arch/asm.h>
#ifdef __ARMEB__ #define xh r0 diff --git a/src/arch/arm/libgcc/ucmpdi2.S b/src/arch/arm/libgcc/ucmpdi2.S index 7190b9f..01ce1b5 100644 --- a/src/arch/arm/libgcc/ucmpdi2.S +++ b/src/arch/arm/libgcc/ucmpdi2.S @@ -12,7 +12,7 @@
#if defined __GNUC__
-#include "macros.h" +#include <arch/asm.h>
#ifdef __ARMEB__ #define xh r0 diff --git a/src/arch/arm/libgcc/uldivmod.S b/src/arch/arm/libgcc/uldivmod.S index e4704c2..ac267d0 100644 --- a/src/arch/arm/libgcc/uldivmod.S +++ b/src/arch/arm/libgcc/uldivmod.S @@ -33,17 +33,14 @@ * Software Foundation. */
+#include <arch/asm.h> + /* * A, Q = r0 + (r1 << 32) * B, R = r2 + (r3 << 32) * A / B = Q ... R */
- .text - .global __aeabi_uldivmod - .type __aeabi_uldivmod, function - .align 0 - A_0 .req r0 A_1 .req r1 B_0 .req r2 @@ -58,7 +55,7 @@ Q_1 .req r1 R_0 .req r2 R_1 .req r3
-__aeabi_uldivmod: +ENTRY(__aeabi_uldivmod) stmfd sp!, {r4, r5, r6, r7, lr} @ Test if B == 0 orrs ip, B_0, B_1 @ Z set -> B == 0 @@ -258,3 +255,4 @@ L_div_by_0: mov R_0, #0 mov R_1, #0 ldmfd sp!, {r4, r5, r6, r7, pc} +ENDPROC(__aeabi_uldivmod)