Re: Make more macro checks ARMv8-M baseline proof

Christophe Lyon <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAKdteOaGwv4u3-FxiLUt5kpqivNEORC4BRmJgkEOtSOyWg2p0w@mail.gmail.com>
I forgot that the suitable format in this project is via git
format-patch, so here is the same patch in that format.

Christophe

On Mon, 1 Apr 2019 at 16:42, Christophe Lyon <[email protected]> wrote:
>
> Hi,
>
> After Thomas' patch
> (https://sourceware.org/ml/newlib/2016/msg00017.html), it seems that
> some changes committed to libgloss are missing in newlib.
> I noticed the problem when building a toolchain where GCC is
> configured --with-cpu=cortex-m{0,23}.
>
> This small patch brings the necessary changes from libgloss to newlib.
> With this, the GCC toolchain build completes.
>
> OK?
>
> Thanks,
>
> Christophe
0001-Make-more-macro-checks-ARMv8-M-baseline-proof.patch (text/x-patch, 2.2 KB)
From 1ea9c597edbece03bce084afe33b45f1ee9ff67f Mon Sep 17 00:00:00 2001
From: Christophe Lyon <[email protected]>
Date: Mon, 1 Apr 2019 17:30:53 +0000
Subject: [PATCH 1/1] Make more macro checks ARMv8-M baseline proof.

Commit 69f4c4029183fb26d2fcae00790881620c1978a3 improved most
macro checks to be ARMv8-M baseline proof, but missed a few
occurrences which otherwise fail to build when using a CPU setting
such as cortex-m0 or cortex-m23. This patch brings the same
changes as the ones that were committed to libgloss at that time.

	newlib:
	* libc/sys/arm/crt0.S: Use THUMB1_ONLY rather than
	__ARM_ARCH_6M__.
	* libc/sys/arm/trap.S: Use PREFER_THUMB rather than __thumb2__.
---
 newlib/libc/sys/arm/crt0.S | 8 ++++----
 newlib/libc/sys/arm/trap.S | 3 ++-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/newlib/libc/sys/arm/crt0.S b/newlib/libc/sys/arm/crt0.S
index 64d4259..8c9f7be 100644
--- a/newlib/libc/sys/arm/crt0.S
+++ b/newlib/libc/sys/arm/crt0.S
@@ -85,7 +85,7 @@
 
 	/*  Stack limit is at end of data.  */
 	/*  Allow slop for stack overflow handling and small frames.  */
-#ifdef __ARM_ARCH_6M__
+#ifdef THUMB1_ONLY
 	ldr	r0, .LC2
 	adds	r0, #128
 	adds	r0, #128
@@ -137,7 +137,7 @@
 	beq	.LC27
 
 	/*  Allow slop for stack overflow handling and small frames.  */
-#ifdef __ARM_ARCH_6M__
+#ifdef THUMB1_ONLY
 	adds	r2, #128
 	adds	r2, #128
 	mov	sl, r2
@@ -164,7 +164,7 @@
 #ifdef __thumb2__
 	it	eq
 #endif	
-#ifdef __ARM_ARCH_6M__
+#ifdef THUMB1_ONLY
 	bne	.LC28
 	ldr	r3, .LC0
 .LC28:
@@ -219,7 +219,7 @@
 	   this default 64k is enough for the program being executed.
 	   However, it ensures that this simple crt0 world will not
 	   immediately cause an overflow event:  */
-#ifdef __ARM_ARCH_6M__
+#ifdef THUMB1_ONLY
 	movs	r2, #64
 	lsls	r2, r2, #10
 	subs	r2, r3, r2
diff --git a/newlib/libc/sys/arm/trap.S b/newlib/libc/sys/arm/trap.S
index 21b6937..d854b57 100644
--- a/newlib/libc/sys/arm/trap.S
+++ b/newlib/libc/sys/arm/trap.S
@@ -1,5 +1,6 @@
+#include "arm.h"
         /* Run-time exception support */
-#if !defined(__thumb2__)
+#ifndef PREFER_THUMB
 #include "swi.h"
 
 /* .text is used instead of .section .text so it works with arm-aout too.  */
-- 
2.7.4
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.