Add wasm tacle-bench targets
This commit is contained in:
@ -0,0 +1,99 @@
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned int uint;
|
||||
typedef void ( *pfunc )( void );
|
||||
|
||||
int main( int argc, char *argv[ ] );
|
||||
extern byte __ASYST_DATA_LOAD[ ];
|
||||
extern byte __ASYST_DATA_START[ ];
|
||||
extern byte __ASYST_DATA_END[ ];
|
||||
extern byte __ASYST_BSS_START[ ];
|
||||
extern byte __ASYST_BSS_END[ ];
|
||||
extern pfunc __ASYST_CTOR_START[ ];
|
||||
extern pfunc __ASYST_CTOR_END[ ];
|
||||
extern pfunc __ASYST_DTOR_START[ ];
|
||||
extern pfunc __ASYST_DTOR_END[ ];
|
||||
extern byte __ASYST_HEAP_START[ ];
|
||||
|
||||
#define __ASYST_IS_ALIGNED(P) ((((uint)(P)) & (~(sizeof(uint) -1))) == ((uint)(P)))
|
||||
|
||||
void __asyst_memset_byte( byte *pbyDest, byte byValue, uint uiSize )
|
||||
{
|
||||
byte *pbyDestLast = pbyDest + uiSize;
|
||||
for ( ; pbyDest != pbyDestLast; pbyDest++ )
|
||||
pbyDest[ 0 ] = byValue;
|
||||
}
|
||||
|
||||
void __asyst_memset_uint( uint *puiDest, uint uiValue, uint uiSize )
|
||||
{
|
||||
uint *puiDestLast = puiDest + uiSize;
|
||||
for ( ; puiDest != puiDestLast; puiDest++ )
|
||||
puiDest[ 0 ] = uiValue;
|
||||
}
|
||||
|
||||
void __asyst_memset( byte *pbyDest, byte byValue, uint uiSize )
|
||||
{
|
||||
if ( __ASYST_IS_ALIGNED( pbyDest ) &&
|
||||
__ASYST_IS_ALIGNED( uiSize ) ) {
|
||||
uint uiValue = 0;
|
||||
__asyst_memset_byte( ( byte * )&uiValue, byValue, sizeof( uint ) );
|
||||
return __asyst_memset_uint( ( uint * )pbyDest, uiValue,
|
||||
uiSize / sizeof( uint ) );
|
||||
} else
|
||||
return __asyst_memset_byte( pbyDest, byValue, uiSize );
|
||||
|
||||
}
|
||||
|
||||
void *__asyst_memcpy_uint( uint *puiDest, const uint *puiSrc, uint uiSize )
|
||||
{
|
||||
uint *puiDestLast = puiDest + uiSize;
|
||||
for ( ; puiDest != puiDestLast; puiSrc++, puiDest++ )
|
||||
puiDest[ 0 ] = puiSrc[ 0 ];
|
||||
return puiDestLast;
|
||||
}
|
||||
|
||||
void *__asyst_memcpy_byte( byte *pbyDest, const byte *pbySrc, uint uiSize )
|
||||
{
|
||||
byte *pbyDestLast = pbyDest + uiSize;
|
||||
for ( ; pbyDest != pbyDestLast; pbySrc++, pbyDest++ )
|
||||
pbyDest[ 0 ] = pbySrc[ 0 ];
|
||||
return pbyDestLast;
|
||||
}
|
||||
|
||||
void *__asyst_memcpy( byte *pbyDest, const byte *pbySrc, uint uiSize )
|
||||
{
|
||||
if ( __ASYST_IS_ALIGNED( pbyDest ) &&
|
||||
__ASYST_IS_ALIGNED( pbySrc ) &&
|
||||
__ASYST_IS_ALIGNED( uiSize ) )
|
||||
return __asyst_memcpy_uint( ( uint * )pbyDest, ( uint * )pbySrc,
|
||||
uiSize / sizeof( uint ) );
|
||||
else
|
||||
return __asyst_memcpy_byte( pbyDest, pbySrc, uiSize );
|
||||
}
|
||||
|
||||
void __asyst_main()
|
||||
{
|
||||
pfunc *pfTable;
|
||||
// copy data
|
||||
if ( __ASYST_DATA_START != __ASYST_DATA_LOAD )
|
||||
__asyst_memcpy( __ASYST_DATA_START, __ASYST_DATA_LOAD,
|
||||
__ASYST_DATA_END - __ASYST_DATA_START );
|
||||
// zero bss
|
||||
__asyst_memset( __ASYST_BSS_START, 0, __ASYST_BSS_END - __ASYST_BSS_START );
|
||||
|
||||
/* Not used in C project
|
||||
// call constructors
|
||||
for(pfTable=__ASYST_CTOR_END-1; pfTable!=__ASYST_CTOR_START; pfTable--)
|
||||
pfTable[ 0 ]();
|
||||
*/
|
||||
|
||||
// main
|
||||
main( 0, 0 );
|
||||
|
||||
/* Not used in C project
|
||||
// call destructors
|
||||
//for(pfTable=__ASYST_DTOR_START; pfTable!=__ASYST_DTOR_END; pfTable++)
|
||||
//pfTable[ 0 ]();
|
||||
*/
|
||||
|
||||
while ( 1 );
|
||||
}
|
||||
Reference in New Issue
Block a user