78 lines · 2.3 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0-only *//* * Copyright (C) 2012 Regents of the University of California */ #ifndef _ASM_RISCV_PGTABLE_BITS_H#define _ASM_RISCV_PGTABLE_BITS_H #define _PAGE_ACCESSED_OFFSET 6 #define _PAGE_PRESENT   (1 << 0)#define _PAGE_READ      (1 << 1)    /* Readable */#define _PAGE_WRITE     (1 << 2)    /* Writable */#define _PAGE_EXEC      (1 << 3)    /* Executable */#define _PAGE_USER      (1 << 4)    /* User */#define _PAGE_GLOBAL    (1 << 5)    /* Global */#define _PAGE_ACCESSED  (1 << 6)    /* Set by hardware on any access */#define _PAGE_DIRTY     (1 << 7)    /* Set by hardware on any write */#define _PAGE_SOFT      (3 << 8)    /* Reserved for software */ #define _PAGE_SPECIAL   (1 << 8)    /* RSW: 0x1 */ #ifdef CONFIG_MEM_SOFT_DIRTY /* ext_svrsw60t59b: bit 59 for soft-dirty tracking */#define _PAGE_SOFT_DIRTY						\	((riscv_has_extension_unlikely(RISCV_ISA_EXT_SVRSW60T59B)) ?	\	 (1UL << 59) : 0)/* * Bit 3 is always zero for swap entry computation, so we * can borrow it for swap page soft-dirty tracking. */#define _PAGE_SWP_SOFT_DIRTY						\	((riscv_has_extension_unlikely(RISCV_ISA_EXT_SVRSW60T59B)) ?	\	 _PAGE_EXEC : 0)#else#define _PAGE_SOFT_DIRTY	0#define _PAGE_SWP_SOFT_DIRTY	0#endif /* CONFIG_MEM_SOFT_DIRTY */ #ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP /* ext_svrsw60t59b: Bit(60) for userfaultfd tracking */#define _PAGE_UFFD							\	((riscv_has_extension_unlikely(RISCV_ISA_EXT_SVRSW60T59B)) ?	\	 (1UL << 60) : 0)/* * Bit 4 is not involved into swap entry computation, so we * can borrow it for swap page userfaultfd tracking. */#define _PAGE_SWP_UFFD						\	((riscv_has_extension_unlikely(RISCV_ISA_EXT_SVRSW60T59B)) ?	\	 _PAGE_USER : 0)#else#define _PAGE_UFFD		0#define _PAGE_SWP_UFFD		0#endif #define _PAGE_TABLE     _PAGE_PRESENT /* * _PAGE_PROT_NONE is set on not-present pages (and ignored by the hardware) to * distinguish them from swapped out pages */#define _PAGE_PROT_NONE _PAGE_GLOBAL /* Used for swap PTEs only. */#define _PAGE_SWP_EXCLUSIVE _PAGE_ACCESSED #define _PAGE_PFN_SHIFT 10 /* * when all of R/W/X are zero, the PTE is a pointer to the next level * of the page table; otherwise, it is a leaf PTE. */#define _PAGE_LEAF (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC) #endif /* _ASM_RISCV_PGTABLE_BITS_H */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t