Files
failnix/targets/wasm-tacle/sequential/susan/wccmalloc.c

51 lines
1.2 KiB
C
Executable File

#include "wccmalloc.h"
// This must be redefined for each new benchmark
#define HEAP_SIZE 30000
char susan_simulated_heap[ HEAP_SIZE ];
unsigned int susan_freeHeapPos;
void *susan_wccmalloc( unsigned int numberOfBytes )
{
// Get a 4-byte adress for alignment purposes
unsigned int offset = ( ( unsigned long )susan_simulated_heap +
susan_freeHeapPos ) % 4;
if ( offset )
susan_freeHeapPos += 4 - offset;
void *currentPos = ( void * )&susan_simulated_heap[ susan_freeHeapPos ];
susan_freeHeapPos += numberOfBytes;
return currentPos;
}
void susan_wccfreeall( void )
{
susan_freeHeapPos = 0;
}
void *susan_wccmemcpy( void *dstpp, const void *srcpp, unsigned int len )
{
unsigned long int dstp = ( long int ) dstpp;
unsigned long int srcp = ( long int ) srcpp;
_Pragma( "loopbound min 76 max 76" )
while ( len > 0 ) {
char __x = ( ( char * ) srcp )[ 0 ];
srcp += 1;
len -= 1;
( ( char * ) dstp )[ 0 ] = __x;
dstp += 1;
}
return dstpp;
}
void susan_wccmemset( void *p, int value, unsigned int num )
{
unsigned long i;
char *char_ptr = ( char * )p;
_Pragma( "loopbound min 7220 max 7220" )
for ( i = 0; i < num; ++i )
*char_ptr++ = ( unsigned char )value;
}