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]

[patch, moxie] Fix tramponline alignment problem


This fixes a couple of moxie testsuite failures, including nestfunc-3.c,
by aligning trampolines so that we're always writing aligned words when
we're filling trampoline templates.

I'm checking it in.

Thanks,

AG

2010-02-03  Anthony Green  <green@moxielogic.com>

	* config/moxie/moxie.c (moxie_asm_trampoline_template): Introduce
	nop padding in order to maintain alignment of storage location of
	target function address.
	(moxie_trampoline_init): Store target function address at newly
	aligned location.
	* config/moxie/moxie.h (TRAMPOLINE_ALIGNMENT): Increase alignment
	to 32.
	(TRAMPOLINE_SIZE): Increase size by 2 bytes for alignment padding.


diff --git a/gcc/gcc/config/moxie/moxie.c b/gcc/gcc/config/moxie/moxie.c
index 7515fa2..b1cefb6 100644
--- a/gcc/gcc/config/moxie/moxie.c
+++ b/gcc/gcc/config/moxie/moxie.c
@@ -1,5 +1,5 @@
 /* Target Code for moxie
-   Copyright (C) 2008, 2009  Free Software Foundation
+   Copyright (C) 2008, 2009, 2010  Free Software Foundation
    Contributed by Anthony Green.
 
    This file is part of GCC.
@@ -483,6 +483,7 @@ moxie_asm_trampoline_template (FILE *f)
   fprintf (f, "\tldi.l $r0, 0x0\n");
   fprintf (f, "\tsto.l 0x8($fp), $r0\n");
   fprintf (f, "\tpop   $sp, $r0\n");
+  fprintf (f, "\tnop\n");
   fprintf (f, "\tjmpa  0x0\n");
 }
 
@@ -498,7 +499,7 @@ moxie_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
 
   mem = adjust_address (m_tramp, SImode, 4);
   emit_move_insn (mem, chain_value);
-  mem = adjust_address (m_tramp, SImode, 18);
+  mem = adjust_address (m_tramp, SImode, 20);
   emit_move_insn (mem, fnaddr);
 }
 
diff --git a/gcc/gcc/config/moxie/moxie.h b/gcc/gcc/config/moxie/moxie.h
index 384bce4..928ca88 100644
--- a/gcc/gcc/config/moxie/moxie.h
+++ b/gcc/gcc/config/moxie/moxie.h
@@ -1,5 +1,5 @@
 /* Target Definitions for moxie.
-   Copyright (C) 2008, 2009  Free Software Foundation, Inc.
+   Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.
    Contributed by Anthony Green.
 
    This file is part of GCC.
@@ -386,10 +386,10 @@ enum reg_class
 #define FUNCTION_PROFILER(FILE,LABELNO) (abort (), 0)
 
 /* Trampolines for Nested Functions.  */
-#define TRAMPOLINE_SIZE (2 + 6 + 6 + 2 + 6)
+#define TRAMPOLINE_SIZE (2 + 6 + 6 + 2 + 2 + 6)
 
 /* Alignment required for trampolines, in bits.  */
-#define TRAMPOLINE_ALIGNMENT 16
+#define TRAMPOLINE_ALIGNMENT 32
 
 /* An alias for the machine mode for pointers.  */
 #define Pmode         SImode

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