[MIPS] Fix instable BogoMIPS on multi-issue processors.
Increase alignment of BogoMIPS loop to 8 bytes. Having the delay loop overlap cache line boundaries may cause instable delays. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Родитель
f3bf07b9a3
Коммит
5ee823507b
|
@ -19,20 +19,22 @@ static inline void __delay(unsigned long loops)
|
||||||
{
|
{
|
||||||
if (sizeof(long) == 4)
|
if (sizeof(long) == 4)
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
".set\tnoreorder\n"
|
" .set noreorder \n"
|
||||||
"1:\tbnez\t%0,1b\n\t"
|
" .align 3 \n"
|
||||||
"subu\t%0,1\n\t"
|
"1: bnez %0, 1b \n"
|
||||||
".set\treorder"
|
" subu %0, 1 \n"
|
||||||
|
" .set reorder \n"
|
||||||
: "=r" (loops)
|
: "=r" (loops)
|
||||||
: "0" (loops));
|
: "0" (loops));
|
||||||
else if (sizeof(long) == 8)
|
else if (sizeof(long) == 8)
|
||||||
__asm__ __volatile__ (
|
__asm__ __volatile__ (
|
||||||
".set\tnoreorder\n"
|
" .set noreorder \n"
|
||||||
"1:\tbnez\t%0,1b\n\t"
|
" .align 3 \n"
|
||||||
"dsubu\t%0,1\n\t"
|
"1: bnez %0, 1b \n"
|
||||||
".set\treorder"
|
" dsubu %0, 1 \n"
|
||||||
:"=r" (loops)
|
" .set reorder \n"
|
||||||
:"0" (loops));
|
: "=r" (loops)
|
||||||
|
: "0" (loops));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче