Revision 142
- Date:
- 2007/02/27 23:03:43
- Files:
Legend:
- Added
- Removed
- Modified
-
trunk/include/allegro/platform/aintnds.h
38 38 * Gathered from C Programming language book 39 39 */ 40 40 41 typedef long Align; /* alignment to largest type (change later) */ 41 typedef u32 Align; /* alignment to largest type (change later) */ 42 42 typedef union Header /* block header */ 43 43 { 44 44 struct { … … 52 52 static Header *freep = NULL; /* start of free list */ 53 53 54 54 /* New - general-purpose storage allocator and deallocator */ 55 AL_FUNC(void , nds_mem_set_begin, (unsigned) ); 55 56 AL_FUNC(void *, nds_mem_new, ( unsigned )); 56 57 AL_FUNC(void , nds_mem_free, ( void * )); 57 58 -
trunk/src/nds/ndsmem.c
25 25 #endif 26 26 27 27 /* morecore: ask for more memory */ 28 #define NALLOC 1024 /* minimum #units to request */ 28 //#define NALLOC 1024 /* minimum #units to request */ 29 29 static Header *morecore(unsigned nu) 30 30 { 31 /* We shouldn't need this, remove later as the size of vram should be static */ 31 32 /* morecore: ask system for more memory */ 32 char *cp;//, *sbrk(int); 33 /* 34 char *cp, *sbrk(int); 33 35 Header *up; 34 36 if (nu < NALLOC) 35 37 nu = NALLOC; 36 38 cp = sbrk(nu * sizeof(Header)); 37 if (cp == (char *) -1) /* no space at all */ 39 */ 40 /* no space at all */ 41 /* 42 if (cp == (char *) -1) 38 43 return NULL; 39 44 up = (Header *) cp; 40 45 up->s.size = nu; 41 46 free((void *)(up+1)); 42 47 return freep; 48 */ 49 return 0; 43 50 } 44 51 52 void nds_mem_set_begin(unsigned address) 53 { 54 /* Set starting address of vram probably 0x6000000 or 0x6200000 */ 55 } 56 45 57 /* New - general-purpose storage allocator */ 46 58 void *nds_mem_new(unsigned nbytes) 47 59 { 60 /* this seriously needs to be modified to be specific to vram 61 * I just grabbed it from the C programming language as a starting point */ 48 62 Header *p, *prevp; 49 Header *moreroce(unsigned); 63 Header *morecore(unsigned); 50 64 unsigned nunits; 51 65 nunits = (nbytes+sizeof(Header)-1)/sizeof(Header) + 1; 52 66 if ((prevp = freep) == NULL) { /* no free list yet */ … … 72 86 } 73 87 void nds_mem_free(void *ap) 74 88 { 89 /* Same as above, needs to be fixed in regards to vram */ 75 90 Header *bp, *p; 76 91 bp = (Header *)ap - 1; /* point to block header */ 77 92 for (p = freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr)