This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add new target h8300-*-linux


On 01/22/15 01:38, Yoshinori Sato wrote:
Add h8300-*-linux target for h8300 linux kernel and userland.

h8300-*-elf is some difference of standard elf.
h8300-*-linux is compatible of standard elf rules.
It seems to me that you should have linux.h just define things that are specific to the linux port rather than copying huge amounts of h8300.h.

diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index e7ed03a..4ec8516 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -359,11 +359,13 @@ h8300_option_override (void)
        target_flags |= MASK_H8300S_1;
      }

+#ifndef __h8300_linux__
    if (TARGET_H8300 && TARGET_INT32)
     {
        error ("-mint32 is not supported for H8300 and H8300L targets");
        target_flags ^= MASK_INT32;
     }
+#endif
On precisely what targets is Linux going to be supported on the H8 series? Presumably it's going to be some H8/S variants and newer?


--- /dev/null
+++ b/gcc/config/h8300/linux.h
This really should just be overriding any generic definitions in h8300.h rather than copying most of that file. I didn't read through this in any detail as it's unacceptable as-is.


Presumably you're using the standard ABI (parameter passing, register usage, etc).

Presumably you're requiring 32 bit integers?



diff --git a/gcc/config/h8300/t-linux b/gcc/config/h8300/t-linux
new file mode 100644
index 0000000..ac8b0cb
--- /dev/null
+++ b/gcc/config/h8300/t-linux
@@ -0,0 +1,20 @@
+# Copyright (C) 2015 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC 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 3, or (at your option)
+# any later version.
+#
+# GCC 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 GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+MULTILIB_OPTIONS = mh/ms/msx
+MULTILIB_DIRNAMES = h8300h h8300s h8sx
So are you really going to support Linux on the old H8/300H? Is there enough address space on that target for it to work (my recollection of these processors is fading, but IIRC the H8/300H had a rather limited address space.

index 4bfa7be..e3abc89 100644
--- a/libgcc/config/h8300/lib1funcs.S
+++ b/libgcc/config/h8300/lib1funcs.S
@@ -84,6 +84,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  #define A3E	e3
  #endif

+#define CONCAT(A,B)     A##B
+#define LABEL0(U,X)    CONCAT(U,__##X)
+#define LABEL0_DEF(U,X)    CONCAT(U,__##X##:)
+#define LABEL_DEF(X)       LABEL0_DEF(__USER_LABEL_PREFIX__,X)
+#define LABEL(X)       LABEL0(__USER_LABEL_PREFIX__,X)
+
  #ifdef __H8300H__
  #ifdef __NORMAL_MODE__
  	.h8300hn
@@ -111,8 +117,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  #ifdef __H8300__
  	.section .text
  	.align 2
-	.global ___cmpsi2
-___cmpsi2:
+	.global LABEL(cmpsi2)
+LABEL_DEF(cmpsi2)
Presumably this is to get consistency in the namespace and ensure that USER_LABEL_PREFIX is honored?


You're going to need a copyright assignment with the FSF. You should get that process started so that when the next stage1 development cycle opens up, you'll be in a position where we can legally accept your contributions.

The patch will need a ChangeLog entry. See gcc/ChangeLog for examples. Remember the ChangeLog merely describes what changed, not why. If something needs a "why" explanation, then that explanation belongs in the code itself.


Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]