Prepare a common version of the permission masks that will be based on _PAGE_NA, _PAGE_RO, _PAGE_ROX, _PAGE_RW, _PAGE_RWX that will be defined in platform specific headers in later patches. Put them in a new header pgtable-masks.h which will be included by platforms. And prepare a common version of flags used for mapping kernel memory that will be based on _PAGE_RO, _PAGE_ROX, _PAGE_RW, _PAGE_RWX that will be defined in platform specific headers. Put them in unless _PAGE_KERNEL_RO is already defined so that platform specific definitions can be dismantled one by one. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/d31b59efcdb38e675479563307af891aeadf6ec9.1695659959.git.christophe.leroy@csgroup.eu
31 lines
1.0 KiB
C
31 lines
1.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_POWERPC_PGTABLE_MASKS_H
|
|
#define _ASM_POWERPC_PGTABLE_MASKS_H
|
|
|
|
#ifndef _PAGE_NA
|
|
#define _PAGE_NA 0
|
|
#define _PAGE_RO _PAGE_READ
|
|
#define _PAGE_ROX (_PAGE_READ | _PAGE_EXEC)
|
|
#define _PAGE_RW (_PAGE_READ | _PAGE_WRITE)
|
|
#define _PAGE_RWX (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC)
|
|
#endif
|
|
|
|
/* Permission flags for kernel mappings */
|
|
#ifndef _PAGE_KERNEL_RO
|
|
#define _PAGE_KERNEL_RO _PAGE_RO
|
|
#define _PAGE_KERNEL_ROX _PAGE_ROX
|
|
#define _PAGE_KERNEL_RW (_PAGE_RW | _PAGE_DIRTY)
|
|
#define _PAGE_KERNEL_RWX (_PAGE_RWX | _PAGE_DIRTY)
|
|
#endif
|
|
|
|
/* Permission masks used to generate the __P and __S table */
|
|
#define PAGE_NONE __pgprot(_PAGE_BASE | _PAGE_NA)
|
|
#define PAGE_SHARED __pgprot(_PAGE_BASE | _PAGE_RW)
|
|
#define PAGE_SHARED_X __pgprot(_PAGE_BASE | _PAGE_RWX)
|
|
#define PAGE_COPY __pgprot(_PAGE_BASE | _PAGE_RO)
|
|
#define PAGE_COPY_X __pgprot(_PAGE_BASE | _PAGE_ROX)
|
|
#define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_RO)
|
|
#define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_ROX)
|
|
|
|
#endif /* _ASM_POWERPC_PGTABLE_MASKS_H */
|