Revision 142

Date:
2007/02/27 23:03:43
Author:
juvinious
Revision Log:
Some more changes to vram memory management
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)