7 void test_print_float_error( int expect, int actual )
9 fprintf( stderr, "Error: expected 0x%08x but was 0x%08x\n", expect, actual );
12 int test_print_result( char *testname, int failed, int total )
14 fprintf( stdout, "%s: %d/%d tests passed\n", testname, total-failed, total );
16 total_fails += failed;
20 void test_print_failure( char *testname, int number, char *message )
22 if( message == NULL ) {
23 fprintf( stderr, "%s: Test %d failed!\n", testname, number );
25 fprintf( stderr, "%s: Test %d failed: %s\n", testname, number, message );
29 extern unsigned int interrupt_pc;
30 extern unsigned int interrupt_count;
32 int assert_exception_caught( char *testname, int number, unsigned int expectedpc )
34 if( interrupt_count == 0 ) {
35 fprintf( stderr, "%s: Test %d failed: Expected exception not delivered\n",
38 } else if( interrupt_count != 1 ) {
39 fprintf( stderr, "%s: Test %d failed: Expected exception delivered %d times!\n",
40 testname, number, interrupt_count );
42 } else if( interrupt_pc != expectedpc ) {
43 fprintf( stderr, "%s: Test %d failed: Expected exception at PC %08X, but was %08X\n",
44 testname, number, expectedpc, interrupt_pc );
51 int assert_tlb_exception_caught( char *testname, int number, unsigned int expectedpc,
54 if( assert_exception_caught(testname, number, expectedpc) == 1 ) {
58 unsigned int pteh = long_read(0xFF000000);
59 if( (pteh & 0xFFFFFC00) != (vpn & 0xFFFFFC00) ) {
60 fprintf(stderr, "%s: Test %d failed: Expected PTEH.VPN = %08X, but was %08X\n",
61 testname, number, (vpn>>10), (pteh>>10) );
65 unsigned int tea = long_read(0xFF00000C);
67 fprintf(stderr, "%s: Test %d failed: Expected TEA = %08X, but was %08X\n",
68 testname, number, vpn, tea );
76 fprintf( stdout, "Instruction tests...\n" );
77 install_interrupt_handler();
105 fprintf( stdout, "--> %d/%d instruction tests passed (%d%%)\n\n",
106 total_tests-total_fails, total_tests,
107 ((total_tests-total_fails)*100)/total_tests );
109 fprintf( stdout, "Exception tests...\n" );
114 remove_interrupt_handler();
116 fprintf( stdout, "Total: %d/%d tests passed (%d%%)\n", total_tests-total_fails,
117 total_tests, ((total_tests-total_fails)*100)/total_tests );
.