diff options
Diffstat (limited to 'arch/ppc64/mm')
-rw-r--r-- | arch/ppc64/mm/hugetlbpage.c | 6 | ||||
-rw-r--r-- | arch/ppc64/mm/init.c | 1 | ||||
-rw-r--r-- | arch/ppc64/mm/slb.c | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/arch/ppc64/mm/hugetlbpage.c b/arch/ppc64/mm/hugetlbpage.c index e7833c80eb68..338771ec70d7 100644 --- a/arch/ppc64/mm/hugetlbpage.c +++ b/arch/ppc64/mm/hugetlbpage.c | |||
@@ -144,7 +144,8 @@ static void flush_low_segments(void *parm) | |||
144 | for (i = 0; i < NUM_LOW_AREAS; i++) { | 144 | for (i = 0; i < NUM_LOW_AREAS; i++) { |
145 | if (! (areas & (1U << i))) | 145 | if (! (areas & (1U << i))) |
146 | continue; | 146 | continue; |
147 | asm volatile("slbie %0" : : "r" (i << SID_SHIFT)); | 147 | asm volatile("slbie %0" |
148 | : : "r" ((i << SID_SHIFT) | SLBIE_C)); | ||
148 | } | 149 | } |
149 | 150 | ||
150 | asm volatile("isync" : : : "memory"); | 151 | asm volatile("isync" : : : "memory"); |
@@ -164,7 +165,8 @@ static void flush_high_segments(void *parm) | |||
164 | continue; | 165 | continue; |
165 | for (j = 0; j < (1UL << (HTLB_AREA_SHIFT-SID_SHIFT)); j++) | 166 | for (j = 0; j < (1UL << (HTLB_AREA_SHIFT-SID_SHIFT)); j++) |
166 | asm volatile("slbie %0" | 167 | asm volatile("slbie %0" |
167 | :: "r" ((i << HTLB_AREA_SHIFT) + (j << SID_SHIFT))); | 168 | :: "r" (((i << HTLB_AREA_SHIFT) |
169 | + (j << SID_SHIFT)) | SLBIE_C)); | ||
168 | } | 170 | } |
169 | 171 | ||
170 | asm volatile("isync" : : : "memory"); | 172 | asm volatile("isync" : : : "memory"); |
diff --git a/arch/ppc64/mm/init.c b/arch/ppc64/mm/init.c index b3b1e9c1770a..a14ab87df491 100644 --- a/arch/ppc64/mm/init.c +++ b/arch/ppc64/mm/init.c | |||
@@ -392,6 +392,7 @@ void free_initmem(void) | |||
392 | 392 | ||
393 | addr = (unsigned long)__init_begin; | 393 | addr = (unsigned long)__init_begin; |
394 | for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) { | 394 | for (; addr < (unsigned long)__init_end; addr += PAGE_SIZE) { |
395 | memset((void *)addr, 0xcc, PAGE_SIZE); | ||
395 | ClearPageReserved(virt_to_page(addr)); | 396 | ClearPageReserved(virt_to_page(addr)); |
396 | set_page_count(virt_to_page(addr), 1); | 397 | set_page_count(virt_to_page(addr), 1); |
397 | free_page(addr); | 398 | free_page(addr); |
diff --git a/arch/ppc64/mm/slb.c b/arch/ppc64/mm/slb.c index 244150a0bc18..0473953f6a37 100644 --- a/arch/ppc64/mm/slb.c +++ b/arch/ppc64/mm/slb.c | |||
@@ -87,8 +87,8 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm) | |||
87 | int i; | 87 | int i; |
88 | asm volatile("isync" : : : "memory"); | 88 | asm volatile("isync" : : : "memory"); |
89 | for (i = 0; i < offset; i++) { | 89 | for (i = 0; i < offset; i++) { |
90 | esid_data = (unsigned long)get_paca()->slb_cache[i] | 90 | esid_data = ((unsigned long)get_paca()->slb_cache[i] |
91 | << SID_SHIFT; | 91 | << SID_SHIFT) | SLBIE_C; |
92 | asm volatile("slbie %0" : : "r" (esid_data)); | 92 | asm volatile("slbie %0" : : "r" (esid_data)); |
93 | } | 93 | } |
94 | asm volatile("isync" : : : "memory"); | 94 | asm volatile("isync" : : : "memory"); |