Subversion Repositories Kolibri OS

Rev

Rev 5270 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5270 Rev 6082
Line 60... Line 60...
60
				      unsigned long mask, unsigned int leftshift)
60
				      unsigned long mask, unsigned int leftshift)
61
{
61
{
62
	return ((value >> rightshift) & mask) << leftshift;
62
	return ((value >> rightshift) & mask) << leftshift;
63
}
63
}
Line 64... Line -...
64
 
-
 
65
/*
-
 
66
 * Bits _PAGE_BIT_PRESENT, _PAGE_BIT_FILE and _PAGE_BIT_PROTNONE are taken,
-
 
67
 * split up the 29 bits of offset into this range.
-
 
68
 */
-
 
69
#define PTE_FILE_MAX_BITS	29
-
 
70
#define PTE_FILE_SHIFT1		(_PAGE_BIT_PRESENT + 1)
-
 
71
#define PTE_FILE_SHIFT2		(_PAGE_BIT_FILE + 1)
-
 
72
#define PTE_FILE_SHIFT3		(_PAGE_BIT_PROTNONE + 1)
-
 
73
#define PTE_FILE_BITS1		(PTE_FILE_SHIFT2 - PTE_FILE_SHIFT1 - 1)
-
 
74
#define PTE_FILE_BITS2		(PTE_FILE_SHIFT3 - PTE_FILE_SHIFT2 - 1)
-
 
75
 
-
 
76
#define PTE_FILE_MASK1		((1U << PTE_FILE_BITS1) - 1)
-
 
77
#define PTE_FILE_MASK2		((1U << PTE_FILE_BITS2) - 1)
-
 
78
 
-
 
79
#define PTE_FILE_LSHIFT2	(PTE_FILE_BITS1)
-
 
80
#define PTE_FILE_LSHIFT3	(PTE_FILE_BITS1 + PTE_FILE_BITS2)
-
 
81
 
-
 
82
static __always_inline pgoff_t pte_to_pgoff(pte_t pte)
-
 
83
{
-
 
84
	return (pgoff_t)
-
 
85
		(pte_bitop(pte.pte_low, PTE_FILE_SHIFT1, PTE_FILE_MASK1,  0)		    +
-
 
86
		 pte_bitop(pte.pte_low, PTE_FILE_SHIFT2, PTE_FILE_MASK2,  PTE_FILE_LSHIFT2) +
-
 
87
		 pte_bitop(pte.pte_low, PTE_FILE_SHIFT3,           -1UL,  PTE_FILE_LSHIFT3));
-
 
88
}
-
 
89
 
-
 
90
static __always_inline pte_t pgoff_to_pte(pgoff_t off)
-
 
91
{
-
 
92
	return (pte_t){
-
 
93
		.pte_low =
-
 
94
			pte_bitop(off,                0, PTE_FILE_MASK1,  PTE_FILE_SHIFT1) +
-
 
95
			pte_bitop(off, PTE_FILE_LSHIFT2, PTE_FILE_MASK2,  PTE_FILE_SHIFT2) +
-
 
96
			pte_bitop(off, PTE_FILE_LSHIFT3,           -1UL,  PTE_FILE_SHIFT3) +
-
 
97
			_PAGE_FILE,
-
 
98
	};
-
 
99
}
-
 
100
 
64
 
101
/* Encode and de-code a swap entry */
65
/* Encode and de-code a swap entry */
102
#define SWP_TYPE_BITS (_PAGE_BIT_FILE - _PAGE_BIT_PRESENT - 1)
66
#define SWP_TYPE_BITS 5
Line 103... Line 67...
103
#define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1)
67
#define SWP_OFFSET_SHIFT (_PAGE_BIT_PROTNONE + 1)
Line 104... Line 68...
104
 
68