]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: 8830/1: NOMMU: Toggle only bits in EXC_RETURN we are really care of
authorVladimir Murzin <vladimir.murzin@arm.com>
Fri, 25 Jan 2019 14:18:37 +0000 (15:18 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Fri, 1 Feb 2019 21:44:19 +0000 (21:44 +0000)
commit7424b3f89feab6f7b59fa1dce57572351aa50460
treedbd4813fa104ed4e0359e5a546acee47fb5ef613
parent6dc37af02ecc9f1353640d14955c2b707c09f00c
ARM: 8830/1: NOMMU: Toggle only bits in EXC_RETURN we are really care of

ARMv8M introduces support for Security extension to M class, among
other things it affects exception handling, especially, encoding of
EXC_RETURN.

The new bits have been added:

Bit [6] Secure or Non-secure stack
Bit [5] Default callee register stacking
Bit [0] Exception Secure

which conflicts with hard-coded value of EXC_RETURN:

In fact, we only care of few bits:

Bit [3]  Mode (0 - Handler, 1 - Thread)
Bit [2]  Stack pointer selection (0 - Main, 1 - Process)

We can toggle only those bits and left other bits as they were on
exception entry.

It is basically, what patch does - saves EXC_RETURN when we do
transition form Thread to Handler mode (it is first svc), so later
saved value is used instead of EXC_RET_THREADMODE_PROCESSSTACK.

Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/include/asm/v7m.h
arch/arm/kernel/entry-header.S
arch/arm/kernel/entry-v7m.S
arch/arm/mm/proc-v7m.S