<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/arch/mips/lib/delay.c, branch v3.16.2</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.16.2</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.16.2'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2014-05-30T19:01:08Z</updated>
<entry>
<title>MIPS: __delay ABI-dependent subtraction simplification</title>
<updated>2014-05-30T19:01:08Z</updated>
<author>
<name>Maciej W. Rozycki</name>
<email>macro@linux-mips.org</email>
</author>
<published>2014-04-06T20:42:49Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e496453d3e15ae3e153a03116cb6070e00ec63ee'/>
<id>urn:sha1:e496453d3e15ae3e153a03116cb6070e00ec63ee</id>
<content type='text'>
This small update to the previous fix to __delay removes a conditional
around the ABI-dependent subtraction operation within an inline asm in
favor to the standard &lt;asm/asm.h&gt; LONG_SUBU macro.  No change in code
produced.

Signed-off-by: Maciej W. Rozycki &lt;macro@linux-mips.org&gt;
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6703/
Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: __delay CPU_DADDI_WORKAROUNDS bug fix</title>
<updated>2014-05-12T22:29:36Z</updated>
<author>
<name>Maciej W. Rozycki</name>
<email>macro@linux-mips.org</email>
</author>
<published>2014-03-31T23:57:28Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=2db4bc3418c43f1e810b304c48f8ddff2535075b'/>
<id>urn:sha1:2db4bc3418c43f1e810b304c48f8ddff2535075b</id>
<content type='text'>
With CPU_DADDI_WORKAROUNDS enabled __delay assembles with a macro in a
branch delay slot:

{standard input}: Assembler messages:
{standard input}:18: Warning: Macro instruction expanded into multiple
instructions in a branch delay slot

and broken code results:

0000000000000000 &lt;__delay&gt;:
   0:	1480ffff 	bnez	a0,0 &lt;__delay&gt;
   4:	24010001 	li	at,1
   8:	0081202f 	dsubu	a0,a0,at
   c:	03e00008 	jr	ra
  10:	00000000 	nop
  14:	00000000 	nop

Consequently the function loops indefinitely, showing up prominently as a
hang in the delay loop calibration at bootstrap.

This change corrects the problem by forcing the immediate 1 into a
register while keeping code produced identical where CPU_DADDI_WORKAROUNDS
is disabled.

Signed-off-by: Maciej W. Rozycki &lt;macro@linux-mips.org&gt;
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/6669/
Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: Whitespace cleanup.</title>
<updated>2013-02-01T09:00:22Z</updated>
<author>
<name>Ralf Baechle</name>
<email>ralf@linux-mips.org</email>
</author>
<published>2013-01-22T11:59:30Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=7034228792cc561e79ff8600f02884bd4c80e287'/>
<id>urn:sha1:7034228792cc561e79ff8600f02884bd4c80e287</id>
<content type='text'>
Having received another series of whitespace patches I decided to do this
once and for all rather than dealing with this kind of patches trickling
in forever.

Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: delay.c: Check BITS_PER_LONG instead of __SIZEOF_LONG__</title>
<updated>2013-01-22T15:53:48Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert@linux-m68k.org</email>
</author>
<published>2012-12-06T18:12:17Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=4ea494b528ac1b9df9f0c77ba49e3e8ee108d9ec'/>
<id>urn:sha1:4ea494b528ac1b9df9f0c77ba49e3e8ee108d9ec</id>
<content type='text'>
When building a 32-bit kernel for RBTX4927 with gcc version 4.1.2 20061115
(prerelease) (Ubuntu 4.1.1-21), I get:

arch/mips/lib/delay.c:24:5: warning: "__SIZEOF_LONG__" is not defined

As a consequence, __delay() always uses the 64-bit "dsubu" instruction.

Replace the check for "__SIZEOF_LONG__ == 4" by "BITS_PER_LONG == 32" to
fix this.

