<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/arch/sh/kernel/entry-common.S, branch v3.0.82</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/arch/sh/kernel/entry-common.S?h=v3.0.82</id>
<link rel='self' href='https://git.amat.us/linux/atom/arch/sh/kernel/entry-common.S?h=v3.0.82'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2010-02-08T01:46:46Z</updated>
<entry>
<title>sh: Correct the offset of the return address in ret_from_exception</title>
<updated>2010-02-08T01:46:46Z</updated>
<author>
<name>Matt Fleming</name>
<email>matt@console-pimps.org</email>
</author>
<published>2010-01-27T20:05:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=142698282ceb6811ad3482c218b7292037cb67ff'/>
<id>urn:sha1:142698282ceb6811ad3482c218b7292037cb67ff</id>
<content type='text'>
The address that ret_from_exception and ret_from_irq will return to is
found in the stack slot for SPC, not PR. This error was causing the
DWARF unwinder to pick up the wrong return address on the stack and then
unwind using the unwind tables for the wrong function.

While I'm here I might as well add CFI annotations for the other
registers since they could be useful when unwinding.

Signed-off-by: Matt Fleming &lt;matt@console-pimps.org&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: TS_RESTORE_SIGMASK conversion.</title>
<updated>2009-10-14T07:05:42Z</updated>
<author>
<name>Paul Mundt</name>
<email>lethal@linux-sh.org</email>
</author>
<published>2009-10-14T07:05:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=56bfc42f6cba3e831094c01a23fbbb17a20bbdf8'/>
<id>urn:sha1:56bfc42f6cba3e831094c01a23fbbb17a20bbdf8</id>
<content type='text'>
Replace TIF_RESTORE_SIGMASK with TS_RESTORE_SIGMASK and define our own
set_restore_sigmask() function.  This saves the costly SMP-safe set_bit
operation, which we do not need for the sigmask flag since TIF_SIGPENDING
always has to be set too.

Based on the x86 and powerpc change.

Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Fix a TRACE_IRQS_OFF typo.</title>
<updated>2009-10-14T06:50:28Z</updated>
<author>
<name>Paul Mundt</name>
<email>lethal@linux-sh.org</email>
</author>
<published>2009-10-14T06:50:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=457b646189e47f9d48588809da3e806ec363f219'/>
<id>urn:sha1:457b646189e47f9d48588809da3e806ec363f219</id>
<content type='text'>
The resume_userspace path had TRACE_IRQS_OFF written incorrectly and so
never handled the transition properly. This was fixed once before but
seems to have made it back in the tree. Fix it for good.

Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Remove implicit sign extension from assembler immediates</title>
<updated>2009-08-24T08:09:53Z</updated>
<author>
<name>Stuart Menefy</name>
<email>stuart.menefy@st.com</email>
</author>
<published>2009-08-24T08:09:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fea966f7564205fcf5919af9bde031e753419c96'/>
<id>urn:sha1:fea966f7564205fcf5919af9bde031e753419c96</id>
<content type='text'>
The SH instruction set has several instructions which accept an 8 bit
immediate operand. For logical instructions this operand is zero extended,
for arithmetic instructions the operand is sign extended. After adding an
option to the assembler to check this, it was found that several pieces
of assembly code were assuming this behaviour, and in one case
getting it wrong.

So this patch explicitly sign extends any immediate operands, which makes
it obvious what is happening, and fixes the one case which got it wrong.

Signed-off-by: Stuart Menefy &lt;stuart.menefy@st.com&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Add a few missing irqflags tracing markers.</title>
<updated>2009-08-18T02:35:09Z</updated>
<author>
<name>Matt Fleming</name>
<email>matt@console-pimps.org</email>
</author>
<published>2009-08-18T02:35:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f3a8308864f920d2babe76921733d76ec4a11fb8'/>
<id>urn:sha1:f3a8308864f920d2babe76921733d76ec4a11fb8</id>
<content type='text'>
save_regs contains an SR modification without an irqflags annotation,
which resulted in a missing TRACE_IRQS_OFF in the interrupt exception
path on SH-3/SH4.

I've also moved the TRACE_IRQS_OFF/ON annotation when returning from the
interrupt to just before we call __restore_all. This seems like the most
logical place to put this because the annotation is for when we restore
the SR register so we should delay the annotation until as last as
possible.

We were also missing a TRACE_IRQS_OFF in resume_kernel when
CONFIG_PREEMPT is enabled.

The end result is that this fixes up the lockdep engine debugging support
with CONFIG_PREEMPT enabled on all SH-3/4 parts.

Signed-off-by: Matt Fleming &lt;matt@console-pimps.org&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Add CFI annotations for exception return.</title>
<updated>2009-08-13T17:02:07Z</updated>
<author>
<name>Matt Fleming</name>
<email>matt@console-pimps.org</email>
</author>
<published>2009-08-02T21:40:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cafb0ddac60556f7d2d4cd0ef1a93da8a6c71ffb'/>
<id>urn:sha1:cafb0ddac60556f7d2d4cd0ef1a93da8a6c71ffb</id>
<content type='text'>
Annotate various assembly code paths with CFI assembler directives so
that DWARF unwind info is available for the unwinder.

