mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 0/2] arm/lib: EABI fixes
@ 2009-12-16 14:49 Marc Kleine-Budde
  2009-12-16 14:49 ` [PATCH 1/2] arm/lib: add eabi names of helper functions Marc Kleine-Budde
  0 siblings, 1 reply; 3+ messages in thread
From: Marc Kleine-Budde @ 2009-12-16 14:49 UTC (permalink / raw)
  To: u-boot-v2; +Cc: sha

Hey,

Since commit e2b4a792f8751d906d17b7ae343952f78dc41d67, we don't
undoncitionally link with OABI. If now EABI is selected there are a
number of missing helper functions, because they have new names now.

This series of pachtes adds the missing names and function.

These patches have been successfully tested on an MX35-PDK booting
from RAM and NAND.

Cheers, Marc

P.S.: If you want to pull these fixes:

---

The following changes since commit a5c776de1d8743e095cdd2f75a409e82148bd9c4:
  Sascha Hauer (1):
        Merge branch 'for-sha-collateral' of git://git.pengutronix.de/git/mkl/barebox

are available in the git repository at:

  git://git.pengutronix.de/git/mkl/barebox.git for-sha-eabi-fixes

Marc Kleine-Budde (2):
      arm/lib: add eabi names of helper functions
      arm/lib: add missing abi helper functions __aeabi_idivmod, __aeabi_uidivmod

 arch/arm/lib/Makefile           |    2 +
 arch/arm/lib/__aeabi_idivmod.S  |   50 ++++++++++++++++++++++++++++++++++++++
 arch/arm/lib/__aeabi_uidivmod.S |   51 +++++++++++++++++++++++++++++++++++++++
 arch/arm/lib/_ashldi3.S         |    2 +
 arch/arm/lib/_ashrdi3.S         |    2 +
 arch/arm/lib/_divsi3.S          |    2 +
 arch/arm/lib/_lshrdi3.S         |    2 +
 arch/arm/lib/_udivsi3.S         |    3 ++
 8 files changed, 114 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/lib/__aeabi_idivmod.S
 create mode 100644 arch/arm/lib/__aeabi_uidivmod.S


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] arm/lib: add eabi names of helper functions
  2009-12-16 14:49 [PATCH 0/2] arm/lib: EABI fixes Marc Kleine-Budde
@ 2009-12-16 14:49 ` Marc Kleine-Budde
  2009-12-16 14:49   ` [PATCH 2/2] arm/lib: add missing abi helper functions __aeabi_idivmod, __aeabi_uidivmod Marc Kleine-Budde
  0 siblings, 1 reply; 3+ messages in thread
From: Marc Kleine-Budde @ 2009-12-16 14:49 UTC (permalink / raw)
  To: u-boot-v2; +Cc: sha

Since commit e2b4a792f8751d906d17b7ae343952f78dc41d67, we don't
undoncitionally link with OABI. If now EABI is selected there are a
number of missing helper functions, because they have new names now.

This patch add the abi names to the existing helper functions.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 arch/arm/lib/_ashldi3.S |    2 ++
 arch/arm/lib/_ashrdi3.S |    2 ++
 arch/arm/lib/_divsi3.S  |    2 ++
 arch/arm/lib/_lshrdi3.S |    2 ++
 arch/arm/lib/_udivsi3.S |    3 +++
 5 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/arch/arm/lib/_ashldi3.S b/arch/arm/lib/_ashldi3.S
index 7344aa7..e1c1bf3 100644
--- a/arch/arm/lib/_ashldi3.S
+++ b/arch/arm/lib/_ashldi3.S
@@ -38,6 +38,8 @@ Boston, MA 02110-1301, USA.  */
 
 .globl __ashldi3
 __ashldi3:
+.globl __aeabi_llsl
+__aeabi_llsl:
 
 	subs	r3, r2, #32
 	rsb	ip, r2, #32
diff --git a/arch/arm/lib/_ashrdi3.S b/arch/arm/lib/_ashrdi3.S
index 8994557..e631554 100644
--- a/arch/arm/lib/_ashrdi3.S
+++ b/arch/arm/lib/_ashrdi3.S
@@ -38,6 +38,8 @@ Boston, MA 02110-1301, USA.  */
 
 .globl __ashrdi3
 __ashrdi3:
+.globl __aeabi_lasr
+__aeabi_lasr:
 
 	subs	r3, r2, #32
 	rsb	ip, r2, #32
diff --git a/arch/arm/lib/_divsi3.S b/arch/arm/lib/_divsi3.S
index f6cd2f9..2fbb49d 100644
--- a/arch/arm/lib/_divsi3.S
+++ b/arch/arm/lib/_divsi3.S
@@ -99,6 +99,8 @@
 	.align	5
 .globl __divsi3
 __divsi3:
+.globl __aeabi_idiv
+__aeabi_idiv:
 	cmp	r1, #0
 	eor	ip, r0, r1			@ save the sign of the result.
 	beq	Ldiv0
diff --git a/arch/arm/lib/_lshrdi3.S b/arch/arm/lib/_lshrdi3.S
index 44b335b..71e7f3e 100644
--- a/arch/arm/lib/_lshrdi3.S
+++ b/arch/arm/lib/_lshrdi3.S
@@ -36,6 +36,8 @@ Boston, MA 02110-1301, USA.  */
 
 .globl __lshrdi3
 __lshrdi3:
+.globl __aeabi_llsr
+__aeabi_llsr:
 
 	subs	r3, r2, #32
 	rsb	ip, r2, #32
diff --git a/arch/arm/lib/_udivsi3.S b/arch/arm/lib/_udivsi3.S
index 1975a0e..bc89b27 100644
--- a/arch/arm/lib/_udivsi3.S
+++ b/arch/arm/lib/_udivsi3.S
@@ -13,8 +13,11 @@ curbit		.req	r3
 
 	.globl	 __udivsi3
 	.type  __udivsi3       ,function
+	.globl   __aeabi_uidiv
+	.type  __aeabi_uidiv   ,function
 	.align	0
  __udivsi3      :
+__aeabi_uidiv   :
 	cmp	divisor, #0
 	beq	Ldiv0
 	mov	curbit, #1
-- 
1.6.5.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2/2] arm/lib: add missing abi helper functions __aeabi_idivmod, __aeabi_uidivmod
  2009-12-16 14:49 ` [PATCH 1/2] arm/lib: add eabi names of helper functions Marc Kleine-Budde
