mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Revision:
577:15494b56c2f3
Parent:
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	Wed Jul 01 08:15:11 2015 +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)