Lines Matching refs:start

33  * Cache range operations are initiated by writing the start and
36 * [start:end].
73 static inline void l2_clean_pa_range(unsigned long start, unsigned long end)
78 * Make sure 'start' and 'end' reference the same page, as
80 * the start address.
82 BUG_ON((start ^ end) >> PAGE_SHIFT);
84 va_start = l2_get_va(start);
85 va_end = va_start + (end - start);
104 static inline void l2_inv_pa_range(unsigned long start, unsigned long end)
109 * Make sure 'start' and 'end' reference the same page, as
111 * the start address.
113 BUG_ON((start ^ end) >> PAGE_SHIFT);
115 va_start = l2_get_va(start);
116 va_end = va_start + (end - start);
135 * inclusive start and end addresses.
142 static unsigned long calc_range_end(unsigned long start, unsigned long end)
146 BUG_ON(start & (CACHE_LINE_SIZE - 1));
150 * Try to process all cache lines between 'start' and 'end'.
159 if (range_end > start + MAX_RANGE_SIZE)
160 range_end = start + MAX_RANGE_SIZE;
165 if (range_end > (start | (PAGE_SIZE - 1)) + 1)
166 range_end = (start | (PAGE_SIZE - 1)) + 1;
171 static void feroceon_l2_inv_range(unsigned long start, unsigned long end)
176 if (start & (CACHE_LINE_SIZE - 1)) {
177 l2_clean_inv_pa(start & ~(CACHE_LINE_SIZE - 1));
178 start = (start | (CACHE_LINE_SIZE - 1)) + 1;
184 if (start < end && end & (CACHE_LINE_SIZE - 1)) {
190 * Invalidate all full cache lines between 'start' and 'end'.
192 while (start < end) {
193 unsigned long range_end = calc_range_end(start, end);
194 l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
195 start = range_end;
201 static void feroceon_l2_clean_range(unsigned long start, unsigned long end)
208 start &= ~(CACHE_LINE_SIZE - 1);
210 while (start != end) {
211 unsigned long range_end = calc_range_end(start, end);
212 l2_clean_pa_range(start, range_end - CACHE_LINE_SIZE);
213 start = range_end;
220 static void feroceon_l2_flush_range(unsigned long start, unsigned long end)
222 start &= ~(CACHE_LINE_SIZE - 1);
224 while (start != end) {
225 unsigned long range_end = calc_range_end(start, end);
227 l2_clean_pa_range(start, range_end - CACHE_LINE_SIZE);
228 l2_inv_pa_range(start, range_end - CACHE_LINE_SIZE);
229 start = range_end;