Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: Remove asm/pgtable-*level-hwdef.h files

The macros in these files can easily be computed based on PAGE_SHIFT and
VA_BITS, so just remove them and add the corresponding macros to
asm/pgtable-hwdef.h

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Tested-by: Jungseok Lee <jungseoklee85@gmail.com>

+36 -149
-43
arch/arm64/include/asm/pgtable-2level-hwdef.h
··· 1 - /* 2 - * Copyright (C) 2012 ARM Ltd. 3 - * 4 - * This program is free software; you can redistribute it and/or modify 5 - * it under the terms of the GNU General Public License version 2 as 6 - * published by the Free Software Foundation. 7 - * 8 - * This program is distributed in the hope that it will be useful, 9 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 - * GNU General Public License for more details. 12 - * 13 - * You should have received a copy of the GNU General Public License 14 - * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 - */ 16 - #ifndef __ASM_PGTABLE_2LEVEL_HWDEF_H 17 - #define __ASM_PGTABLE_2LEVEL_HWDEF_H 18 - 19 - /* 20 - * With LPAE and 64KB pages, there are 2 levels of page tables. Each level has 21 - * 8192 entries of 8 bytes each, occupying a 64KB page. Levels 0 and 1 are not 22 - * used. The 2nd level table (PGD for Linux) can cover a range of 4TB, each 23 - * entry representing 512MB. The user and kernel address spaces are limited to 24 - * 4TB in the 64KB page configuration. 25 - */ 26 - #define PTRS_PER_PTE 8192 27 - #define PTRS_PER_PGD 8192 28 - 29 - /* 30 - * PGDIR_SHIFT determines the size a top-level page table entry can map. 31 - */ 32 - #define PGDIR_SHIFT 29 33 - #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) 34 - #define PGDIR_MASK (~(PGDIR_SIZE-1)) 35 - 36 - /* 37 - * section address mask and size definitions. 38 - */ 39 - #define SECTION_SHIFT 29 40 - #define SECTION_SIZE (_AC(1, UL) << SECTION_SHIFT) 41 - #define SECTION_MASK (~(SECTION_SIZE-1)) 42 - 43 - #endif
-50
arch/arm64/include/asm/pgtable-3level-hwdef.h
··· 1 - /* 2 - * Copyright (C) 2012 ARM Ltd. 3 - * 4 - * This program is free software; you can redistribute it and/or modify 5 - * it under the terms of the GNU General Public License version 2 as 6 - * published by the Free Software Foundation. 7 - * 8 - * This program is distributed in the hope that it will be useful, 9 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 - * GNU General Public License for more details. 12 - * 13 - * You should have received a copy of the GNU General Public License 14 - * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 - */ 16 - #ifndef __ASM_PGTABLE_3LEVEL_HWDEF_H 17 - #define __ASM_PGTABLE_3LEVEL_HWDEF_H 18 - 19 - /* 20 - * With LPAE and 4KB pages, there are 3 levels of page tables. Each level has 21 - * 512 entries of 8 bytes each, occupying a 4K page. The first level table 22 - * covers a range of 512GB, each entry representing 1GB. The user and kernel 23 - * address spaces are limited to 512GB each. 24 - */ 25 - #define PTRS_PER_PTE 512 26 - #define PTRS_PER_PMD 512 27 - #define PTRS_PER_PGD 512 28 - 29 - /* 30 - * PGDIR_SHIFT determines the size a top-level page table entry can map. 31 - */ 32 - #define PGDIR_SHIFT 30 33 - #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) 34 - #define PGDIR_MASK (~(PGDIR_SIZE-1)) 35 - 36 - /* 37 - * PMD_SHIFT determines the size a middle-level page table entry can map. 38 - */ 39 - #define PMD_SHIFT 21 40 - #define PMD_SIZE (_AC(1, UL) << PMD_SHIFT) 41 - #define PMD_MASK (~(PMD_SIZE-1)) 42 - 43 - /* 44 - * section address mask and size definitions. 45 - */ 46 - #define SECTION_SHIFT 21 47 - #define SECTION_SIZE (_AC(1, UL) << SECTION_SHIFT) 48 - #define SECTION_MASK (~(SECTION_SIZE-1)) 49 - 50 - #endif
-50
arch/arm64/include/asm/pgtable-4level-hwdef.h
··· 1 - /* 2 - * This program is free software; you can redistribute it and/or modify 3 - * it under the terms of the GNU General Public License version 2 as 4 - * published by the Free Software Foundation. 5 - * 6 - * This program is distributed in the hope that it will be useful, 7 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 8 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 9 - * GNU General Public License for more details. 10 - * 11 - * You should have received a copy of the GNU General Public License 12 - * along with this program. If not, see <http://www.gnu.org/licenses/>. 13 - */ 14 - #ifndef __ASM_PGTABLE_4LEVEL_HWDEF_H 15 - #define __ASM_PGTABLE_4LEVEL_HWDEF_H 16 - 17 - #define PTRS_PER_PTE 512 18 - #define PTRS_PER_PMD 512 19 - #define PTRS_PER_PUD 512 20 - #define PTRS_PER_PGD 512 21 - 22 - /* 23 - * PGDIR_SHIFT determines the size a top-level page table entry can map. 24 - */ 25 - #define PGDIR_SHIFT 39 26 - #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) 27 - #define PGDIR_MASK (~(PGDIR_SIZE-1)) 28 - 29 - /* 30 - * PUD_SHIFT determines the size the second level page table entry can map. 31 - */ 32 - #define PUD_SHIFT 30 33 - #define PUD_SIZE (_AC(1, UL) << PUD_SHIFT) 34 - #define PUD_MASK (~(PUD_SIZE-1)) 35 - 36 - /* 37 - * PMD_SHIFT determines the size the third level page table entry can map. 38 - */ 39 - #define PMD_SHIFT 21 40 - #define PMD_SIZE (_AC(1, UL) << PMD_SHIFT) 41 - #define PMD_MASK (~(PMD_SIZE-1)) 42 - 43 - /* 44 - * section address mask and size definitions. 45 - */ 46 - #define SECTION_SHIFT 21 47 - #define SECTION_SIZE (_AC(1, UL) << SECTION_SHIFT) 48 - #define SECTION_MASK (~(SECTION_SIZE-1)) 49 - 50 - #endif
+36 -6
arch/arm64/include/asm/pgtable-hwdef.h
··· 16 16 #ifndef __ASM_PGTABLE_HWDEF_H 17 17 #define __ASM_PGTABLE_HWDEF_H 18 18 19 - #if CONFIG_ARM64_PGTABLE_LEVELS == 2 20 - #include <asm/pgtable-2level-hwdef.h> 21 - #elif CONFIG_ARM64_PGTABLE_LEVELS == 3 22 - #include <asm/pgtable-3level-hwdef.h> 23 - #else 24 - #include <asm/pgtable-4level-hwdef.h> 19 + #define PTRS_PER_PTE (1 << (PAGE_SHIFT - 3)) 20 + 21 + /* 22 + * PMD_SHIFT determines the size a level 2 page table entry can map. 23 + */ 24 + #if CONFIG_ARM64_PGTABLE_LEVELS > 2 25 + #define PMD_SHIFT ((PAGE_SHIFT - 3) * 2 + 3) 26 + #define PMD_SIZE (_AC(1, UL) << PMD_SHIFT) 27 + #define PMD_MASK (~(PMD_SIZE-1)) 28 + #define PTRS_PER_PMD PTRS_PER_PTE 25 29 #endif 30 + 31 + /* 32 + * PUD_SHIFT determines the size a level 1 page table entry can map. 33 + */ 34 + #if CONFIG_ARM64_PGTABLE_LEVELS > 3 35 + #define PUD_SHIFT ((PAGE_SHIFT - 3) * 3 + 3) 36 + #define PUD_SIZE (_AC(1, UL) << PUD_SHIFT) 37 + #define PUD_MASK (~(PUD_SIZE-1)) 38 + #define PTRS_PER_PUD PTRS_PER_PTE 39 + #endif 40 + 41 + /* 42 + * PGDIR_SHIFT determines the size a top-level page table entry can map 43 + * (depending on the configuration, this level can be 0, 1 or 2). 44 + */ 45 + #define PGDIR_SHIFT ((PAGE_SHIFT - 3) * CONFIG_ARM64_PGTABLE_LEVELS + 3) 46 + #define PGDIR_SIZE (_AC(1, UL) << PGDIR_SHIFT) 47 + #define PGDIR_MASK (~(PGDIR_SIZE-1)) 48 + #define PTRS_PER_PGD (1 << (VA_BITS - PGDIR_SHIFT)) 49 + 50 + /* 51 + * Section address mask and size definitions. 52 + */ 53 + #define SECTION_SHIFT PMD_SHIFT 54 + #define SECTION_SIZE (_AC(1, UL) << SECTION_SHIFT) 55 + #define SECTION_MASK (~(SECTION_SIZE-1)) 26 56 27 57 /* 28 58 * Hardware page table definitions.