Introduced by commit 5210edcd527773c227465ad18e416a894966324f [MIPS: Make
__{,n,u}delay declarations match definitions and generic delay.h"]

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Patchwork: https://patchwork.linux-mips.org/patch/4678/
Acked-by: David Daney &lt;david.daney@cavium.com&gt;
Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: Make __{,n,u}delay declarations match definitions and generic delay.h</title>
<updated>2012-10-16T20:20:03Z</updated>
<author>
<name>David Daney</name>
<email>david.daney@cavium.com</email>
</author>
<published>2012-09-28T18:34:10Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5210edcd527773c227465ad18e416a894966324f'/>
<id>urn:sha1:5210edcd527773c227465ad18e416a894966324f</id>
<content type='text'>
At some recent point arch/mips/include/asm/delay.h has started being
included into csrc-octeon.c where the __?delay() functions are defined.
This causes a compile failure due to conflicting declarations and
definitions of the functions.

It turns out that the generic definitions in arch/mips/lib/delay.c also
conflict.

Proposed fix: Declare the functions to take unsigned long parameters
just like asm-generic (and x86) does.  Update __delay to agree
(__ndelay and __udelay need no change).

Bonus: Get rid of 'inline' from __delay() definition, as it is globally
visible, and the compiler should be making this decision itself (it does
in fact inline the function without being told to).

Signed-off-by: David Daney &lt;david.daney@cavium.com&gt;
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/4354/
Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: delay: Fix use of current_cpu_data in preemptable code.</title>
<updated>2010-04-12T16:26:09Z</updated>
<author>
<name>Ralf Baechle</name>
<email>ralf@linux-mips.org</email>
</author>
<published>2010-03-10T15:16:04Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=abe5b417fb4a52e9510fdb5a16e722e91bf89e92'/>
<id>urn:sha1:abe5b417fb4a52e9510fdb5a16e722e91bf89e92</id>
<content type='text'>
This may lead to warnings like:

BUG: using smp_processor_id() in preemptible [00000000] code: reboot/1989
caller is __udelay+0x14/0x70
Call Trace:
[&lt;ffffffff8110ad28&gt;] dump_stack+0x8/0x34
[&lt;ffffffff812dde04&gt;] debug_smp_processor_id+0xf4/0x110
[&lt;ffffffff812d90bc&gt;] __udelay+0x14/0x70
[&lt;ffffffff81378274&gt;] md_notify_reboot+0x12c/0x148
[&lt;ffffffff81161054&gt;] notifier_call_chain+0x64/0xc8
[&lt;ffffffff811614dc&gt;] __blocking_notifier_call_chain+0x64/0xc0
[&lt;ffffffff8115566c&gt;] kernel_restart_prepare+0x1c/0x38
[&lt;ffffffff811556cc&gt;] kernel_restart+0x14/0x50
[&lt;ffffffff8115581c&gt;] SyS_reboot+0x10c/0x1f0
[&lt;ffffffff81103684&gt;] handle_sysn32+0x44/0x84

Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: Fix __ndelay build error and add 'ull' suffix for 32-bit kernel</title>
<updated>2009-06-17T10:06:24Z</updated>
<author>
<name>Atsushi Nemoto</name>
<email>nemoto@toshiba-tops.co.jp</email>
</author>
<published>2009-06-09T02:12:48Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=3cb3a66cf7559d9c5d47ddf58481530b8943052f'/>
<id>urn:sha1:3cb3a66cf7559d9c5d47ddf58481530b8943052f</id>
<content type='text'>
Signed-off-by: Atsushi Nemoto &lt;anemo@mba.ocn.ne.jp&gt;
Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
<entry>
<title>MIPS: Outline udelay and fix a few issues.</title>
<updated>2009-06-08T15:57:51Z</updated>
<author>
<name>Ralf Baechle</name>
<email>ralf@linux-mips.org</email>
</author>
<published>2009-02-28T09:44:28Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=5636919b5c909fee54a6ef5226475ecae012ad02'/>
<id>urn:sha1:5636919b5c909fee54a6ef5226475ecae012ad02</id>
<content type='text'>
Outlining fixes the issue were on certain CPUs such as the R10000 family
the delay loop would need an extra cycle if it overlaps a cacheline
boundary.

The rewrite also fixes build errors with GCC 4.4 which was changed in
way incompatible with the kernel's inline assembly.

Relying on pure C for computation of the delay value removes the need for
explicit.  The price we pay is a slight slowdown of the computation - to
be fixed on another day.

Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
</content>
</entry>
</feed>
