aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/4level-fixup.h4
-rw-r--r--include/asm-generic/pgtable-nopmd.h2
-rw-r--r--include/asm-generic/pgtable-nopud.h2
-rw-r--r--include/asm-generic/tlb.h12
-rw-r--r--include/asm-generic/vmlinux.lds.h31
5 files changed, 25 insertions, 26 deletions
diff --git a/include/asm-generic/4level-fixup.h b/include/asm-generic/4level-fixup.h
index 9d40e879f99e..77ff547730af 100644
--- a/include/asm-generic/4level-fixup.h
+++ b/include/asm-generic/4level-fixup.h
@@ -27,9 +27,9 @@
27#define pud_page_vaddr(pud) pgd_page_vaddr(pud) 27#define pud_page_vaddr(pud) pgd_page_vaddr(pud)
28 28
29#undef pud_free_tlb 29#undef pud_free_tlb
30#define pud_free_tlb(tlb, x) do { } while (0) 30#define pud_free_tlb(tlb, x, addr) do { } while (0)
31#define pud_free(mm, x) do { } while (0) 31#define pud_free(mm, x) do { } while (0)
32#define __pud_free_tlb(tlb, x) do { } while (0) 32#define __pud_free_tlb(tlb, x, addr) do { } while (0)
33 33
34#undef pud_addr_end 34#undef pud_addr_end
35#define pud_addr_end(addr, end) (end) 35#define pud_addr_end(addr, end) (end)
diff --git a/include/asm-generic/pgtable-nopmd.h b/include/asm-generic/pgtable-nopmd.h
index a7cdc48e8b78..725612b793ce 100644
--- a/include/asm-generic/pgtable-nopmd.h
+++ b/include/asm-generic/pgtable-nopmd.h
@@ -59,7 +59,7 @@ static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address)
59static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) 59static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd)
60{ 60{
61} 61}
62#define __pmd_free_tlb(tlb, x) do { } while (0) 62#define __pmd_free_tlb(tlb, x, a) do { } while (0)
63 63
64#undef pmd_addr_end 64#undef pmd_addr_end
65#define pmd_addr_end(addr, end) (end) 65#define pmd_addr_end(addr, end) (end)
diff --git a/include/asm-generic/pgtable-nopud.h b/include/asm-generic/pgtable-nopud.h
index 87cf449a6df3..810431d8351b 100644
--- a/include/asm-generic/pgtable-nopud.h
+++ b/include/asm-generic/pgtable-nopud.h
@@ -52,7 +52,7 @@ static inline pud_t * pud_offset(pgd_t * pgd, unsigned long address)
52 */ 52 */
53#define pud_alloc_one(mm, address) NULL 53#define pud_alloc_one(mm, address) NULL
54#define pud_free(mm, x) do { } while (0) 54#define pud_free(mm, x) do { } while (0)
55#define __pud_free_tlb(tlb, x) do { } while (0) 55#define __pud_free_tlb(tlb, x, a) do { } while (0)
56 56
57#undef pud_addr_end 57#undef pud_addr_end
58#define pud_addr_end(addr, end) (end) 58#define pud_addr_end(addr, end) (end)
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
index f490e43a90b9..e43f9766259f 100644
--- a/include/asm-generic/tlb.h
+++ b/include/asm-generic/tlb.h
@@ -123,24 +123,24 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
123 __tlb_remove_tlb_entry(tlb, ptep, address); \ 123 __tlb_remove_tlb_entry(tlb, ptep, address); \
124 } while (0) 124 } while (0)
125 125
126#define pte_free_tlb(tlb, ptep) \ 126#define pte_free_tlb(tlb, ptep, address) \
127 do { \ 127 do { \
128 tlb->need_flush = 1; \ 128 tlb->need_flush = 1; \
129 __pte_free_tlb(tlb, ptep); \ 129 __pte_free_tlb(tlb, ptep, address); \
130 } while (0) 130 } while (0)
131 131
132#ifndef __ARCH_HAS_4LEVEL_HACK 132#ifndef __ARCH_HAS_4LEVEL_HACK
133#define pud_free_tlb(tlb, pudp) \ 133#define pud_free_tlb(tlb, pudp, address) \
134 do { \ 134 do { \
135 tlb->need_flush = 1; \ 135 tlb->need_flush = 1; \
136 __pud_free_tlb(tlb, pudp); \ 136 __pud_free_tlb(tlb, pudp, address); \
137 } while (0) 137 } while (0)
138#endif 138#endif
139 139
140#define pmd_free_tlb(tlb, pmdp) \ 140#define pmd_free_tlb(tlb, pmdp, address) \
141 do { \ 141 do { \
142 tlb->need_flush = 1; \ 142 tlb->need_flush = 1; \
143 __pmd_free_tlb(tlb, pmdp); \ 143 __pmd_free_tlb(tlb, pmdp, address); \
144 } while (0) 144 } while (0)
145 145
146#define tlb_migrate_finish(mm) do {} while (0) 146#define tlb_migrate_finish(mm) do {} while (0)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index ab8ea9b7741e..a43223af98b6 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -30,9 +30,7 @@
30 * EXCEPTION_TABLE(...) 30 * EXCEPTION_TABLE(...)
31 * NOTES 31 * NOTES
32 * 32 *
33 * __bss_start = .; 33 * BSS_SECTION(0, 0, 0)
34 * BSS_SECTION(0, 0)
35 * __bss_stop = .;
36 * _end = .; 34 * _end = .;
37 * 35 *
38 * STABS_DEBUG 36 * STABS_DEBUG
@@ -188,7 +186,7 @@
188 . = ALIGN(align); \ 186 . = ALIGN(align); \
189 *(.data.cacheline_aligned) 187 *(.data.cacheline_aligned)
190 188
191#define INIT_TASK(align) \ 189#define INIT_TASK_DATA(align) \
192 . = ALIGN(align); \ 190 . = ALIGN(align); \
193 *(.data.init_task) 191 *(.data.init_task)
194 192
@@ -431,10 +429,10 @@
431/* 429/*
432 * Init task 430 * Init task
433 */ 431 */
434#define INIT_TASK_DATA(align) \ 432#define INIT_TASK_DATA_SECTION(align) \
435 . = ALIGN(align); \ 433 . = ALIGN(align); \
436 .data.init_task : { \ 434 .data.init_task : { \
437 INIT_TASK \ 435 INIT_TASK_DATA(align) \
438 } 436 }
439 437
440#ifdef CONFIG_CONSTRUCTORS 438#ifdef CONFIG_CONSTRUCTORS
@@ -486,7 +484,8 @@
486 * bss (Block Started by Symbol) - uninitialized data 484 * bss (Block Started by Symbol) - uninitialized data
487 * zeroed during startup 485 * zeroed during startup
488 */ 486 */
489#define SBSS \ 487#define SBSS(sbss_align) \
488 . = ALIGN(sbss_align); \
490 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \ 489 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \
491 *(.sbss) \ 490 *(.sbss) \
492 *(.scommon) \ 491 *(.scommon) \
@@ -495,12 +494,10 @@
495#define BSS(bss_align) \ 494#define BSS(bss_align) \
496 . = ALIGN(bss_align); \ 495 . = ALIGN(bss_align); \
497 .bss : AT(ADDR(.bss) - LOAD_OFFSET) { \ 496 .bss : AT(ADDR(.bss) - LOAD_OFFSET) { \
498 VMLINUX_SYMBOL(__bss_start) = .; \
499 *(.bss.page_aligned) \ 497 *(.bss.page_aligned) \
500 *(.dynbss) \ 498 *(.dynbss) \
501 *(.bss) \ 499 *(.bss) \
502 *(COMMON) \ 500 *(COMMON) \
503 VMLINUX_SYMBOL(__bss_stop) = .; \
504 } 501 }
505 502
506/* 503/*
@@ -719,15 +716,15 @@
719 * matches the requirment of PAGE_ALIGNED_DATA. 716 * matches the requirment of PAGE_ALIGNED_DATA.
720 * 717 *
721 * use 0 as page_align if page_aligned data is not used */ 718 * use 0 as page_align if page_aligned data is not used */
722#define RW_DATA_SECTION(cacheline, nosave, pagealigned, inittask) \ 719#define RW_DATA_SECTION(cacheline, pagealigned, inittask) \
723 . = ALIGN(PAGE_SIZE); \ 720 . = ALIGN(PAGE_SIZE); \
724 .data : AT(ADDR(.data) - LOAD_OFFSET) { \ 721 .data : AT(ADDR(.data) - LOAD_OFFSET) { \
725 INIT_TASK(inittask) \ 722 INIT_TASK_DATA(inittask) \
726 CACHELINE_ALIGNED_DATA(cacheline) \ 723 CACHELINE_ALIGNED_DATA(cacheline) \
727 READ_MOSTLY_DATA(cacheline) \ 724 READ_MOSTLY_DATA(cacheline) \
728 DATA_DATA \ 725 DATA_DATA \
729 CONSTRUCTORS \ 726 CONSTRUCTORS \
730 NOSAVE_DATA(nosave) \ 727 NOSAVE_DATA \
731 PAGE_ALIGNED_DATA(pagealigned) \ 728 PAGE_ALIGNED_DATA(pagealigned) \
732 } 729 }
733 730
@@ -749,8 +746,10 @@
749 INIT_RAM_FS \ 746 INIT_RAM_FS \
750 } 747 }
751 748
752#define BSS_SECTION(sbss_align, bss_align) \ 749#define BSS_SECTION(sbss_align, bss_align, stop_align) \
753 SBSS \ 750 . = ALIGN(sbss_align); \
751 VMLINUX_SYMBOL(__bss_start) = .; \
752 SBSS(sbss_align) \
754 BSS(bss_align) \ 753 BSS(bss_align) \
755 . = ALIGN(4); 754 . = ALIGN(stop_align); \
756 755 VMLINUX_SYMBOL(__bss_stop) = .;