powerpc/8xx: Implementation of PAGE_EXEC
authorLEROY Christophe <christophe.leroy@c-s.fr>
Wed, 22 Apr 2015 10:06:45 +0000 (12:06 +0200)
committerScott Wood <scottwood@freescale.com>
Wed, 3 Jun 2015 02:37:28 +0000 (21:37 -0500)
commit5b2753fc3e8a72253310d01a8b0a5bb05d917ef8
treed4d7b44ddaf5d49b59ae27dce318961ef8cf7906
parente0a8e0d90a9f0be66ba49f4f2380a63c22d4aaae
powerpc/8xx: Implementation of PAGE_EXEC

This patch implements PAGE_EXEC capability on the 8xx.

All pages PP exec bits are set to 000, which means Execute for
Supervisor and no Execute for User.
Then we use the APG to say whether accesses are according to Page
rules, "all Supervisor" rules (Exec for all) and
"all User" rules (Exec for noone)

Therefore, we define 4 APG groups. msb is _PAGE_EXEC,
lsb is _PAGE_USER. MI_AP is initialised as follows:
GP0 (00) => Not User, no exec => 11 (all accesses performed as user)
GP1 (01) => User but no exec => 11 (all accesses performed as user)
GP2 (10) => Not User, exec => 01 (rights according to page definition)
GP3 (11) => User, exec => 00 (all accesses performed as supervisor)

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
[scottwood: comments: s/exec/data/ on data side, and s/pages/pages'/]
Signed-off-by: Scott Wood <scottwood@freescale.com>
arch/powerpc/include/asm/cputable.h
arch/powerpc/include/asm/mmu-8xx.h
arch/powerpc/include/asm/pte-8xx.h
arch/powerpc/kernel/head_8xx.S