mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 05:31:08 -04:00
sparc/mm: move protection_map[] inside the platform
This moves protection_map[] inside the platform and while here, also enable ARCH_HAS_VM_GET_PAGE_PROT on 32 bit platforms via DECLARE_VM_GET_PAGE_PROT. Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Anshuman Khandual <[email protected]> Reviewed-by: Sam Ravnborg <[email protected]> Cc: "David S. Miller" <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Brian Cain <[email protected]> Cc: Catalin Marinas <[email protected]> Cc: Christophe Leroy <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Chris Zankel <[email protected]> Cc: Dinh Nguyen <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: Guo Ren <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Huacai Chen <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: "James E.J. Bottomley" <[email protected]> Cc: Jeff Dike <[email protected]> Cc: Jonas Bonn <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Michal Simek <[email protected]> Cc: Nicholas Piggin <[email protected]> Cc: Palmer Dabbelt <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Paul Walmsley <[email protected]> Cc: Richard Henderson <[email protected]> Cc: Rich Felker <[email protected]> Cc: Russell King <[email protected]> Cc: Stafford Horne <[email protected]> Cc: Thomas Bogendoerfer <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Vasily Gorbik <[email protected]> Cc: Vineet Gupta <[email protected]> Cc: WANG Xuerui <[email protected]> Cc: Will Deacon <[email protected]> Cc: Yoshinori Sato <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
This commit is contained in:
1 parent
6eac1eaf21
commit
25740d31ee
5 files changed
+24
-39
No files matched your search
+1
-1
@@ -13,6 +13,7 @@ config 64BIT
|
||||
config SPARC
|
||||
bool
|
||||
default y
|
||||
select ARCH_HAS_VM_GET_PAGE_PROT
|
||||
select ARCH_MIGHT_HAVE_PC_PARPORT if SPARC64 && PCI
|
||||
select ARCH_MIGHT_HAVE_PC_SERIO
|
||||
select DMA_OPS
|
||||
@@ -84,7 +85,6 @@ config SPARC64
|
||||
select PERF_USE_VMALLOC
|
||||
select ARCH_HAVE_NMI_SAFE_CMPXCHG
|
||||
select HAVE_C_RECORDMCOUNT
|
||||
select ARCH_HAS_VM_GET_PAGE_PROT
|
||||
select HAVE_ARCH_AUDITSYSCALL
|
||||
select ARCH_SUPPORTS_ATOMIC_RMW
|
||||
select ARCH_SUPPORTS_DEBUG_PAGEALLOC
|
||||
|
||||
@@ -64,25 +64,6 @@ void paging_init(void);
|
||||
|
||||
extern unsigned long ptr_in_current_pgd;
|
||||
|
||||
/* xwr */
|
||||
#define __P000 PAGE_NONE
|
||||
#define __P001 PAGE_READONLY
|
||||
#define __P010 PAGE_COPY
|
||||
#define __P011 PAGE_COPY
|
||||
#define __P100 PAGE_READONLY
|
||||
#define __P101 PAGE_READONLY
|
||||
#define __P110 PAGE_COPY
|
||||
#define __P111 PAGE_COPY
|
||||
|
||||
#define __S000 PAGE_NONE
|
||||
#define __S001 PAGE_READONLY
|
||||
#define __S010 PAGE_SHARED
|
||||
#define __S011 PAGE_SHARED
|
||||
#define __S100 PAGE_READONLY
|
||||
#define __S101 PAGE_READONLY
|
||||
#define __S110 PAGE_SHARED
|
||||
#define __S111 PAGE_SHARED
|
||||
|
||||
/* First physical page can be anywhere, the following is needed so that
|
||||
* va-->pa and vice versa conversions work properly without performance
|
||||
* hit for all __pa()/__va() operations.
|
||||
|
||||
@@ -187,25 +187,6 @@ bool kern_addr_valid(unsigned long addr);
|
||||
#define _PAGE_SZHUGE_4U _PAGE_SZ4MB_4U
|
||||
#define _PAGE_SZHUGE_4V _PAGE_SZ4MB_4V
|
||||
|
||||
/* These are actually filled in at boot time by sun4{u,v}_pgprot_init() */
|
||||
#define __P000 __pgprot(0)
|
||||
#define __P001 __pgprot(0)
|
||||
#define __P010 __pgprot(0)
|
||||
#define __P011 __pgprot(0)
|
||||
#define __P100 __pgprot(0)
|
||||
#define __P101 __pgprot(0)
|
||||
#define __P110 __pgprot(0)
|
||||
#define __P111 __pgprot(0)
|
||||
|
||||
#define __S000 __pgprot(0)
|
||||
#define __S001 __pgprot(0)
|
||||
#define __S010 __pgprot(0)
|
||||
#define __S011 __pgprot(0)
|
||||
#define __S100 __pgprot(0)
|
||||
#define __S101 __pgprot(0)
|
||||
#define __S110 __pgprot(0)
|
||||
#define __S111 __pgprot(0)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
pte_t mk_pte_io(unsigned long, pgprot_t, int, unsigned long);
|
||||
|
||||
@@ -302,3 +302,23 @@ void sparc_flush_page_to_ram(struct page *page)
|
||||
__flush_page_to_ram(vaddr);
|
||||
}
|
||||
EXPORT_SYMBOL(sparc_flush_page_to_ram);
|
||||
|
||||
static const pgprot_t protection_map[16] = {
|
||||
[VM_NONE] = PAGE_NONE,
|
||||
[VM_READ] = PAGE_READONLY,
|
||||
[VM_WRITE] = PAGE_COPY,
|
||||
[VM_WRITE | VM_READ] = PAGE_COPY,
|
||||
[VM_EXEC] = PAGE_READONLY,
|
||||
[VM_EXEC | VM_READ] = PAGE_READONLY,
|
||||
[VM_EXEC | VM_WRITE] = PAGE_COPY,
|
||||
[VM_EXEC | VM_WRITE | VM_READ] = PAGE_COPY,
|
||||
[VM_SHARED] = PAGE_NONE,
|
||||
[VM_SHARED | VM_READ] = PAGE_READONLY,
|
||||
[VM_SHARED | VM_WRITE] = PAGE_SHARED,
|
||||
[VM_SHARED | VM_WRITE | VM_READ] = PAGE_SHARED,
|
||||
[VM_SHARED | VM_EXEC] = PAGE_READONLY,
|
||||
[VM_SHARED | VM_EXEC | VM_READ] = PAGE_READONLY,
|
||||
[VM_SHARED | VM_EXEC | VM_WRITE] = PAGE_SHARED,
|
||||
[VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED
|
||||
};
|
||||
DECLARE_VM_GET_PAGE_PROT
|
||||
@@ -2634,6 +2634,9 @@ void vmemmap_free(unsigned long start, unsigned long end,
|
||||
}
|
||||
#endif /* CONFIG_SPARSEMEM_VMEMMAP */
|
||||
|
||||
/* These are actually filled in at boot time by sun4{u,v}_pgprot_init() */
|
||||
static pgprot_t protection_map[16] __ro_after_init;
|
||||
|
||||
static void prot_init_common(unsigned long page_none,
|
||||
unsigned long page_shared,
|
||||
unsigned long page_copy,
|
||||
|
||||
Reference in new issue
Block a user