From: fthain@telegraphics.com.au
To: Maxim Kuvyrkov <maxim@codesourcery.com>
Cc: linux-m68k@vger.kernel.org, debian-68k@lists.debian.org
Subject: Re: toolchain, was Re: bogl: don't know screen type 1
Date: Mon, 14 Sep 2009 20:37:58 +1000 (EST) [thread overview]
Message-ID: <alpine.LNX.2.00.0909141827440.25347@nippy.intranet> (raw)
In-Reply-To: <4AAC7CB6.2060400@codesourcery.com>
On Sun, 13 Sep 2009, Maxim Kuvyrkov wrote:
> fthain@telegraphics.com.au wrote:
>
> > On Sat, 5 Sep 2009, Maxim Kuvyrkov wrote:
> >
> > > Finn Thain wrote: ...
> > >
> > > > I understand that the current GCC (4.4) lacks the necessary
> > > > patches, and 4.5 is still uncooked (and that's a scary prospect).
> > > > Can someone confirm that this is the necessary patch for 4.4:
> > > > http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01024.html
> > > I think GCC 4.4 should be good enough.
> >
> > I tried patching 4.4.1 and the patch was rejected. It expects
> > m68k_legitimize_address() to have been declared and defined, but that
> > routine isn't in gcc-4.4.
>
> m68k.c:m68k_legitimize_address() was macro m68k.h:LEGITIMIZE_ADDRESS(),
> you need to move the hunk to m68k.h.
>
Thanks for the tip.
Here's a second cut. This one removes the m68k_tls_symbol_p() routine and
inlines that logic in the LEGITIMIZE_ADDRESS macro (avoids a reference to
m68k_tls_symbol_p() from explow.o). The TARGET_HAVE_TLS macro wasn't
defined in explow.c so I changed it to HAVE_AS_TLS.
It appears to work, but I won't be able to test any binary produced by
this compiler for a week or so.
Finn
--- gcc-m68k-support-for-tls.patch 2009-09-14 15:11:39.893286532 +1000
+++ gcc-m68k-support-for-tls-backport.patch 2009-09-14 15:11:34.563287784 +1000
@@ -574,13 +574,7 @@
enum reg_class regno_reg_class[] =
{
-@@ -143,11 +144,13 @@ static tree m68k_handle_fndecl_attribute
- static void m68k_compute_frame_layout (void);
- static bool m68k_save_reg (unsigned int regno, bool interrupt_handler);
- static bool m68k_ok_for_sibcall_p (tree, tree);
-+static bool m68k_tls_symbol_p (rtx);
- static rtx m68k_legitimize_address (rtx, rtx, enum machine_mode);
- static bool m68k_rtx_costs (rtx, int, int, int *, bool);
+@@ -146,6 +147,7 @@ static tree m68k_handle_fndecl_attribute
#if M68K_HONOR_TARGET_STRICT_ALIGNMENT
static bool m68k_return_in_memory (const_tree, const_tree);
#endif
@@ -613,16 +607,6 @@
&& crtl->uses_pic_offset_table)
insn = emit_insn (gen_load_got (pic_offset_table_rtx));
}
-@@ -1431,6 +1441,9 @@ m68k_legitimize_sibcall_address (rtx x)
- rtx
- m68k_legitimize_address (rtx x, rtx oldx, enum machine_mode mode)
- {
-+ if (m68k_tls_symbol_p (x))
-+ return m68k_legitimize_tls_address (x);
-+
- if (GET_CODE (x) == PLUS)
- {
- int ch = (x) != (oldx);
@@ -1849,7 +1862,7 @@ m68k_illegitimate_symbolic_constant_p (r
&& !offset_within_block_p (base, INTVAL (offset)))
return true;
@@ -957,7 +941,7 @@
return orig;
gcc_assert (reg);
-@@ -2196,13 +2421,257 @@ legitimize_pic_address (rtx orig, enum m
+@@ -2196,13 +2421,244 @@ legitimize_pic_address (rtx orig, enum m
base == reg ? 0 : reg);
if (GET_CODE (orig) == CONST_INT)
@@ -1164,19 +1148,6 @@
+ return orig;
+}
+
-+/* Return true if X is a TLS symbol. */
-+
-+static bool
-+m68k_tls_symbol_p (rtx x)
-+{
-+ if (!TARGET_HAVE_TLS)
-+ return false;
-+
-+ if (GET_CODE (x) != SYMBOL_REF)
-+ return false;
-+
-+ return SYMBOL_REF_TLS_MODEL (x) != 0;
-+}
+
+/* Helper for m68k_tls_referenced_p. */
+
@@ -1414,6 +1385,18 @@
#define REG_OK_FOR_BASE_P(X) \
m68k_legitimate_base_reg_p (X, REG_STRICT_P)
+@@ -777,7 +778,10 @@ __transfer_from_trampoline () \
+ #define COPY_ONCE(Y) if (!copied) { Y = copy_rtx (Y); copied = ch = 1; }
+ #define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN) \
+ { register int ch = (X) != (OLDX); \
+- if (GET_CODE (X) == PLUS) \
++ if (HAVE_AS_TLS && (GET_CODE (X) == SYMBOL_REF) && \
++ (SYMBOL_REF_TLS_MODEL (X) != 0)) \
++ m68k_legitimize_tls_address (X); \
++ else if (GET_CODE (X) == PLUS) \
+ { int copied = 0; \
+ if (GET_CODE (XEXP (X, 0)) == MULT) \
+ { COPY_ONCE (X); XEXP (X, 0) = force_operand (XEXP (X, 0), 0);} \
@@ -974,6 +975,9 @@ do { if (cc_prev_status.flags & CC_IN_68
assemble_name ((FILE), (NAME)), \
fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
next prev parent reply other threads:[~2009-09-14 10:38 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-31 3:28 bogl: don't know screen type 1 mike
2009-08-31 12:06 ` Stephen R Marenka
2009-08-31 12:58 ` mike
2009-08-31 22:11 ` mike
2009-08-31 22:16 ` mike
2009-09-01 15:17 ` Stephen R Marenka
2009-09-03 1:16 ` mike
2009-09-03 1:22 ` mike
2009-09-03 9:50 ` Maxim Kuvyrkov
2009-09-03 16:41 ` mike
2009-09-11 20:01 ` Kolbjørn Barmen
2009-09-11 20:25 ` Geert Uytterhoeven
2009-09-12 10:24 ` fthain
2009-09-04 15:43 ` toolchain, was " Finn Thain
2009-09-05 1:08 ` Stephen R Marenka
2009-09-05 1:57 ` mike
2009-09-05 2:17 ` mike
2009-09-05 7:08 ` Petr Stehlik
2009-09-05 8:49 ` Ingo Jürgensmann
2009-09-06 5:07 ` Finn Thain
2009-09-05 13:31 ` Maxim Kuvyrkov
2009-09-05 16:00 ` mike
2009-09-06 10:00 ` Finn Thain
2009-09-06 2:37 ` toolchain Finn Thain
2009-09-06 23:09 ` toolchain Stephen R Marenka
2009-09-06 5:20 ` toolchain Finn Thain
2009-09-08 13:07 ` toolchain Finn Thain
2009-09-13 3:38 ` toolchain, was Re: bogl: don't know screen type 1 fthain
2009-09-13 5:01 ` Maxim Kuvyrkov
2009-09-14 10:37 ` fthain [this message]
2009-09-22 5:11 ` mike
2009-09-22 13:09 ` benchmarks, was Re: toolchain Finn Thain
2009-09-22 14:51 ` mike
2009-09-22 15:08 ` Geert Uytterhoeven
2009-09-28 14:00 ` toolchain, was Re: bogl: don't know screen type 1 mike
2009-09-28 14:26 ` debian installation Finn Thain
2009-09-28 14:44 ` mike
2009-09-29 9:45 ` mike
2009-09-29 22:23 ` Rolf Anders
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LNX.2.00.0909141827440.25347@nippy.intranet \
--to=fthain@telegraphics.com.au \
--cc=debian-68k@lists.debian.org \
--cc=linux-m68k@vger.kernel.org \
--cc=maxim@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox