0001
0002 #ifndef _ASM_X86_PGTABLE_32_H
0003 #define _ASM_X86_PGTABLE_32_H
0004
0005 #include <asm/pgtable_32_types.h>
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef __ASSEMBLY__
0017 #include <asm/processor.h>
0018 #include <linux/threads.h>
0019 #include <asm/paravirt.h>
0020
0021 #include <linux/bitops.h>
0022 #include <linux/list.h>
0023 #include <linux/spinlock.h>
0024
0025 struct mm_struct;
0026 struct vm_area_struct;
0027
0028 extern pgd_t swapper_pg_dir[1024];
0029 extern pgd_t initial_page_table[1024];
0030 extern pmd_t initial_pg_pmd[];
0031
0032 void paging_init(void);
0033 void sync_initial_page_table(void);
0034
0035 #ifdef CONFIG_X86_PAE
0036 # include <asm/pgtable-3level.h>
0037 #else
0038 # include <asm/pgtable-2level.h>
0039 #endif
0040
0041
0042 #define kpte_clear_flush(ptep, vaddr) \
0043 do { \
0044 pte_clear(&init_mm, (vaddr), (ptep)); \
0045 flush_tlb_one_kernel((vaddr)); \
0046 } while (0)
0047
0048 #endif
0049
0050
0051
0052
0053 #ifdef CONFIG_FLATMEM
0054 #define kern_addr_valid(addr) (1)
0055 #else
0056 #define kern_addr_valid(kaddr) (0)
0057 #endif
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 #if PTRS_PER_PMD > 1
0069 #define PAGE_TABLE_SIZE(pages) (((pages) / PTRS_PER_PMD) + PTRS_PER_PGD)
0070 #else
0071 #define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PGD)
0072 #endif
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082 #define LOWMEM_PAGES ((((_ULL(2)<<31) - __PAGE_OFFSET) >> PAGE_SHIFT))
0083
0084 #endif