1.1 --- a/test/testaica.c Wed Aug 13 10:32:00 2008 +0000
1.2 +++ b/test/testaica.c Sun Oct 19 05:09:31 2008 +0000
1.13 -#define AICA_RAM_BASE 0x00800000
1.14 +#define AICA_RAM_BASE 0xA0800000
1.16 #define AICA_SYSCALL (AICA_RAM_BASE+0x30)
1.17 #define AICA_SYSCALL_ARG1 (AICA_SYSCALL+4)
1.25 + printf( "Got syscall: %d\n", syscall );
1.30 data = (char *)(AICA_RAM_BASE + (arg2 & 0x001FFFFF));
1.32 - return read( fd, data, len );
1.33 + tmp = malloc(len);
1.34 + rv = read( fd, data, len );
1.36 + memcpy_to_aica( data, tmp, rv );
1.41 data = (char *)(AICA_RAM_BASE + (arg2 & 0x001FFFFF));
1.43 - return write( fd, data, len );
1.51 + tmp = malloc(len);
1.52 + memcpy(tmp, data, len);
1.53 + rv = write( fd, tmp, len );
1.62 char buf[65536] __attribute__((aligned(32)));
1.63 uint32_t aica_addr = AICA_RAM_BASE;
1.68 /* Load ARM program from stdin and copy to ARM memory */
1.69 while( (len = read(0, buf, sizeof(buf))) > 0 ) {
1.70 - aica_dma_write( aica_addr, buf, len );
1.71 + if(memcpy_to_aica( aica_addr, buf, len ) != 0 ) {
1.72 + printf( "Failed to load program!\n" );
1.78 + printf( "Program loaded (%d bytes)\n", totallen);
1.80 /* Main loop waiting for IO commands */
1.85 int syscall = long_read(AICA_SYSCALL);
1.87 if( syscall != -1 ) {
1.88 - uint32_t result = do_syscall( syscall, long_read(AICA_SYSCALL_ARG1),
1.89 - long_read(AICA_SYSCALL_ARG2), long_read(AICA_SYSCALL_ARG3) );
1.90 - long_write( AICA_SYSCALL_RETURN, result );
1.91 - long_write( AICA_SYSCALL, -1 );
1.92 + if( syscall == -2 ) {
1.93 + fprintf( stderr, "ARM aborted with general exception\n" );
1.95 + } else if( syscall == SYS_EXIT ) {
1.96 + printf( "Exiting at ARM request\n" );
1.98 + return long_read(AICA_SYSCALL_ARG1);
1.100 + uint32_t result = do_syscall( syscall, long_read(AICA_SYSCALL_ARG1),
1.101 + long_read(AICA_SYSCALL_ARG2), long_read(AICA_SYSCALL_ARG3) );
1.104 + long_write( AICA_SYSCALL_RETURN, result );
1.105 + long_write( AICA_SYSCALL, -1 );
1.111 \ No newline at end of file