Signed-off-by: Matt Fleming &lt;matt@console-pimps.org&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Setup the frame register in asm code</title>
<updated>2009-08-13T16:59:55Z</updated>
<author>
<name>Matt Fleming</name>
<email>matt@console-pimps.org</email>
</author>
<published>2009-08-02T21:33:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0b930489b8606224b829c8a6037eac24249a97ec'/>
<id>urn:sha1:0b930489b8606224b829c8a6037eac24249a97ec</id>
<content type='text'>
In order to use DWARF unwinder info the frame register has to contain a
valid value. Whilst GCC takes care of this for C code, we have to do it
ourselves for assembly.

Signed-off-by: Matt Fleming &lt;matt@console-pimps.org&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Rework irqflags tracing to fix up CONFIG_PROVE_LOCKING.</title>
<updated>2009-07-29T14:01:24Z</updated>
<author>
<name>Stuart Menefy</name>
<email>stuart.menefy@st.com</email>
</author>
<published>2009-07-29T14:01:24Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fd78a76aefb5bf28a11d6960d29e03a11db62320'/>
<id>urn:sha1:fd78a76aefb5bf28a11d6960d29e03a11db62320</id>
<content type='text'>
This cleans up the irqflags tracing code quite a bit and ties it
in to various missing callsites that caused an imbalance when
CONFIG_PROVE_LOCKING was enabled.

Previously this was catching on:

 987 #ifdef CONFIG_PROVE_LOCKING
 988     DEBUG_LOCKS_WARN_ON(!p-&gt;hardirqs_enabled);
 989     DEBUG_LOCKS_WARN_ON(!p-&gt;softirqs_enabled);
 990 #endif
 991     retval = -EAGAIN;

with hardirqs being doubly enabled, and subsequently bailing out
with the following call trace:

	Call trace:
	[&lt;88035224&gt;] __lock_acquire+0x616/0x6a6
	[&lt;88015a8c&gt;] do_fork+0xf8/0x2b0
	[&lt;880331ec&gt;] trace_hardirqs_on_caller+0xd4/0x114
	[&lt;88241074&gt;] _spin_unlock_irq+0x20/0x64
	[&lt;88035224&gt;] __lock_acquire+0x616/0x6a6
	[&lt;8800386c&gt;] kernel_thread+0x48/0x70
	[&lt;88024ecc&gt;] ____call_usermodehelper+0x0/0x110
	[&lt;88024ecc&gt;] ____call_usermodehelper+0x0/0x110
	[&lt;88003894&gt;] kernel_thread_helper+0x0/0x14
	[&lt;88024bac&gt;] __call_usermodehelper+0x38/0x70
	[&lt;88025dc0&gt;] worker_thread+0x150/0x274
	[&lt;88035b9c&gt;] lock_release+0x0/0x198
	[&lt;88024b74&gt;] __call_usermodehelper+0x0/0x70
	[&lt;88028cf0&gt;] autoremove_wake_function+0x0/0x30
	[&lt;88028bf2&gt;] kthread+0x3e/0x70
	[&lt;88025c70&gt;] worker_thread+0x0/0x274
	[&lt;8800389c&gt;] kernel_thread_helper+0x8/0x14
	[&lt;88028bb4&gt;] kthread+0x0/0x70
	[&lt;88003894&gt;] kernel_thread_helper+0x0/0x14

Reported-by: Nobuhiro Iwamatsu &lt;iwamatsu.nobuhiro@renesas.com&gt;
Signed-off-by: Stuart Menefy &lt;stuart.menefy@st.com&gt;
Signed-off-by: Matt Fleming &lt;matt@console-pimps.org&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Add ftrace syscall tracing support</title>
<updated>2009-07-06T11:16:33Z</updated>
<author>
<name>Matt Fleming</name>
<email>matt@console-pimps.org</email>
</author>
<published>2009-07-06T11:16:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c652d780c9cf7f860141de232b37160fe013feca'/>
<id>urn:sha1:c652d780c9cf7f860141de232b37160fe013feca</id>
<content type='text'>
Now that I've added TIF_SYSCALL_FTRACE the thread flags do not fit into
a single byte any more. Code testing them now needs to be aware of the
upper and lower bytes.

Signed-off-by: Matt Fleming &lt;matt@console-pimps.org&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
<entry>
<title>sh: Generic kgdb stub support.</title>
<updated>2008-12-22T09:44:04Z</updated>
<author>
<name>Paul Mundt</name>
<email>lethal@linux-sh.org</email>
</author>
<published>2008-12-11T09:46:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ab6e570ba33dbee18c2520d386e0f367a9b573c3'/>
<id>urn:sha1:ab6e570ba33dbee18c2520d386e0f367a9b573c3</id>
<content type='text'>
This migrates from the old bitrotted kgdb stub implementation and moves
to the generic stub. In the process support for SH-2/SH-2A is also added,
which the old stub never provided.

Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
</entry>
</feed>
