File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / macro4 / fpp_event.lst
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:30:56 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  0000027c *                                	.text
   4  00000000                                  	.align	1
   5  00000000                                  	.globl	_XTrap
   6  00000000                                  _XTrap:
   7  0000C438    1f00                          	.word	L215
   8  0000C43A                                   # #include "fpp_defs.h"
   9  0000C43A                                   # 
  10  0000C43A                                   # /*************************************************************************
  11  0000C43A                                   # *
  12  0000C43A                                   # *	     FLOATING POINT PROCESSOR EXCEPTION HANDLER
  13  0000C43A                                   # *
  14  0000C43A                                   # *  This routine will be called after any trap or exception. It will 
  15  0000C43A                                   # *  compare the actual event type to any expected event type ( in 
  16  0000C43A                                   # *  _EXP_EVENT ). If no event was expected _EXP_EVENT will be = 0.
  17  0000C43A                                   # *
  18  0000C43A                                   # *  If a previous error has set the FORCE_LOOP flag, then the test will exit
  19  0000C43A                                   # *  through the loop address pointer without any event type checking.
  20  0000C43A                                   # *  current subtest through _EVENT_RETURN. 
  21  0000C43A                                   # *
  22  0000C43A                                   # *  If the event was NOT it expected:
  23  0000C43A                                   # *     if _PRT_ERROR is set, an error message will be printed.
  24  0000C43A                                   # *     if _HALT_FLG  is set, the program will halt.
  25  0000C43A                                   # *     if _UNEXP_EVENT_RET is non-zero, it will contain the return address, 
  26  0000C43A                                   # *     or the program will return to the monitor via RETURN.
  27  0000C43A                                   # *
  28  0000C43A                                   # *  The error message will be of the form:
  29  0000C43A                                   # *     ** cycle: xx. test: xx. unexpected event type: xx
  30  0000C43A                                   # *     ** Par0 :  xxxxxxxx
  31  0000C43A                                   # *     ** Par1 :  xxxxxxxx
  32  0000C43A                                   # *     ** PC   :  xxxxxxxx
  33  0000C43A                                   # *     ** PSL  :  xxxxxxxx
  34  0000C43A                                   # *
  35  0000C43A                                   # *
  36  0000C43A                                   # *  30-Apr-85  combined 'fpp_event.s' and 'trap.c' into 'fpp_event.c'.
  37  0000C43A                                   # *
  38  0000C43A                                   # *************************************************************************/
  39  0000C43A                                   # 
  40  0000C43A                                   # XTrap( code )
  41  0000C43A                                   # long code;				/* event type code */
  42  0000C43A                                   # {
  43  0000C43A    13 026d                       	jbr 	L217
  44  0000C43D                                  L218:
  45  0000C43D                                   # register long r12, r11, r10, r9, r8;
  46  0000C43D                                   # long tpc, tpsl;
  47  0000C43D                                   # 	if( force_loop )		/* check for continual looping  */
  48  0000C43D    5d effffffff5                 	tstl	_force_loop
  49  0000C443    31 06                         	jeql	L219
  50  0000C445                                   # 	      asm("jmp *_event_return");; 
  51  0000C445    71 ffffffffed                 jmp *_event_return
  52  0000C44B                                  L219:
  53  0000C44B                                   # 	asm("movl 8(fp),r12");		/* get par 0 */
  54  0000C44B    0d ad08 5c                    movl 8(fp),r12
  55  0000C44F                                   # 	asm("movl 12(fp),r11");		/* get par 1 */
  56  0000C44F    0d ad0c 5b                    movl 12(fp),r11
  57  0000C453                                   # 	asm("movl 16(fp),r10");		/* get par 2 */
  58  0000C453    0d ad10 5a                    movl 16(fp),r10
  59  0000C457                                   # 	asm("movl 20(fp),r9");		/* get par 3 */
  60  0000C457    0d ad14 59                    movl 20(fp),r9
  61  0000C45B                                   # 	asm("movl 24(fp),r8");		/* get par 4 */
  62  0000C45B    0d ad18 58                    movl 24(fp),r8
  63  0000C45F                                   # 	if( code == ARITH_CODE ) {
  64  0000C45F    1d ad04 34                    	cmpl	4(fp),$52
  65  0000C463    21 10                         	jneq	L220
  66  0000C465                                   # 	      event_code = r12;		/* set the arith fault type seen */
  67  0000C465    0d 5c efffffffcc              	movl	r12,_event_code
  68  0000C46C                                   # 	      event_psl = r10;		/* take the PSL off the stack */
  69  0000C46C    0d 5a efffffffc5              	movl	r10,_event_psl
  70  0000C473                                   # 	} else
  71  0000C473    11 07                         	jbr 	L221
  72  0000C475                                  L220:
  73  0000C475                                   # 	      event_psl = r11;;		/* take the PSL off the stack */
  74  0000C475    0d 5b efffffffbc              	movl	r11,_event_psl
  75  0000C47C                                  L221:
  76  0000C47C                                   # 	if( code == exp_event )	 {	/* was the event expected?      */
  77  0000C47C    1d ad04 efffffffb4            	cmpl	4(fp),_exp_event
  78  0000C484    21 18                         	jneq	L222
  79  0000C486                                   # 	      if( (exp_event != ARITH_CODE) || (exp_code == r12) )
  80  0000C486    1d efffffffac 34              	cmpl	_exp_event,$52
  81  0000C48D    21 09                         	jneq	L9999
  82  0000C48F    1d efffffffa3 5c              	cmpl	_exp_code,r12
  83  0000C496    21 06                         	jneq	L223
  84  0000C498                                  L9999:
  85  0000C498                                   # 	            asm("jmp *_event_return");;	/* exit -the evt was expected */
  86  0000C498    71 ffffffff9a                 jmp *_event_return
  87  0000C49E                                  L223:
  88  0000C49E                                   # 	}
  89  0000C49E                                   # /*
  90  0000C49E                                   #  *  If we get here then the event was not expected
  91  0000C49E                                   # */
  92  0000C49E                                   # 	errcnt++;			/* bump the error count      */
  93  0000C49E                                  L222:
  94  0000C49E    6d efffffff94                 	incl	_errcnt
  95  0000C4A4                                   # 	if( prt_error )	{
  96  0000C4A4    5d efffffff8e                 	tstl	_prt_error
  97  0000C4AA    21 03 13 01b1                 	jeql	L224
  98  0000C4AF                                   # 	      if( !error ) {
  99  0000C4AF    5d efffffff83                 	tstl	_error
 100  0000C4B5    21 10                         	jneq	L225
 101  0000C4B7                                   # 		    error = TRUE;	/* set current-error flag   */
 102  0000C4B7    0d 01 efffffff7a              	movl	$1,_error
 103  0000C4BE                                   # 		    writec('\n');
 104  0000C4BE    dd 0a                         	pushl	$10
 105  0000C4C0    fe 08 efffffff71              	callf	$8,_writec
 106  0000C4C7                                   # 	      }
 107  0000C4C7                                   # 	      writes("\n** cycle: ");
 108  0000C4C7                                  L225:
 109  0000C4C7                                  	.data	1
 110  0000027c *                                L228:
 111  0000027c *  0A2A2A206379636C653A2000      	.ascii	"\12** cycle: \0"
 112  00000288 *                                	.text
 113  0000C4C7    dd 8f0000027c                 	pushl	$L228
 114  0000C4CD    fe 08 efffffff64              	callf	$8,_writes
 115  0000C4D4                                   # 	      writed( cycle );
 116  0000C4D4    dd efffffff5e                 	pushl	_cycle
 117  0000C4DA    fe 08 efffffff57              	callf	$8,_writed
 118  0000C4E1                                   # 	      writes(". test: ");
 119  0000C4E1                                  	.data	1
 120  00000288 *                                L230:
 121  00000288 *  2E20746573743A2000            	.ascii	". test: \0"
 122  00000291 *                                	.text
 123  0000C4E1    dd 8f00000288                 	pushl	$L230
 124  0000C4E7    fe 08 efffffff4a              	callf	$8,_writes
 125  0000C4EE                                   # 	      writeh( test_no );
 126  0000C4EE    dd efffffff44                 	pushl	_test_no
 127  0000C4F4    fe 08 efffffff3d              	callf	$8,_writeh
 128  0000C4FB                                   # 	      writes(". unexpected event -type: ");
 129  0000C4FB                                  	.data	1
 130  00000291 *                                L232:
 131  00000291 *  2E20756E65787065637465642     	.ascii	". unexpected event -type: \0"
                  06576656E74202D747970653A
                  2000
 132  000002ac *                                	.text
 133  0000C4FB    dd 8f00000291                 	pushl	$L232
 134  0000C501    fe 08 efffffff30              	callf	$8,_writes
 135  0000C508                                   # 	      writeh( code );
 136  0000C508    dd ad04                       	pushl	4(fp)
 137  0000C50B    fe 08 efffffff26              	callf	$8,_writeh
 138  0000C512                                   # 	      writec('\n');
 139  0000C512    dd 0a                         	pushl	$10
 140  0000C514    fe 08 efffffff1d              	callf	$8,_writec
 141  0000C51B                                   # 	      if( code==0x37 ) { 	/* FPP Emulation trap */
 142  0000C51B    1d ad04 37                    	cmpl	4(fp),$55
 143  0000C51F    21 68                         	jneq	L233
 144  0000C521                                   # 		     writes("** Par 0 :  "); write32h(r12); writec('\n');
 145  0000C521                                  	.data	1
 146  000002ac *                                L234:
 147  000002ac *  2A2A205061722030203A20200     	.ascii	"** Par 0 :  \0"
                  0
 148  000002b9 *                                	.text
 149  0000C521    dd 8f000002ac                 	pushl	$L234
 150  0000C527    fe 08 efffffff0a              	callf	$8,_writes
 151  0000C52E    dd 5c                         	pushl	r12
 152  0000C530    fe 08 efffffff01              	callf	$8,_write32h
 153  0000C537    dd 0a                         	pushl	$10
 154  0000C539    fe 08 effffffef8              	callf	$8,_writec
 155  0000C540                                   # 		     writes("** Par 1 :  "); write32h(r11); writec('\n');
 156  0000C540                                  	.data	1
 157  000002b9 *                                L236:
 158  000002b9 *  2A2A205061722031203A20200     	.ascii	"** Par 1 :  \0"
                  0
 159  000002c6 *                                	.text
 160  0000C540    dd 8f000002b9                 	pushl	$L236
 161  0000C546    fe 08 effffffeeb              	callf	$8,_writes
 162  0000C54D    dd 5b                         	pushl	r11
 163  0000C54F    fe 08 effffffee2              	callf	$8,_write32h
 164  0000C556    dd 0a                         	pushl	$10
 165  0000C558    fe 08 effffffed9              	callf	$8,_writec
 166  0000C55F                                   # 		     writes("** Par 2 :  "); write32h(r10); writec('\n');
 167  0000C55F                                  	.data	1
 168  000002c6 *                                L237:
 169  000002c6 *  2A2A205061722032203A20200     	.ascii	"** Par 2 :  \0"
                  0
 170  000002d3 *                                	.text
 171  0000C55F    dd 8f000002c6                 	pushl	$L237
 172  0000C565    fe 08 effffffecc              	callf	$8,_writes
 173  0000C56C    dd 5a                         	pushl	r10
 174  0000C56E    fe 08 effffffec3              	callf	$8,_write32h
 175  0000C575    dd 0a                         	pushl	$10
 176  0000C577    fe 08 effffffeba              	callf	$8,_writec
 177  0000C57E                                   # 		     tpc = r9;
 178  0000C57E    0d 59 adc8                    	movl	r9,-56(fp)
 179  0000C582                                   # 		     tpsl = r8; 
 180  0000C582    0d 58 adc4                    	movl	r8,-60(fp)
 181  0000C586                                   # 	      } else
 182  0000C586    13 0097                       	jbr 	L238
 183  0000C589                                  L233:
 184  0000C589                                   # 	      if( (code==0x20) || 	/* bus error */
 185  0000C589                                   # 		  (code==0x2f) || 	/* access control violation */
 186  0000C589                                   # 		  (code==0x30) ) {	/* page fault */
 187  0000C589    1d ad04 20                    	cmpl	4(fp),$32
 188  0000C58D    31 0c                         	jeql	L9998
 189  0000C58F    1d ad04 2f                    	cmpl	4(fp),$47
 190  0000C593    31 06                         	jeql	L9998
 191  0000C595    1d ad04 30                    	cmpl	4(fp),$48
 192  0000C599    21 48                         	jneq	L239
 193  0000C59B                                  L9998:
 194  0000C59B                                   # 		     writes("** Par 0 :  "); write32h(r12); writec('\n');
 195  0000C59B                                  	.data	1
 196  000002d3 *                                L240:
 197  000002d3 *  2A2A205061722030203A20200     	.ascii	"** Par 0 :  \0"
                  0
 198  000002e0 *                                	.text
 199  0000C59B    dd 8f000002d3                 	pushl	$L240
 200  0000C5A1    fe 08 effffffe90              	callf	$8,_writes
 201  0000C5A8    dd 5c                         	pushl	r12
 202  0000C5AA    fe 08 effffffe87              	callf	$8,_write32h
 203  0000C5B1    dd 0a                         	pushl	$10
 204  0000C5B3    fe 08 effffffe7e              	callf	$8,_writec
 205  0000C5BA                                   # 		     writes("** Par 1 :  "); write32h(r11); writec('\n');
 206  0000C5BA                                  	.data	1
 207  000002e0 *                                L241:
 208  000002e0 *  2A2A205061722031203A20200     	.ascii	"** Par 1 :  \0"
                  0
 209  000002ed *                                	.text
 210  0000C5BA    dd 8f000002e0                 	pushl	$L241
 211  0000C5C0    fe 08 effffffe71              	callf	$8,_writes
 212  0000C5C7    dd 5b                         	pushl	r11
 213  0000C5C9    fe 08 effffffe68              	callf	$8,_write32h
 214  0000C5D0    dd 0a                         	pushl	$10
 215  0000C5D2    fe 08 effffffe5f              	callf	$8,_writec
 216  0000C5D9                                   # 		     tpc = r10;
 217  0000C5D9    0d 5a adc8                    	movl	r10,-56(fp)
 218  0000C5DD                                   # 		     tpsl = r9; 
 219  0000C5DD    0d 59 adc4                    	movl	r9,-60(fp)
 220  0000C5E1                                   # 	      } else 
 221  0000C5E1    11 3d                         	jbr 	L242
 222  0000C5E3                                  L239:
 223  0000C5E3                                   # 	      if( (code==0x34) || 	/* arithmetic acception */
 224  0000C5E3                                   # 		  (code==0x2b) ) {	/* Kcall */
 225  0000C5E3    1d ad04 34                    	cmpl	4(fp),$52
 226  0000C5E7    31 06                         	jeql	L9997
 227  0000C5E9    1d ad04 2b                    	cmpl	4(fp),$43
 228  0000C5ED    21 29                         	jneq	L243
 229  0000C5EF                                  L9997:
 230  0000C5EF                                   # 		     writes("** Par.  :  "); 
 231  0000C5EF                                  	.data	1
 232  000002ed *                                L244:
 233  000002ed *  2A2A205061722E20203A20200     	.ascii	"** Par.  :  \0"
                  0
 234  000002fa *                                	.text
 235  0000C5EF    dd 8f000002ed                 	pushl	$L244
 236  0000C5F5    fe 08 effffffe3c              	callf	$8,_writes
 237  0000C5FC                                   # 		     writeh(r12); writec('\n');
 238  0000C5FC    dd 5c                         	pushl	r12
 239  0000C5FE    fe 08 effffffe33              	callf	$8,_writeh
 240  0000C605    dd 0a                         	pushl	$10
 241  0000C607    fe 08 effffffe2a              	callf	$8,_writec
 242  0000C60E                                   # 		     tpc = r11;
 243  0000C60E    0d 5b adc8                    	movl	r11,-56(fp)
 244  0000C612                                   # 		     tpsl = r10;
 245  0000C612    0d 5a adc4                    	movl	r10,-60(fp)
 246  0000C616                                   # 	      } else {
 247  0000C616    11 08                         	jbr 	L245
 248  0000C618                                  L243:
 249  0000C618                                   # 		     tpc = r12;
 250  0000C618    0d 5c adc8                    	movl	r12,-56(fp)
 251  0000C61C                                   # 		     tpsl = r11; 
 252  0000C61C    0d 5b adc4                    	movl	r11,-60(fp)
 253  0000C620                                   # 	      }
 254  0000C620                                  L245:
 255  0000C620                                  L242:
 256  0000C620                                  L238:
 257  0000C620                                   # 	      writes("** PC    :  "); write32h(tpc); writec('\n');
 258  0000C620                                  	.data	1
 259  000002fa *                                L246:
 260  000002fa *  2A2A205043202020203A20200     	.ascii	"** PC    :  \0"
                  0
 261  00000307 *                                	.text
 262  0000C620    dd 8f000002fa                 	pushl	$L246
 263  0000C626    fe 08 effffffe0b              	callf	$8,_writes
 264  0000C62D    dd adc8                       	pushl	-56(fp)
 265  0000C630    fe 08 effffffe01              	callf	$8,_write32h
 266  0000C637    dd 0a                         	pushl	$10
 267  0000C639    fe 08 effffffdf8              	callf	$8,_writec
 268  0000C640                                   # 	      writes("** PSL   :  "); write32h(tpsl); writec('\n');
 269  0000C640                                  	.data	1
 270  00000307 *                                L247:
 271  00000307 *  2A2A2050534C2020203A20200     	.ascii	"** PSL   :  \0"
                  0
 272  00000314 *                                	.text
 273  0000C640    dd 8f00000307                 	pushl	$L247
 274  0000C646    fe 08 effffffdeb              	callf	$8,_writes
 275  0000C64D    dd adc4                       	pushl	-60(fp)
 276  0000C650    fe 08 effffffde1              	callf	$8,_write32h
 277  0000C657    dd 0a                         	pushl	$10
 278  0000C659    fe 08 effffffdd8              	callf	$8,_writec
 279  0000C660                                   # 	}
 280  0000C660                                   # 	if( halt_flg )	{		/* halt on the error? */
 281  0000C660                                  L224:
 282  0000C660    5d effffffdd2                 	tstl	_halt_flg
 283  0000C666    31 2b                         	jeql	L248
 284  0000C668                                   # 	      asm("movl	_test_no,r0");		/* r0 = test number   */
 285  0000C668    0d effffffdca 50              movl	_test_no,r0
 286  0000C66F                                   # 	      asm("clrl	r1");			/* r1 = 0 (subtest #) */
 287  0000C66F    4d 51                         clrl	r1
 288  0000C671                                   # 	      asm("movl	_event_type,r2");	/* r2 = event code    */
 289  0000C671    0d effffffdc1 52              movl	_event_type,r2
 290  0000C678                                   # 	      asm("movl	_cycle,r3");		/* r3 = cycle count   */
 291  0000C678    0d effffffdba 53              movl	_cycle,r3
 292  0000C67F                                   # 	      asm("movl r12,r4");		/* r4 = parameter 1   */
 293  0000C67F    0d 5c 54                      movl r12,r4
 294  0000C682                                   # 	      asm("movl r11,r5");		/* r5 = parameter 2   */
 295  0000C682    0d 5b 55                      movl r11,r5
 296  0000C685                                   # 	      asm("movl r10,r6");		/* r6 = parameter 3   */
 297  0000C685    0d 5a 56                      movl r10,r6
 298  0000C688                                   # 	      asm("movl r9,r7");		/* r7 = parameter 4   */
 299  0000C688    0d 59 57                      movl r9,r7
 300  0000C68B                                   # 	      asm("movl _index,r8");		/* r8 = data index    */
 301  0000C68B    0d effffffda7 58              movl _index,r8
 302  0000C692                                   # 	      asm("halt");			/* halt               */
 303  0000C692    00                            halt
 304  0000C693                                   # 	}
 305  0000C693                                   # 	if( unexp_event_ret )
 306  0000C693                                  L248:
 307  0000C693    5d effffffd9f                 	tstl	_unexp_event_ret
 308  0000C699    31 08                         	jeql	L249
 309  0000C69B                                   # 	      asm("jmp *_unexp_event_ret");	/* return to the test */
 310  0000C69B    71 fffffffd97                 jmp *_unexp_event_ret
 311  0000C6A1                                   # 	else
 312  0000C6A1    11 06                         	jbr 	L250
 313  0000C6A3                                  L249:
 314  0000C6A3                                   # 	      asm("jmp *return");
 315  0000C6A3    71 fffffffd8f                 jmp *return
 316  0000C6A9                                  L250:
 317  0000C6A9                                   # }
 318  0000C6A9    40                            	ret#2
 319  0000C6AA                                  	.set	L215,0x1F00
 320  0000C6AA                                  L217:
 321  0000C6AA    3c 3c 5d 5e                   	subl3	$60,fp,sp
 322  0000C6AE    13 fd8c                       	jbr 	L218
 323  0000C6B1                                  	.data
 323  00018AE9                                  	.data

unix.superglobalmegacorp.com

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