Thread (22 messages) flat view 22 messages, 3 authors, 2011-02-09
STALE5681d

[PATCH v2 1/5] ARM: omap4: Correct definition of do_wfi() forCONFIG_THUMB2_KERNEL

From: Santosh Shilimkar <hidden>
Date: 2011-02-04 11:18:21
Also in: linux-omap

-----Original Message-----
From: Dave Martin [mailto:dave.martin at linaro.org]
Sent: Friday, February 04, 2011 4:28 PM
To: Santosh Shilimkar
Cc: Russell King - ARM Linux; linux-arm-kernel at lists.infradead.org;
Tony Lindgren; Nicolas Pitre; linux-omap at vger.kernel.org; Jean
Pihet-XID
Subject: Re: [PATCH v2 1/5] ARM: omap4: Correct definition of
do_wfi() forCONFIG_THUMB2_KERNEL

On Thu, Feb 3, 2011 at 7:30 PM, Santosh Shilimkar
[off-list ref] wrote:
quoted
quoted
-----Original Message-----
[....]
quoted
quoted
We actually have this:

#if __LINUX_ARM_ARCH__ >= 7 || ? ? ? ? ?\
? ? ? ? (__LINUX_ARM_ARCH__ == 6 && defined(CONFIG_CPU_32v6K))
#define sev() ? __asm__ __volatile__ ("sev" : : : "memory")
#define wfe() ? __asm__ __volatile__ ("wfe" : : : "memory")
#define wfi() ? __asm__ __volatile__ ("wfi" : : : "memory")
#endif

in asm/system.h, so maybe it should be using wfe() from
asm/system.h
quoted
quoted
?
I assume you mean wfi here.
The problem is, omap2plus build breaks because it builds
CPU_32v6 and CPU_32v7 as well which doesn't support the wfi
instruction. Hence I used opcode directly to keep build
working.
I guess that's right, OMAP2 is ARM1136 and doesn't have the K
extensions.

Would it make sense to have the v6 MCR equivalent as an altetnative?
Something like:

#elseif __LINUX_ARM_ARCH__ >= 6
#define wfi()   __asm__ __volatile__ ( \
    "mov     r0, #0\n\t" \
    "mcr     p15, 0, r0, c7, c0, 4\n\t" \
    ::: "r0"
)
#endif

This MCR is a mandatory part of the architecture for v6, but it's
not
mandatory for older processors.
That should do as well.

Regards,
Santosh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help