1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
/*
* CPU integer arithmetic tests.
*
* This file is distributed under the GNU General Public License, version 2
* or at your option any later version. Read the file gpl.txt for details.
*/
#include <tos.h>
extern char tst_abcd_1(void);
extern char tst_abcd_2(void);
extern char tst_abcd_3(void);
extern char tst_abcd_4(void);
extern char tst_add_1(void);
extern char tst_add_2(void);
extern char tst_add_3(void);
extern char tst_add_4(void);
extern char tst_add_5(void);
extern char tst_add_6(void);
extern char tst_add_7(void);
extern char tst_addi_1(void);
extern char tst_addi_2(void);
extern char tst_addi_3(void);
extern char tst_addi_4(void);
extern char tst_addi_5(void);
extern char tst_addi_6(void);
extern char tst_addq_1(void);
extern char tst_addq_2(void);
extern char tst_addq_3(void);
extern char tst_addx_1(void);
extern char tst_addx_2(void);
extern char tst_shift_1(void);
extern char tst_shift_2(void);
extern char tst_shift_3(void);
extern char tst_shift_4(void);
extern char tst_shift_5(void);
extern char tst_shift_6(void);
extern char tst_shift_7(void);
extern char tst_shift_8(void);
struct test
{
char *name;
char (*testfunc)(void);
};
struct test tests[] =
{
{ "abcd 1", tst_abcd_1 },
{ "abcd 2", tst_abcd_2 },
{ "abcd 3", tst_abcd_3 },
{ "abcd 4", tst_abcd_4 },
{ "add 1", tst_add_1 },
{ "add 2", tst_add_2 },
{ "add 3", tst_add_3 },
{ "add 4", tst_add_4 },
{ "add 5", tst_add_5 },
{ "add 6", tst_add_6 },
{ "add 7", tst_add_7 },
{ "addi 1", tst_addi_1 },
{ "addi 2", tst_addi_2 },
{ "addi 3", tst_addi_3 },
{ "addi 4", tst_addi_4 },
{ "addi 5", tst_addi_5 },
{ "addi 6", tst_addi_6 },
{ "addq 1", tst_addq_1 },
{ "addq 2", tst_addq_2 },
{ "addq 3", tst_addq_3 },
{ "addx 1", tst_addx_1 },
{ "addx 2", tst_addx_2 },
{ "shift 1", tst_shift_1 },
{ "shift 2", tst_shift_2 },
{ "shift 3", tst_shift_3 },
{ "shift 4", tst_shift_4 },
{ "shift 5", tst_shift_5 },
{ "shift 6", tst_shift_6 },
{ "shift 7", tst_shift_7 },
{ "shift 8", tst_shift_8 },
{ 0L, 0L }
};
int main()
{
int failures = 0;
int idx;
for (idx = 0; tests[idx].name != 0L; idx++)
{
Cconws("Test '");
Cconws(tests[idx].name);
Cconws("'\t: ");
if (tests[idx].testfunc() != 0)
{
Cconws("FAILED\n");
failures++;
}
else
{
Cconws("OK\n");
}
}
// Crawcin();
return !(failures == 0);
}
|