@@ -120,6 +120,34 @@ extern pmdval_t early_pmd_flags;
120
120
#define arch_end_context_switch (prev ) do {} while(0)
121
121
#endif /* CONFIG_PARAVIRT_XXL */
122
122
123
+ static inline pmd_t pmd_set_flags (pmd_t pmd , pmdval_t set )
124
+ {
125
+ pmdval_t v = native_pmd_val (pmd );
126
+
127
+ return native_make_pmd (v | set );
128
+ }
129
+
130
+ static inline pmd_t pmd_clear_flags (pmd_t pmd , pmdval_t clear )
131
+ {
132
+ pmdval_t v = native_pmd_val (pmd );
133
+
134
+ return native_make_pmd (v & ~clear );
135
+ }
136
+
137
+ static inline pud_t pud_set_flags (pud_t pud , pudval_t set )
138
+ {
139
+ pudval_t v = native_pud_val (pud );
140
+
141
+ return native_make_pud (v | set );
142
+ }
143
+
144
+ static inline pud_t pud_clear_flags (pud_t pud , pudval_t clear )
145
+ {
146
+ pudval_t v = native_pud_val (pud );
147
+
148
+ return native_make_pud (v & ~clear );
149
+ }
150
+
123
151
/*
124
152
* The following only work if pte_present() is true.
125
153
* Undefined behaviour if not..
@@ -317,6 +345,30 @@ static inline int pud_devmap(pud_t pud)
317
345
}
318
346
#endif
319
347
348
+ #ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP
349
+ static inline bool pmd_special (pmd_t pmd )
350
+ {
351
+ return pmd_flags (pmd ) & _PAGE_SPECIAL ;
352
+ }
353
+
354
+ static inline pmd_t pmd_mkspecial (pmd_t pmd )
355
+ {
356
+ return pmd_set_flags (pmd , _PAGE_SPECIAL );
357
+ }
358
+ #endif /* CONFIG_ARCH_SUPPORTS_PMD_PFNMAP */
359
+
360
+ #ifdef CONFIG_ARCH_SUPPORTS_PUD_PFNMAP
361
+ static inline bool pud_special (pud_t pud )
362
+ {
363
+ return pud_flags (pud ) & _PAGE_SPECIAL ;
364
+ }
365
+
366
+ static inline pud_t pud_mkspecial (pud_t pud )
367
+ {
368
+ return pud_set_flags (pud , _PAGE_SPECIAL );
369
+ }
370
+ #endif /* CONFIG_ARCH_SUPPORTS_PUD_PFNMAP */
371
+
320
372
static inline int pgd_devmap (pgd_t pgd )
321
373
{
322
374
return 0 ;
@@ -487,20 +539,6 @@ static inline pte_t pte_mkdevmap(pte_t pte)
487
539
return pte_set_flags (pte , _PAGE_SPECIAL |_PAGE_DEVMAP );
488
540
}
489
541
490
- static inline pmd_t pmd_set_flags (pmd_t pmd , pmdval_t set )
491
- {
492
- pmdval_t v = native_pmd_val (pmd );
493
-
494
- return native_make_pmd (v | set );
495
- }
496
-
497
- static inline pmd_t pmd_clear_flags (pmd_t pmd , pmdval_t clear )
498
- {
499
- pmdval_t v = native_pmd_val (pmd );
500
-
501
- return native_make_pmd (v & ~clear );
502
- }
503
-
504
542
/* See comments above mksaveddirty_shift() */
505
543
static inline pmd_t pmd_mksaveddirty (pmd_t pmd )
506
544
{
@@ -595,20 +633,6 @@ static inline pmd_t pmd_mkwrite_novma(pmd_t pmd)
595
633
pmd_t pmd_mkwrite (pmd_t pmd , struct vm_area_struct * vma );
596
634
#define pmd_mkwrite pmd_mkwrite
597
635
598
- static inline pud_t pud_set_flags (pud_t pud , pudval_t set )
599
- {
600
- pudval_t v = native_pud_val (pud );
601
-
602
- return native_make_pud (v | set );
603
- }
604
-
605
- static inline pud_t pud_clear_flags (pud_t pud , pudval_t clear )
606
- {
607
- pudval_t v = native_pud_val (pud );
608
-
609
- return native_make_pud (v & ~clear );
610
- }
611
-
612
636
/* See comments above mksaveddirty_shift() */
613
637
static inline pud_t pud_mksaveddirty (pud_t pud )
614
638
{
0 commit comments