diff options
Diffstat (limited to 'include/asm-x86_64/pgalloc.h')
| -rw-r--r-- | include/asm-x86_64/pgalloc.h | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/include/asm-x86_64/pgalloc.h b/include/asm-x86_64/pgalloc.h index 4e28b6060a5e..8bb564687860 100644 --- a/include/asm-x86_64/pgalloc.h +++ b/include/asm-x86_64/pgalloc.h | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | #ifndef _X86_64_PGALLOC_H | 1 | #ifndef _X86_64_PGALLOC_H |
| 2 | #define _X86_64_PGALLOC_H | 2 | #define _X86_64_PGALLOC_H |
| 3 | 3 | ||
| 4 | #include <asm/fixmap.h> | ||
| 5 | #include <asm/pda.h> | 4 | #include <asm/pda.h> |
| 6 | #include <linux/threads.h> | 5 | #include <linux/threads.h> |
| 7 | #include <linux/mm.h> | 6 | #include <linux/mm.h> |
| @@ -45,24 +44,16 @@ static inline void pgd_list_add(pgd_t *pgd) | |||
| 45 | struct page *page = virt_to_page(pgd); | 44 | struct page *page = virt_to_page(pgd); |
| 46 | 45 | ||
| 47 | spin_lock(&pgd_lock); | 46 | spin_lock(&pgd_lock); |
| 48 | page->index = (pgoff_t)pgd_list; | 47 | list_add(&page->lru, &pgd_list); |
| 49 | if (pgd_list) | ||
| 50 | pgd_list->private = (unsigned long)&page->index; | ||
| 51 | pgd_list = page; | ||
| 52 | page->private = (unsigned long)&pgd_list; | ||
| 53 | spin_unlock(&pgd_lock); | 48 | spin_unlock(&pgd_lock); |
| 54 | } | 49 | } |
| 55 | 50 | ||
| 56 | static inline void pgd_list_del(pgd_t *pgd) | 51 | static inline void pgd_list_del(pgd_t *pgd) |
| 57 | { | 52 | { |
| 58 | struct page *next, **pprev, *page = virt_to_page(pgd); | 53 | struct page *page = virt_to_page(pgd); |
| 59 | 54 | ||
| 60 | spin_lock(&pgd_lock); | 55 | spin_lock(&pgd_lock); |
| 61 | next = (struct page *)page->index; | 56 | list_del(&page->lru); |
| 62 | pprev = (struct page **)page->private; | ||
| 63 | *pprev = next; | ||
| 64 | if (next) | ||
| 65 | next->private = (unsigned long)pprev; | ||
| 66 | spin_unlock(&pgd_lock); | 57 | spin_unlock(&pgd_lock); |
| 67 | } | 58 | } |
| 68 | 59 | ||