@ 2009-12-16 14:49   ` Marc Kleine-Budde
  0 siblings, 0 replies; 3+ messages in thread
From: Marc Kleine-Budde @ 2009-12-16 14:49 UTC (permalink / raw)
  To: u-boot-v2; +Cc: sha

With EABI we have two new helper functions __aeabi_idivmod and
__aeabi_uidivmod. This patch adds them to barebox.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 arch/arm/lib/Makefile           |    2 +
 arch/arm/lib/__aeabi_idivmod.S  |   50 ++++++++++++++++++++++++++++++++++++++
 arch/arm/lib/__aeabi_uidivmod.S |   51 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 103 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/lib/__aeabi_idivmod.S
 create mode 100644 arch/arm/lib/__aeabi_uidivmod.S

diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index 26c318b..c1ac1aa 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -16,6 +16,8 @@ obj-y	+= io-readsl.o
 obj-y	+= io-writesb.o
 obj-y	+= io-writesw-armv4.o
 obj-y	+= io-writesl.o
+obj-$(CONFIG_AEABI)				+= __aeabi_idivmod.o
+obj-$(CONFIG_AEABI)				+= __aeabi_uidivmod.o
 obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS)	+= memcpy.o
 obj-$(CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS)	+= memset.o
 
diff --git a/arch/arm/lib/__aeabi_idivmod.S b/arch/arm/lib/__aeabi_idivmod.S
new file mode 100644
index 0000000..07de06b
--- /dev/null
+++ b/arch/arm/lib/__aeabi_idivmod.S
@@ -0,0 +1,50 @@
+/*
+ * linux/arch/arm/lib/lib1funcs.S: Optimized ARM division routines
+ *
+ * Author: Nicolas Pitre <nico@fluxnic.net>
+ *   - contributed to gcc-3.4 on Sep 30, 2003
+ *   - adapted for the Linux kernel on Oct 2, 2003
+ */
+
+/* Copyright 1995, 1996, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+
+This file 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.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+This file 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; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+
+.section .text.__aeabi_idivmod
+
+ENTRY(__aeabi_idivmod)
+
+	stmfd	sp!, {r0, r1, ip, lr}
+	bl	__aeabi_idiv
+	ldmfd	sp!, {r1, r2, ip, lr}
+	mul	r3, r0, r2
+	sub	r1, r1, r3
+	mov	pc, lr
+
+ENDPROC(__aeabi_idivmod)
diff --git a/arch/arm/lib/__aeabi_uidivmod.S b/arch/arm/lib/__aeabi_uidivmod.S
new file mode 100644
index 0000000..0e7694c
--- /dev/null
+++ b/arch/arm/lib/__aeabi_uidivmod.S
@@ -0,0 +1,51 @@
+/*
+ * linux/arch/arm/lib/lib1funcs.S: Optimized ARM division routines
+ *
+ * Author: Nicolas Pitre <nico@fluxnic.net>
+ *   - contributed to gcc-3.4 on Sep 30, 2003
+ *   - adapted for the Linux kernel on Oct 2, 2003
+ */
+
+/* Copyright 1995, 1996, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+
+This file 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.
+
+In addition to the permissions in the GNU General Public License, the
+Free Software Foundation gives you unlimited permission to link the
+compiled version of this file into combinations with other programs,
+and to distribute those combinations without any restriction coming
+from the use of this file.  (The General Public License restrictions
+do apply in other respects; for example, they cover modification of
+the file, and distribution when not linked into a combine
+executable.)
+
+This file 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; see the file COPYING.  If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+
+#include <linux/linkage.h>
+#include <asm/assembler.h>
+
+.section .text.__aeabi_uidivmod
+
+ENTRY(__aeabi_uidivmod)
+
+	stmfd	sp!, {r0, r1, ip, lr}
+	bl	__aeabi_uidiv
+	ldmfd	sp!, {r1, r2, ip, lr}
+	mul	r3, r0, r2
+	sub	r1, r1, r3
+	mov	pc, lr
+
+ENDPROC(__aeabi_uidivmod)
+
-- 
1.6.5.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-12-16 14:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-12-16 14:49 [PATCH 0/2] arm/lib: EABI fixes Marc Kleine-Budde
2009-12-16 14:49 ` [PATCH 1/2] arm/lib: add eabi names of helper functions Marc Kleine-Budde
2009-12-16 14:49   ` [PATCH 2/2] arm/lib: add missing abi helper functions __aeabi_idivmod, __aeabi_uidivmod Marc Kleine-Budde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox