aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch')
-rw-r--r--recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch399
1 files changed, 0 insertions, 399 deletions
diff --git a/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch b/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
deleted file mode 100644
index f44aa07..0000000
--- a/recipes-core/newlib/newlib/iamcu-commit-5d3ad3b.patch
+++ /dev/null
@@ -1,399 +0,0 @@
-From 5d3ad3b123b7c121d7a6eac27fb13016171e27bc Mon Sep 17 00:00:00 2001
-From: Igor Venevtsev <igor.venevtsev@gmail.com>
-Date: Thu, 31 Mar 2016 12:12:00 +0300
-Subject: Add Intel MCU target
-
-Intel MCU System V ABI are incompartible with i386 System V ABI:
- o Minimum instruction set is Intel Pentium ISA minus x87 instructions
- o No x87 or vector registers
- o First three args are passed in %eax, %edx and %ecx
- o Full specification available here:
- https://github.com/hjl-tools/x86-psABI/wiki/iamcu-psABI-0.7.pdf
-
-newlib/
- * configure.host: Add new ix86-*-elfiamcu target
-
-newlib/libc/include/
- * setjmp.h: Change _JBLEN for Intel MCU target
-
-newlib/libc/machine/i386/
- * memchr.S: (memchr) Target-specific size-optimized version
- * memcmp.S: (memcmp) Likewise
- * memcpy.S: (memcpy) Likewise
- * memmove.S: (memmove) Likewise
- * memset.S: (memset) Likewise
- * setjmp.S: (setjmp) Likewise
- * strchr.S: (strchr) Likewise
- * strlen.S: (strlen) Likewise
-
-newlib/libc/stdlib/
- * srtold.c: (__flt_rounds) Disable for Intel MCU
-
-diff --git a/newlib/configure.host b/newlib/configure.host
-index 8b0846e..bb163ec 100644
---- a/newlib/configure.host
-+++ b/newlib/configure.host
-@@ -696,6 +696,15 @@ case "${host}" in
- i[34567]86-*-netware*)
- newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES -DNO_EXEC -DABORT_PROVIDED -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DHAVE_FCNTL"
- ;;
-+ i[3-7]86-*-elfiamcu)
-+ newlib_cflags="${newlib_cflags} -Os -DPREFER_SIZE_OVER_SPEED -ffunction-sections -fomit-frame-pointer -DREENTRANT_SYSCALL_PROVIDED"
-+ if [ "${newlib_multithread}" = "no" ] ; then
-+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
-+ else
-+ syscall_dir=syscalls
-+ newlib_cflags="${newlib_cflags} -D__DYNAMIC_REENT__"
-+ fi
-+ ;;
- iq2000*)
- syscall_dir=syscalls
- default_newlib_io_long_long="yes"
-diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
-index c08e682..2b4dd8b 100644
---- a/newlib/libc/include/machine/setjmp.h
-+++ b/newlib/libc/include/machine/setjmp.h
-@@ -92,6 +92,9 @@ _BEGIN_STD_C
- # define _JBLEN (13 * 4)
- # elif defined(__unix__) || defined(__rtems__)
- # define _JBLEN 9
-+# elif defined(__iamcu__)
-+/* Intel MCU jmp_buf only covers callee-saved registers. */
-+# define _JBLEN 6
- # else
- # include "setjmp-dj.h"
- # endif
-diff --git a/newlib/libc/machine/i386/memchr.S b/newlib/libc/machine/i386/memchr.S
-index 7639685..d9b0bf2 100644
---- a/newlib/libc/machine/i386/memchr.S
-+++ b/newlib/libc/machine/i386/memchr.S
-@@ -14,13 +14,33 @@
- SOTYPE_FUNCTION(memchr)
-
- SYM (memchr):
-+#ifdef __iamcu__
-+ pushl edi
-+ movl eax,edi
-+ movl edx,eax
-+ xorl edx,edx
-+ testl ecx,ecx
-+ jz L20
-+
-+ repnz
-+ scasb
-+
-+ setnz dl
-+ decl edi
-+
-+ decl edx
-+ andl edi,edx
-+L20:
-+ movl edx,eax
-+
-+ popl edi
-+#else
- pushl ebp
- movl esp,ebp
- pushl edi
- movzbl 12(ebp),eax
- movl 16(ebp),ecx
- movl 8(ebp),edi
--
- xorl edx,edx
- testl ecx,ecx
- jz L20
-@@ -111,4 +131,5 @@ L20:
- leal -4(ebp),esp
- popl edi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memcmp.S b/newlib/libc/machine/i386/memcmp.S
-index 26b8ef1..4a01b82 100644
---- a/newlib/libc/machine/i386/memcmp.S
-+++ b/newlib/libc/machine/i386/memcmp.S
-@@ -15,6 +15,33 @@
-
- SYM (memcmp):
-
-+#ifdef __iamcu__
-+ pushl edi
-+ pushl esi
-+ movl eax,edi
-+ movl edx,esi
-+ cld
-+
-+/* check if length is zero in which case just return 0 */
-+
-+ xorl eax,eax
-+ testl ecx,ecx
-+ jz L4
-+
-+/* compare any unaligned bytes or remainder bytes */
-+ repz
-+ cmpsb
-+
-+/* set output to be < 0 if less than, 0 if equal, or > 0 if greater than */
-+ xorl edx,edx
-+ movb -1(esi),dl
-+ movb -1(edi),al
-+ subl edx,eax
-+
-+L4:
-+ popl esi
-+ popl edi
-+#else
- pushl ebp
- movl esp,ebp
- subl $16,esp
-@@ -73,4 +100,5 @@ L4:
- popl edi
- popl ebx
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memcpy.S b/newlib/libc/machine/i386/memcpy.S
-index b53e2a1..a14aa2a 100644
---- a/newlib/libc/machine/i386/memcpy.S
-+++ b/newlib/libc/machine/i386/memcpy.S
-@@ -15,6 +15,17 @@
-
- SYM (memcpy):
-
-+#ifdef __iamcu__
-+ pushl esi
-+ pushl edi
-+ movl eax,edi
-+ movl edx,esi
-+
-+ rep movsb
-+
-+ popl edi
-+ popl esi
-+#else
- pushl ebp
- movl esp,ebp
- pushl esi
-@@ -71,4 +82,5 @@ SYM (memcpy):
- popl edi
- popl esi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memmove.S b/newlib/libc/machine/i386/memmove.S
-index 1ea2f6d..1026582 100644
---- a/newlib/libc/machine/i386/memmove.S
-+++ b/newlib/libc/machine/i386/memmove.S
-@@ -15,6 +15,32 @@
-
- SYM (memmove):
-
-+#ifdef __iamcu__
-+ pushl esi
-+ pushl edi
-+ movl eax,edi
-+ movl edx,esi
-+ cmp esi,edi
-+ ja .Lcopy_backward
-+ je .Lbwd_write_0bytes
-+
-+ rep movsb
-+
-+ popl edi
-+ popl esi
-+ ret
-+
-+.Lcopy_backward:
-+ lea -1(edi,ecx),edi
-+ lea -1(esi,ecx),esi
-+ std
-+ rep movsb
-+ cld
-+
-+.Lbwd_write_0bytes:
-+ popl edi
-+ popl esi
-+#else
- pushl ebp
- movl esp,ebp
- pushl esi
-@@ -143,4 +169,5 @@ SYM (memmove):
- popl edi
- popl esi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/memset.S b/newlib/libc/machine/i386/memset.S
-index 6eb2cd6..83b2556 100644
---- a/newlib/libc/machine/i386/memset.S
-+++ b/newlib/libc/machine/i386/memset.S
-@@ -15,6 +15,15 @@
-
- SYM (memset):
-
-+#ifdef __iamcu__
-+ pushl edi
-+ movl eax,edi
-+ movzbl dl,eax
-+ mov edi,edx
-+ rep stosb
-+ mov edx,eax
-+ popl edi
-+#else
- pushl ebp
- movl esp,ebp
- pushl edi
-@@ -96,4 +105,5 @@ SYM (memset):
- leal -4(ebp),esp
- popl edi
- leave
-+#endif
- ret
-diff --git a/newlib/libc/machine/i386/setjmp.S b/newlib/libc/machine/i386/setjmp.S
-index fd746e4..45c689f 100644
---- a/newlib/libc/machine/i386/setjmp.S
-+++ b/newlib/libc/machine/i386/setjmp.S
-@@ -20,6 +20,10 @@
- ** jmp_buf:
- ** eax ebx ecx edx esi edi ebp esp eip
- ** 0 4 8 12 16 20 24 28 32
-+ **
-+ ** Intel MCU jmp_buf:
-+ ** ebx esi edi ebp esp eip
-+ ** 0 4 8 12 16 20
- */
-
- #include "i386mach.h"
-@@ -31,6 +35,23 @@
-
- SYM (setjmp):
-
-+#ifdef __iamcu__
-+ /* Store EIP. */
-+ movl 0(esp),ecx
-+ movl ecx,20(eax)
-+
-+ movl ebx,0 (eax)
-+ movl esi,4 (eax)
-+ movl edi,8 (eax)
-+ movl ebp,12(eax)
-+
-+ /* Skip return address, which will be pushed onto stack in
-+ longjmp, and store SP. */
-+ leal 4(esp),ecx
-+ movl ecx,16(eax)
-+
-+ xorl eax,eax
-+#else
- pushl ebp
- movl esp,ebp
-
-@@ -59,9 +80,28 @@ SYM (setjmp):
- popl edi
- movl $0,eax
- leave
-+#endif
- ret
-
- SYM (longjmp):
-+#ifdef __iamcu__
-+ /* Check retval. */
-+ testl edx,edx
-+ jne 0f
-+ incl edx
-+0:
-+ /* Restore stack first. */
-+ movl 16(eax),esp
-+
-+ /* Put return address on stack. */
-+ pushl 20(eax)
-+
-+ movl 0(eax),ebx
-+ movl 4(eax),esi
-+ movl 8(eax),edi
-+ movl 12(eax),ebp
-+ movl edx,eax
-+#else
- pushl ebp
- movl esp,ebp
-
-@@ -87,5 +127,6 @@ SYM (longjmp):
- movl 16(edi),esi
- movl 20(edi),edi
- __STI
-+#endif
-
- ret
-diff --git a/newlib/libc/machine/i386/strchr.S b/newlib/libc/machine/i386/strchr.S
-index 1d98b81..43ee0fb 100644
---- a/newlib/libc/machine/i386/strchr.S
-+++ b/newlib/libc/machine/i386/strchr.S
-@@ -15,6 +15,29 @@
-
- SYM (strchr):
-
-+#ifdef __iamcu__
-+ xorl ecx,ecx
-+ movb dl,cl
-+
-+/* loop while (*s && *s++ != c) */
-+ leal -1(eax),eax
-+L15:
-+ incl eax
-+ movb (eax),dl
-+ testb dl,dl
-+ je L14
-+ cmpb cl,dl
-+ jne L15
-+
-+L14:
-+/* if (*s == c) return address otherwise return NULL */
-+ cmpb cl,(eax)
-+ je L19
-+ xorl eax,eax
-+
-+L19:
-+ ret
-+#else
- pushl ebp
- movl esp,ebp
- pushl edi
-@@ -170,3 +193,5 @@ L27:
- jmp L9
-
- #endif /* !__OPTIMIZE_SIZE__ */
-+
-+#endif /* __iamcu__ */
-diff --git a/newlib/libc/machine/i386/strlen.S b/newlib/libc/machine/i386/strlen.S
-index 0e3cb64..373ea0f 100644
---- a/newlib/libc/machine/i386/strlen.S
-+++ b/newlib/libc/machine/i386/strlen.S
-@@ -18,9 +18,13 @@ SYM (strlen):
- pushl ebp
- movl esp,ebp
- pushl edi
-+#ifdef __iamcu__
-+ movl eax,edx
-+#else
- movl 8(ebp),edx
-+#endif
-
--#ifdef __OPTIMIZE_SIZE__
-+#if defined __OPTIMIZE_SIZE__ || defined __iamcu__
- cld
- movl edx,edi
- movl $4294967295,ecx
-diff --git a/newlib/libc/stdlib/strtold.c b/newlib/libc/stdlib/strtold.c
-index a6d415d..1128b74 100644
---- a/newlib/libc/stdlib/strtold.c
-+++ b/newlib/libc/stdlib/strtold.c
-@@ -35,7 +35,8 @@ POSSIBILITY OF SUCH DAMAGE.
-
- #ifdef _HAVE_LONG_DOUBLE
-
--#if defined (__x86_64__) || defined (__i386__)
-+/* Intel MCU has no x87 floating point unit */
-+#if (defined (__x86_64__) || defined (__i386__)) && !defined (__iamcu__)
- static const int map[] = {
- 1, /* round to nearest */
- 3, /* round to zero */