.. | .. |
---|
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 | } |
---|