<div dir="ltr">Hi,<div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 25, 2014 at 8:21 PM, Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@gwu.edu" target="_blank">gedare@gwu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I'm pretty sure STACK_ALIGNMENT just does the initial stack align for<br>
the start of the stack. The compiler is responsible for laying out the<br>
frames after that, and for generating aligned entries in the stack<br>
itself. Probably the compiler is being too lax. Check for some<br>
compiler flags for the target that might be used to increase the<br>
alignment, for example if there is a strict alignment flag. Check with<br>
the epiphany / parallela boards too, ask about compiler flags for<br>
alignment problems.<br>
<br></blockquote><div>I checked their GCC port, and I think they define the proper macros for stack alignments to 8 bytes. However, when debugging on real HW (Parallella), I can see that some structures are allocated on non 8-bytes boundaries, and also structures passed as function arguments are not aligned.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-Gedare<br>
<div><div><br>
On Tue, Nov 25, 2014 at 2:06 PM, Hesham Moustafa<br>
<<a href="mailto:heshamelmatary@gmail.com" target="_blank">heshamelmatary@gmail.com</a>> wrote:<br>
> Hi all,<br>
><br>
> I came across an issue with alignment when I am porting RTEMS to Epiphany<br>
> now. The reference manual says that stores should be aligned according to<br>
> the store instruction type (half word, word, double word). For example strd<br>
> instruction should get an address aligned to 8 bytes. Although I set<br>
> CPU_ALIGNMENT and Stack aliment macros to 8 in cpu.h, I still get some<br>
> automatic variables not aligned to 8 bytes, which causes an exception when<br>
> executing relevant (double) store/load instructions.<br>
><br>
> I had to apply a brute-force solution to get over this problem. For example<br>
> I add alignment's attribute to "CORE_mutex_Attributes attr __attribute__<br>
> ((aligned (8)));" and I set "#define CPU_TIMESTAMP_USE_STRUCT_TIMESPEC TRUE"<br>
> instead of using CPU_TIMESTAMP_USE_INT64<br>
><br>
> Is there any other good solution for such a problem?<br>
><br>
> Regards,<br>
> Hesham<br>
><br>
</div></div>> _______________________________________________<br>
> devel mailing list<br>
> <a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
> <a href="http://lists.rtems.org/mailman/listinfo/devel" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote></div><br></div></div>