| .. | .. |
|---|
| 22 | 22 | #define PTE_FLAGS_OFFSET 0 |
|---|
| 23 | 23 | #endif |
|---|
| 24 | 24 | |
|---|
| 25 | | -#ifdef CONFIG_PPC_256K_PAGES |
|---|
| 25 | +#if defined(CONFIG_PPC_256K_PAGES) || \ |
|---|
| 26 | + (defined(CONFIG_PPC_8xx) && defined(CONFIG_PPC_16K_PAGES)) |
|---|
| 26 | 27 | #define PTE_SHIFT (PAGE_SHIFT - PTE_T_LOG2 - 2) /* 1/4 of a page */ |
|---|
| 27 | 28 | #else |
|---|
| 28 | 29 | #define PTE_SHIFT (PAGE_SHIFT - PTE_T_LOG2) /* full page */ |
|---|
| .. | .. |
|---|
| 39 | 40 | typedef unsigned long pte_basic_t; |
|---|
| 40 | 41 | #endif |
|---|
| 41 | 42 | |
|---|
| 43 | +#include <asm/bug.h> |
|---|
| 44 | + |
|---|
| 42 | 45 | /* |
|---|
| 43 | 46 | * Clear page using the dcbz instruction, which doesn't cause any |
|---|
| 44 | 47 | * memory traffic (except to write out any cache lines which get |
|---|
| .. | .. |
|---|
| 48 | 51 | { |
|---|
| 49 | 52 | unsigned int i; |
|---|
| 50 | 53 | |
|---|
| 54 | + WARN_ON((unsigned long)addr & (L1_CACHE_BYTES - 1)); |
|---|
| 55 | + |
|---|
| 51 | 56 | for (i = 0; i < PAGE_SIZE / L1_CACHE_BYTES; i++, addr += L1_CACHE_BYTES) |
|---|
| 52 | 57 | dcbz(addr); |
|---|
| 53 | 58 | } |
|---|