ARM Technical Support Knowledge Articles

Why do Cortex-A7 and Cortex-A15 behave differently when handling WFE instructions ?

Applies to: Cortex-A7

Answer

Refer to page B1-1199 in the Architecture Reference Manual (rev C):

<< 
Pseudocode details of the Wait For Event lock mechanism

The WaitForEvent() pseudocode procedure optionally suspends execution until a WFE wake-up event
or reset occurs, or until some earlier time if the implementation chooses. It is IMPLEMENTATION 
DEFINED whether restarting execution after the period of suspension causes a ClearEventRegister() to 
occur.
>> 

In the case of Cortex-A15, it clears the event register when a wake-up event occurs. In the case of
Cortex-A7, it does not clear the event register. These are both valid implementations of the
spec. So it requires the execution of two WFE instructions on Cortex-A7 to return to 
STANDBYWFE state, after an SEV has been received (from another Cortex-A7 CPU or from another
cluster). But it only requires a single WFE on Cortex-A15.

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential