Annotation of cci/d/fpevent/fpm_test.lst, revision 1.1.1.1

1.1       root        1:    1  00000000                                  LL0:
                      2:    2  00000000                                         .data
                      3:    3  000001e0 *                                       .text
                      4:    4  00000000                                         .align  1
                      5:    5  00000000                                         .globl  _fpm_test
                      6:    6  00000000                                  _fpm_test:
                      7:    7  0000E430    0000                                 .word   L381
                      8:    8  0000E432                                   # 
                      9:    9  0000E432                                   # #include "evt_defs.h"
                     10:   10  0000E432                                   # 
                     11:   11  0000E432                                   # /*
                     12:   12  0000E432                                   #  ********************************************************************
                     13:   13  0000E432                                   #  *
                     14:   14  0000E432                                   #  *  MONITOR FOR THE FPP EMULATION TRAP INTERFACE TEST
                     15:   15  0000E432                                   #  *
                     16:   16  0000E432                                   #  ********************************************************************
                     17:   17  0000E432                                   # */
                     18:   18  0000E432                                   # fpm_test()
                     19:   19  0000E432                                   # {
                     20:   20  0000E432    13 00ab                              jbr     L383
                     21:   21  0000E435                                  L384:
                     22:   22  0000E435                                   #     event_msg = "FPP Emulation";
                     23:   23  0000E435                                         .data   1
                     24:   24  000001e0 *                                L385:
                     25:   25  000001e0 *  46505020456D756C6174696F6            .ascii  "FPP Emulation\0"
                     26:                   E00
                     27:   26  000001ee *                                       .text
                     28:   27  0000E435    0d 8f000001e0 effffffff0             movl    $L385,_event_msg
                     29:   28  0000E440                                   #     test_event = FPM_CODE;
                     30:   29  0000E440    0d 37 efffffffe9                     movl    $55,_test_event
                     31:   30  0000E447                                   #     disable_mask = 0;               /* don't disable any events   */
                     32:   31  0000E447    4b efffffffe3                        clrw    _disable_mask
                     33:   32  0000E44D                                   #     evt_disabled = FALSE;           /* expected event is enabled  */
                     34:   33  0000E44D    4d efffffffdd                        clrl    _evt_disabled
                     35:   34  0000E453                                   #     if( evt_inst )                  /* was the op-code specified? */
                     36:   35  0000E453    5d efffffffd7                        tstl    _evt_inst
                     37:   36  0000E459    31 62                                jeql    L386
                     38:   37  0000E45B                                   #     {
                     39:   38  0000E45B                                   #           inst_index = get_fpm_index( evt_inst );
                     40:   39  0000E45B    dd efffffffcf                        pushl   _evt_inst
                     41:   40  0000E461    fe 08 ef00000164                     callf   $8,_get_fpm_index
                     42:   41  0000E468    0d 50 efffffffc1                     movl    r0,_inst_index
                     43:   42  0000E46F                                   #           if( inst_index < 0 ) { 
                     44:   43  0000E46F    5d efffffffbb                        tstl    _inst_index
                     45:   44  0000E475    81 3d                                jgeq    L388
                     46:   45  0000E477                                   #                if( (prt_hdrs) && (cycle == 1) )   /* no reserved ops */
                     47:   46  0000E477    5d efffffffb3                        tstl    _prt_hdrs
                     48:   47  0000E47D    31 33                                jeql    L389
                     49:   48  0000E47F    1d efffffffab 01                     cmpl    _cycle,$1
                     50:   49  0000E486    21 2a                                jneq    L389
                     51:   50  0000E488                                   #                {
                     52:   51  0000E488                                   #                      writes(
                     53:   52  0000E488                                   #                  "There is no FLOATING POINT EMULATION with op-code" );
                     54:   53  0000E488                                         .data   1
                     55:   54  000001ee *                                L391:
                     56:   55  000001ee *  5468657265206973206E6F204            .ascii  "There is no FLOATING POINT EMULATION with op-code\0"
                     57:                   64C4F4154494E4720504F494E
                     58:                   5420454D554C4154494F4E207
                     59:                   7697468206F702D636F646500
                     60:   56  00000220 *                                       .text
                     61:   57  0000E488    dd 8f000001ee                        pushl   $L391
                     62:   58  0000E48E    fe 08 efffffff9b                     callf   $8,_writes
                     63:   59  0000E495                                   #                      writeh( evt_inst );    /* print the ersatz op-code */
                     64:   60  0000E495    dd efffffff95                        pushl   _evt_inst
                     65:   61  0000E49B    fe 08 efffffff8e                     callf   $8,_writeh
                     66:   62  0000E4A2                                   #                      writec('\n');
                     67:   63  0000E4A2    dd 0a                                pushl   $10
                     68:   64  0000E4A4    fe 08 efffffff85                     callf   $8,_writec
                     69:   65  0000E4AB                                   #                      error = TRUE;  /* needed for line feed control */
                     70:   66  0000E4AB    0d 01 efffffff7e                     movl    $1,_error
                     71:   67  0000E4B2                                   #                }
                     72:   68  0000E4B2                                   #           } else 
                     73:   69  0000E4B2                                  L389:
                     74:   70  0000E4B2    11 07                                jbr     L394
                     75:   71  0000E4B4                                  L388:
                     76:   72  0000E4B4                                   #                test_fpm_inst();     /* test the instruction */
                     77:   73  0000E4B4    fe 04 ef00000029                     callf   $4,_test_fpm_inst
                     78:   74  0000E4BB                                  L394:
                     79:   75  0000E4BB                                   #     } else                          /* test all applicable op-codes */
                     80:   76  0000E4BB    11 22                                jbr     L396
                     81:   77  0000E4BD                                  L386:
                     82:   78  0000E4BD                                   #           for(inst_index=0; inst_index < size_fpm_tbl; inst_index++)
                     83:   79  0000E4BD    4d efffffff6d                        clrl    _inst_index
                     84:   80  0000E4C3                                  L399:
                     85:   81  0000E4C3    1d efffffff67 efffffff62             cmpl    _inst_index,_size_fpm_tbl
                     86:   82  0000E4CE    81 0f                                jgeq    L398
                     87:   83  0000E4D0                                   #                      test_fpm_inst();
                     88:   84  0000E4D0    fe 04 ef0000000d                     callf   $4,_test_fpm_inst
                     89:   85  0000E4D7                                  L397:
                     90:   86  0000E4D7    6d efffffff53                        incl    _inst_index
                     91:   87  0000E4DD    11 e4                                jbr     L399
                     92:   88  0000E4DF                                  L398:
                     93:   89  0000E4DF                                  L396:
                     94:   90  0000E4DF                                   # }
                     95:   91  0000E4DF    40                                   ret#2
                     96:   92  0000E4E0                                         .set    L381,0x0
                     97:   93  0000E4E0                                  L383:
                     98:   94  0000E4E0    13 ff52                              jbr     L384
                     99:   95  0000E4E3                                         .data
                    100:   96  000001e0 *                                       .text
                    101:   97  0000E4E3    00                                   .align  1
                    102:   98  0000E4E4                                         .globl  _test_fpm_inst
                    103:   99  0000E4E4                                  _test_fpm_inst:
                    104:  100  0000E4E4    0000                                 .word   L400
                    105:  101  0000E4E6                                   #  
                    106:  102  0000E4E6                                   # 
                    107:  103  0000E4E6                                   # 
                    108:  104  0000E4E6                                   # /*
                    109:  105  0000E4E6                                   #  ***************************************************************************
                    110:  106  0000E4E6                                   #  *
                    111:  107  0000E4E6                                   #  *          Run the Reserved Operand Fault on one instruction
                    112:  108  0000E4E6                                   #  *
                    113:  109  0000E4E6                                   #  ***************************************************************************
                    114:  110  0000E4E6                                   # */
                    115:  111  0000E4E6                                   # test_fpm_inst()
                    116:  112  0000E4E6                                   # {
                    117:  113  0000E4E6    13 00df                              jbr     L402
                    118:  114  0000E4E9                                  L403:
                    119:  115  0000E4E9                                   #     valid_test = TRUE;              /* a test is being run */
                    120:  116  0000E4E9    0d 01 efffffff40                     movl    $1,_valid_test
                    121:  117  0000E4F0                                   #     op_code    =  fpm_tbl[ inst_index ].inst_code;
                    122:  118  0000E4F0    0d efffffff3a 50                     movl    _inst_index,r0
                    123:  119  0000E4F7    48 04 50 50                          shll    $4,r0,r0
                    124:  120  0000E4FB    0d e000000000 efffffff2a             movl    _fpm_tbl(r0),_op_code
                    125:  121  0000E506                                   #     op_name    =  fpm_tbl[ inst_index ].name;
                    126:  122  0000E506    0d efffffff24 50                     movl    _inst_index,r0
                    127:  123  0000E50D    48 04 50 50                          shll    $4,r0,r0
                    128:  124  0000E511    0d e000000004 efffffff14             movl    _fpm_tbl+4(r0),_op_name
                    129:  125  0000E51C                                   #     precision  =  fpm_tbl[ inst_index ].precision;
                    130:  126  0000E51C    0d efffffff0e 50                     movl    _inst_index,r0
                    131:  127  0000E523    48 04 50 50                          shll    $4,r0,r0
                    132:  128  0000E527    0d e00000000c effffffefe             movl    _fpm_tbl+12(r0),_precision
                    133:  129  0000E532                                   #     no_ops     =  fpm_tbl[ inst_index ].no_operands;
                    134:  130  0000E532    0d effffffef8 50                     movl    _inst_index,r0
                    135:  131  0000E539    48 04 50 50                          shll    $4,r0,r0
                    136:  132  0000E53D    0d e000000008 effffffee8             movl    _fpm_tbl+8(r0),_no_ops
                    137:  133  0000E548                                   #     data_ptr   =  fpm_data;
                    138:  134  0000E548    0d 8f00000000 effffffedd             movl    $_fpm_data,_data_ptr
                    139:  135  0000E553                                   #     max_index  =  fpm_data_cnt;
                    140:  136  0000E553    0d effffffed7 effffffed2             movl    _fpm_data_cnt,_max_index
                    141:  137  0000E55E                                   #     if( precision == SGL ) {
                    142:  138  0000E55E    1d effffffecc 01                     cmpl    _precision,$1
                    143:  139  0000E565    21 10                                jneq    L404
                    144:  140  0000E567                                   #           sgl_op = TRUE;
                    145:  141  0000E567    0d 01 effffffec2                     movl    $1,_sgl_op
                    146:  142  0000E56E                                   #           acc_ld_size = SGL;        /* use a sgl precision Acc. */
                    147:  143  0000E56E    0d 01 effffffebb                     movl    $1,_acc_ld_size
                    148:  144  0000E575                                   #     } else {
                    149:  145  0000E575    11 0d                                jbr     L405
                    150:  146  0000E577                                  L404:
                    151:  147  0000E577                                   #           sgl_op = FALSE;
                    152:  148  0000E577    4d effffffeb3                        clrl    _sgl_op
                    153:  149  0000E57D                                   #           acc_ld_size = DBL;        /* use a dbl precision Acc. */
                    154:  150  0000E57D    0d 02 effffffeac                     movl    $2,_acc_ld_size
                    155:  151  0000E584                                   #     } 
                    156:  152  0000E584                                  L405:
                    157:  153  0000E584                                   #     if( (prt_hdrs) && (cycle == 1) ) {
                    158:  154  0000E584    5d effffffea6                        tstl    _prt_hdrs
                    159:  155  0000E58A    31 34                                jeql    L406
                    160:  156  0000E58C    1d effffffe9e 01                     cmpl    _cycle,$1
                    161:  157  0000E593    21 2b                                jneq    L406
                    162:  158  0000E595                                   #           if( (!evt_inst) &&                /* print a line feed if   */
                    163:  159  0000E595                                   #               (op_code == LOGF_OP_CODE) )   /*   the 1st line is full */
                    164:  160  0000E595    5d effffffe95                        tstl    _evt_inst
                    165:  161  0000E59B    21 16                                jneq    L407
                    166:  162  0000E59D    1d effffffe8d 35                     cmpl    _op_code,$53
                    167:  163  0000E5A4    21 0d                                jneq    L407
                    168:  164  0000E5A6                                   #                writes("\n                       ");
                    169:  165  0000E5A6                                         .data   1
                    170:  166  00000220 *                                L408:
                    171:  167  00000220 *  0A20202020202020202020202            .ascii  "\12                       \0"
                    172:                   0202020202020202020202000
                    173:  168  00000239 *                                       .text
                    174:  169  0000E5A6    dd 8f00000220                        pushl   $L408
                    175:  170  0000E5AC    fe 08 effffffe7d                     callf   $8,_writes
                    176:  171  0000E5B3                                   #           writes( op_name );        /* print the instruction's name */
                    177:  172  0000E5B3                                  L407:
                    178:  173  0000E5B3    dd effffffe77                        pushl   _op_name
                    179:  174  0000E5B9    fe 08 effffffe70                     callf   $8,_writes
                    180:  175  0000E5C0                                   #     }
                    181:  176  0000E5C0                                   #     test_inst();
                    182:  177  0000E5C0                                  L406:
                    183:  178  0000E5C0    fe 04 effffffe69                     callf   $4,_test_inst
                    184:  179  0000E5C7                                   # }
                    185:  180  0000E5C7    40                                   ret#2
                    186:  181  0000E5C8                                         .set    L400,0x0
                    187:  182  0000E5C8                                  L402:
                    188:  183  0000E5C8    13 ff1e                              jbr     L403
                    189:  184  0000E5CB                                         .data
                    190:  185  000001e0 *                                       .text
                    191:  186  0000E5CB    00                                   .align  1
                    192:  187  0000E5CC                                         .globl  _get_fpm_index
                    193:  188  0000E5CC                                  _get_fpm_index:
                    194:  189  0000E5CC    0000                                 .word   L410
                    195:  190  0000E5CE                                   # 
                    196:  191  0000E5CE                                   # 
                    197:  192  0000E5CE                                   # 
                    198:  193  0000E5CE                                   # /*
                    199:  194  0000E5CE                                   #  ***************************************************************************
                    200:  195  0000E5CE                                   #  *
                    201:  196  0000E5CE                                   #  *          GET THE INSTRUCTION TABLE INDEX FOR AN OP-CODE
                    202:  197  0000E5CE                                   #  *
                    203:  198  0000E5CE                                   #  *  Given the op_code of an instruction, return the instruction's index in
                    204:  199  0000E5CE                                   #  *  the FPM instruction table. Return a negative number if the op-code isn't 
                    205:  200  0000E5CE                                   #  *  in the table.
                    206:  201  0000E5CE                                   #  *
                    207:  202  0000E5CE                                   #  **************************************************************************
                    208:  203  0000E5CE                                   # */
                    209:  204  0000E5CE                                   # get_fpm_index( op_code )
                    210:  205  0000E5CE                                   # {
                    211:  206  0000E5CE    11 38                                jbr     L412
                    212:  207  0000E5D0                                  L413:
                    213:  208  0000E5D0                                   # int x;
                    214:  209  0000E5D0                                   #     x = 0;
                    215:  210  0000E5D0    4d adc8                              clrl    -56(fp)
                    216:  211  0000E5D3                                   #     while( (fpm_tbl[x].inst_code != op_code) && (x < size_fpm_tbl) )
                    217:  212  0000E5D3                                  L414:
                    218:  213  0000E5D3    0d adc8 50                           movl    -56(fp),r0
                    219:  214  0000E5D7    48 04 50 50                          shll    $4,r0,r0
                    220:  215  0000E5DB    1d e000000000 ad04                   cmpl    _fpm_tbl(r0),4(fp)
                    221:  216  0000E5E3    31 0f                                jeql    L415
                    222:  217  0000E5E5    1d adc8 effffffe43                   cmpl    -56(fp),_size_fpm_tbl
                    223:  218  0000E5ED    81 05                                jgeq    L415
                    224:  219  0000E5EF                                   #          x++;
                    225:  220  0000E5EF    6d adc8                              incl    -56(fp)
                    226:  221  0000E5F2    11 df                                jbr     L414
                    227:  222  0000E5F4                                  L415:
                    228:  223  0000E5F4                                   #     if( x == size_fpm_tbl ) 
                    229:  224  0000E5F4    1d adc8 effffffe34                   cmpl    -56(fp),_size_fpm_tbl
                    230:  225  0000E5FC    21 04                                jneq    L416
                    231:  226  0000E5FE                                   #          x = -1;
                    232:  227  0000E5FE    ec 01 adc8                           mnegl   $1,-56(fp)
                    233:  228  0000E602                                   #     return( x );
                    234:  229  0000E602                                  L416:
                    235:  230  0000E602    0d adc8 50                           movl    -56(fp),r0
                    236:  231  0000E606    40                                   ret#1
                    237:  232  0000E607                                   # }
                    238:  233  0000E607    40                                   ret#1
                    239:  234  0000E608                                         .set    L410,0x0
                    240:  235  0000E608                                  L412:
                    241:  236  0000E608    3c 38 5d 5e                          subl3   $56,fp,sp
                    242:  237  0000E60C    11 c2                                jbr     L413
                    243:  238  0000E60E                                         .data
                    244:  239  000001e0 *                                 # 
                    245:  240  000001e0 *                                 # 
                    246:  240  000001e0 *                                 # 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.