Skip to content

Commit

Permalink
ARM: 8755/1: NOMMU: Reorganise __setup_mpu
Browse files Browse the repository at this point in the history
Currently, we have mixed code placement between .head.text and .text
depends on configuration we are building:

_text                           M       R(UP)   R(SMP)
======================================================
 __setup_mpu                    __HEAD  __HEAD  text
 __after_proc_init              __HEAD  __HEAD  text
 __mmap_switched                text    text    text

We are going to support another variant of MPU which is different to
PMSAv7 in sense overlapping MPU regions are not allowed, so this patch
makes boundaries between these sections precise and consistent:

_text                           M       R(UP)   R(SMP)
======================================================
 __setup_mpu                    __HEAD  __HEAD  __HEAD
 __after_proc_init              text    text    text
 __mmap_switched                text    text    text

Additionally, it paves a path to postpone MPU activation till
__after_proc_init where we do set SCTLR anyway and can return
directly to __mmap_switched.

Tested-by: Szemz? András <sza@esh.hu>
Tested-by: Alexandre TORGUE <alexandre.torgue@st.com>
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
  • Loading branch information
Vladimir Murzin authored and Russell King committed May 19, 2018
1 parent 9cfb541 commit 22893aa
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions arch/arm/kernel/head-nommu.S
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ ENTRY(stext)
ldr r12, [r10, #PROCINFO_INITFUNC]
add r12, r12, r10
ret r12
1: bl __after_proc_init
b __mmap_switched
1: ldr lr, =__mmap_switched
b __after_proc_init
ENDPROC(stext)

#ifdef CONFIG_SMP
Expand Down Expand Up @@ -123,6 +123,7 @@ __secondary_data:
/*
* Set the Control Register and Read the process ID.
*/
.text
__after_proc_init:
#ifdef CONFIG_CPU_CP15
/*
Expand Down Expand Up @@ -202,6 +203,7 @@ ENDPROC(__after_proc_init)
*
* r6: Value to be written to DRSR (and IRSR if required) for PMSAv7_RAM_REGION
*/
__HEAD

ENTRY(__setup_mpu)

Expand Down Expand Up @@ -301,6 +303,7 @@ ENDPROC(__setup_pmsa_v7)
* r6: pointer at mpu_rgn_info
*/

.text
ENTRY(__secondary_setup_mpu)
/* Use MPU region info supplied by __cpu_up */
ldr r6, [r7] @ get secondary_data.mpu_rgn_info
Expand Down

0 comments on commit 22893aa

Please sign in to comment.