Less aggressive colour change in the title
[snowy-minesweeper.git] / cdi / cdi-mem.c
blob30c3c55c951386f38d7cb3490e4b5fc2a6511a34
1 #include <stddef.h>
2 #include <stdlib.h>
3 #include <cdi/mem.h>
5 struct cdi_mem_area *cdi_mem_alloc(size_t size, cdi_mem_flags_t flags)
7 if (flags & CDI_MEM_DMA_16M) {
8 return NULL;
11 uint32_t alignment = 1 << (flags & CDI_MEM_ALIGN_MASK);
13 struct cdi_mem_area *area = malloc(sizeof(*area));
14 area->size = size;
15 area->vaddr = (void *)(((uintptr_t)malloc(size + alignment - 1) + alignment - 1) & ~(alignment - 1));
16 area->paddr.num = 1;
17 area->paddr.items = malloc(sizeof(*area->paddr.items));
18 area->paddr.items[0].start = (uintptr_t)area->vaddr;
19 area->paddr.items[0].size = size;
21 return area;