File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / fpevent / fpm_test.lst
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:30:17 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v121, HEAD
Power 6/32 Unix version 1.21

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

unix.superglobalmegacorp.com

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