Lines Matching +full:align +full:- +full:end

1 // SPDX-License-Identifier: GPL-2.0
25 #define dvma_index(baddr) ((baddr - DVMA_START) >> DVMA_PAGE_SHIFT)
31 unsigned long end; member
82 if((hole->start == 0) && (hole->end == 0) && (hole->size == 0)) in print_holes()
85 pr_info("hole: start %08lx end %08lx size %08lx\n", in print_holes()
86 hole->start, hole->end, hole->size); in print_holes()
89 pr_info("end of hole listing...\n"); in print_holes()
109 if(hole->end == prev->start) { in refill()
110 hole->size += prev->size; in refill()
111 hole->end = prev->end; in refill()
112 list_move(&(prev->list), &hole_cache); in refill()
133 list_del(&(ret->list)); in rmcache()
139 static inline unsigned long get_baddr(int len, unsigned long align) in get_baddr() argument
159 if(align > DVMA_PAGE_SIZE) in get_baddr()
160 newlen = len + ((hole->end - len) & (align-1)); in get_baddr()
164 if(hole->size > newlen) { in get_baddr()
165 hole->end -= newlen; in get_baddr()
166 hole->size -= newlen; in get_baddr()
167 dvma_entry_use(hole->end) = newlen; in get_baddr()
172 return hole->end; in get_baddr()
173 } else if(hole->size == newlen) { in get_baddr()
174 list_move(&(hole->list), &hole_cache); in get_baddr()
175 dvma_entry_use(hole->start) = newlen; in get_baddr()
180 return hole->start; in get_baddr()
210 if(hole->end == baddr) { in free_baddr()
211 hole->end += len; in free_baddr()
212 hole->size += len; in free_baddr()
214 } else if(hole->start == (baddr + len)) { in free_baddr()
215 hole->start = baddr; in free_baddr()
216 hole->size += len; in free_baddr()
224 hole->start = baddr; in free_baddr()
225 hole->end = baddr + len; in free_baddr()
226 hole->size = len; in free_baddr()
228 // list_add_tail(&(hole->list), cur); in free_baddr()
229 list_add(&(hole->list), cur); in free_baddr()
249 hole->start = DVMA_START; in dvma_init()
250 hole->end = DVMA_END; in dvma_init()
251 hole->size = DVMA_SIZE; in dvma_init()
253 list_add(&(hole->list), &hole_list); in dvma_init()
262 unsigned long dvma_map_align(unsigned long kaddr, int len, int align) in dvma_map_align() argument
281 len = ((len + (DVMA_PAGE_SIZE-1)) & DVMA_PAGE_MASK); in dvma_map_align()
283 if(align == 0) in dvma_map_align()
284 align = DVMA_PAGE_SIZE; in dvma_map_align()
286 align = ((align + (DVMA_PAGE_SIZE-1)) & DVMA_PAGE_MASK); in dvma_map_align()
288 baddr = get_baddr(len, align); in dvma_map_align()
317 void *dvma_malloc_align(unsigned long len, unsigned long align) in dvma_malloc_align() argument
327 len = ((len + (DVMA_PAGE_SIZE-1)) & DVMA_PAGE_MASK); in dvma_malloc_align()
332 if((baddr = (unsigned long)dvma_map_align(kaddr, len, align)) == 0) { in dvma_malloc_align()
345 pr_debug("mapped %08lx bytes %08lx kern -> %08lx bus\n", len, kaddr, in dvma_malloc_align()