Search
lxdream.org :: lxdream/test/sh4/testsh4.c
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/testsh4.c
changeset 357:3592a10b3242
prev233:f8333b94f503
next358:65043a8f5785
author nkeynes
date Tue Feb 13 08:34:27 2007 +0000 (14 years ago)
permissions -rw-r--r--
last change Add tests for FLOAT and FTRC
Comment out user-mode exception test (broken)
view annotate diff log raw
     1 #include <stdio.h>
     3 int total_tests = 0;
     4 int total_fails = 0;
     6 int test_print_result( char *testname, int failed, int total )
     7 {
     8     fprintf( stdout, "%s: %d/%d tests passed\n", testname, total-failed, total );
     9     total_tests += total;
    10     total_fails += failed;
    11     return failed;
    12 }
    14 void test_print_failure( char *testname, int number, char *message )
    15 {
    16     if( message == NULL ) {
    17 	fprintf( stderr, "%s: Test %d failed!\n", testname, number );
    18     } else {
    19 	fprintf( stderr, "%s: Test %d failed: %s\n", testname, number, message );
    20     }
    21 }
    23 extern unsigned int interrupt_pc;
    24 extern unsigned int interrupt_count;
    26 int assert_exception_caught( char *testname, int number, unsigned int expectedpc ) 
    27 {
    28     if( interrupt_count == 0 ) {
    29 	fprintf( stderr, "%s: Test %d failed: Expected exception not delivered\n",
    30 		 testname, number );
    31 	return 1;
    32     } else if( interrupt_count != 1 ) {
    33 	fprintf( stderr, "%s: Test %d failed: Expected exception delivered %d times!\n",
    34 		 testname, number, interrupt_count );
    35 	return 1;
    36     } else if( interrupt_pc != expectedpc ) {
    37 	fprintf( stderr, "%s: Test %d failed: Expected exception at PC %08X, but was %08X\n",
    38 		 testname, number, expectedpc, interrupt_pc );
    39 	return 1;
    40     } else {
    41 	return 0;
    42     }
    43 }
    45 int main()
    46 {
    47     fprintf( stdout, "Instruction tests...\n" );
    48     install_interrupt_handler();
    49     test_add();
    50     test_addc();
    51     test_addv();
    52     test_and();
    53     test_andi();
    54     test_bf(); 
    55     test_bt();
    56     test_cmp();
    57     test_float();
    58     test_ftrc();
    59     fprintf( stdout, "--> %d/%d instruction tests passed (%d%%)\n\n",
    60 	     total_tests-total_fails, total_tests, 
    61 	     ((total_tests-total_fails)*100)/total_tests );
    63     fprintf( stdout, "Exception tests...\n" );
    64     test_slot_illegal();
    65     test_undefined();
    66     remove_interrupt_handler();
    68     fprintf( stdout, "Total: %d/%d tests passed (%d%%)\n", total_tests-total_fails,
    69 	     total_tests, ((total_tests-total_fails)*100)/total_tests );
    70 }
.