Commit a0865368 authored by Stuart Menefy's avatar Stuart Menefy Committed by Paul Mundt

sh: Ensure ST40-300 BogoMIPS value is consistent

A strange variation was seen in the BogoMIPS figure for the ST40-300.
This was eventually tracked down to sensitivity to the alignment of
the loop. So add an align directive to ensure this doesn't occur.
Signed-off-by: default avatarStuart Menefy <stuart.menefy@st.com>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 795abaf1
...@@ -10,6 +10,16 @@ ...@@ -10,6 +10,16 @@
void __delay(unsigned long loops) void __delay(unsigned long loops)
{ {
__asm__ __volatile__( __asm__ __volatile__(
/*
* ST40-300 appears to have an issue with this code,
* normally taking two cycles each loop, as with all
* other SH variants. If however the branch and the
* delay slot straddle an 8 byte boundary, this increases
* to 3 cycles.
* This align directive ensures this doesn't occur.
*/
".balign 8\n\t"
"tst %0, %0\n\t" "tst %0, %0\n\t"
"1:\t" "1:\t"
"bf/s 1b\n\t" "bf/s 1b\n\t"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment