mbed w/ spi bug fig

Dependents:   display-puck

Fork of mbed-src by mbed official

Revision:
232:1e593fe58241
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/cmsis/TARGET_NXP/TARGET_LPC11U6X/TOOLCHAIN_GCC_CR/TARGET_LPC11U68/aeabi_romdiv_patch.s	Tue Jun 17 11:00:07 2014 +0100
@@ -0,0 +1,93 @@
+//*****************************************************************************
+// aeabi_romdiv_patch.s
+//  - Provides "patch" versions of the aeabi integer divide functions to
+//    replace the standard ones pulled in from the C library, which vector
+//    integer divides onto the rom division functions contained in
+//    specific NXP MCUs such as LPC11Uxx and LPC12xx.
+//  - Note that this patching will only occur if "__USE_ROMDIVIDE" is
+//    defined for the project build for both the compiler and assembler.
+//*****************************************************************************
+//
+// Copyright(C) NXP Semiconductors, 2013
+// All rights reserved.
+//
+// Software that is described herein is for illustrative purposes only
+// which provides customers with programming information regarding the
+// LPC products.  This software is supplied "AS IS" without any warranties of
+// any kind, and NXP Semiconductors and its licensor disclaim any and
+// all warranties, express or implied, including all implied warranties of
+// merchantability, fitness for a particular purpose and non-infringement of
+// intellectual property rights.  NXP Semiconductors assumes no responsibility
+// or liability for the use of the software, conveys no license or rights under any
+// patent, copyright, mask work right, or any other intellectual property rights in
+// or to any products. NXP Semiconductors reserves the right to make changes
+// in the software without notification. NXP Semiconductors also makes no
+// representation or warranty that such application will be suitable for the
+// specified use without further testing or modification.
+//
+// Permission to use, copy, modify, and distribute this software and its
+// documentation is hereby granted, under NXP Semiconductors' and its
+// licensor's relevant copyrights in the software, without fee, provided that it
+// is used in conjunction with NXP Semiconductors microcontrollers.  This
+// copyright, permission, and disclaimer notice must appear in all copies of
+// this code.
+//*****************************************************************************
+#if defined(__USE_ROMDIVIDE)
+
+// Note that the romdivide "divmod" functions are not actually called from
+// the below code, as these functions are actually just wrappers to the
+// main romdivide "div" functions which push the quotient and remainder onto
+// the stack, so as to be compatible with the way that C returns structures.
+//
+// This is not needed for the aeabi "divmod" functions, as the compiler
+// automatically generates code that handles the return values being passed
+// back in registers when it generates inline calls to __aeabi_idivmod and
+// __aeabi_uidivmod routines.
+
+	.syntax unified
+	.text
+
+// ========= __aeabi_idiv &  __aeabi_idivmod =========
+	.align 2
+	.section .text.__aeabi_idiv
+
+	.global	__aeabi_idiv
+	.set __aeabi_idivmod, __aeabi_idiv   // make __aeabi_uidivmod an alias
+	.global __aeabi_idivmod
+	.global pDivRom_idiv   // pointer to the romdivide 'idiv' functione
+    .func
+	.thumb_func
+	.type	__aeabi_idiv, %function
+
+__aeabi_idiv:
+	push	{r4, lr}
+	ldr	r3, =pDivRom_idiv
+	ldr	r3, [r3, #0]     // Load address of function
+	blx	r3               // Call divide function
+	pop	{r4, pc}
+
+	.endfunc
+
+// ========  __aeabi_uidiv &  __aeabi_uidivmod ========
+	.align 2
+
+	.section .text.__aeabi_uidiv
+
+	.global	__aeabi_uidiv
+	.set __aeabi_uidivmod, __aeabi_uidiv  // make __aeabi_uidivmod an alias
+	.global __aeabi_uidivmod
+	.global pDivRom_uidiv	// pointer to the romdivide 'uidiv' function
+    .func
+	.thumb_func
+	.type	__aeabi_uidiv, %function
+
+__aeabi_uidiv:
+	push	{r4, lr}
+	ldr	r3, =pDivRom_uidiv
+	ldr	r3, [r3, #0]      // Load address of function
+	blx	r3               // Call divide function
+	pop	{r4, pc}
+
+	.endfunc
+
+#endif // (__USE_ROMDIVIDE)