sv_magic -> scratchpad
[chai.git] / memory.c
1 /* CBMA -- Cafe's Bad Memory Allocator */
2
3 #include <stdio.h>
4 #include <memory.h>
5 #include "shim.h"
6
7 #define CBMA_PAGES 1024
8 uint32_t cbma_bottom;
9 uint32_t cbma_top;
10
11 void init_cbma(int fd)
12 {
13         cbma_bottom = alloc_gpu_pages(fd, CBMA_PAGES,
14                         BASE_MEM_PROT_CPU_RD | BASE_MEM_PROT_CPU_WR |
15                         BASE_MEM_PROT_GPU_RD | BASE_MEM_PROT_GPU_WR |
16                         BASE_MEM_SAME_VA); cbma_top = cbma_bottom;
17         memset((void*) cbma_bottom, 0, CBMA_PAGES << PAGE_SHIFT);
18 }
19
20 void* galloc(size_t sz)
21 {
22         cbma_bottom &= 0xFFFFFC00;
23         cbma_bottom += 0x400;
24         cbma_bottom += sz;
25         return (void*) (uint32_t) (cbma_bottom - sz);
26 }
27
28 void gfree(void* ptr)
29 {
30         printf("gfree %p\n", ptr);
31         /* TODO */
32 }
33
34