X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Futil.c;h=2d98ee8a3265a37b0aec7447178f8df6e2b36fd8;hb=53c0ee3332822465be7dcf923ca3c6445076b555;hp=c734f85ebbe0a248bfe01bd71af26912eb671e3c;hpb=41765ea063cbab26ae05e7259ffc8a7c85db2f5d;p=gbajam22 diff --git a/src/util.c b/src/util.c index c734f85..2d98ee8 100644 --- a/src/util.c +++ b/src/util.c @@ -3,7 +3,13 @@ #include "util.h" #include "debug.h" +#ifdef BUILD_GBA extern char __iheap_start; +#else +#define IWRAM_POOL_SZ 32768 +#define __iheap_start iwram[0] +static char iwram[IWRAM_POOL_SZ]; +#endif static char *top = &__iheap_start; int iwram_brk(void *addr) @@ -11,6 +17,7 @@ int iwram_brk(void *addr) if((char*)addr < &__iheap_start) { addr = &__iheap_start; } + emuprint("iwram brk: %p (sp: %p)", addr, get_sp()); if(addr > get_sp()) { /*return -1;*/ panic(get_pc(), "iwram_brk (%p) >= sp", addr); @@ -76,3 +83,31 @@ char *strdup_nf_impl(const char *s, const char *file, int line) memcpy(res, s, len + 1); return res; } + +#ifndef BUILD_GBA +/* utility functions which are implemented in assembly on GBA builds */ + +void fillblock_16byte(void *dest, uint32_t val, int count) +{ + int i; + uint32_t *p = dest; + + for(i=0; i