test3 - cpl hang in results save
							parent
							
								
									b79536e583
								
							
						
					
					
						commit
						7d5b53f672
					
				@ -1,5 +1,15 @@
 | 
			
		||||
# Kernel updates/build process
 | 
			
		||||
 | 
			
		||||
* test1 - minimal updates to kernel; add linker script and build kernel and test separately
 | 
			
		||||
* passed coco sim
 | 
			
		||||
### test1
 | 
			
		||||
   * 32b crosscompile
 | 
			
		||||
   * minimal updates to kernel; add linker script and build kernel and test separately
 | 
			
		||||
   * passed coco sim
 | 
			
		||||
 | 
			
		||||
### test2
 | 
			
		||||
   * 32b crosscompile
 | 
			
		||||
   * update kernel for minimal setup and branch to bios C code; add linker script and build kernel and test separately
 | 
			
		||||
   * passed coco sim
 | 
			
		||||
 | 
			
		||||
### test3
 | 
			
		||||
   * 32b crosscompile
 | 
			
		||||
   * add bios code to execute and check a .tst; link test.s
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,297 @@
 | 
			
		||||
# asmtst.tpl
 | 
			
		||||
# powerpc-linux-gnu-as -c arcitst.s
 | 
			
		||||
 | 
			
		||||
.include "defines.s"
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
# c-accessible
 | 
			
		||||
 | 
			
		||||
.global init_tst
 | 
			
		||||
.global tst_start
 | 
			
		||||
.global tst_end
 | 
			
		||||
.global tst_inits
 | 
			
		||||
.global tst_results
 | 
			
		||||
.global tst_expects
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
tst_misc:
 | 
			
		||||
 | 
			
		||||
tst_info:      .asciz "info text"
 | 
			
		||||
tst_header:    .asciz "header text"
 | 
			
		||||
 | 
			
		||||
.set SAVESPR,sprg3
 | 
			
		||||
.set MAGIC,0x8675309
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
tst_inits:
 | 
			
		||||
 | 
			
		||||
init_r0:       .int 0x5EA9536C
 | 
			
		||||
init_r1:       .int 0x07EC9BA7
 | 
			
		||||
init_r2:       .int 0xFFFFFFFF
 | 
			
		||||
init_r3:       .int 0x18FAD811
 | 
			
		||||
init_r4:       .int 0xFFFFFFFF
 | 
			
		||||
init_r5:       .int 0xFFFFFFFF
 | 
			
		||||
init_r6:       .int 0xFFFFFFFF
 | 
			
		||||
init_r7:       .int 0xFFFFFFFF
 | 
			
		||||
init_r8:       .int 0xFFFFFFFF
 | 
			
		||||
init_r9:       .int 0xFFFFFFFF
 | 
			
		||||
init_r10:      .int 0xB186394A
 | 
			
		||||
init_r11:      .int 0x07EC9BA7
 | 
			
		||||
init_r12:      .int 0xFFFFFFFF
 | 
			
		||||
init_r13:      .int 0xFC9D07CE
 | 
			
		||||
init_r14:      .int 0x7305868F
 | 
			
		||||
init_r15:      .int 0xFFFFFFFF
 | 
			
		||||
init_r16:      .int 0xFFFFFFFF
 | 
			
		||||
init_r17:      .int 0x6E078D56
 | 
			
		||||
init_r18:      .int 0xFFFFFFFF
 | 
			
		||||
init_r19:      .int 0xFFFFFFFF
 | 
			
		||||
init_r20:      .int 0x0F8F2BB1
 | 
			
		||||
init_r21:      .int 0xFFFFFFFF
 | 
			
		||||
init_r22:      .int 0xFFFFFFFF
 | 
			
		||||
init_r23:      .int 0x9E47F6C0
 | 
			
		||||
init_r24:      .int 0x46B0FC81
 | 
			
		||||
init_r25:      .int 0xFFFFFFFF
 | 
			
		||||
init_r26:      .int 0xFFFFFFFF
 | 
			
		||||
init_r27:      .int 0x48026438
 | 
			
		||||
init_r28:      .int 0xEFB046E4
 | 
			
		||||
init_r29:      .int 0x4B5CBE25
 | 
			
		||||
init_r30:      .int 0xFFFFFFFF
 | 
			
		||||
init_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
init_cr:       .int 0xB0215BC8
 | 
			
		||||
init_xer:      .int 0xBFC0004B
 | 
			
		||||
init_ctr:      .int 0xF7DA2C8A
 | 
			
		||||
init_lr:       .int 0x8BC7C22B
 | 
			
		||||
init_tar:      .int 0xFFFFFFFF
 | 
			
		||||
init_msr:      .int 0x00001081
 | 
			
		||||
 | 
			
		||||
init_iar:      .int 0x00010000
 | 
			
		||||
 | 
			
		||||
save_r1:       .int 0
 | 
			
		||||
 | 
			
		||||
codelen:       .int 13
 | 
			
		||||
ops:           .int 0x36E86A7F,0x10748A7F,0x71AE9D7E,0x1C865B55,0xF45EAA7D,0x2000154D,0x50E01B7C,0x4933037B,0x00082B7D,0x36B8317C,0x00000060,0x00000060,0x00000060
 | 
			
		||||
iars:          .int 0x00010000,0x00010004,0x00010008,0x0001000C,0x00010010,0x00010014,0x00010018,0x0001001C,0x00010020,0x00010024,0x00010028,0x0001002C,0x00010030
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
# r3=@tst_inits
 | 
			
		||||
.align 5
 | 
			
		||||
init_tst:
 | 
			
		||||
 | 
			
		||||
# save c stuff
 | 
			
		||||
   stw         r1,(save_r1-tst_inits)(r3)
 | 
			
		||||
 | 
			
		||||
# copy ops
 | 
			
		||||
opcopy:
 | 
			
		||||
   lwz         r1,(codelen-tst_inits)(r3)
 | 
			
		||||
   mtctr       r1
 | 
			
		||||
opcopy_loop:
 | 
			
		||||
   la          r1,(cops-tst_inits)(r3)
 | 
			
		||||
   la          r2,(iars-tst_inits)(r3)
 | 
			
		||||
   stw         r1,0(r2)
 | 
			
		||||
   addi        r2,r2,4
 | 
			
		||||
   bdnz        opcopy_loop
 | 
			
		||||
 | 
			
		||||
# init test regs
 | 
			
		||||
init_regs:
 | 
			
		||||
   lwz         r1,(init_cr-tst_inits)(r3)
 | 
			
		||||
   mtcr        r1
 | 
			
		||||
   lwz      r1,(init_xer-tst_inits)(r3)
 | 
			
		||||
   mtxer       r1
 | 
			
		||||
   lwz      r1,(init_ctr-tst_inits)(r3)
 | 
			
		||||
   mtctr       r1
 | 
			
		||||
   lwz      r1,(init_lr-tst_inits)(r3)
 | 
			
		||||
   mtlr        r1
 | 
			
		||||
   lwz      r1,(init_tar-tst_inits)(r3)
 | 
			
		||||
   mtspr       tar,r1
 | 
			
		||||
 | 
			
		||||
   lwz         r0,(init_r0-tst_inits)(r3)
 | 
			
		||||
   lwz         r1,(init_r1-tst_inits)(r3)
 | 
			
		||||
   lwz         r2,(init_r2-tst_inits)(r3)
 | 
			
		||||
   lwz         r4,(init_r4-tst_inits)(r3)
 | 
			
		||||
   lwz         r5,(init_r5-tst_inits)(r3)
 | 
			
		||||
   lwz         r6,(init_r6-tst_inits)(r3)
 | 
			
		||||
   lwz         r7,(init_r7-tst_inits)(r3)
 | 
			
		||||
   lwz         r8,(init_r8-tst_inits)(r3)
 | 
			
		||||
   lwz         r9,(init_r9-tst_inits)(r3)
 | 
			
		||||
   lwz         r10,(init_r10-tst_inits)(r3)
 | 
			
		||||
   lwz         r11,(init_r11-tst_inits)(r3)
 | 
			
		||||
   lwz         r12,(init_r12-tst_inits)(r3)
 | 
			
		||||
   lwz         r13,(init_r13-tst_inits)(r3)
 | 
			
		||||
   lwz         r14,(init_r14-tst_inits)(r3)
 | 
			
		||||
   lwz         r15,(init_r15-tst_inits)(r3)
 | 
			
		||||
   lwz         r16,(init_r16-tst_inits)(r3)
 | 
			
		||||
   lwz         r17,(init_r17-tst_inits)(r3)
 | 
			
		||||
   lwz         r18,(init_r18-tst_inits)(r3)
 | 
			
		||||
   lwz         r19,(init_r19-tst_inits)(r3)
 | 
			
		||||
   lwz         r20,(init_r20-tst_inits)(r3)
 | 
			
		||||
   lwz         r21,(init_r21-tst_inits)(r3)
 | 
			
		||||
   lwz         r22,(init_r22-tst_inits)(r3)
 | 
			
		||||
   lwz         r23,(init_r23-tst_inits)(r3)
 | 
			
		||||
   lwz         r24,(init_r24-tst_inits)(r3)
 | 
			
		||||
   lwz         r25,(init_r25-tst_inits)(r3)
 | 
			
		||||
   lwz         r26,(init_r26-tst_inits)(r3)
 | 
			
		||||
   lwz         r27,(init_r27-tst_inits)(r3)
 | 
			
		||||
   lwz         r28,(init_r28-tst_inits)(r3)
 | 
			
		||||
   lwz         r29,(init_r29-tst_inits)(r3)
 | 
			
		||||
   lwz         r30,(init_r30-tst_inits)(r3)
 | 
			
		||||
   lwz         r31,(init_r31-tst_inits)(r3)
 | 
			
		||||
   lwz         r3,(init_r3-tst_inits)(r3)
 | 
			
		||||
 | 
			
		||||
jmp2tst:       rfi
 | 
			
		||||
 | 
			
		||||
# needs to be inserted into epilogue of tst!
 | 
			
		||||
#tst_end:
 | 
			
		||||
#   b           save_results
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
save_results:
 | 
			
		||||
# use a designated spr to save (sprgx, ...)
 | 
			
		||||
   mtspr       SAVESPR,r1
 | 
			
		||||
   lis         r1,tst_results@h
 | 
			
		||||
   ori         r1,r1,tst_results@l
 | 
			
		||||
   stw         r0,(rslt_r0-tst_results)(r1)
 | 
			
		||||
   stw         r2,(rslt_r2-tst_results)(r1)
 | 
			
		||||
   stw         r3,(rslt_r3-tst_results)(r1)
 | 
			
		||||
   stw         r4,(rslt_r4-tst_results)(r1)
 | 
			
		||||
   stw         r5,(rslt_r5-tst_results)(r1)
 | 
			
		||||
   stw         r6,(rslt_r6-tst_results)(r1)
 | 
			
		||||
   stw         r7,(rslt_r7-tst_results)(r1)
 | 
			
		||||
   stw         r8,(rslt_r8-tst_results)(r1)
 | 
			
		||||
   stw         r9,(rslt_r9-tst_results)(r1)
 | 
			
		||||
   stw         r10,(rslt_r10-tst_results)(r1)
 | 
			
		||||
   stw         r11,(rslt_r11-tst_results)(r1)
 | 
			
		||||
   stw         r12,(rslt_r12-tst_results)(r1)
 | 
			
		||||
   stw         r13,(rslt_r13-tst_results)(r1)
 | 
			
		||||
   stw         r14,(rslt_r14-tst_results)(r1)
 | 
			
		||||
   stw         r15,(rslt_r15-tst_results)(r1)
 | 
			
		||||
   stw         r16,(rslt_r16-tst_results)(r1)
 | 
			
		||||
   stw         r17,(rslt_r17-tst_results)(r1)
 | 
			
		||||
   stw         r18,(rslt_r18-tst_results)(r1)
 | 
			
		||||
   stw         r19,(rslt_r19-tst_results)(r1)
 | 
			
		||||
   stw         r20,(rslt_r20-tst_results)(r1)
 | 
			
		||||
   stw         r21,(rslt_r21-tst_results)(r1)
 | 
			
		||||
   stw         r22,(rslt_r22-tst_results)(r1)
 | 
			
		||||
   stw         r23,(rslt_r23-tst_results)(r1)
 | 
			
		||||
   stw         r24,(rslt_r24-tst_results)(r1)
 | 
			
		||||
   stw         r25,(rslt_r25-tst_results)(r1)
 | 
			
		||||
   stw         r26,(rslt_r26-tst_results)(r1)
 | 
			
		||||
   stw         r27,(rslt_r27-tst_results)(r1)
 | 
			
		||||
   stw         r28,(rslt_r28-tst_results)(r1)
 | 
			
		||||
   stw         r29,(rslt_r29-tst_results)(r1)
 | 
			
		||||
   stw         r30,(rslt_r30-tst_results)(r1)
 | 
			
		||||
   stw         r31,(rslt_r31-tst_results)(r1)
 | 
			
		||||
   mfspr       r2,SAVESPR
 | 
			
		||||
   stw         r2,(rslt_r1-tst_results)(r1)
 | 
			
		||||
   mfcr        r2
 | 
			
		||||
   stw         r2,(rslt_cr-tst_results)(r1)
 | 
			
		||||
   mfxer       r2
 | 
			
		||||
   stw         r2,(rslt_xer-tst_results)(r1)
 | 
			
		||||
   mfctr       r2
 | 
			
		||||
   stw         r2,(rslt_ctr-tst_results)(r1)
 | 
			
		||||
   mflr        r2
 | 
			
		||||
   stw         r2,(rslt_lr-tst_results)(r1)
 | 
			
		||||
   mfspr       r2,tar
 | 
			
		||||
   stw         r2,(rslt_tar-tst_results)(r1)
 | 
			
		||||
 | 
			
		||||
tst_cleanup:
 | 
			
		||||
# restore c stuff
 | 
			
		||||
   lis         r3,tst_inits@h
 | 
			
		||||
   ori         r3,r3,tst_inits@l
 | 
			
		||||
   lwz         r1,(save_r1-tst_inits)(r3)
 | 
			
		||||
   lis         r3,MAGIC@h
 | 
			
		||||
   ori         r3,r3,MAGIC@l
 | 
			
		||||
 | 
			
		||||
   b           tst_done
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
tst_results:
 | 
			
		||||
 | 
			
		||||
rslt_r0:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r1:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r2:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r3:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r4:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r5:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r6:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r7:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r8:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r9:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r10:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r11:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r12:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r13:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r14:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r15:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r16:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r17:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r18:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r19:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r20:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r21:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r22:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r23:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r24:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r25:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r26:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r27:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r28:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r29:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r30:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
rslt_cr:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_xer:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_lr:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_tar:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
tst_expects:
 | 
			
		||||
 | 
			
		||||
expt_r0:       .int 0x7305868F
 | 
			
		||||
expt_r1:       .int 0x07EC9BA7
 | 
			
		||||
expt_r2:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r3:       .int 0xAC3F2040
 | 
			
		||||
expt_r4:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r5:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r6:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r7:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r8:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r9:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r10:      .int 0xE83E7000
 | 
			
		||||
expt_r11:      .int 0x07EC9BA7
 | 
			
		||||
expt_r12:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r13:      .int 0xFC9D07CE
 | 
			
		||||
expt_r14:      .int 0x7305868F
 | 
			
		||||
expt_r15:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r16:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r17:      .int 0x00000000
 | 
			
		||||
expt_r18:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r19:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r20:      .int 0x0F8F2BB1
 | 
			
		||||
expt_r21:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r22:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r23:      .int 0x9E47F6C0
 | 
			
		||||
expt_r24:      .int 0x46B0FC81
 | 
			
		||||
expt_r25:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r26:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r27:      .int 0x00000000
 | 
			
		||||
expt_r28:      .int 0x7305868F
 | 
			
		||||
expt_r29:      .int 0x0000007C
 | 
			
		||||
expt_r30:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
expt_cr:       .int 0x90315BC8
 | 
			
		||||
expt_xer:      .int 0x82C0004B
 | 
			
		||||
expt_ctr:      .int 0xF7DA2C89
 | 
			
		||||
expt_lr:       .int 0x8BC7C22B
 | 
			
		||||
expt_tar:      .int 0xFFFFFFFF
 | 
			
		||||
expt_msr:      .int 0x00001081
 | 
			
		||||
 | 
			
		||||
expt_iar:      .int 0x00010038
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,492 @@
 | 
			
		||||
   1              	# asmtst.tpl
 | 
			
		||||
   2              	
 | 
			
		||||
   3              	.include "defines.s"
 | 
			
		||||
   1              	# © IBM Corp. 2020
 | 
			
		||||
   2              	# Licensed under and subject to the terms of the CC-BY 4.0
 | 
			
		||||
   3              	# license (https://creativecommons.org/licenses/by/4.0/legalcode).
 | 
			
		||||
   4              	# Additional rights, including the right to physically implement a softcore
 | 
			
		||||
   5              	# that is compliant with the required sections of the Power ISA
 | 
			
		||||
   6              	# Specification, will be available at no cost via the OpenPOWER Foundation.
 | 
			
		||||
   7              	# This README will be updated with additional information when OpenPOWER's
 | 
			
		||||
   8              	# license is available.
 | 
			
		||||
   9              	
 | 
			
		||||
  10              	#-----------------------------------------
 | 
			
		||||
  11              	# Defines
 | 
			
		||||
  12              	#-----------------------------------------
 | 
			
		||||
  13              	
 | 
			
		||||
  14              	# Regs
 | 
			
		||||
  15              	
 | 
			
		||||
  16              	.set    r0,  0
 | 
			
		||||
  17              	.set    r1,  1
 | 
			
		||||
  18              	.set    r2,  2
 | 
			
		||||
  19              	.set    r3,  3
 | 
			
		||||
  20              	.set    r4,  4
 | 
			
		||||
  21              	.set    r5,  5
 | 
			
		||||
  22              	.set    r6,  6
 | 
			
		||||
  23              	.set    r7,  7
 | 
			
		||||
  24              	.set    r8,  8
 | 
			
		||||
  25              	.set    r9,  9
 | 
			
		||||
  26              	.set    r10,10
 | 
			
		||||
  27              	.set    r11,11
 | 
			
		||||
  28              	.set    r12,12
 | 
			
		||||
  29              	.set    r13,13
 | 
			
		||||
  30              	.set    r14,14
 | 
			
		||||
  31              	.set    r15,15
 | 
			
		||||
  32              	.set    r16,16
 | 
			
		||||
  33              	.set    r17,17
 | 
			
		||||
  34              	.set    r18,18
 | 
			
		||||
  35              	.set    r19,19
 | 
			
		||||
  36              	.set    r20,20
 | 
			
		||||
  37              	.set    r21,21
 | 
			
		||||
  38              	.set    r22,22
 | 
			
		||||
  39              	.set    r23,23
 | 
			
		||||
  40              	.set    r24,24
 | 
			
		||||
  41              	.set    r25,25
 | 
			
		||||
  42              	.set    r26,26
 | 
			
		||||
  43              	.set    r27,27
 | 
			
		||||
  44              	.set    r28,28
 | 
			
		||||
  45              	.set    r29,29
 | 
			
		||||
  46              	.set    r30,30
 | 
			
		||||
  47              	.set    r31,31
 | 
			
		||||
  48              	
 | 
			
		||||
  49              	.set    f0,  0
 | 
			
		||||
  50              	.set    f1,  1
 | 
			
		||||
  51              	.set    f2,  2
 | 
			
		||||
  52              	.set    f3,  3
 | 
			
		||||
  53              	.set    f4,  4
 | 
			
		||||
  54              	.set    f5,  5
 | 
			
		||||
  55              	.set    f6,  6
 | 
			
		||||
  56              	.set    f7,  7
 | 
			
		||||
  57              	.set    f8,  8
 | 
			
		||||
  58              	.set    f9,  9
 | 
			
		||||
  59              	.set    f10,10
 | 
			
		||||
  60              	.set    f11,11
 | 
			
		||||
  61              	.set    f12,12
 | 
			
		||||
  62              	.set    f13,13
 | 
			
		||||
  63              	.set    f14,14
 | 
			
		||||
  64              	.set    f15,15
 | 
			
		||||
  65              	.set    f16,16
 | 
			
		||||
  66              	.set    f17,17
 | 
			
		||||
  67              	.set    f18,18
 | 
			
		||||
  68              	.set    f19,19
 | 
			
		||||
  69              	.set    f20,20
 | 
			
		||||
  70              	.set    f21,21
 | 
			
		||||
  71              	.set    f22,22
 | 
			
		||||
  72              	.set    f23,23
 | 
			
		||||
  73              	.set    f24,24
 | 
			
		||||
  74              	.set    f25,25
 | 
			
		||||
  75              	.set    f26,26
 | 
			
		||||
  76              	.set    f27,27
 | 
			
		||||
  77              	.set    f28,28
 | 
			
		||||
  78              	.set    f29,29
 | 
			
		||||
  79              	.set    f30,30
 | 
			
		||||
  80              	.set    f31,31
 | 
			
		||||
  81              	
 | 
			
		||||
  82              	.set    cr0, 0
 | 
			
		||||
  83              	.set    cr1, 1
 | 
			
		||||
  84              	.set    cr2, 2
 | 
			
		||||
  85              	.set    cr3, 3
 | 
			
		||||
  86              	.set    cr4, 4
 | 
			
		||||
  87              	.set    cr5, 5
 | 
			
		||||
  88              	.set    cr6, 6
 | 
			
		||||
  89              	.set    cr7, 7
 | 
			
		||||
  90              	
 | 
			
		||||
  91              	# SPR numbers
 | 
			
		||||
  92              	
 | 
			
		||||
  93              	.set    srr0, 26
 | 
			
		||||
  94              	.set    srr1, 27
 | 
			
		||||
  95              	.set    dar, 19
 | 
			
		||||
  96              	.set    dsisr, 18
 | 
			
		||||
  97              	.set    epcr, 307
 | 
			
		||||
  98              	.set    tar, 815
 | 
			
		||||
  99              	
 | 
			
		||||
 100              	.set    dbsr, 304
 | 
			
		||||
 101              	.set    dbcr0, 308
 | 
			
		||||
 102              	.set    dbcr1, 309
 | 
			
		||||
 103              	.set    dbcr2, 310
 | 
			
		||||
 104              	.set    dbcr3, 848
 | 
			
		||||
 105              	
 | 
			
		||||
 106              	.set    ivpr, 63
 | 
			
		||||
 107              	
 | 
			
		||||
 108              	.set    iucr0, 1011
 | 
			
		||||
 109              	.set    iucr1, 883
 | 
			
		||||
 110              	.set    iucr2, 884
 | 
			
		||||
 111              	
 | 
			
		||||
 112              	.set    iudbg0, 888
 | 
			
		||||
 113              	.set    iudbg1, 889
 | 
			
		||||
 114              	.set    iudbg2, 890
 | 
			
		||||
 115              	.set    iulfsr, 891
 | 
			
		||||
 116              	.set    iullcr, 892
 | 
			
		||||
 117              	
 | 
			
		||||
 118              	.set    mmucr0, 1020
 | 
			
		||||
 119              	.set    mmucr1, 1021
 | 
			
		||||
 120              	.set    mmucr2, 1022
 | 
			
		||||
 121              	.set    mmucr3, 1023
 | 
			
		||||
 122              	
 | 
			
		||||
 123              	.set    tb, 268
 | 
			
		||||
 124              	.set    tbl, 284
 | 
			
		||||
 125              	.set    tbh, 285
 | 
			
		||||
 126              	
 | 
			
		||||
 127              	.set    dec, 22
 | 
			
		||||
 128              	.set    udec, 550
 | 
			
		||||
 129              	.set    tsr, 336
 | 
			
		||||
 130              	.set    tcr, 340
 | 
			
		||||
 131              	
 | 
			
		||||
 132              	.set    xucr0, 1014
 | 
			
		||||
 133              	.set    xucr1, 851
 | 
			
		||||
 134              	.set    xucr2, 1016
 | 
			
		||||
 135              	.set    xucr3, 852
 | 
			
		||||
 136              	.set    xucr4, 853
 | 
			
		||||
 137              	
 | 
			
		||||
 138              	.set    tens, 438
 | 
			
		||||
 139              	.set    tenc, 439
 | 
			
		||||
 140              	.set    tensr, 437
 | 
			
		||||
 141              	
 | 
			
		||||
 142              	.set    pid, 48
 | 
			
		||||
 143              	.set    pir, 286
 | 
			
		||||
 144              	.set    pvr, 287
 | 
			
		||||
 145              	.set    tir, 446
 | 
			
		||||
 146              	
 | 
			
		||||
 147              	#.set    sprg0,
 | 
			
		||||
 148              	#.set    sprg1,
 | 
			
		||||
 149              	#.set    sprg2,
 | 
			
		||||
 150              	.set    sprg3, 259
 | 
			
		||||
   4              	
 | 
			
		||||
   5              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
   6              	# c-accessible
 | 
			
		||||
   7              	
 | 
			
		||||
   8              	.global init_tst
 | 
			
		||||
   9              	.global tst_start
 | 
			
		||||
  10              	.global tst_end
 | 
			
		||||
  11              	.global tst_inits
 | 
			
		||||
  12              	.global tst_results
 | 
			
		||||
  13              	.global tst_expects
 | 
			
		||||
  14              	
 | 
			
		||||
  15              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
  16              	tst_misc:
 | 
			
		||||
  17              	
 | 
			
		||||
  18 0000 696E666F 	tst_info:      .asciz "info text"
 | 
			
		||||
  18      20746578 
 | 
			
		||||
  18      7400
 | 
			
		||||
  19 000a 68656164 	tst_header:    .asciz "header text"
 | 
			
		||||
  19      65722074 
 | 
			
		||||
  19      65787400 
 | 
			
		||||
  20              	
 | 
			
		||||
  21              	.set SAVESPR,tar
 | 
			
		||||
  22              	.set MAGIC,0x8675309
 | 
			
		||||
  23              	
 | 
			
		||||
  24              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
  25 0016 00000000 	.align 5
 | 
			
		||||
  25      00000000 
 | 
			
		||||
  25      0000
 | 
			
		||||
  26              	tst_inits:
 | 
			
		||||
  27              	
 | 
			
		||||
  28 0020 00000000 	init_r0:       .int 0x00000000
 | 
			
		||||
  29 0024 5822C905 	init_r1:       .int 0x5822C905
 | 
			
		||||
  30 0028 FFFFFFFF 	init_r2:       .int 0xFFFFFFFF
 | 
			
		||||
  31 002c 91B6D1A3 	init_r3:       .int 0x91B6D1A3
 | 
			
		||||
  32 0030 FFFFFFFF 	init_r4:       .int 0xFFFFFFFF
 | 
			
		||||
  33 0034 FFFFFFFF 	init_r5:       .int 0xFFFFFFFF
 | 
			
		||||
  34 0038 FFFFFFFF 	init_r6:       .int 0xFFFFFFFF
 | 
			
		||||
  35 003c FFFFFFFF 	init_r7:       .int 0xFFFFFFFF
 | 
			
		||||
  36 0040 FFFFFFFF 	init_r8:       .int 0xFFFFFFFF
 | 
			
		||||
  37 0044 7E11EE88 	init_r9:       .int 0x7E11EE88
 | 
			
		||||
  38 0048 FFFFFFFF 	init_r10:      .int 0xFFFFFFFF
 | 
			
		||||
  39 004c 7FFFFFFF 	init_r11:      .int 0x7FFFFFFF
 | 
			
		||||
  40 0050 FFFFFFFF 	init_r12:      .int 0xFFFFFFFF
 | 
			
		||||
  41 0054 FFFFFFFF 	init_r13:      .int 0xFFFFFFFF
 | 
			
		||||
  42 0058 8C20BDE6 	init_r14:      .int 0x8C20BDE6
 | 
			
		||||
  43 005c FFFFFFFF 	init_r15:      .int 0xFFFFFFFF
 | 
			
		||||
  44 0060 76D0DADF 	init_r16:      .int 0x76D0DADF
 | 
			
		||||
  45 0064 15111F42 	init_r17:      .int 0x15111F42
 | 
			
		||||
  46 0068 FFFFFFFF 	init_r18:      .int 0xFFFFFFFF
 | 
			
		||||
  47 006c 36108E50 	init_r19:      .int 0x36108E50
 | 
			
		||||
  48 0070 FFFFFFFF 	init_r20:      .int 0xFFFFFFFF
 | 
			
		||||
  49 0074 FFFFFFFF 	init_r21:      .int 0xFFFFFFFF
 | 
			
		||||
  50 0078 328A0CED 	init_r22:      .int 0x328A0CED
 | 
			
		||||
  51 007c FFFFFFFF 	init_r23:      .int 0xFFFFFFFF
 | 
			
		||||
  52 0080 FFFFFFFF 	init_r24:      .int 0xFFFFFFFF
 | 
			
		||||
  53 0084 AF224C19 	init_r25:      .int 0xAF224C19
 | 
			
		||||
  54 0088 FFFFFFFF 	init_r26:      .int 0xFFFFFFFF
 | 
			
		||||
  55 008c FFFFFFFF 	init_r27:      .int 0xFFFFFFFF
 | 
			
		||||
  56 0090 D624B27A 	init_r28:      .int 0xD624B27A
 | 
			
		||||
  57 0094 FFFFFFFF 	init_r29:      .int 0xFFFFFFFF
 | 
			
		||||
  58 0098 FFFFFFFF 	init_r30:      .int 0xFFFFFFFF
 | 
			
		||||
  59 009c FFFFFFFF 	init_r31:      .int 0xFFFFFFFF
 | 
			
		||||
  60              	
 | 
			
		||||
  61 00a0 DBFD3628 	init_cr:       .int 0xDBFD3628
 | 
			
		||||
  62 00a4 89F0006E 	init_xer:      .int 0x89F0006E
 | 
			
		||||
  63 00a8 FFFFFFFF 	init_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
  64 00ac FFFFFFFF 	init_lr:       .int 0xFFFFFFFF
 | 
			
		||||
  65 00b0 FFFFFFFF 	init_tar:      .int 0xFFFFFFFF
 | 
			
		||||
  66 00b4 00001104 	init_msr:      .int 0x00001104
 | 
			
		||||
  67              	
 | 
			
		||||
  68 00b8 00010000 	init_iar:      .int 0x00010000
 | 
			
		||||
  69              	
 | 
			
		||||
  70 00bc 00000000 	save_r1:       .int 0
 | 
			
		||||
  71              	
 | 
			
		||||
  72 00c0 0000000D 	codelen:       .int 13
 | 
			
		||||
  73 00c4 7C61CC14 	ops:           .int 0x7C61CC14,0x7D230595,0x7AC37392,0x7E094C11,0x7E1CB115,0x7A338886,0x7C6004D1,0x
 | 
			
		||||
  73      7D230595 
 | 
			
		||||
  73      7AC37392 
 | 
			
		||||
  73      7E094C11 
 | 
			
		||||
  73      7E1CB115 
 | 
			
		||||
  74 00f8 00010000 	iars:          .int 0x00010000,0x00010004,0x00010008,0x0001000C,0x00010010,0x00010014,0x00010018,0x
 | 
			
		||||
  74      00010004 
 | 
			
		||||
  74      00010008 
 | 
			
		||||
  74      0001000C 
 | 
			
		||||
  74      00010010 
 | 
			
		||||
  75              	
 | 
			
		||||
  76              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
  77              	# r3=@tst_inits
 | 
			
		||||
  78 012c 48000014 	.align 5
 | 
			
		||||
  78      60000000 
 | 
			
		||||
  78      60000000 
 | 
			
		||||
  78      60000000 
 | 
			
		||||
  78      60000000 
 | 
			
		||||
  79              	init_tst:
 | 
			
		||||
  80              	
 | 
			
		||||
  81              	# save c stuff
 | 
			
		||||
  82 0140 9023009C 	   stw         r1,(save_r1-tst_inits)(r3)
 | 
			
		||||
  83              	
 | 
			
		||||
  84              	# copy ops
 | 
			
		||||
  85              	opcopy:
 | 
			
		||||
  86 0144 802300A0 	   lwz         r1,(codelen-tst_inits)(r3)
 | 
			
		||||
  87 0148 7C2903A6 	   mtctr       r1
 | 
			
		||||
  88 014c 382300A4 	   la          r1,(ops-tst_inits)(r3)              # @ ops list
 | 
			
		||||
  89 0150 384300D8 	   la          r2,(iars-tst_inits)(r3)             # @ iars list
 | 
			
		||||
  90              	opcopy_loop:
 | 
			
		||||
  91 0154 80810000 	   lwz         r4,0(r1)                            # next op
 | 
			
		||||
  92 0158 80A20000 	   lwz         r5,0(r2)                            # next iar
 | 
			
		||||
  93 015c 90850000 	   stw         r4,0(r5)                            # store it
 | 
			
		||||
  94 0160 38210004 	   addi        r1,r1,4                             # inc to next
 | 
			
		||||
  95 0164 38420004 	   addi        r2,r2,4
 | 
			
		||||
  96 0168 4200FFEC 	   bdnz        opcopy_loop
 | 
			
		||||
  97              	
 | 
			
		||||
  98              	# add end of test op - could be done here or by builder
 | 
			
		||||
  99              	# ways to end:
 | 
			
		||||
 100              	#   ba <fixed_loc>      - avoid reloc, target op can then branch to tst_end
 | 
			
		||||
 101              	#   trap,sc,scv         - branch to tst_end in handler
 | 
			
		||||
 102              	#   attn, priv op, etc. -  "
 | 
			
		||||
 103              	# overwrite the last epilogue op to avoid any crossing
 | 
			
		||||
 104              	opcopy_eot:
 | 
			
		||||
 105 016c 3C804800 	   lis         r4,0x4800
 | 
			
		||||
 106 0170 60840006 	   ori         r4,r4,0x0006         # ba 0x0004
 | 
			
		||||
 107 0174 90850000 	   stw         r4,0(r5)
 | 
			
		||||
 108              	
 | 
			
		||||
 109              	# get tst start
 | 
			
		||||
 110 0178 80200000 	   lwz         r1,init_msr(r0)
 | 
			
		||||
 111 017c 7C3B03A6 	   mtsrr1      r1
 | 
			
		||||
 112 0180 80200000 	   lwz         r1,iars(r0)
 | 
			
		||||
 113 0184 7C3A03A6 	   mtsrr0      r1
 | 
			
		||||
 114              	
 | 
			
		||||
 115              	# init test regs
 | 
			
		||||
 116              	init_regs:
 | 
			
		||||
 117 0188 80230080 	   lwz         r1,(init_cr-tst_inits)(r3)
 | 
			
		||||
 118 018c 7C2FF120 	   mtcr        r1
 | 
			
		||||
 119 0190 80230084 	   lwz      r1,(init_xer-tst_inits)(r3)
 | 
			
		||||
 120 0194 7C2103A6 	   mtxer       r1
 | 
			
		||||
 121 0198 80230088 	   lwz      r1,(init_ctr-tst_inits)(r3)
 | 
			
		||||
 122 019c 7C2903A6 	   mtctr       r1
 | 
			
		||||
 123 01a0 8023008C 	   lwz      r1,(init_lr-tst_inits)(r3)
 | 
			
		||||
 124 01a4 7C2803A6 	   mtlr        r1
 | 
			
		||||
 125 01a8 80230090 	   lwz      r1,(init_tar-tst_inits)(r3)
 | 
			
		||||
 126 01ac 7C2FCBA6 	   mtspr       tar,r1
 | 
			
		||||
 127              	
 | 
			
		||||
 128 01b0 80030000 	   lwz         r0,(init_r0-tst_inits)(r3)
 | 
			
		||||
 129 01b4 80230004 	   lwz         r1,(init_r1-tst_inits)(r3)
 | 
			
		||||
 130 01b8 80430008 	   lwz         r2,(init_r2-tst_inits)(r3)
 | 
			
		||||
 131 01bc 80830010 	   lwz         r4,(init_r4-tst_inits)(r3)
 | 
			
		||||
 132 01c0 80A30014 	   lwz         r5,(init_r5-tst_inits)(r3)
 | 
			
		||||
 133 01c4 80C30018 	   lwz         r6,(init_r6-tst_inits)(r3)
 | 
			
		||||
 134 01c8 80E3001C 	   lwz         r7,(init_r7-tst_inits)(r3)
 | 
			
		||||
 135 01cc 81030020 	   lwz         r8,(init_r8-tst_inits)(r3)
 | 
			
		||||
 136 01d0 81230024 	   lwz         r9,(init_r9-tst_inits)(r3)
 | 
			
		||||
 137 01d4 81430028 	   lwz         r10,(init_r10-tst_inits)(r3)
 | 
			
		||||
 138 01d8 8163002C 	   lwz         r11,(init_r11-tst_inits)(r3)
 | 
			
		||||
 139 01dc 81830030 	   lwz         r12,(init_r12-tst_inits)(r3)
 | 
			
		||||
 140 01e0 81A30034 	   lwz         r13,(init_r13-tst_inits)(r3)
 | 
			
		||||
 141 01e4 81C30038 	   lwz         r14,(init_r14-tst_inits)(r3)
 | 
			
		||||
 142 01e8 81E3003C 	   lwz         r15,(init_r15-tst_inits)(r3)
 | 
			
		||||
 143 01ec 82030040 	   lwz         r16,(init_r16-tst_inits)(r3)
 | 
			
		||||
 144 01f0 82230044 	   lwz         r17,(init_r17-tst_inits)(r3)
 | 
			
		||||
 145 01f4 82430048 	   lwz         r18,(init_r18-tst_inits)(r3)
 | 
			
		||||
 146 01f8 8263004C 	   lwz         r19,(init_r19-tst_inits)(r3)
 | 
			
		||||
 147 01fc 82830050 	   lwz         r20,(init_r20-tst_inits)(r3)
 | 
			
		||||
 148 0200 82A30054 	   lwz         r21,(init_r21-tst_inits)(r3)
 | 
			
		||||
 149 0204 82C30058 	   lwz         r22,(init_r22-tst_inits)(r3)
 | 
			
		||||
 150 0208 82E3005C 	   lwz         r23,(init_r23-tst_inits)(r3)
 | 
			
		||||
 151 020c 83030060 	   lwz         r24,(init_r24-tst_inits)(r3)
 | 
			
		||||
 152 0210 83230064 	   lwz         r25,(init_r25-tst_inits)(r3)
 | 
			
		||||
 153 0214 83430068 	   lwz         r26,(init_r26-tst_inits)(r3)
 | 
			
		||||
 154 0218 8363006C 	   lwz         r27,(init_r27-tst_inits)(r3)
 | 
			
		||||
 155 021c 83830070 	   lwz         r28,(init_r28-tst_inits)(r3)
 | 
			
		||||
 156 0220 83A30074 	   lwz         r29,(init_r29-tst_inits)(r3)
 | 
			
		||||
 157 0224 83C30078 	   lwz         r30,(init_r30-tst_inits)(r3)
 | 
			
		||||
 158 0228 83E3007C 	   lwz         r31,(init_r31-tst_inits)(r3)
 | 
			
		||||
 159 022c 8063000C 	   lwz         r3,(init_r3-tst_inits)(r3)
 | 
			
		||||
 160              	
 | 
			
		||||
 161              	jmp2tst:
 | 
			
		||||
 162              	   #rfi
 | 
			
		||||
 163              	   #rfid
 | 
			
		||||
 164 0230 48010002 	   ba 0x10000
 | 
			
		||||
 165              	
 | 
			
		||||
 166              	tst_end:
 | 
			
		||||
 167 0234 4800000C 	   b           save_results
 | 
			
		||||
 168              	
 | 
			
		||||
 169              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 170 0238 60000000 	.align 5
 | 
			
		||||
 170      60000000 
 | 
			
		||||
 171              	save_results:
 | 
			
		||||
 172              	# use a designated spr to save (sprgx, ...)
 | 
			
		||||
 173 0240 7C2FCBA6 	   mtspr       SAVESPR,r1
 | 
			
		||||
 174 0244 3C200000 	   lis         r1,tst_results@h
 | 
			
		||||
 175 0248 60210000 	   ori         r1,r1,tst_results@l
 | 
			
		||||
 176 024c 90010000 	   stw         r0,(rslt_r0-tst_results)(r1)
 | 
			
		||||
 177 0250 90410008 	   stw         r2,(rslt_r2-tst_results)(r1)
 | 
			
		||||
 178 0254 9061000C 	   stw         r3,(rslt_r3-tst_results)(r1)
 | 
			
		||||
 179 0258 90810010 	   stw         r4,(rslt_r4-tst_results)(r1)
 | 
			
		||||
 180 025c 90A10014 	   stw         r5,(rslt_r5-tst_results)(r1)
 | 
			
		||||
 181 0260 90C10018 	   stw         r6,(rslt_r6-tst_results)(r1)
 | 
			
		||||
 182 0264 90E1001C 	   stw         r7,(rslt_r7-tst_results)(r1)
 | 
			
		||||
 183 0268 91010020 	   stw         r8,(rslt_r8-tst_results)(r1)
 | 
			
		||||
 184 026c 91210024 	   stw         r9,(rslt_r9-tst_results)(r1)
 | 
			
		||||
 185 0270 91410028 	   stw         r10,(rslt_r10-tst_results)(r1)
 | 
			
		||||
 186 0274 9161002C 	   stw         r11,(rslt_r11-tst_results)(r1)
 | 
			
		||||
 187 0278 91810030 	   stw         r12,(rslt_r12-tst_results)(r1)
 | 
			
		||||
 188 027c 91A10034 	   stw         r13,(rslt_r13-tst_results)(r1)
 | 
			
		||||
 189 0280 91C10038 	   stw         r14,(rslt_r14-tst_results)(r1)
 | 
			
		||||
 190 0284 91E1003C 	   stw         r15,(rslt_r15-tst_results)(r1)
 | 
			
		||||
 191 0288 92010040 	   stw         r16,(rslt_r16-tst_results)(r1)
 | 
			
		||||
 192 028c 92210044 	   stw         r17,(rslt_r17-tst_results)(r1)
 | 
			
		||||
 193 0290 92410048 	   stw         r18,(rslt_r18-tst_results)(r1)
 | 
			
		||||
 194 0294 9261004C 	   stw         r19,(rslt_r19-tst_results)(r1)
 | 
			
		||||
 195 0298 92810050 	   stw         r20,(rslt_r20-tst_results)(r1)
 | 
			
		||||
 196 029c 92A10054 	   stw         r21,(rslt_r21-tst_results)(r1)
 | 
			
		||||
 197 02a0 92C10058 	   stw         r22,(rslt_r22-tst_results)(r1)
 | 
			
		||||
 198 02a4 92E1005C 	   stw         r23,(rslt_r23-tst_results)(r1)
 | 
			
		||||
 199 02a8 93010060 	   stw         r24,(rslt_r24-tst_results)(r1)
 | 
			
		||||
 200 02ac 93210064 	   stw         r25,(rslt_r25-tst_results)(r1)
 | 
			
		||||
 201 02b0 93410068 	   stw         r26,(rslt_r26-tst_results)(r1)
 | 
			
		||||
 202 02b4 9361006C 	   stw         r27,(rslt_r27-tst_results)(r1)
 | 
			
		||||
 203 02b8 93810070 	   stw         r28,(rslt_r28-tst_results)(r1)
 | 
			
		||||
 204 02bc 93A10074 	   stw         r29,(rslt_r29-tst_results)(r1)
 | 
			
		||||
 205 02c0 93C10078 	   stw         r30,(rslt_r30-tst_results)(r1)
 | 
			
		||||
 206 02c4 93E1007C 	   stw         r31,(rslt_r31-tst_results)(r1)
 | 
			
		||||
 207 02c8 7C4FCAA6 	   mfspr       r2,SAVESPR
 | 
			
		||||
 208 02cc 90410004 	   stw         r2,(rslt_r1-tst_results)(r1)
 | 
			
		||||
 209 02d0 7C400026 	   mfcr        r2
 | 
			
		||||
 210 02d4 90410080 	   stw         r2,(rslt_cr-tst_results)(r1)
 | 
			
		||||
 211 02d8 7C4102A6 	   mfxer       r2
 | 
			
		||||
 212 02dc 90410084 	   stw         r2,(rslt_xer-tst_results)(r1)
 | 
			
		||||
 213 02e0 7C4902A6 	   mfctr       r2
 | 
			
		||||
 214 02e4 90410088 	   stw         r2,(rslt_ctr-tst_results)(r1)
 | 
			
		||||
 215 02e8 7C4802A6 	   mflr        r2
 | 
			
		||||
 216 02ec 9041008C 	   stw         r2,(rslt_lr-tst_results)(r1)
 | 
			
		||||
 217 02f0 7C4FCAA6 	   mfspr       r2,tar
 | 
			
		||||
 218 02f4 90410090 	   stw         r2,(rslt_tar-tst_results)(r1)
 | 
			
		||||
 219              	
 | 
			
		||||
 220              	tst_cleanup:
 | 
			
		||||
 221              	# restore c stuff
 | 
			
		||||
 222 02f8 3C600000 	   lis         r3,tst_inits@h
 | 
			
		||||
 223 02fc 60630000 	   ori         r3,r3,tst_inits@l
 | 
			
		||||
 224 0300 8023009C 	   lwz         r1,(save_r1-tst_inits)(r3)
 | 
			
		||||
 225 0304 3C600867 	   lis         r3,MAGIC@h
 | 
			
		||||
 226 0308 60635309 	   ori         r3,r3,MAGIC@l
 | 
			
		||||
 227              	
 | 
			
		||||
 228 030c 48000000 	   b           tst_done
 | 
			
		||||
 229              	
 | 
			
		||||
 230              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 231 0310 60000000 	.align 5
 | 
			
		||||
 231      60000000 
 | 
			
		||||
 231      60000000 
 | 
			
		||||
 231      60000000 
 | 
			
		||||
 232              	tst_results:
 | 
			
		||||
 233              	
 | 
			
		||||
 234 0320 FFFFFFFF 	rslt_r0:       .int 0xFFFFFFFF
 | 
			
		||||
 235 0324 FFFFFFFF 	rslt_r1:       .int 0xFFFFFFFF
 | 
			
		||||
 236 0328 FFFFFFFF 	rslt_r2:       .int 0xFFFFFFFF
 | 
			
		||||
 237 032c FFFFFFFF 	rslt_r3:       .int 0xFFFFFFFF
 | 
			
		||||
 238 0330 FFFFFFFF 	rslt_r4:       .int 0xFFFFFFFF
 | 
			
		||||
 239 0334 FFFFFFFF 	rslt_r5:       .int 0xFFFFFFFF
 | 
			
		||||
 240 0338 FFFFFFFF 	rslt_r6:       .int 0xFFFFFFFF
 | 
			
		||||
 241 033c FFFFFFFF 	rslt_r7:       .int 0xFFFFFFFF
 | 
			
		||||
 242 0340 FFFFFFFF 	rslt_r8:       .int 0xFFFFFFFF
 | 
			
		||||
 243 0344 FFFFFFFF 	rslt_r9:       .int 0xFFFFFFFF
 | 
			
		||||
 244 0348 FFFFFFFF 	rslt_r10:      .int 0xFFFFFFFF
 | 
			
		||||
 245 034c FFFFFFFF 	rslt_r11:      .int 0xFFFFFFFF
 | 
			
		||||
 246 0350 FFFFFFFF 	rslt_r12:      .int 0xFFFFFFFF
 | 
			
		||||
 247 0354 FFFFFFFF 	rslt_r13:      .int 0xFFFFFFFF
 | 
			
		||||
 248 0358 FFFFFFFF 	rslt_r14:      .int 0xFFFFFFFF
 | 
			
		||||
 249 035c FFFFFFFF 	rslt_r15:      .int 0xFFFFFFFF
 | 
			
		||||
 250 0360 FFFFFFFF 	rslt_r16:      .int 0xFFFFFFFF
 | 
			
		||||
 251 0364 FFFFFFFF 	rslt_r17:      .int 0xFFFFFFFF
 | 
			
		||||
 252 0368 FFFFFFFF 	rslt_r18:      .int 0xFFFFFFFF
 | 
			
		||||
 253 036c FFFFFFFF 	rslt_r19:      .int 0xFFFFFFFF
 | 
			
		||||
 254 0370 FFFFFFFF 	rslt_r20:      .int 0xFFFFFFFF
 | 
			
		||||
 255 0374 FFFFFFFF 	rslt_r21:      .int 0xFFFFFFFF
 | 
			
		||||
 256 0378 FFFFFFFF 	rslt_r22:      .int 0xFFFFFFFF
 | 
			
		||||
 257 037c FFFFFFFF 	rslt_r23:      .int 0xFFFFFFFF
 | 
			
		||||
 258 0380 FFFFFFFF 	rslt_r24:      .int 0xFFFFFFFF
 | 
			
		||||
 259 0384 FFFFFFFF 	rslt_r25:      .int 0xFFFFFFFF
 | 
			
		||||
 260 0388 FFFFFFFF 	rslt_r26:      .int 0xFFFFFFFF
 | 
			
		||||
 261 038c FFFFFFFF 	rslt_r27:      .int 0xFFFFFFFF
 | 
			
		||||
 262 0390 FFFFFFFF 	rslt_r28:      .int 0xFFFFFFFF
 | 
			
		||||
 263 0394 FFFFFFFF 	rslt_r29:      .int 0xFFFFFFFF
 | 
			
		||||
 264 0398 FFFFFFFF 	rslt_r30:      .int 0xFFFFFFFF
 | 
			
		||||
 265 039c FFFFFFFF 	rslt_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 266              	
 | 
			
		||||
 267 03a0 FFFFFFFF 	rslt_cr:       .int 0xFFFFFFFF
 | 
			
		||||
 268 03a4 FFFFFFFF 	rslt_xer:      .int 0xFFFFFFFF
 | 
			
		||||
 269 03a8 FFFFFFFF 	rslt_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
 270 03ac FFFFFFFF 	rslt_lr:       .int 0xFFFFFFFF
 | 
			
		||||
 271 03b0 FFFFFFFF 	rslt_tar:      .int 0xFFFFFFFF
 | 
			
		||||
 272              	
 | 
			
		||||
 273              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 274 03b4 60000000 	.align 5
 | 
			
		||||
 274      60000000 
 | 
			
		||||
 274      60000000 
 | 
			
		||||
 275              	tst_expects:
 | 
			
		||||
 276              	
 | 
			
		||||
 277 03c0 00000000 	expt_r0:       .int 0x00000000
 | 
			
		||||
 278 03c4 CD75F313 	expt_r1:       .int 0xCD75F313
 | 
			
		||||
 279 03c8 FFFFFFFF 	expt_r2:       .int 0xFFFFFFFF
 | 
			
		||||
 280 03cc 00000000 	expt_r3:       .int 0x00000000
 | 
			
		||||
 281 03d0 FFFFFFFF 	expt_r4:       .int 0xFFFFFFFF
 | 
			
		||||
 282 03d4 FFFFFFFF 	expt_r5:       .int 0xFFFFFFFF
 | 
			
		||||
 283 03d8 FFFFFFFF 	expt_r6:       .int 0xFFFFFFFF
 | 
			
		||||
 284 03dc FFFFFFFF 	expt_r7:       .int 0xFFFFFFFF
 | 
			
		||||
 285 03e0 FFFFFFFF 	expt_r8:       .int 0xFFFFFFFF
 | 
			
		||||
 286 03e4 008A0C68 	expt_r9:       .int 0x008A0C68
 | 
			
		||||
 287 03e8 FFFFFFFF 	expt_r10:      .int 0xFFFFFFFF
 | 
			
		||||
 288 03ec 7FFFFFFF 	expt_r11:      .int 0x7FFFFFFF
 | 
			
		||||
 289 03f0 FFFFFFFF 	expt_r12:      .int 0xFFFFFFFF
 | 
			
		||||
 290 03f4 FFFFFFFF 	expt_r13:      .int 0xFFFFFFFF
 | 
			
		||||
 291 03f8 8C20BDE6 	expt_r14:      .int 0x8C20BDE6
 | 
			
		||||
 292 03fc FFFFFFFF 	expt_r15:      .int 0xFFFFFFFF
 | 
			
		||||
 293 0400 08AEBF68 	expt_r16:      .int 0x08AEBF68
 | 
			
		||||
 294 0404 80000001 	expt_r17:      .int 0x80000001
 | 
			
		||||
 295 0408 FFFFFFFF 	expt_r18:      .int 0xFFFFFFFF
 | 
			
		||||
 296 040c 00000000 	expt_r19:      .int 0x00000000
 | 
			
		||||
 297 0410 FFFFFFFF 	expt_r20:      .int 0xFFFFFFFF
 | 
			
		||||
 298 0414 FFFFFFFF 	expt_r21:      .int 0xFFFFFFFF
 | 
			
		||||
 299 0418 328A0CED 	expt_r22:      .int 0x328A0CED
 | 
			
		||||
 300 041c FFFFFFFF 	expt_r23:      .int 0xFFFFFFFF
 | 
			
		||||
 301 0420 FFFFFFFF 	expt_r24:      .int 0xFFFFFFFF
 | 
			
		||||
 302 0424 AF224C19 	expt_r25:      .int 0xAF224C19
 | 
			
		||||
 303 0428 FFFFFFFF 	expt_r26:      .int 0xFFFFFFFF
 | 
			
		||||
 304 042c FFFFFFFF 	expt_r27:      .int 0xFFFFFFFF
 | 
			
		||||
 305 0430 D624B27A 	expt_r28:      .int 0xD624B27A
 | 
			
		||||
 306 0434 FFFFFFFF 	expt_r29:      .int 0xFFFFFFFF
 | 
			
		||||
 307 0438 FFFFFFFF 	expt_r30:      .int 0xFFFFFFFF
 | 
			
		||||
 308 043c FFFFFFFF 	expt_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 309              	
 | 
			
		||||
 310 0440 9BFD3628 	expt_cr:       .int 0x9BFD3628
 | 
			
		||||
 311 0444 98F0006E 	expt_xer:      .int 0x98F0006E
 | 
			
		||||
 312 0448 FFFFFFFF 	expt_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
 313 044c FFFFFFFF 	expt_lr:       .int 0xFFFFFFFF
 | 
			
		||||
 314 0450 FFFFFFFF 	expt_tar:      .int 0xFFFFFFFF
 | 
			
		||||
 315 0454 00001104 	expt_msr:      .int 0x00001104
 | 
			
		||||
 316              	
 | 
			
		||||
 317 0458 00010038 	expt_iar:      .int 0x00010038
 | 
			
		||||
 318              	
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,318 @@
 | 
			
		||||
# asmtst.tpl
 | 
			
		||||
 | 
			
		||||
.include "defines.s"
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
# c-accessible
 | 
			
		||||
 | 
			
		||||
.global init_tst
 | 
			
		||||
.global tst_start
 | 
			
		||||
.global tst_end
 | 
			
		||||
.global tst_inits
 | 
			
		||||
.global tst_results
 | 
			
		||||
.global tst_expects
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
tst_misc:
 | 
			
		||||
 | 
			
		||||
tst_info:      .asciz "info text"
 | 
			
		||||
tst_header:    .asciz "header text"
 | 
			
		||||
 | 
			
		||||
.set SAVESPR,tar
 | 
			
		||||
.set MAGIC,0x8675309
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
tst_inits:
 | 
			
		||||
 | 
			
		||||
init_r0:       .int 0x00000000
 | 
			
		||||
init_r1:       .int 0x5822C905
 | 
			
		||||
init_r2:       .int 0xFFFFFFFF
 | 
			
		||||
init_r3:       .int 0x91B6D1A3
 | 
			
		||||
init_r4:       .int 0xFFFFFFFF
 | 
			
		||||
init_r5:       .int 0xFFFFFFFF
 | 
			
		||||
init_r6:       .int 0xFFFFFFFF
 | 
			
		||||
init_r7:       .int 0xFFFFFFFF
 | 
			
		||||
init_r8:       .int 0xFFFFFFFF
 | 
			
		||||
init_r9:       .int 0x7E11EE88
 | 
			
		||||
init_r10:      .int 0xFFFFFFFF
 | 
			
		||||
init_r11:      .int 0x7FFFFFFF
 | 
			
		||||
init_r12:      .int 0xFFFFFFFF
 | 
			
		||||
init_r13:      .int 0xFFFFFFFF
 | 
			
		||||
init_r14:      .int 0x8C20BDE6
 | 
			
		||||
init_r15:      .int 0xFFFFFFFF
 | 
			
		||||
init_r16:      .int 0x76D0DADF
 | 
			
		||||
init_r17:      .int 0x15111F42
 | 
			
		||||
init_r18:      .int 0xFFFFFFFF
 | 
			
		||||
init_r19:      .int 0x36108E50
 | 
			
		||||
init_r20:      .int 0xFFFFFFFF
 | 
			
		||||
init_r21:      .int 0xFFFFFFFF
 | 
			
		||||
init_r22:      .int 0x328A0CED
 | 
			
		||||
init_r23:      .int 0xFFFFFFFF
 | 
			
		||||
init_r24:      .int 0xFFFFFFFF
 | 
			
		||||
init_r25:      .int 0xAF224C19
 | 
			
		||||
init_r26:      .int 0xFFFFFFFF
 | 
			
		||||
init_r27:      .int 0xFFFFFFFF
 | 
			
		||||
init_r28:      .int 0xD624B27A
 | 
			
		||||
init_r29:      .int 0xFFFFFFFF
 | 
			
		||||
init_r30:      .int 0xFFFFFFFF
 | 
			
		||||
init_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
init_cr:       .int 0xDBFD3628
 | 
			
		||||
init_xer:      .int 0x89F0006E
 | 
			
		||||
init_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
init_lr:       .int 0xFFFFFFFF
 | 
			
		||||
init_tar:      .int 0xFFFFFFFF
 | 
			
		||||
init_msr:      .int 0x00001104
 | 
			
		||||
 | 
			
		||||
init_iar:      .int 0x00010000
 | 
			
		||||
 | 
			
		||||
save_r1:       .int 0
 | 
			
		||||
 | 
			
		||||
codelen:       .int 13
 | 
			
		||||
ops:           .int 0x7C61CC14,0x7D230595,0x7AC37392,0x7E094C11,0x7E1CB115,0x7A338886,0x7C6004D1,0x7E09B038,0x7C360591,0x7E2B00D1,0x60000000,0x60000000,0x60000000
 | 
			
		||||
iars:          .int 0x00010000,0x00010004,0x00010008,0x0001000C,0x00010010,0x00010014,0x00010018,0x0001001C,0x00010020,0x00010024,0x00010028,0x0001002C,0x00010030
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
# r3=@tst_inits
 | 
			
		||||
.align 5
 | 
			
		||||
init_tst:
 | 
			
		||||
 | 
			
		||||
# save c stuff
 | 
			
		||||
   stw         r1,(save_r1-tst_inits)(r3)
 | 
			
		||||
 | 
			
		||||
# copy ops
 | 
			
		||||
opcopy:
 | 
			
		||||
   lwz         r1,(codelen-tst_inits)(r3)
 | 
			
		||||
   mtctr       r1
 | 
			
		||||
   la          r1,(ops-tst_inits)(r3)              # @ ops list
 | 
			
		||||
   la          r2,(iars-tst_inits)(r3)             # @ iars list
 | 
			
		||||
opcopy_loop:
 | 
			
		||||
   lwz         r4,0(r1)                            # next op
 | 
			
		||||
   lwz         r5,0(r2)                            # next iar
 | 
			
		||||
   stw         r4,0(r5)                            # store it
 | 
			
		||||
   addi        r1,r1,4                             # inc to next
 | 
			
		||||
   addi        r2,r2,4
 | 
			
		||||
   bdnz        opcopy_loop
 | 
			
		||||
 | 
			
		||||
# add end of test op - could be done here or by builder
 | 
			
		||||
# ways to end:
 | 
			
		||||
#   ba <fixed_loc>      - avoid reloc, target op can then branch to tst_end
 | 
			
		||||
#   trap,sc,scv         - branch to tst_end in handler
 | 
			
		||||
#   attn, priv op, etc. -  "
 | 
			
		||||
# overwrite the last epilogue op to avoid any crossing
 | 
			
		||||
opcopy_eot:
 | 
			
		||||
   lis         r4,0x4800
 | 
			
		||||
   ori         r4,r4,0x0006         # ba 0x0004
 | 
			
		||||
   stw         r4,0(r5)
 | 
			
		||||
 | 
			
		||||
# get tst start
 | 
			
		||||
   lwz         r1,init_msr(r0)
 | 
			
		||||
   mtsrr1      r1
 | 
			
		||||
   lwz         r1,iars(r0)
 | 
			
		||||
   mtsrr0      r1
 | 
			
		||||
 | 
			
		||||
# init test regs
 | 
			
		||||
init_regs:
 | 
			
		||||
   lwz         r1,(init_cr-tst_inits)(r3)
 | 
			
		||||
   mtcr        r1
 | 
			
		||||
   lwz      r1,(init_xer-tst_inits)(r3)
 | 
			
		||||
   mtxer       r1
 | 
			
		||||
   lwz      r1,(init_ctr-tst_inits)(r3)
 | 
			
		||||
   mtctr       r1
 | 
			
		||||
   lwz      r1,(init_lr-tst_inits)(r3)
 | 
			
		||||
   mtlr        r1
 | 
			
		||||
   lwz      r1,(init_tar-tst_inits)(r3)
 | 
			
		||||
   mtspr       tar,r1
 | 
			
		||||
 | 
			
		||||
   lwz         r0,(init_r0-tst_inits)(r3)
 | 
			
		||||
   lwz         r1,(init_r1-tst_inits)(r3)
 | 
			
		||||
   lwz         r2,(init_r2-tst_inits)(r3)
 | 
			
		||||
   lwz         r4,(init_r4-tst_inits)(r3)
 | 
			
		||||
   lwz         r5,(init_r5-tst_inits)(r3)
 | 
			
		||||
   lwz         r6,(init_r6-tst_inits)(r3)
 | 
			
		||||
   lwz         r7,(init_r7-tst_inits)(r3)
 | 
			
		||||
   lwz         r8,(init_r8-tst_inits)(r3)
 | 
			
		||||
   lwz         r9,(init_r9-tst_inits)(r3)
 | 
			
		||||
   lwz         r10,(init_r10-tst_inits)(r3)
 | 
			
		||||
   lwz         r11,(init_r11-tst_inits)(r3)
 | 
			
		||||
   lwz         r12,(init_r12-tst_inits)(r3)
 | 
			
		||||
   lwz         r13,(init_r13-tst_inits)(r3)
 | 
			
		||||
   lwz         r14,(init_r14-tst_inits)(r3)
 | 
			
		||||
   lwz         r15,(init_r15-tst_inits)(r3)
 | 
			
		||||
   lwz         r16,(init_r16-tst_inits)(r3)
 | 
			
		||||
   lwz         r17,(init_r17-tst_inits)(r3)
 | 
			
		||||
   lwz         r18,(init_r18-tst_inits)(r3)
 | 
			
		||||
   lwz         r19,(init_r19-tst_inits)(r3)
 | 
			
		||||
   lwz         r20,(init_r20-tst_inits)(r3)
 | 
			
		||||
   lwz         r21,(init_r21-tst_inits)(r3)
 | 
			
		||||
   lwz         r22,(init_r22-tst_inits)(r3)
 | 
			
		||||
   lwz         r23,(init_r23-tst_inits)(r3)
 | 
			
		||||
   lwz         r24,(init_r24-tst_inits)(r3)
 | 
			
		||||
   lwz         r25,(init_r25-tst_inits)(r3)
 | 
			
		||||
   lwz         r26,(init_r26-tst_inits)(r3)
 | 
			
		||||
   lwz         r27,(init_r27-tst_inits)(r3)
 | 
			
		||||
   lwz         r28,(init_r28-tst_inits)(r3)
 | 
			
		||||
   lwz         r29,(init_r29-tst_inits)(r3)
 | 
			
		||||
   lwz         r30,(init_r30-tst_inits)(r3)
 | 
			
		||||
   lwz         r31,(init_r31-tst_inits)(r3)
 | 
			
		||||
   lwz         r3,(init_r3-tst_inits)(r3)
 | 
			
		||||
 | 
			
		||||
jmp2tst:
 | 
			
		||||
   #rfi
 | 
			
		||||
   #rfid
 | 
			
		||||
   ba 0x10000
 | 
			
		||||
 | 
			
		||||
tst_end:
 | 
			
		||||
   b           save_results
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
save_results:
 | 
			
		||||
# use a designated spr to save (sprgx, ...)
 | 
			
		||||
   mtspr       SAVESPR,r1
 | 
			
		||||
   lis         r1,tst_results@h
 | 
			
		||||
   ori         r1,r1,tst_results@l
 | 
			
		||||
   stw         r0,(rslt_r0-tst_results)(r1)
 | 
			
		||||
   stw         r2,(rslt_r2-tst_results)(r1)
 | 
			
		||||
   stw         r3,(rslt_r3-tst_results)(r1)
 | 
			
		||||
   stw         r4,(rslt_r4-tst_results)(r1)
 | 
			
		||||
   stw         r5,(rslt_r5-tst_results)(r1)
 | 
			
		||||
   stw         r6,(rslt_r6-tst_results)(r1)
 | 
			
		||||
   stw         r7,(rslt_r7-tst_results)(r1)
 | 
			
		||||
   stw         r8,(rslt_r8-tst_results)(r1)
 | 
			
		||||
   stw         r9,(rslt_r9-tst_results)(r1)
 | 
			
		||||
   stw         r10,(rslt_r10-tst_results)(r1)
 | 
			
		||||
   stw         r11,(rslt_r11-tst_results)(r1)
 | 
			
		||||
   stw         r12,(rslt_r12-tst_results)(r1)
 | 
			
		||||
   stw         r13,(rslt_r13-tst_results)(r1)
 | 
			
		||||
   stw         r14,(rslt_r14-tst_results)(r1)
 | 
			
		||||
   stw         r15,(rslt_r15-tst_results)(r1)
 | 
			
		||||
   stw         r16,(rslt_r16-tst_results)(r1)
 | 
			
		||||
   stw         r17,(rslt_r17-tst_results)(r1)
 | 
			
		||||
   stw         r18,(rslt_r18-tst_results)(r1)
 | 
			
		||||
   stw         r19,(rslt_r19-tst_results)(r1)
 | 
			
		||||
   stw         r20,(rslt_r20-tst_results)(r1)
 | 
			
		||||
   stw         r21,(rslt_r21-tst_results)(r1)
 | 
			
		||||
   stw         r22,(rslt_r22-tst_results)(r1)
 | 
			
		||||
   stw         r23,(rslt_r23-tst_results)(r1)
 | 
			
		||||
   stw         r24,(rslt_r24-tst_results)(r1)
 | 
			
		||||
   stw         r25,(rslt_r25-tst_results)(r1)
 | 
			
		||||
   stw         r26,(rslt_r26-tst_results)(r1)
 | 
			
		||||
   stw         r27,(rslt_r27-tst_results)(r1)
 | 
			
		||||
   stw         r28,(rslt_r28-tst_results)(r1)
 | 
			
		||||
   stw         r29,(rslt_r29-tst_results)(r1)
 | 
			
		||||
   stw         r30,(rslt_r30-tst_results)(r1)
 | 
			
		||||
   stw         r31,(rslt_r31-tst_results)(r1)
 | 
			
		||||
   mfspr       r2,SAVESPR
 | 
			
		||||
   stw         r2,(rslt_r1-tst_results)(r1)
 | 
			
		||||
   mfcr        r2
 | 
			
		||||
   stw         r2,(rslt_cr-tst_results)(r1)
 | 
			
		||||
   mfxer       r2
 | 
			
		||||
   stw         r2,(rslt_xer-tst_results)(r1)
 | 
			
		||||
   mfctr       r2
 | 
			
		||||
   stw         r2,(rslt_ctr-tst_results)(r1)
 | 
			
		||||
   mflr        r2
 | 
			
		||||
   stw         r2,(rslt_lr-tst_results)(r1)
 | 
			
		||||
   mfspr       r2,tar
 | 
			
		||||
   stw         r2,(rslt_tar-tst_results)(r1)
 | 
			
		||||
 | 
			
		||||
tst_cleanup:
 | 
			
		||||
# restore c stuff
 | 
			
		||||
   lis         r3,tst_inits@h
 | 
			
		||||
   ori         r3,r3,tst_inits@l
 | 
			
		||||
   lwz         r1,(save_r1-tst_inits)(r3)
 | 
			
		||||
   lis         r3,MAGIC@h
 | 
			
		||||
   ori         r3,r3,MAGIC@l
 | 
			
		||||
 | 
			
		||||
   b           tst_done
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
tst_results:
 | 
			
		||||
 | 
			
		||||
rslt_r0:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r1:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r2:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r3:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r4:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r5:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r6:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r7:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r8:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r9:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_r10:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r11:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r12:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r13:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r14:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r15:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r16:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r17:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r18:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r19:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r20:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r21:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r22:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r23:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r24:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r25:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r26:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r27:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r28:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r29:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r30:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
rslt_cr:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_xer:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
rslt_lr:       .int 0xFFFFFFFF
 | 
			
		||||
rslt_tar:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
# -------------------------------------------------------------------------------------------------
 | 
			
		||||
.align 5
 | 
			
		||||
tst_expects:
 | 
			
		||||
 | 
			
		||||
expt_r0:       .int 0x00000000
 | 
			
		||||
expt_r1:       .int 0xCD75F313
 | 
			
		||||
expt_r2:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r3:       .int 0x00000000
 | 
			
		||||
expt_r4:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r5:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r6:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r7:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r8:       .int 0xFFFFFFFF
 | 
			
		||||
expt_r9:       .int 0x008A0C68
 | 
			
		||||
expt_r10:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r11:      .int 0x7FFFFFFF
 | 
			
		||||
expt_r12:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r13:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r14:      .int 0x8C20BDE6
 | 
			
		||||
expt_r15:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r16:      .int 0x08AEBF68
 | 
			
		||||
expt_r17:      .int 0x80000001
 | 
			
		||||
expt_r18:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r19:      .int 0x00000000
 | 
			
		||||
expt_r20:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r21:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r22:      .int 0x328A0CED
 | 
			
		||||
expt_r23:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r24:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r25:      .int 0xAF224C19
 | 
			
		||||
expt_r26:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r27:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r28:      .int 0xD624B27A
 | 
			
		||||
expt_r29:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r30:      .int 0xFFFFFFFF
 | 
			
		||||
expt_r31:      .int 0xFFFFFFFF
 | 
			
		||||
 | 
			
		||||
expt_cr:       .int 0x9BFD3628
 | 
			
		||||
expt_xer:      .int 0x98F0006E
 | 
			
		||||
expt_ctr:      .int 0xFFFFFFFF
 | 
			
		||||
expt_lr:       .int 0xFFFFFFFF
 | 
			
		||||
expt_tar:      .int 0xFFFFFFFF
 | 
			
		||||
expt_msr:      .int 0x00001104
 | 
			
		||||
 | 
			
		||||
expt_iar:      .int 0x00010038
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
../bin
 | 
			
		||||
@ -0,0 +1,121 @@
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
#include "bios.h"
 | 
			
		||||
 | 
			
		||||
// arci stuff1
 | 
			
		||||
void tst_done(unsigned int rc);
 | 
			
		||||
unsigned int checkResult(unsigned int r, char* name);
 | 
			
		||||
// shouldn't need any of these if i use the .o from bios build???
 | 
			
		||||
//#include "generated/soc.h"
 | 
			
		||||
extern unsigned int tst_start;
 | 
			
		||||
extern unsigned int tst_end;
 | 
			
		||||
extern unsigned int tst_inits;
 | 
			
		||||
extern unsigned int tst_results;
 | 
			
		||||
extern unsigned int tst_expects;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main(int tid) {
 | 
			
		||||
   int *p;
 | 
			
		||||
   int *fdata = _fdata;
 | 
			
		||||
   unsigned int *inits = &tst_inits;
 | 
			
		||||
 | 
			
		||||
   if (tid != 0) {
 | 
			
		||||
      return -1;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   // r/w memory init
 | 
			
		||||
 | 
			
		||||
   // copy
 | 
			
		||||
   for (p = _fdata_rom; p < _edata_rom; p++){
 | 
			
		||||
      *(fdata++) = *p;
 | 
			
		||||
   }
 | 
			
		||||
   // zero
 | 
			
		||||
   for (p = _fbss; p < _ebss; p++) {
 | 
			
		||||
      *_fbss = 0;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   // core init
 | 
			
		||||
   set_epcr(0x03000000);                        // icm=gicm=1
 | 
			
		||||
   set_dec(0);
 | 
			
		||||
   set_tbh(0);
 | 
			
		||||
   set_tbl(0);
 | 
			
		||||
   set_tsr(0xFE000000);                         // mask: clear enw,wis,wrs,dis,fis,udis
 | 
			
		||||
   set_xucr0(get_xucr0() & 0x00000200);         // set tcs=0
 | 
			
		||||
   set_tsr(0);
 | 
			
		||||
   set_tcr(0);                                  // disable all timers
 | 
			
		||||
 | 
			
		||||
   // thread enable
 | 
			
		||||
   // set_tens(0x3);
 | 
			
		||||
 | 
			
		||||
   // run a .tst
 | 
			
		||||
   // danger! once r1 is whacked, any c code like bad int handler, etc. needs
 | 
			
		||||
   //  to make sure it has a safe stack for calls
 | 
			
		||||
   asm (
 | 
			
		||||
      "mr   3,%0\n"
 | 
			
		||||
      //"lis  4,init_tst@h\n"
 | 
			
		||||
      //"ori  4,4,init_tst@l\n"
 | 
			
		||||
      //"mtctr 4\n"
 | 
			
		||||
      //"bcctr\n"
 | 
			
		||||
      "b    init_tst\n"
 | 
			
		||||
      :                       // outputs
 | 
			
		||||
      : "r"(inits)            // inputs
 | 
			
		||||
      : "r3"                  // clobbers
 | 
			
		||||
   );
 | 
			
		||||
 | 
			
		||||
   while(1) {}
 | 
			
		||||
 | 
			
		||||
   return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define MAGIC 0x08675309
 | 
			
		||||
 | 
			
		||||
//void  __attribute__((noreturn)) tst_done(unsigned int rc) {
 | 
			
		||||
void tst_done(unsigned int rc) {
 | 
			
		||||
   unsigned int i, ok = 1, done = 0;
 | 
			
		||||
   /*
 | 
			
		||||
   char c;
 | 
			
		||||
   char name[10];
 | 
			
		||||
   unsigned int r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15;
 | 
			
		||||
   unsigned int cr, xer, ctr, lr, tar;
 | 
			
		||||
   unsigned int op, *cia;
 | 
			
		||||
   */
 | 
			
		||||
 | 
			
		||||
   if (rc != MAGIC) {
 | 
			
		||||
      ok = 0;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   // ops
 | 
			
		||||
 | 
			
		||||
   // cr, xer, ctr, lr, tar
 | 
			
		||||
   ok = ok && checkResult(32, "CR");
 | 
			
		||||
   ok = ok && checkResult(33, "XER");
 | 
			
		||||
   ok = ok && checkResult(34, "CTR");
 | 
			
		||||
   ok = ok && checkResult(35, "LR");
 | 
			
		||||
   ok = ok && checkResult(36, "TAR");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
unsigned int checkResult(unsigned int r, char* name) {
 | 
			
		||||
   unsigned int init, act, exp, ok = 1;
 | 
			
		||||
 | 
			
		||||
   init = *(&tst_inits + r);
 | 
			
		||||
   act = *(&tst_results + r);
 | 
			
		||||
   exp = *(&tst_expects + r);
 | 
			
		||||
 | 
			
		||||
   ok = act != exp;
 | 
			
		||||
 | 
			
		||||
   return ok;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// these are branched to!
 | 
			
		||||
void int_sc(int code, int srr0) {
 | 
			
		||||
   asm (
 | 
			
		||||
      "b    tst_end\n"
 | 
			
		||||
      :                       // outputs
 | 
			
		||||
      :                       // inputs
 | 
			
		||||
      :                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void int_unhandled(void) {
 | 
			
		||||
   while(1) {}
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,123 @@
 | 
			
		||||
#ifndef BIOS_H
 | 
			
		||||
 | 
			
		||||
#define BIOS_H
 | 
			
		||||
 | 
			
		||||
extern int *_fdata_rom;
 | 
			
		||||
extern int *_edata_rom;
 | 
			
		||||
extern int *_fdata;
 | 
			
		||||
extern int *_fbss;
 | 
			
		||||
extern int *_ebss;
 | 
			
		||||
 | 
			
		||||
void int_sc(int code, int srr0);
 | 
			
		||||
void int_unhandled(void);
 | 
			
		||||
 | 
			
		||||
inline void set_epcr(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_dec(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_tbh(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_tbl(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_tsr(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_tcr(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_tens(int v) __attribute__((always_inline));
 | 
			
		||||
inline void set_xucr0(int v) __attribute__((always_inline));
 | 
			
		||||
inline int get_xucr0(void) __attribute__((always_inline));
 | 
			
		||||
 | 
			
		||||
inline void set_epcr(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 307,4\n"              // epcr
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_dec(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 22,4\n"               // dec
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_tbh(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 285,4\n"              // tbh
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_tbl(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 284,4\n"              // tbl
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_tsr(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 336,4\n"              // tsr
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_tcr(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 340,4\n"              // tcr
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline int get_xucr0(void) {
 | 
			
		||||
   int v;
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "mfspr %0,1014\n"            // xucr0
 | 
			
		||||
       : "=r"(v)                    // outputs
 | 
			
		||||
       :                            // inputs
 | 
			
		||||
       :                            // clobbers
 | 
			
		||||
   );
 | 
			
		||||
   return v;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_xucr0(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 1014,4\n"             // xucr0
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void set_tens(int v) {
 | 
			
		||||
   asm volatile(
 | 
			
		||||
       "lis  4,%0@h\n"
 | 
			
		||||
       "ori  4,4,%0@l\n"
 | 
			
		||||
       "mtspr 438,4\n"              // tens
 | 
			
		||||
       :                            // outputs
 | 
			
		||||
       : "r"(v)                     // inputs
 | 
			
		||||
       : "r4"                       // clobbers
 | 
			
		||||
   );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,356 @@
 | 
			
		||||
# © IBM Corp. 2022
 | 
			
		||||
# Licensed under and subject to the terms of the CC-BY 4.0
 | 
			
		||||
# license (https://creativecommons.org/licenses/by/4.0/legalcode).
 | 
			
		||||
# Additional rights, including the right to physically implement a softcore
 | 
			
		||||
# that is compliant with the required sections of the Power ISA
 | 
			
		||||
# Specification, will be available at no cost via the OpenPOWER Foundation.
 | 
			
		||||
# This README will be updated with additional information when OpenPOWER's
 | 
			
		||||
# license is available.
 | 
			
		||||
 | 
			
		||||
# boot kernel
 | 
			
		||||
#  resets to 32BE
 | 
			
		||||
#  set up translations for starting bios (inc. BE/LE)
 | 
			
		||||
#  copy modifiable rom data to ram - or do in bios?
 | 
			
		||||
#  set up msr for running bios (inc. 32/64)
 | 
			
		||||
#  jump to bios
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.include "defines.s"
 | 
			
		||||
 | 
			
		||||
.macro load32  rx,v
 | 
			
		||||
      li       \rx,0
 | 
			
		||||
      oris     \rx,\rx,\v>>16
 | 
			
		||||
      ori      \rx,\rx,\v&0x0000FFFF
 | 
			
		||||
.endm
 | 
			
		||||
 | 
			
		||||
.macro load16swiz rx,v
 | 
			
		||||
      li       \rx,0
 | 
			
		||||
      ori      \rx,\rx,(\v<<8)&0xFF00
 | 
			
		||||
      ori      \rx,\rx,(\v>>8)&0x00FF
 | 
			
		||||
.endm
 | 
			
		||||
 | 
			
		||||
# constants from linker script, or defsym
 | 
			
		||||
 | 
			
		||||
.ifdef BIOS_32
 | 
			
		||||
# sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
 | 
			
		||||
.set BIOS_MSR,0x0002B000
 | 
			
		||||
.else
 | 
			
		||||
# sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
 | 
			
		||||
.set BIOS_MSR,0x8002B000
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
 # erat w2 (test)   # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
 | 
			
		||||
.ifdef BIOS_LE
 | 
			
		||||
.set BIOS_ERATW2,0x000000BF
 | 
			
		||||
.else
 | 
			
		||||
.set BIOS_ERATW2,0x0000003F
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
# bios might be able to use one stack during thread startup if careful
 | 
			
		||||
.ifndef BIOS_STACK_0
 | 
			
		||||
.set BIOS_STACK_0,_stack_0
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
.ifndef BIOS_STACK_1
 | 
			
		||||
.set BIOS_STACK_1,_stack_1
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
.ifndef BIOS_START
 | 
			
		||||
.set BIOS_START,0x00010000
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
.section .text
 | 
			
		||||
 | 
			
		||||
.global _start
 | 
			
		||||
 | 
			
		||||
.org 0x000
 | 
			
		||||
_start:
 | 
			
		||||
int_000:
 | 
			
		||||
      b         boot_start
 | 
			
		||||
 | 
			
		||||
.ifdef TST_END
 | 
			
		||||
      b         tst_end
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
# critical input
 | 
			
		||||
.org 0x020
 | 
			
		||||
int_020:
 | 
			
		||||
.ifdef INT_UNHANDLED
 | 
			
		||||
      b         int_unhandled
 | 
			
		||||
.else
 | 
			
		||||
      b         .
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
# debug
 | 
			
		||||
.org 0x040
 | 
			
		||||
int_040:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# dsi
 | 
			
		||||
.org 0x060
 | 
			
		||||
int_060:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# isi
 | 
			
		||||
.org 0x080
 | 
			
		||||
int_080:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# external
 | 
			
		||||
.org 0x0A0
 | 
			
		||||
int_0A0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# alignment
 | 
			
		||||
.org 0x0C0
 | 
			
		||||
int_0C0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# program
 | 
			
		||||
.org 0x0E0
 | 
			
		||||
int_0E0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# fp unavailable
 | 
			
		||||
.org 0x100
 | 
			
		||||
int_100:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# sc
 | 
			
		||||
.org 0x120
 | 
			
		||||
int_120:
 | 
			
		||||
.ifdef INT_SC
 | 
			
		||||
      # lev is in 20:26, but supposed to use scv now
 | 
			
		||||
      li        r3,0
 | 
			
		||||
      mfsrr0    r4
 | 
			
		||||
      b         int_sc
 | 
			
		||||
.else
 | 
			
		||||
.ifdef INT_UNHANDLED
 | 
			
		||||
      b         int_unhandled
 | 
			
		||||
.else
 | 
			
		||||
      b         .
 | 
			
		||||
.endif
 | 
			
		||||
.endif
 | 
			
		||||
 | 
			
		||||
# apu unavailable
 | 
			
		||||
.org 0x140
 | 
			
		||||
int_140:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# decrementer
 | 
			
		||||
.org 0x160
 | 
			
		||||
int_160:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# fit
 | 
			
		||||
.org 0x180
 | 
			
		||||
int_180:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# watchdog
 | 
			
		||||
.org 0x1A0
 | 
			
		||||
int_1A0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# dtlb
 | 
			
		||||
.org 0x1C0
 | 
			
		||||
int_1C0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# itlb
 | 
			
		||||
.org 0x1E0
 | 
			
		||||
int_1E0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# vector unavailable
 | 
			
		||||
.org 0x200
 | 
			
		||||
int_200:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
.org 0x220
 | 
			
		||||
int_220:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
.org 0x240
 | 
			
		||||
int_240:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
.org 0x260
 | 
			
		||||
int_260:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# doorbell
 | 
			
		||||
.org 0x280
 | 
			
		||||
int_280:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# doorbell critical
 | 
			
		||||
.org 0x2A0
 | 
			
		||||
int_2A0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# doorbell guest
 | 
			
		||||
.org 0x2C0
 | 
			
		||||
int_2C0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# doorbell guest critical
 | 
			
		||||
.org 0x2E0
 | 
			
		||||
int_2E0:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# hvsc
 | 
			
		||||
.org 0x300
 | 
			
		||||
int_300:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# hvpriv
 | 
			
		||||
.org 0x320
 | 
			
		||||
int_320:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# lrat
 | 
			
		||||
.org 0x340
 | 
			
		||||
int_340:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# ------------------------------------------------------------------------------------------------------------------------------
 | 
			
		||||
# initial translation
 | 
			
		||||
# both erats:
 | 
			
		||||
# 00000000 64K: (rom, BE)
 | 
			
		||||
# 00010000 64K: (ram, BE or LE)
 | 
			
		||||
#
 | 
			
		||||
.org 0x400
 | 
			
		||||
boot_start:
 | 
			
		||||
 | 
			
		||||
      mfspr     r5,tir           # who am i?
 | 
			
		||||
      cmpdi     r5,0x00          # skip unless T0
 | 
			
		||||
      bne       init_t123
 | 
			
		||||
 | 
			
		||||
      lis       r3,0x8C00        # 32=ecl 36:37=tlbsel (10=i, 11=d)
 | 
			
		||||
 | 
			
		||||
# derat 31 @00000000
 | 
			
		||||
      li        r0,0x001F        # entry #31
 | 
			
		||||
      li        r2,0x0015        # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
 | 
			
		||||
      li        r4,0             # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
      li        r8,0x023F        # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G
 | 
			
		||||
 | 
			
		||||
      mtspr     mmucr0,r3
 | 
			
		||||
      eratwe    r2,r0,2
 | 
			
		||||
      eratwe    r4,r0,1
 | 
			
		||||
      eratwe    r8,r0,0
 | 
			
		||||
      isync
 | 
			
		||||
 | 
			
		||||
      load32    r10,BIOS_ERATW2  # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
 | 
			
		||||
 | 
			
		||||
# derat 30  @<BIOS_START>
 | 
			
		||||
      li        r0,0x001E        # entry #30
 | 
			
		||||
      load32    r4,BIOS_START    # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
      load32    r8,BIOS_START
 | 
			
		||||
      ori       r8,r8,0x023F     # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G
 | 
			
		||||
 | 
			
		||||
      eratwe    r10,r0,2
 | 
			
		||||
      eratwe    r4,r0,1
 | 
			
		||||
      eratwe    r8,r0,0
 | 
			
		||||
      isync
 | 
			
		||||
 | 
			
		||||
      lis       r3,0x8800        # 32=ecl 36:37=tlbsel (10=i, 11=d)
 | 
			
		||||
 | 
			
		||||
# ierat 15  @00000000
 | 
			
		||||
      li        r0,0x000F        # entry #15
 | 
			
		||||
      li        r2,0x003F        # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/sw=60:61 ur/sr=62:63
 | 
			
		||||
      li        r4,0             # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
      li        r8,0x023F        # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G
 | 
			
		||||
 | 
			
		||||
      mtspr     mmucr0,r3
 | 
			
		||||
      eratwe    r2,r0,2
 | 
			
		||||
      eratwe    r4,r0,1
 | 
			
		||||
      eratwe    r8,r0,0
 | 
			
		||||
      isync
 | 
			
		||||
 | 
			
		||||
 # *** leave the init'd entry 14 for MT access to FFFFFFC0
 | 
			
		||||
 # ierat 13  @<BIOS_START>
 | 
			
		||||
      li        r0,0x000D        # entry #13
 | 
			
		||||
      load32    r4,BIOS_START    # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
      load32    r8,BIOS_START
 | 
			
		||||
      ori       r8,r8,0x023F     # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   size: 0001=4K 0011=64K 0101=1M 0111=16M 1010=1G
 | 
			
		||||
 | 
			
		||||
      eratwe    r10,r0,2
 | 
			
		||||
      eratwe    r4,r0,1
 | 
			
		||||
      eratwe    r8,r0,0
 | 
			
		||||
      isync
 | 
			
		||||
 | 
			
		||||
      b         init_t0
 | 
			
		||||
 | 
			
		||||
# ------------------------------------------------------------------------------------------------------------------------------
 | 
			
		||||
# init
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# T0
 | 
			
		||||
 | 
			
		||||
init_t0:
 | 
			
		||||
 | 
			
		||||
# set up BIOS msr
 | 
			
		||||
 | 
			
		||||
      load32    r10,BIOS_MSR
 | 
			
		||||
      mtmsr     r10
 | 
			
		||||
      isync
 | 
			
		||||
# can't use load32 unless you can .set BIOS_STACK_0 to the linked value
 | 
			
		||||
#      load32    r1,BIOS_STACK_0  # @stack_0
 | 
			
		||||
# this ignores def
 | 
			
		||||
#      lis        r1,_stack_0@h
 | 
			
		||||
#      ori        r1,r1,_stack_0@l
 | 
			
		||||
# this requires data load
 | 
			
		||||
      lwz       r1,stack_0(r0)
 | 
			
		||||
 | 
			
		||||
      b         boot_complete
 | 
			
		||||
 | 
			
		||||
# except T0
 | 
			
		||||
 | 
			
		||||
init_t123:
 | 
			
		||||
 | 
			
		||||
# set up BIOS msr
 | 
			
		||||
 | 
			
		||||
      load32    r10,BIOS_MSR
 | 
			
		||||
      mtmsr     r10
 | 
			
		||||
      isync
 | 
			
		||||
      # check tir if more than 2 threads possible
 | 
			
		||||
      lwz       r1,stack_1(r0)
 | 
			
		||||
 | 
			
		||||
      b         boot_complete
 | 
			
		||||
 | 
			
		||||
# ------------------------------------------------------------------------------------------------------------------------------
 | 
			
		||||
boot_complete:
 | 
			
		||||
 | 
			
		||||
# set up thread and hop to it
 | 
			
		||||
 | 
			
		||||
      lis       r3,main@h
 | 
			
		||||
      ori       r3,r3,main@l
 | 
			
		||||
      mtctr     r3
 | 
			
		||||
      mfspr     r3,tir           # who am i?
 | 
			
		||||
      bctrl
 | 
			
		||||
      b         kernel_return
 | 
			
		||||
 | 
			
		||||
# ------------------------------------------------------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
.org 0x7FC
 | 
			
		||||
kernel_return:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# dec
 | 
			
		||||
.org 0x800
 | 
			
		||||
int_800:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
# perf
 | 
			
		||||
.org 0x820
 | 
			
		||||
int_820:
 | 
			
		||||
      b         .
 | 
			
		||||
 | 
			
		||||
.org 0x8F0
 | 
			
		||||
.section .rodata
 | 
			
		||||
stack_0:        .long BIOS_STACK_0
 | 
			
		||||
stack_1:        .long BIOS_STACK_1
 | 
			
		||||
@ -0,0 +1,93 @@
 | 
			
		||||
#!/usr/bin/bash
 | 
			
		||||
 | 
			
		||||
export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
 | 
			
		||||
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"
 | 
			
		||||
 | 
			
		||||
# defines
 | 
			
		||||
 | 
			
		||||
## define vars to init rom with csr's it uses...
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
#csr_base=`grep '#define CSR_BASE' generated/csr.h | cut -d ' ' -f 3 | cut -c 1-6`
 | 
			
		||||
#uart_base=`grep 'CSR_UART_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
 | 
			
		||||
#UART_ADDR="${csr_base}${uart_base}"
 | 
			
		||||
#defsyms="-defsym $UART_ADDR"
 | 
			
		||||
#
 | 
			
		||||
#uart_base=`grep 'CSR_UART_1_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
 | 
			
		||||
#if [[ "$uart_base" != "" ]] ; then
 | 
			
		||||
#   UART_1_ADDR="${csr_base}${uart_base}"
 | 
			
		||||
#   defsyms="$defsyms -defsym $UART_1_ADDR"
 | 
			
		||||
#fi
 | 
			
		||||
#
 | 
			
		||||
#uart_base=`grep 'CSR_UART_2_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
 | 
			
		||||
#if [[ "$uart_base" != "" ]] ; then
 | 
			
		||||
#   UART_2_ADDR="${csr_base}${uart_base}"
 | 
			
		||||
#   defsyms="$defsyms -defsym $UART_2_ADDR"
 | 
			
		||||
#fi
 | 
			
		||||
#
 | 
			
		||||
#leds_base=`grep 'CSR_LEDS_BASE' generated/csr.h | cut -d ' ' -f 5 | cut -c 3-6`
 | 
			
		||||
#if [[ "$leds_base" != "" ]] ; then
 | 
			
		||||
#   LEDS_ADDR="${csr_base}${leds_base}"
 | 
			
		||||
#   defsyms="$defsyms -defsym $LEDS_ADDR"
 | 
			
		||||
#fi
 | 
			
		||||
#
 | 
			
		||||
#echo "CSR Addresses"
 | 
			
		||||
#echo "Console UART: ${UART_ADDR}"
 | 
			
		||||
#echo "        LEDS: ${LEDS_ADDR}"
 | 
			
		||||
#echo "      UART_1: ${UART_1_ADDR}"
 | 
			
		||||
#echo "      UART_2: ${UART_1_ADDR}"
 | 
			
		||||
 | 
			
		||||
# a2o nanokernel
 | 
			
		||||
 | 
			
		||||
echo -n "Compiling..."
 | 
			
		||||
 | 
			
		||||
echo -n "boot.s "
 | 
			
		||||
#powerpc-linux-gnu-as -mbig-endian -ma2 -defsym INT_SC=1 -defsym INT_UNHANDLED=1 -I. boot.s -ahlnd -o crt0.o > crt0.lst
 | 
			
		||||
powerpc-linux-gnu-as -mbig-endian -ma2 -defsym TST_END=1 -defsym INT_UNHANDLED=1 -I. boot.s -ahlnd -o crt0.o > crt0.lst
 | 
			
		||||
 | 
			
		||||
if [ $? -ne 0 ]; then
 | 
			
		||||
   exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo -n "arcitst.s "
 | 
			
		||||
#powerpc-linux-gnu-as -defsym UART_ADDR=$UART_ADDR -defsym LEDS_ADDR=$LEDS_ADDR -defsym UNHANDLED=1 -mbig-endian -mpower9 -I./asm asm/cmod7-boot.s -ahlnd -o crt0.o > crt0.lst
 | 
			
		||||
powerpc-linux-gnu-as -mbig-endian -ma2 -I. arcitst.s -ahlnd -o arcitst.o > arcitst.lst
 | 
			
		||||
if [ $? -ne 0 ]; then
 | 
			
		||||
   exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo ""
 | 
			
		||||
echo -n "bios.c "
 | 
			
		||||
powerpc-linux-gnu-gcc -c -I. $CFLAGS bios.c
 | 
			
		||||
 | 
			
		||||
echo ""
 | 
			
		||||
echo "Linking..."
 | 
			
		||||
powerpc-linux-gnu-ld -nostdlib -nodefaultlibs -T linker.ld crt0.o bios.o arcitst.o -o rom
 | 
			
		||||
if [ $? -ne 0 ]; then
 | 
			
		||||
   exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
powerpc-linux-gnu-objdump -d rom > rom.d #wtf: why not getting labels in asm code?
 | 
			
		||||
powerpc-linux-gnu-objdump -s rom > rom.s
 | 
			
		||||
#powerpc-linux-gnu-objcopy --change-section-lma .bios=0x10000 -O binary rom rom.bin
 | 
			
		||||
powerpc-linux-gnu-objcopy -O binary rom rom.bin
 | 
			
		||||
 | 
			
		||||
#python3 -m litex.soc.software.memusage rom ./generated/regions.ld powerpc-linux-gnu
 | 
			
		||||
 | 
			
		||||
# make rom.bin.hex
 | 
			
		||||
bin/bin2init rom.bin
 | 
			
		||||
mv rom.bin.hex rom.init
 | 
			
		||||
 | 
			
		||||
echo "Built rom.d, rom.s, rom.init."
 | 
			
		||||
 | 
			
		||||
romsize=`grep rom regions.ld |  cut -d " " -f 8 | cut -c 3-10`
 | 
			
		||||
 | 
			
		||||
echo "Hardware ROM Size $romsize"
 | 
			
		||||
#echo ""
 | 
			
		||||
#echo "CSR Addresses"
 | 
			
		||||
#echo "Console UART: ${UART_ADDR}"
 | 
			
		||||
#echo "        LEDS: ${LEDS_ADDR}"
 | 
			
		||||
#echo "      UART_1: ${UART_1_ADDR}"
 | 
			
		||||
#echo "      UART_2: ${UART_2_ADDR}"
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								| 
		 After Width: | Height: | Size: 2.7 MiB  | 
@ -0,0 +1,640 @@
 | 
			
		||||
   1              	# © IBM Corp. 2022
 | 
			
		||||
   2              	# Licensed under and subject to the terms of the CC-BY 4.0
 | 
			
		||||
   3              	# license (https://creativecommons.org/licenses/by/4.0/legalcode).
 | 
			
		||||
   4              	# Additional rights, including the right to physically implement a softcore
 | 
			
		||||
   5              	# that is compliant with the required sections of the Power ISA
 | 
			
		||||
   6              	# Specification, will be available at no cost via the OpenPOWER Foundation.
 | 
			
		||||
   7              	# This README will be updated with additional information when OpenPOWER's
 | 
			
		||||
   8              	# license is available.
 | 
			
		||||
   9              	
 | 
			
		||||
  10              	# boot kernel
 | 
			
		||||
  11              	#  resets to 32BE
 | 
			
		||||
  12              	#  set up translations for starting bios (inc. BE/LE)
 | 
			
		||||
  13              	#  copy modifiable rom data to ram - or do in bios?
 | 
			
		||||
  14              	#  set up msr for running bios (inc. 32/64)
 | 
			
		||||
  15              	#  jump to bios
 | 
			
		||||
  16              	
 | 
			
		||||
  17              	
 | 
			
		||||
  18              	.include "defines.s"
 | 
			
		||||
   1              	# © IBM Corp. 2020
 | 
			
		||||
   2              	# Licensed under and subject to the terms of the CC-BY 4.0
 | 
			
		||||
   3              	# license (https://creativecommons.org/licenses/by/4.0/legalcode).
 | 
			
		||||
   4              	# Additional rights, including the right to physically implement a softcore
 | 
			
		||||
   5              	# that is compliant with the required sections of the Power ISA
 | 
			
		||||
   6              	# Specification, will be available at no cost via the OpenPOWER Foundation.
 | 
			
		||||
   7              	# This README will be updated with additional information when OpenPOWER's
 | 
			
		||||
   8              	# license is available.
 | 
			
		||||
   9              	
 | 
			
		||||
  10              	#-----------------------------------------
 | 
			
		||||
  11              	# Defines
 | 
			
		||||
  12              	#-----------------------------------------
 | 
			
		||||
  13              	
 | 
			
		||||
  14              	# Regs
 | 
			
		||||
  15              	
 | 
			
		||||
  16              	.set    r0,  0
 | 
			
		||||
  17              	.set    r1,  1
 | 
			
		||||
  18              	.set    r2,  2
 | 
			
		||||
  19              	.set    r3,  3
 | 
			
		||||
  20              	.set    r4,  4
 | 
			
		||||
  21              	.set    r5,  5
 | 
			
		||||
  22              	.set    r6,  6
 | 
			
		||||
  23              	.set    r7,  7
 | 
			
		||||
  24              	.set    r8,  8
 | 
			
		||||
  25              	.set    r9,  9
 | 
			
		||||
  26              	.set    r10,10
 | 
			
		||||
  27              	.set    r11,11
 | 
			
		||||
  28              	.set    r12,12
 | 
			
		||||
  29              	.set    r13,13
 | 
			
		||||
  30              	.set    r14,14
 | 
			
		||||
  31              	.set    r15,15
 | 
			
		||||
  32              	.set    r16,16
 | 
			
		||||
  33              	.set    r17,17
 | 
			
		||||
  34              	.set    r18,18
 | 
			
		||||
  35              	.set    r19,19
 | 
			
		||||
  36              	.set    r20,20
 | 
			
		||||
  37              	.set    r21,21
 | 
			
		||||
  38              	.set    r22,22
 | 
			
		||||
  39              	.set    r23,23
 | 
			
		||||
  40              	.set    r24,24
 | 
			
		||||
  41              	.set    r25,25
 | 
			
		||||
  42              	.set    r26,26
 | 
			
		||||
  43              	.set    r27,27
 | 
			
		||||
  44              	.set    r28,28
 | 
			
		||||
  45              	.set    r29,29
 | 
			
		||||
  46              	.set    r30,30
 | 
			
		||||
  47              	.set    r31,31
 | 
			
		||||
  48              	
 | 
			
		||||
  49              	.set    f0,  0
 | 
			
		||||
  50              	.set    f1,  1
 | 
			
		||||
  51              	.set    f2,  2
 | 
			
		||||
  52              	.set    f3,  3
 | 
			
		||||
  53              	.set    f4,  4
 | 
			
		||||
  54              	.set    f5,  5
 | 
			
		||||
  55              	.set    f6,  6
 | 
			
		||||
  56              	.set    f7,  7
 | 
			
		||||
  57              	.set    f8,  8
 | 
			
		||||
  58              	.set    f9,  9
 | 
			
		||||
  59              	.set    f10,10
 | 
			
		||||
  60              	.set    f11,11
 | 
			
		||||
  61              	.set    f12,12
 | 
			
		||||
  62              	.set    f13,13
 | 
			
		||||
  63              	.set    f14,14
 | 
			
		||||
  64              	.set    f15,15
 | 
			
		||||
  65              	.set    f16,16
 | 
			
		||||
  66              	.set    f17,17
 | 
			
		||||
  67              	.set    f18,18
 | 
			
		||||
  68              	.set    f19,19
 | 
			
		||||
  69              	.set    f20,20
 | 
			
		||||
  70              	.set    f21,21
 | 
			
		||||
  71              	.set    f22,22
 | 
			
		||||
  72              	.set    f23,23
 | 
			
		||||
  73              	.set    f24,24
 | 
			
		||||
  74              	.set    f25,25
 | 
			
		||||
  75              	.set    f26,26
 | 
			
		||||
  76              	.set    f27,27
 | 
			
		||||
  77              	.set    f28,28
 | 
			
		||||
  78              	.set    f29,29
 | 
			
		||||
  79              	.set    f30,30
 | 
			
		||||
  80              	.set    f31,31
 | 
			
		||||
  81              	
 | 
			
		||||
  82              	.set    cr0, 0
 | 
			
		||||
  83              	.set    cr1, 1
 | 
			
		||||
  84              	.set    cr2, 2
 | 
			
		||||
  85              	.set    cr3, 3
 | 
			
		||||
  86              	.set    cr4, 4
 | 
			
		||||
  87              	.set    cr5, 5
 | 
			
		||||
  88              	.set    cr6, 6
 | 
			
		||||
  89              	.set    cr7, 7
 | 
			
		||||
  90              	
 | 
			
		||||
  91              	# SPR numbers
 | 
			
		||||
  92              	
 | 
			
		||||
  93              	.set    srr0, 26
 | 
			
		||||
  94              	.set    srr1, 27
 | 
			
		||||
  95              	.set    dar, 19
 | 
			
		||||
  96              	.set    dsisr, 18
 | 
			
		||||
  97              	.set    epcr, 307
 | 
			
		||||
  98              	.set    tar, 815
 | 
			
		||||
  99              	
 | 
			
		||||
 100              	.set    dbsr, 304
 | 
			
		||||
 101              	.set    dbcr0, 308
 | 
			
		||||
 102              	.set    dbcr1, 309
 | 
			
		||||
 103              	.set    dbcr2, 310
 | 
			
		||||
 104              	.set    dbcr3, 848
 | 
			
		||||
 105              	
 | 
			
		||||
 106              	.set    ivpr, 63
 | 
			
		||||
 107              	
 | 
			
		||||
 108              	.set    iucr0, 1011
 | 
			
		||||
 109              	.set    iucr1, 883
 | 
			
		||||
 110              	.set    iucr2, 884
 | 
			
		||||
 111              	
 | 
			
		||||
 112              	.set    iudbg0, 888
 | 
			
		||||
 113              	.set    iudbg1, 889
 | 
			
		||||
 114              	.set    iudbg2, 890
 | 
			
		||||
 115              	.set    iulfsr, 891
 | 
			
		||||
 116              	.set    iullcr, 892
 | 
			
		||||
 117              	
 | 
			
		||||
 118              	.set    mmucr0, 1020
 | 
			
		||||
 119              	.set    mmucr1, 1021
 | 
			
		||||
 120              	.set    mmucr2, 1022
 | 
			
		||||
 121              	.set    mmucr3, 1023
 | 
			
		||||
 122              	
 | 
			
		||||
 123              	.set    tb, 268
 | 
			
		||||
 124              	.set    tbl, 284
 | 
			
		||||
 125              	.set    tbh, 285
 | 
			
		||||
 126              	
 | 
			
		||||
 127              	.set    dec, 22
 | 
			
		||||
 128              	.set    udec, 550
 | 
			
		||||
 129              	.set    tsr, 336
 | 
			
		||||
 130              	.set    tcr, 340
 | 
			
		||||
 131              	
 | 
			
		||||
 132              	.set    xucr0, 1014
 | 
			
		||||
 133              	.set    xucr1, 851
 | 
			
		||||
 134              	.set    xucr2, 1016
 | 
			
		||||
 135              	.set    xucr3, 852
 | 
			
		||||
 136              	.set    xucr4, 853
 | 
			
		||||
 137              	
 | 
			
		||||
 138              	.set    tens, 438
 | 
			
		||||
 139              	.set    tenc, 439
 | 
			
		||||
 140              	.set    tensr, 437
 | 
			
		||||
 141              	
 | 
			
		||||
 142              	.set    pid, 48
 | 
			
		||||
 143              	.set    pir, 286
 | 
			
		||||
 144              	.set    pvr, 287
 | 
			
		||||
 145              	.set    tir, 446
 | 
			
		||||
 146              	
 | 
			
		||||
 147              	#.set    sprg0,
 | 
			
		||||
 148              	#.set    sprg1,
 | 
			
		||||
 149              	#.set    sprg2,
 | 
			
		||||
 150              	.set    sprg3, 259
 | 
			
		||||
  19              	
 | 
			
		||||
  20              	.macro load32  rx,v
 | 
			
		||||
  21              	      li       \rx,0
 | 
			
		||||
  22              	      oris     \rx,\rx,\v>>16
 | 
			
		||||
  23              	      ori      \rx,\rx,\v&0x0000FFFF
 | 
			
		||||
  24              	.endm
 | 
			
		||||
  25              	
 | 
			
		||||
  26              	.macro load16swiz rx,v
 | 
			
		||||
  27              	      li       \rx,0
 | 
			
		||||
  28              	      ori      \rx,\rx,(\v<<8)&0xFF00
 | 
			
		||||
  29              	      ori      \rx,\rx,(\v>>8)&0x00FF
 | 
			
		||||
  30              	.endm
 | 
			
		||||
  31              	
 | 
			
		||||
  32              	# constants from linker script, or defsym
 | 
			
		||||
  33              	
 | 
			
		||||
  34              	.ifdef BIOS_32
 | 
			
		||||
  35              	# sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
 | 
			
		||||
  36              	.set BIOS_MSR,0x0002B000
 | 
			
		||||
  37              	.else
 | 
			
		||||
  38              	# sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
 | 
			
		||||
  39              	.set BIOS_MSR,0x8002B000
 | 
			
		||||
  40              	.endif
 | 
			
		||||
  41              	
 | 
			
		||||
  42              	 # erat w2 (test)   # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/sx=58:59 uw/s
 | 
			
		||||
  43              	.ifdef BIOS_LE
 | 
			
		||||
  44              	.set BIOS_ERATW2,0x000000BF
 | 
			
		||||
  45              	.else
 | 
			
		||||
  46              	.set BIOS_ERATW2,0x0000003F
 | 
			
		||||
  47              	.endif
 | 
			
		||||
  48              	
 | 
			
		||||
  49              	# bios might be able to use one stack during thread startup if careful
 | 
			
		||||
  50              	.ifndef BIOS_STACK_0
 | 
			
		||||
  51              	.set BIOS_STACK_0,_stack_0
 | 
			
		||||
  52              	.endif
 | 
			
		||||
  53              	
 | 
			
		||||
  54              	.ifndef BIOS_STACK_1
 | 
			
		||||
  55              	.set BIOS_STACK_1,_stack_1
 | 
			
		||||
  56              	.endif
 | 
			
		||||
  57              	
 | 
			
		||||
  58              	.ifndef BIOS_START
 | 
			
		||||
  59              	.set BIOS_START,0x00010000
 | 
			
		||||
  60              	.endif
 | 
			
		||||
  61              	
 | 
			
		||||
  62              	.section .text
 | 
			
		||||
  63              	
 | 
			
		||||
  64              	.global _start
 | 
			
		||||
  65              	
 | 
			
		||||
  66              	.org 0x000
 | 
			
		||||
  67              	_start:
 | 
			
		||||
  68              	int_000:
 | 
			
		||||
  69 0000 48000400 	      b         boot_start
 | 
			
		||||
  70              	
 | 
			
		||||
  71              	.ifdef TST_END
 | 
			
		||||
  72 0004 48000000 	      b         tst_end
 | 
			
		||||
  73              	.endif
 | 
			
		||||
  74              	
 | 
			
		||||
  75              	# critical input
 | 
			
		||||
  76 0008 00000000 	.org 0x020
 | 
			
		||||
  76      00000000 
 | 
			
		||||
  76      00000000 
 | 
			
		||||
  76      00000000 
 | 
			
		||||
  76      00000000 
 | 
			
		||||
  77              	int_020:
 | 
			
		||||
  78              	.ifdef INT_UNHANDLED
 | 
			
		||||
  79 0020 48000000 	      b         int_unhandled
 | 
			
		||||
  80              	.else
 | 
			
		||||
  81              	      b         .
 | 
			
		||||
  82              	.endif
 | 
			
		||||
  83              	
 | 
			
		||||
  84              	# debug
 | 
			
		||||
  85 0024 00000000 	.org 0x040
 | 
			
		||||
  85      00000000 
 | 
			
		||||
  85      00000000 
 | 
			
		||||
  85      00000000 
 | 
			
		||||
  85      00000000 
 | 
			
		||||
  86              	int_040:
 | 
			
		||||
  87 0040 48000000 	      b         .
 | 
			
		||||
  88              	
 | 
			
		||||
  89              	# dsi
 | 
			
		||||
  90 0044 00000000 	.org 0x060
 | 
			
		||||
  90      00000000 
 | 
			
		||||
  90      00000000 
 | 
			
		||||
  90      00000000 
 | 
			
		||||
  90      00000000 
 | 
			
		||||
  91              	int_060:
 | 
			
		||||
  92 0060 48000000 	      b         .
 | 
			
		||||
  93              	
 | 
			
		||||
  94              	# isi
 | 
			
		||||
  95 0064 00000000 	.org 0x080
 | 
			
		||||
  95      00000000 
 | 
			
		||||
  95      00000000 
 | 
			
		||||
  95      00000000 
 | 
			
		||||
  95      00000000 
 | 
			
		||||
  96              	int_080:
 | 
			
		||||
  97 0080 48000000 	      b         .
 | 
			
		||||
  98              	
 | 
			
		||||
  99              	# external
 | 
			
		||||
 100 0084 00000000 	.org 0x0A0
 | 
			
		||||
 100      00000000 
 | 
			
		||||
 100      00000000 
 | 
			
		||||
 100      00000000 
 | 
			
		||||
 100      00000000 
 | 
			
		||||
 101              	int_0A0:
 | 
			
		||||
 102 00a0 48000000 	      b         .
 | 
			
		||||
 103              	
 | 
			
		||||
 104              	# alignment
 | 
			
		||||
 105 00a4 00000000 	.org 0x0C0
 | 
			
		||||
 105      00000000 
 | 
			
		||||
 105      00000000 
 | 
			
		||||
 105      00000000 
 | 
			
		||||
 105      00000000 
 | 
			
		||||
 106              	int_0C0:
 | 
			
		||||
 107 00c0 48000000 	      b         .
 | 
			
		||||
 108              	
 | 
			
		||||
 109              	# program
 | 
			
		||||
 110 00c4 00000000 	.org 0x0E0
 | 
			
		||||
 110      00000000 
 | 
			
		||||
 110      00000000 
 | 
			
		||||
 110      00000000 
 | 
			
		||||
 110      00000000 
 | 
			
		||||
 111              	int_0E0:
 | 
			
		||||
 112 00e0 48000000 	      b         .
 | 
			
		||||
 113              	
 | 
			
		||||
 114              	# fp unavailable
 | 
			
		||||
 115 00e4 00000000 	.org 0x100
 | 
			
		||||
 115      00000000 
 | 
			
		||||
 115      00000000 
 | 
			
		||||
 115      00000000 
 | 
			
		||||
 115      00000000 
 | 
			
		||||
 116              	int_100:
 | 
			
		||||
 117 0100 48000000 	      b         .
 | 
			
		||||
 118              	
 | 
			
		||||
 119              	# sc
 | 
			
		||||
 120 0104 00000000 	.org 0x120
 | 
			
		||||
 120      00000000 
 | 
			
		||||
 120      00000000 
 | 
			
		||||
 120      00000000 
 | 
			
		||||
 120      00000000 
 | 
			
		||||
 121              	int_120:
 | 
			
		||||
 122              	.ifdef INT_SC
 | 
			
		||||
 123              	      # lev is in 20:26, but supposed to use scv now
 | 
			
		||||
 124              	      li        r3,0
 | 
			
		||||
 125              	      mfsrr0    r4
 | 
			
		||||
 126              	      b         int_sc
 | 
			
		||||
 127              	.else
 | 
			
		||||
 128              	.ifdef INT_UNHANDLED
 | 
			
		||||
 129 0120 48000000 	      b         int_unhandled
 | 
			
		||||
 130              	.else
 | 
			
		||||
 131              	      b         .
 | 
			
		||||
 132              	.endif
 | 
			
		||||
 133              	.endif
 | 
			
		||||
 134              	
 | 
			
		||||
 135              	# apu unavailable
 | 
			
		||||
 136 0124 00000000 	.org 0x140
 | 
			
		||||
 136      00000000 
 | 
			
		||||
 136      00000000 
 | 
			
		||||
 136      00000000 
 | 
			
		||||
 136      00000000 
 | 
			
		||||
 137              	int_140:
 | 
			
		||||
 138 0140 48000000 	      b         .
 | 
			
		||||
 139              	
 | 
			
		||||
 140              	# decrementer
 | 
			
		||||
 141 0144 00000000 	.org 0x160
 | 
			
		||||
 141      00000000 
 | 
			
		||||
 141      00000000 
 | 
			
		||||
 141      00000000 
 | 
			
		||||
 141      00000000 
 | 
			
		||||
 142              	int_160:
 | 
			
		||||
 143 0160 48000000 	      b         .
 | 
			
		||||
 144              	
 | 
			
		||||
 145              	# fit
 | 
			
		||||
 146 0164 00000000 	.org 0x180
 | 
			
		||||
 146      00000000 
 | 
			
		||||
 146      00000000 
 | 
			
		||||
 146      00000000 
 | 
			
		||||
 146      00000000 
 | 
			
		||||
 147              	int_180:
 | 
			
		||||
 148 0180 48000000 	      b         .
 | 
			
		||||
 149              	
 | 
			
		||||
 150              	# watchdog
 | 
			
		||||
 151 0184 00000000 	.org 0x1A0
 | 
			
		||||
 151      00000000 
 | 
			
		||||
 151      00000000 
 | 
			
		||||
 151      00000000 
 | 
			
		||||
 151      00000000 
 | 
			
		||||
 152              	int_1A0:
 | 
			
		||||
 153 01a0 48000000 	      b         .
 | 
			
		||||
 154              	
 | 
			
		||||
 155              	# dtlb
 | 
			
		||||
 156 01a4 00000000 	.org 0x1C0
 | 
			
		||||
 156      00000000 
 | 
			
		||||
 156      00000000 
 | 
			
		||||
 156      00000000 
 | 
			
		||||
 156      00000000 
 | 
			
		||||
 157              	int_1C0:
 | 
			
		||||
 158 01c0 48000000 	      b         .
 | 
			
		||||
 159              	
 | 
			
		||||
 160              	# itlb
 | 
			
		||||
 161 01c4 00000000 	.org 0x1E0
 | 
			
		||||
 161      00000000 
 | 
			
		||||
 161      00000000 
 | 
			
		||||
 161      00000000 
 | 
			
		||||
 161      00000000 
 | 
			
		||||
 162              	int_1E0:
 | 
			
		||||
 163 01e0 48000000 	      b         .
 | 
			
		||||
 164              	
 | 
			
		||||
 165              	# vector unavailable
 | 
			
		||||
 166 01e4 00000000 	.org 0x200
 | 
			
		||||
 166      00000000 
 | 
			
		||||
 166      00000000 
 | 
			
		||||
 166      00000000 
 | 
			
		||||
 166      00000000 
 | 
			
		||||
 167              	int_200:
 | 
			
		||||
 168 0200 48000000 	      b         .
 | 
			
		||||
 169              	
 | 
			
		||||
 170              	#
 | 
			
		||||
 171 0204 00000000 	.org 0x220
 | 
			
		||||
 171      00000000 
 | 
			
		||||
 171      00000000 
 | 
			
		||||
 171      00000000 
 | 
			
		||||
 171      00000000 
 | 
			
		||||
 172              	int_220:
 | 
			
		||||
 173 0220 48000000 	      b         .
 | 
			
		||||
 174              	
 | 
			
		||||
 175              	#
 | 
			
		||||
 176 0224 00000000 	.org 0x240
 | 
			
		||||
 176      00000000 
 | 
			
		||||
 176      00000000 
 | 
			
		||||
 176      00000000 
 | 
			
		||||
 176      00000000 
 | 
			
		||||
 177              	int_240:
 | 
			
		||||
 178 0240 48000000 	      b         .
 | 
			
		||||
 179              	
 | 
			
		||||
 180              	#
 | 
			
		||||
 181 0244 00000000 	.org 0x260
 | 
			
		||||
 181      00000000 
 | 
			
		||||
 181      00000000 
 | 
			
		||||
 181      00000000 
 | 
			
		||||
 181      00000000 
 | 
			
		||||
 182              	int_260:
 | 
			
		||||
 183 0260 48000000 	      b         .
 | 
			
		||||
 184              	
 | 
			
		||||
 185              	# doorbell
 | 
			
		||||
 186 0264 00000000 	.org 0x280
 | 
			
		||||
 186      00000000 
 | 
			
		||||
 186      00000000 
 | 
			
		||||
 186      00000000 
 | 
			
		||||
 186      00000000 
 | 
			
		||||
 187              	int_280:
 | 
			
		||||
 188 0280 48000000 	      b         .
 | 
			
		||||
 189              	
 | 
			
		||||
 190              	# doorbell critical
 | 
			
		||||
 191 0284 00000000 	.org 0x2A0
 | 
			
		||||
 191      00000000 
 | 
			
		||||
 191      00000000 
 | 
			
		||||
 191      00000000 
 | 
			
		||||
 191      00000000 
 | 
			
		||||
 192              	int_2A0:
 | 
			
		||||
 193 02a0 48000000 	      b         .
 | 
			
		||||
 194              	
 | 
			
		||||
 195              	# doorbell guest
 | 
			
		||||
 196 02a4 00000000 	.org 0x2C0
 | 
			
		||||
 196      00000000 
 | 
			
		||||
 196      00000000 
 | 
			
		||||
 196      00000000 
 | 
			
		||||
 196      00000000 
 | 
			
		||||
 197              	int_2C0:
 | 
			
		||||
 198 02c0 48000000 	      b         .
 | 
			
		||||
 199              	
 | 
			
		||||
 200              	# doorbell guest critical
 | 
			
		||||
 201 02c4 00000000 	.org 0x2E0
 | 
			
		||||
 201      00000000 
 | 
			
		||||
 201      00000000 
 | 
			
		||||
 201      00000000 
 | 
			
		||||
 201      00000000 
 | 
			
		||||
 202              	int_2E0:
 | 
			
		||||
 203 02e0 48000000 	      b         .
 | 
			
		||||
 204              	
 | 
			
		||||
 205              	# hvsc
 | 
			
		||||
 206 02e4 00000000 	.org 0x300
 | 
			
		||||
 206      00000000 
 | 
			
		||||
 206      00000000 
 | 
			
		||||
 206      00000000 
 | 
			
		||||
 206      00000000 
 | 
			
		||||
 207              	int_300:
 | 
			
		||||
 208 0300 48000000 	      b         .
 | 
			
		||||
 209              	
 | 
			
		||||
 210              	# hvpriv
 | 
			
		||||
 211 0304 00000000 	.org 0x320
 | 
			
		||||
 211      00000000 
 | 
			
		||||
 211      00000000 
 | 
			
		||||
 211      00000000 
 | 
			
		||||
 211      00000000 
 | 
			
		||||
 212              	int_320:
 | 
			
		||||
 213 0320 48000000 	      b         .
 | 
			
		||||
 214              	
 | 
			
		||||
 215              	# lrat
 | 
			
		||||
 216 0324 00000000 	.org 0x340
 | 
			
		||||
 216      00000000 
 | 
			
		||||
 216      00000000 
 | 
			
		||||
 216      00000000 
 | 
			
		||||
 216      00000000 
 | 
			
		||||
 217              	int_340:
 | 
			
		||||
 218 0340 48000000 	      b         .
 | 
			
		||||
 219              	
 | 
			
		||||
 220              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 221              	# initial translation
 | 
			
		||||
 222              	# both erats:
 | 
			
		||||
 223              	# 00000000 64K: (rom, BE)
 | 
			
		||||
 224              	# 00010000 64K: (ram, BE or LE)
 | 
			
		||||
 225              	#
 | 
			
		||||
 226 0344 00000000 	.org 0x400
 | 
			
		||||
 226      00000000 
 | 
			
		||||
 226      00000000 
 | 
			
		||||
 226      00000000 
 | 
			
		||||
 226      00000000 
 | 
			
		||||
 227              	boot_start:
 | 
			
		||||
 228              	
 | 
			
		||||
 229 0400 7CBE6AA6 	      mfspr     r5,tir           # who am i?
 | 
			
		||||
 230 0404 2C250000 	      cmpdi     r5,0x00          # skip unless T0
 | 
			
		||||
 231 0408 408200E0 	      bne       init_t123
 | 
			
		||||
 232              	
 | 
			
		||||
 233 040c 3C608C00 	      lis       r3,0x8C00        # 32=ecl 36:37=tlbsel (10=i, 11=d)
 | 
			
		||||
 234              	
 | 
			
		||||
 235              	# derat 31 @00000000
 | 
			
		||||
 236 0410 3800001F 	      li        r0,0x001F        # entry #31
 | 
			
		||||
 237 0414 38400015 	      li        r2,0x0015        # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/
 | 
			
		||||
 238 0418 38800000 	      li        r4,0             # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
 239 041c 3900023F 	      li        r8,0x023F        # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   s
 | 
			
		||||
 240              	
 | 
			
		||||
 241 0420 7C7CFBA6 	      mtspr     mmucr0,r3
 | 
			
		||||
 242 0424 7C4011A6 	      eratwe    r2,r0,2
 | 
			
		||||
 243 0428 7C8009A6 	      eratwe    r4,r0,1
 | 
			
		||||
 244 042c 7D0001A6 	      eratwe    r8,r0,0
 | 
			
		||||
 245 0430 4C00012C 	      isync
 | 
			
		||||
 246              	
 | 
			
		||||
 247 0434 39400000 	      load32    r10,BIOS_ERATW2  # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/
 | 
			
		||||
 247      654A0000 
 | 
			
		||||
 247      614A003F 
 | 
			
		||||
 248              	
 | 
			
		||||
 249              	# derat 30  @<BIOS_START>
 | 
			
		||||
 250 0440 3800001E 	      li        r0,0x001E        # entry #30
 | 
			
		||||
 251 0444 38800000 	      load32    r4,BIOS_START    # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
 251      64840001 
 | 
			
		||||
 251      60840000 
 | 
			
		||||
 252 0450 39000000 	      load32    r8,BIOS_START
 | 
			
		||||
 252      65080001 
 | 
			
		||||
 252      61080000 
 | 
			
		||||
 253 045c 6108023F 	      ori       r8,r8,0x023F     # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   s
 | 
			
		||||
 254              	
 | 
			
		||||
 255 0460 7D4011A6 	      eratwe    r10,r0,2
 | 
			
		||||
 256 0464 7C8009A6 	      eratwe    r4,r0,1
 | 
			
		||||
 257 0468 7D0001A6 	      eratwe    r8,r0,0
 | 
			
		||||
 258 046c 4C00012C 	      isync
 | 
			
		||||
 259              	
 | 
			
		||||
 260 0470 3C608800 	      lis       r3,0x8800        # 32=ecl 36:37=tlbsel (10=i, 11=d)
 | 
			
		||||
 261              	
 | 
			
		||||
 262              	# ierat 15  @00000000
 | 
			
		||||
 263 0474 3800000F 	      li        r0,0x000F        # entry #15
 | 
			
		||||
 264 0478 3840003F 	      li        r2,0x003F        # word 2 wlc=40:41 rsvd=42 u=44:47 r=48 c=49 wimge=52:56 vf=57 ux/
 | 
			
		||||
 265 047c 38800000 	      li        r4,0             # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
 266 0480 3900023F 	      li        r8,0x023F        # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   s
 | 
			
		||||
 267              	
 | 
			
		||||
 268 0484 7C7CFBA6 	      mtspr     mmucr0,r3
 | 
			
		||||
 269 0488 7C4011A6 	      eratwe    r2,r0,2
 | 
			
		||||
 270 048c 7C8009A6 	      eratwe    r4,r0,1
 | 
			
		||||
 271 0490 7D0001A6 	      eratwe    r8,r0,0
 | 
			
		||||
 272 0494 4C00012C 	      isync
 | 
			
		||||
 273              	
 | 
			
		||||
 274              	 # *** leave the init'd entry 14 for MT access to FFFFFFC0
 | 
			
		||||
 275              	 # ierat 13  @<BIOS_START>
 | 
			
		||||
 276 0498 3800000D 	      li        r0,0x000D        # entry #13
 | 
			
		||||
 277 049c 38800000 	      load32    r4,BIOS_START    # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
 | 
			
		||||
 277      64840001 
 | 
			
		||||
 277      60840000 
 | 
			
		||||
 278 04a8 39000000 	      load32    r8,BIOS_START
 | 
			
		||||
 278      65080001 
 | 
			
		||||
 278      61080000 
 | 
			
		||||
 279 04b4 6108023F 	      ori       r8,r8,0x023F     # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63   s
 | 
			
		||||
 280              	
 | 
			
		||||
 281 04b8 7D4011A6 	      eratwe    r10,r0,2
 | 
			
		||||
 282 04bc 7C8009A6 	      eratwe    r4,r0,1
 | 
			
		||||
 283 04c0 7D0001A6 	      eratwe    r8,r0,0
 | 
			
		||||
 284 04c4 4C00012C 	      isync
 | 
			
		||||
 285              	
 | 
			
		||||
 286 04c8 48000004 	      b         init_t0
 | 
			
		||||
 287              	
 | 
			
		||||
 288              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 289              	# init
 | 
			
		||||
 290              	#
 | 
			
		||||
 291              	
 | 
			
		||||
 292              	# T0
 | 
			
		||||
 293              	
 | 
			
		||||
 294              	init_t0:
 | 
			
		||||
 295              	
 | 
			
		||||
 296              	# set up BIOS msr
 | 
			
		||||
 297              	
 | 
			
		||||
 298 04cc 39400000 	      load32    r10,BIOS_MSR
 | 
			
		||||
 298      654A8002 
 | 
			
		||||
 298      614AB000 
 | 
			
		||||
 299 04d8 7D400124 	      mtmsr     r10
 | 
			
		||||
 300 04dc 4C00012C 	      isync
 | 
			
		||||
 301              	# can't use load32 unless you can .set BIOS_STACK_0 to the linked value
 | 
			
		||||
 302              	#      load32    r1,BIOS_STACK_0  # @stack_0
 | 
			
		||||
 303              	# this ignores def
 | 
			
		||||
 304              	#      lis        r1,_stack_0@h
 | 
			
		||||
 305              	#      ori        r1,r1,_stack_0@l
 | 
			
		||||
 306              	# this requires data load
 | 
			
		||||
 307 04e0 80200000 	      lwz       r1,stack_0(r0)
 | 
			
		||||
 308              	
 | 
			
		||||
 309 04e4 48000020 	      b         boot_complete
 | 
			
		||||
 310              	
 | 
			
		||||
 311              	# except T0
 | 
			
		||||
 312              	
 | 
			
		||||
 313              	init_t123:
 | 
			
		||||
 314              	
 | 
			
		||||
 315              	# set up BIOS msr
 | 
			
		||||
 316              	
 | 
			
		||||
 317 04e8 39400000 	      load32    r10,BIOS_MSR
 | 
			
		||||
 317      654A8002 
 | 
			
		||||
 317      614AB000 
 | 
			
		||||
 318 04f4 7D400124 	      mtmsr     r10
 | 
			
		||||
 319 04f8 4C00012C 	      isync
 | 
			
		||||
 320              	      # check tir if more than 2 threads possible
 | 
			
		||||
 321 04fc 80200000 	      lwz       r1,stack_1(r0)
 | 
			
		||||
 322              	
 | 
			
		||||
 323 0500 48000004 	      b         boot_complete
 | 
			
		||||
 324              	
 | 
			
		||||
 325              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 326              	boot_complete:
 | 
			
		||||
 327              	
 | 
			
		||||
 328              	# set up thread and hop to it
 | 
			
		||||
 329              	
 | 
			
		||||
 330 0504 3C600000 	      lis       r3,main@h
 | 
			
		||||
 331 0508 60630000 	      ori       r3,r3,main@l
 | 
			
		||||
 332 050c 7C6903A6 	      mtctr     r3
 | 
			
		||||
 333 0510 7C7E6AA6 	      mfspr     r3,tir           # who am i?
 | 
			
		||||
 334 0514 4E800421 	      bctrl
 | 
			
		||||
 335 0518 480002E4 	      b         kernel_return
 | 
			
		||||
 336              	
 | 
			
		||||
 337              	# -------------------------------------------------------------------------------------------------
 | 
			
		||||
 338              	
 | 
			
		||||
 339 051c 00000000 	.org 0x7FC
 | 
			
		||||
 339      00000000 
 | 
			
		||||
 339      00000000 
 | 
			
		||||
 339      00000000 
 | 
			
		||||
 339      00000000 
 | 
			
		||||
 340              	kernel_return:
 | 
			
		||||
 341 07fc 48000000 	      b         .
 | 
			
		||||
 342              	
 | 
			
		||||
 343              	# dec
 | 
			
		||||
 344              	.org 0x800
 | 
			
		||||
 345              	int_800:
 | 
			
		||||
 346 0800 48000000 	      b         .
 | 
			
		||||
 347              	
 | 
			
		||||
 348              	# perf
 | 
			
		||||
 349 0804 00000000 	.org 0x820
 | 
			
		||||
 349      00000000 
 | 
			
		||||
 349      00000000 
 | 
			
		||||
 349      00000000 
 | 
			
		||||
 349      00000000 
 | 
			
		||||
 350              	int_820:
 | 
			
		||||
 351 0820 48000000 	      b         .
 | 
			
		||||
 352              	
 | 
			
		||||
 353 0824 00000000 	.org 0x8F0
 | 
			
		||||
 353      00000000 
 | 
			
		||||
 353      00000000 
 | 
			
		||||
 353      00000000 
 | 
			
		||||
 353      00000000 
 | 
			
		||||
 354              	.section .rodata
 | 
			
		||||
 355 0000 00000000 	stack_0:        .long BIOS_STACK_0
 | 
			
		||||
 356 0004 00000000 	stack_1:        .long BIOS_STACK_1
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								@ -0,0 +1,150 @@
 | 
			
		||||
# © IBM Corp. 2020
 | 
			
		||||
# Licensed under and subject to the terms of the CC-BY 4.0
 | 
			
		||||
# license (https://creativecommons.org/licenses/by/4.0/legalcode).
 | 
			
		||||
# Additional rights, including the right to physically implement a softcore
 | 
			
		||||
# that is compliant with the required sections of the Power ISA
 | 
			
		||||
# Specification, will be available at no cost via the OpenPOWER Foundation.
 | 
			
		||||
# This README will be updated with additional information when OpenPOWER's
 | 
			
		||||
# license is available.
 | 
			
		||||
 | 
			
		||||
#-----------------------------------------
 | 
			
		||||
# Defines
 | 
			
		||||
#-----------------------------------------
 | 
			
		||||
 | 
			
		||||
# Regs
 | 
			
		||||
 | 
			
		||||
.set    r0,  0
 | 
			
		||||
.set    r1,  1
 | 
			
		||||
.set    r2,  2
 | 
			
		||||
.set    r3,  3
 | 
			
		||||
.set    r4,  4
 | 
			
		||||
.set    r5,  5
 | 
			
		||||
.set    r6,  6
 | 
			
		||||
.set    r7,  7
 | 
			
		||||
.set    r8,  8
 | 
			
		||||
.set    r9,  9
 | 
			
		||||
.set    r10,10
 | 
			
		||||
.set    r11,11
 | 
			
		||||
.set    r12,12
 | 
			
		||||
.set    r13,13
 | 
			
		||||
.set    r14,14
 | 
			
		||||
.set    r15,15
 | 
			
		||||
.set    r16,16
 | 
			
		||||
.set    r17,17
 | 
			
		||||
.set    r18,18
 | 
			
		||||
.set    r19,19
 | 
			
		||||
.set    r20,20
 | 
			
		||||
.set    r21,21
 | 
			
		||||
.set    r22,22
 | 
			
		||||
.set    r23,23
 | 
			
		||||
.set    r24,24
 | 
			
		||||
.set    r25,25
 | 
			
		||||
.set    r26,26
 | 
			
		||||
.set    r27,27
 | 
			
		||||
.set    r28,28
 | 
			
		||||
.set    r29,29
 | 
			
		||||
.set    r30,30
 | 
			
		||||
.set    r31,31
 | 
			
		||||
 | 
			
		||||
.set    f0,  0
 | 
			
		||||
.set    f1,  1
 | 
			
		||||
.set    f2,  2
 | 
			
		||||
.set    f3,  3
 | 
			
		||||
.set    f4,  4
 | 
			
		||||
.set    f5,  5
 | 
			
		||||
.set    f6,  6
 | 
			
		||||
.set    f7,  7
 | 
			
		||||
.set    f8,  8
 | 
			
		||||
.set    f9,  9
 | 
			
		||||
.set    f10,10
 | 
			
		||||
.set    f11,11
 | 
			
		||||
.set    f12,12
 | 
			
		||||
.set    f13,13
 | 
			
		||||
.set    f14,14
 | 
			
		||||
.set    f15,15
 | 
			
		||||
.set    f16,16
 | 
			
		||||
.set    f17,17
 | 
			
		||||
.set    f18,18
 | 
			
		||||
.set    f19,19
 | 
			
		||||
.set    f20,20
 | 
			
		||||
.set    f21,21
 | 
			
		||||
.set    f22,22
 | 
			
		||||
.set    f23,23
 | 
			
		||||
.set    f24,24
 | 
			
		||||
.set    f25,25
 | 
			
		||||
.set    f26,26
 | 
			
		||||
.set    f27,27
 | 
			
		||||
.set    f28,28
 | 
			
		||||
.set    f29,29
 | 
			
		||||
.set    f30,30
 | 
			
		||||
.set    f31,31
 | 
			
		||||
 | 
			
		||||
.set    cr0, 0
 | 
			
		||||
.set    cr1, 1
 | 
			
		||||
.set    cr2, 2
 | 
			
		||||
.set    cr3, 3
 | 
			
		||||
.set    cr4, 4
 | 
			
		||||
.set    cr5, 5
 | 
			
		||||
.set    cr6, 6
 | 
			
		||||
.set    cr7, 7
 | 
			
		||||
 | 
			
		||||
# SPR numbers
 | 
			
		||||
 | 
			
		||||
.set    srr0, 26
 | 
			
		||||
.set    srr1, 27
 | 
			
		||||
.set    dar, 19
 | 
			
		||||
.set    dsisr, 18
 | 
			
		||||
.set    epcr, 307
 | 
			
		||||
.set    tar, 815
 | 
			
		||||
 | 
			
		||||
.set    dbsr, 304
 | 
			
		||||
.set    dbcr0, 308
 | 
			
		||||
.set    dbcr1, 309
 | 
			
		||||
.set    dbcr2, 310
 | 
			
		||||
.set    dbcr3, 848
 | 
			
		||||
 | 
			
		||||
.set    ivpr, 63
 | 
			
		||||
 | 
			
		||||
.set    iucr0, 1011
 | 
			
		||||
.set    iucr1, 883
 | 
			
		||||
.set    iucr2, 884
 | 
			
		||||
 | 
			
		||||
.set    iudbg0, 888
 | 
			
		||||
.set    iudbg1, 889
 | 
			
		||||
.set    iudbg2, 890
 | 
			
		||||
.set    iulfsr, 891
 | 
			
		||||
.set    iullcr, 892
 | 
			
		||||
 | 
			
		||||
.set    mmucr0, 1020
 | 
			
		||||
.set    mmucr1, 1021
 | 
			
		||||
.set    mmucr2, 1022
 | 
			
		||||
.set    mmucr3, 1023
 | 
			
		||||
 | 
			
		||||
.set    tb, 268
 | 
			
		||||
.set    tbl, 284
 | 
			
		||||
.set    tbh, 285
 | 
			
		||||
 | 
			
		||||
.set    dec, 22
 | 
			
		||||
.set    udec, 550
 | 
			
		||||
.set    tsr, 336
 | 
			
		||||
.set    tcr, 340
 | 
			
		||||
 | 
			
		||||
.set    xucr0, 1014
 | 
			
		||||
.set    xucr1, 851
 | 
			
		||||
.set    xucr2, 1016
 | 
			
		||||
.set    xucr3, 852
 | 
			
		||||
.set    xucr4, 853
 | 
			
		||||
 | 
			
		||||
.set    tens, 438
 | 
			
		||||
.set    tenc, 439
 | 
			
		||||
.set    tensr, 437
 | 
			
		||||
 | 
			
		||||
.set    pid, 48
 | 
			
		||||
.set    pir, 286
 | 
			
		||||
.set    pvr, 287
 | 
			
		||||
.set    tir, 446
 | 
			
		||||
 | 
			
		||||
#.set    sprg0,
 | 
			
		||||
#.set    sprg1,
 | 
			
		||||
#.set    sprg2,
 | 
			
		||||
.set    sprg3, 259
 | 
			
		||||
@ -0,0 +1,319 @@
 | 
			
		||||
* OPV
 | 
			
		||||
* Testname: fx_alucmpbr.tst
 | 
			
		||||
 | 
			
		||||
* --------------------------------------------------------------------------------
 | 
			
		||||
TEST 1001
 | 
			
		||||
INITIALIZATIONS: DATA MEMORY
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007D400000068877812 * PTE Match EPN=0x000000000001 VPN=0x0001FFFFFF000001 RPN=0x000000006887 WIMG=0x2 I TA=0
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * Root Table Descriptor , Partition Table Primary Entry for LPID = 0xFD7: HTABORG = 0x0800_0000_023C, HTABSIZE = 0x02, PS = 0x0, Entry Address = 0x0000_0000_53E6_FD70 WIMG=0x2
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * Segmentation On HPT, Process Table Descriptor, Partition Table Secondary Entry for LPID = 0xFD7: PRTB = 0x00_030C_70F2, PTS = 0x07, NUT = 0x0, PTPS = 0x4 WIMG=0x2
 | 
			
		||||
D 00000000F0D2D3F0 400AC1CD9CEF56376DF7C045D17603CB * Guest Root Table Descriptor, Process Table Entry for LPID = 0x000 STABORGU = 0x000A_C1CD_9CEF_5637 STABORGL = 0x6 STABSIZE = 0xC B = 0x1 STPS = 0x5
 | 
			
		||||
INITIALIZATIONS: INSTRUCTION MEMORY
 | 
			
		||||
LEVEL 4 CHIP 0
 | 
			
		||||
LEVEL 3 CORE 0
 | 
			
		||||
INITIALIZATIONS: REGISTERS
 | 
			
		||||
LEVEL 2 PARTITION 0
 | 
			
		||||
INITIALIZATIONS: REGISTERS
 | 
			
		||||
LEVEL 1 THREAD 0
 | 
			
		||||
INITIALIZATIONS: REGISTERS
 | 
			
		||||
R CR             DBFD3628               * LT:1 GT:1 EQ:0 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R DAR            96A22826D573F45F       
 | 
			
		||||
R DSISR          48068CFB               * TS:0 PF:1 ATT:0 Rsrv35:0 Prot:1 CI:0 
 | 
			
		||||
*                                         Store:0 Rsrv39_40:0 DAWR:0 VPCK:0 
 | 
			
		||||
*                                         SMF:0 RADIX:0 RC:1 Guest_Tbl:1 
 | 
			
		||||
*                                         Rsrv47_61:233E CIX:1 EAO:1 
 | 
			
		||||
R DEC            0000000005792645       
 | 
			
		||||
R XER            00002E2289F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:0 LT:1 GT:0 EQ:0 IC:1 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
R G0             CC7B4BBA00000000       
 | 
			
		||||
R G1             F99E00E65822C905       
 | 
			
		||||
R G3             48577A9C91B6D1A3       
 | 
			
		||||
R G9             6872DEB47E11EE88       
 | 
			
		||||
R G11            415D35187FFFFFFF       
 | 
			
		||||
R G14            BCF163168C20BDE6       
 | 
			
		||||
R G16            CE83BAA576D0DADF       
 | 
			
		||||
R G17            06C01CAE15111F42       
 | 
			
		||||
R G19            4283519E36108E50       
 | 
			
		||||
R G22            4FA8B87B328A0CED       
 | 
			
		||||
R G25            9138C732AF224C19       
 | 
			
		||||
R G28            2F4816B9D624B27A       
 | 
			
		||||
R IAR            0000000000010000       
 | 
			
		||||
R MSR            0000000000001104       * SF:0 TA:0 Rsrv2_old_ISF:0 HV:0 
 | 
			
		||||
*                                         Rsrv4:0 SLE:0 Rsrv6_28:000000 TS:0 
 | 
			
		||||
*                                         TM:0 Rsrv32_37:00 VMX:0 Rsrv39:0 
 | 
			
		||||
*                                         VSX:0 S:0 Rsrv42_47:00 EE:0 PR:0 FP:0 
 | 
			
		||||
*                                         ME:1 FE0:0 SE:0 BE:0 FE1:1 US:0 
 | 
			
		||||
*                                         Rsrv57_old_IP:0 IR:0 DR:0 
 | 
			
		||||
*                                         Rsrv60_old_SO:0 PMM:1 RI:0 LE:0 
 | 
			
		||||
 | 
			
		||||
PHASE 0    INSTRUCTIONS
 | 
			
		||||
I 0000000068870000 7C61CC14 * EA=0000000000010000 WIMG=2 addco G3,G1,G25            INum:1 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G1             F99E00E65822C905       
 | 
			
		||||
R G25            9138C732AF224C19       
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 0000000000000000                 M 0000000000000000 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G3             8AD6C8190745151E       
 | 
			
		||||
R XER            00002E22A9F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:0 LT:1 GT:0 EQ:0 IC:1 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
R IAR            0000000000010004       
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
I 0000000068870004 7D230595 * EA=0000000000010004 WIMG=2 addzeo. G9,G3              INum:2 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G3             8AD6C8190745151E       
 | 
			
		||||
R XER            00002E22A9F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:0 LT:1 GT:0 EQ:0 IC:1 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G9             8AD6C8190745151F       
 | 
			
		||||
R XER            00002E2284F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:0 LT:0 GT:1 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
R CR             5BFD3628               * LT:0 GT:1 EQ:0 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R IAR            0000000000010008       
 | 
			
		||||
I 0000000068870008 7AC37392 * EA=0000000000010008 WIMG=2 rldcr G3,G22,G14,0x0E      INum:3 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G14            BCF163168C20BDE6       
 | 
			
		||||
R G22            4FA8B87B328A0CED       
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G3             A282000000000000       
 | 
			
		||||
R IAR            000000000001000C       
 | 
			
		||||
I 000000006887000C 7E094C11 * EA=000000000001000C WIMG=2 subfco. G16,G9,G9          INum:4 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G9             8AD6C8190745151F       
 | 
			
		||||
R XER            00002E2284F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:0 LT:0 GT:1 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G16            0000000000000000       
 | 
			
		||||
R XER            00002E22B2F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:1 LT:0 GT:0 EQ:1 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
R CR             3BFD3628               * LT:0 GT:0 EQ:1 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R IAR            0000000000010010       
 | 
			
		||||
I 0000000068870010 7E1CB115 * EA=0000000000010010 WIMG=2 adde. G16,G28,G22          INum:5 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G28            2F4816B9D624B27A       
 | 
			
		||||
R G22            4FA8B87B328A0CED       
 | 
			
		||||
R XER            00002E22B2F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:1 LT:0 GT:0 EQ:1 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G16            7EF0CF3508AEBF68       
 | 
			
		||||
R XER            00002E22B4F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:1 LT:0 GT:1 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
R CR             5BFD3628               * LT:0 GT:1 EQ:0 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R IAR            0000000000010014       
 | 
			
		||||
I 0000000068870014 7A338886 * EA=0000000000010014 WIMG=2 rldicr G19,G17,0x31,0x02     INum:6 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G17            06C01CAE15111F42       
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G19            2000000000000000       
 | 
			
		||||
R IAR            0000000000010018       
 | 
			
		||||
I 0000000068870018 7C6004D1 * EA=0000000000010018 WIMG=2 nego. G3,G0                INum:7 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G0             CC7B4BBA00000000       
 | 
			
		||||
R XER            00002E22B4F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:1 LT:0 GT:1 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G3             3384B44600000000       
 | 
			
		||||
R XER            00002E22B2F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:1 LT:0 GT:0 EQ:1 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
R CR             3BFD3628               * LT:0 GT:0 EQ:1 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R IAR            000000000001001C       
 | 
			
		||||
I 000000006887001C 7E09B038 * EA=000000000001001C WIMG=2 and G9,G16,G22             INum:8 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G16            7EF0CF3508AEBF68       
 | 
			
		||||
R G22            4FA8B87B328A0CED       
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G9             4EA08831008A0C68       
 | 
			
		||||
R IAR            0000000000010020       
 | 
			
		||||
I 0000000068870020 7C360591 * EA=0000000000010020 WIMG=2 subfzeo. G1,G22            INum:9 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G22            4FA8B87B328A0CED       
 | 
			
		||||
R XER            00002E22B2F4006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:1 
 | 
			
		||||
*                                         OC:1 LT:0 GT:0 EQ:1 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:1 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0800 len:6E 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G1             B0574784CD75F313       
 | 
			
		||||
R XER            00002E2298F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:1 LT:1 GT:0 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
R CR             9BFD3628               * LT:1 GT:0 EQ:0 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R IAR            0000000000010024       
 | 
			
		||||
I 0000000068870024 7E2B00D1 * EA=0000000000010024 WIMG=2 neg. G17,G11               INum:10 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
R G11            415D35187FFFFFFF       
 | 
			
		||||
R XER            00002E2298F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:1 LT:1 GT:0 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R G17            BEA2CAE780000001       
 | 
			
		||||
R XER            00002E2298F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:1 LT:1 GT:0 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
R CR             9BFD3628               * LT:1 GT:0 EQ:0 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
* FALSE PHASE 0.0    INSTRUCTIONS 
 | 
			
		||||
R IAR            0000000000010028       
 | 
			
		||||
 | 
			
		||||
EPILOGUE
 | 
			
		||||
* Begin macro Epilogue_Sequence 
 | 
			
		||||
* TRUE 
 | 
			
		||||
* TRUE 
 | 
			
		||||
I 0000000068870028 60000000 * EA=0000000000010028 WIMG=2 nop                        INum:11 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R IAR            000000000001002C       
 | 
			
		||||
I 000000006887002C 60000000 * EA=000000000001002C WIMG=2 nop_Epilogue               INum:12 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R IAR            0000000000010030       
 | 
			
		||||
I 0000000068870030 60000000 * EA=0000000000010030 WIMG=2 nop_Epilogue               INum:13 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
 | 
			
		||||
TRACE READS 
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 * RADIX
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 * RADIX
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007                 * PTE
 | 
			
		||||
D 0000000008F00858 D400000068877912                 * PTE
 | 
			
		||||
TRACE WRITES 
 | 
			
		||||
R IAR            0000000000010034       
 | 
			
		||||
I 0000000068870034 24000000 * EA=0000000000010034 WIMG=2 notrace                    INum:14 PartId:0 ThreadId:0 Phase:0 CoreId:0 
 | 
			
		||||
* End of macro Epilogue_Sequence
 | 
			
		||||
RESULTS: REGISTERS
 | 
			
		||||
R CR             9BFD3628               * LT:1 GT:0 EQ:0 SO:1 FX:1 FEX:0 VX:1 
 | 
			
		||||
*                                         OX:1 CR2:F CR3:D CR4:3 CR5:6 CR6:2 
 | 
			
		||||
*                                         CR7:8 
 | 
			
		||||
R DAR            96A22826D573F45F       
 | 
			
		||||
R DSISR          48068CFB               * TS:0 PF:1 ATT:0 Rsrv35:0 Prot:1 CI:0 
 | 
			
		||||
*                                         Store:0 Rsrv39_40:0 DAWR:0 VPCK:0 
 | 
			
		||||
*                                         SMF:0 RADIX:0 RC:1 Guest_Tbl:1 
 | 
			
		||||
*                                         Rsrv47_61:233E CIX:1 EAO:1 
 | 
			
		||||
R DEC            0000000005792645       
 | 
			
		||||
R XER            00002E2298F0006E       * Rsrv0_15:0000 DC:2E22 SO:1 OV:0 CA:0 
 | 
			
		||||
*                                         OC:1 LT:1 GT:0 EQ:0 IC:0 DS:1 TAG0:1 
 | 
			
		||||
*                                         TAG1:1 TAG:1 OV32:0 CA32:0 
 | 
			
		||||
*                                         Rsrv46_56:000 Rsrv44_56:0000 len:6E 
 | 
			
		||||
R G0             CC7B4BBA00000000       
 | 
			
		||||
R G1             B0574784CD75F313       
 | 
			
		||||
R G3             3384B44600000000       
 | 
			
		||||
R G9             4EA08831008A0C68       
 | 
			
		||||
R G11            415D35187FFFFFFF       
 | 
			
		||||
R G14            BCF163168C20BDE6       
 | 
			
		||||
R G16            7EF0CF3508AEBF68       
 | 
			
		||||
R G17            BEA2CAE780000001       
 | 
			
		||||
R G19            2000000000000000       
 | 
			
		||||
R G22            4FA8B87B328A0CED       
 | 
			
		||||
R G25            9138C732AF224C19       
 | 
			
		||||
R G28            2F4816B9D624B27A       
 | 
			
		||||
R IAR            0000000000010038       
 | 
			
		||||
R MSR            0000000000001104       * SF:0 TA:0 Rsrv2_old_ISF:0 HV:0 
 | 
			
		||||
*                                         Rsrv4:0 SLE:0 Rsrv6_28:000000 TS:0 
 | 
			
		||||
*                                         TM:0 Rsrv32_37:00 VMX:0 Rsrv39:0 
 | 
			
		||||
*                                         VSX:0 S:0 Rsrv42_47:00 EE:0 PR:0 FP:0 
 | 
			
		||||
*                                         ME:1 FE0:0 SE:0 BE:0 FE1:1 US:0 
 | 
			
		||||
*                                         Rsrv57_old_IP:0 IR:0 DR:0 
 | 
			
		||||
*                                         Rsrv60_old_SO:0 PMM:1 RI:0 LE:0 
 | 
			
		||||
END_OF_LEVEL 1 THREAD 0
 | 
			
		||||
RESULTS: REGISTERS
 | 
			
		||||
END_OF_LEVEL 2 PARTITION 0
 | 
			
		||||
RESULTS: REGISTERS
 | 
			
		||||
END_OF_LEVEL 3 CORE 0
 | 
			
		||||
END_OF_LEVEL 4 CHIP 0
 | 
			
		||||
RESULTS: DATA MEMORY
 | 
			
		||||
D 0000000008F00850 0001FFFFFF000007D400000068877912 * PTE
 | 
			
		||||
D 0000000053E6FD70 2000000008F10B02                 
 | 
			
		||||
D 0000000053E6FD78 000618E1E5836C87                 
 | 
			
		||||
D 00000000F0D2D3F0 400AC1CD9CEF56376DF7C045D17603CB 
 | 
			
		||||
END_OF_TEST
 | 
			
		||||
@ -0,0 +1,94 @@
 | 
			
		||||
/* this version puts kernel and bios at rom start
 | 
			
		||||
 | 
			
		||||
/* define format
 | 
			
		||||
INCLUDE output_format.ld */
 | 
			
		||||
OUTPUT_FORMAT("elf32-powerpc")
 | 
			
		||||
 | 
			
		||||
ENTRY(_start)
 | 
			
		||||
 | 
			
		||||
/* define origin, len of rom, ram, csr */
 | 
			
		||||
INCLUDE regions.ld
 | 
			
		||||
 | 
			
		||||
SECTIONS
 | 
			
		||||
{
 | 
			
		||||
   /* kernel code */
 | 
			
		||||
	.kernel :
 | 
			
		||||
	{
 | 
			
		||||
		/*_fkernel = .; */
 | 
			
		||||
      *crt0*(.text)
 | 
			
		||||
      KEEP(*crt0*(.text))
 | 
			
		||||
		*(.gnu.linkonce.t.*)
 | 
			
		||||
		_ekernel = .;
 | 
			
		||||
	} > rom
 | 
			
		||||
 | 
			
		||||
	.rodata :
 | 
			
		||||
	{
 | 
			
		||||
		. = ALIGN(8);
 | 
			
		||||
		_frodata = .;
 | 
			
		||||
		*(.rodata .rodata.* .gnu.linkonce.r.*)
 | 
			
		||||
		*(.rodata1)
 | 
			
		||||
		*(.got2 .got2.*)
 | 
			
		||||
		*(.toc .toc.*)
 | 
			
		||||
		FILL(0);
 | 
			
		||||
		. = ALIGN(8);
 | 
			
		||||
		_erodata = .;
 | 
			
		||||
	} > rom
 | 
			
		||||
 | 
			
		||||
   /* bios code */
 | 
			
		||||
   .bios :
 | 
			
		||||
   {
 | 
			
		||||
      . = ALIGN(32);
 | 
			
		||||
      bios.o (.text .text* .gnu.linkonce.t.*)
 | 
			
		||||
      . = ALIGN(4);
 | 
			
		||||
   } > rom
 | 
			
		||||
 | 
			
		||||
   /* kernel data to be copied to ram by rom code...*/
 | 
			
		||||
	.data :
 | 
			
		||||
	{
 | 
			
		||||
		. = ALIGN(8);
 | 
			
		||||
		_fdata = .;
 | 
			
		||||
		*(.data .data.* .gnu.linkonce.d.*)
 | 
			
		||||
		FILL(0);
 | 
			
		||||
		. = ALIGN(8);
 | 
			
		||||
		_edata = .;
 | 
			
		||||
	} > ram AT > rom
 | 
			
		||||
 | 
			
		||||
   /* tst */
 | 
			
		||||
   .arcitst :
 | 
			
		||||
   {
 | 
			
		||||
      . = ALIGN(32);
 | 
			
		||||
      arcitst.o (.text .text* .gnu.linkonce.t.*)
 | 
			
		||||
      . = ALIGN(4);
 | 
			
		||||
   } > rom
 | 
			
		||||
 | 
			
		||||
	.bss :
 | 
			
		||||
	{
 | 
			
		||||
		. = ALIGN(8);
 | 
			
		||||
		_fbss = .;
 | 
			
		||||
		*(.dynsbss)
 | 
			
		||||
		*(.sbss .sbss.* .gnu.linkonce.sb.*)
 | 
			
		||||
		*(.scommon)
 | 
			
		||||
		*(.dynbss)
 | 
			
		||||
		*(.bss .bss.* .gnu.linkonce.b.*)
 | 
			
		||||
		*(COMMON)
 | 
			
		||||
		. = ALIGN(8);
 | 
			
		||||
		_ebss = .;
 | 
			
		||||
		_end = .;
 | 
			
		||||
	} > ram
 | 
			
		||||
 | 
			
		||||
	/DISCARD/ :
 | 
			
		||||
	{
 | 
			
		||||
		*(.eh_frame)
 | 
			
		||||
		*(.comment)
 | 
			
		||||
      *(.gnu.attributes)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PROVIDE(_stack_size = 0x00010000);
 | 
			
		||||
PROVIDE(_stack_0 = ORIGIN(ram) + LENGTH(ram) - 8);
 | 
			
		||||
PROVIDE(_stack_1 = _stack_0 - _stack_size);
 | 
			
		||||
 | 
			
		||||
PROVIDE(_fdata_rom = LOADADDR(.data));
 | 
			
		||||
PROVIDE(_edata_rom = LOADADDR(.data) + SIZEOF(.data));
 | 
			
		||||
PROVIDE(_bios_start = LOADADDR(.bios));
 | 
			
		||||
@ -0,0 +1,14 @@
 | 
			
		||||
# test3 - kernel+bios+arci
 | 
			
		||||
 | 
			
		||||
* gen, convert, and link random tst (fx_alucmpbr.tst), and try to run
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
build
 | 
			
		||||
 | 
			
		||||
# create mem file for coco sim
 | 
			
		||||
cp rom.init test3
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
* hanging during results save; itags not executed in cpl queue
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
MEMORY {
 | 
			
		||||
	rom : ORIGIN = 0x00000000, LENGTH = 0x00010000
 | 
			
		||||
	ram : ORIGIN = 0x00010000, LENGTH = 0x00010000
 | 
			
		||||
	csr : ORIGIN = 0xFFF00000, LENGTH = 0x00010000
 | 
			
		||||
}
 | 
			
		||||
											
												Binary file not shown.
											
										
									
								
											
												Binary file not shown.
											
										
									
								
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								@ -0,0 +1,285 @@
 | 
			
		||||
 | 
			
		||||
rom:     file format elf32-powerpc
 | 
			
		||||
 | 
			
		||||
Contents of section .kernel:
 | 
			
		||||
 0000 48000400 48000f30 00000000 00000000  H...H..0........
 | 
			
		||||
 0010 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0020 48000cdc 00000000 00000000 00000000  H...............
 | 
			
		||||
 0030 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0040 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0050 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0060 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0070 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0080 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0090 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 00a0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 00b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 00c0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 00d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 00e0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 00f0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0100 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0110 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0120 48000bdc 00000000 00000000 00000000  H...............
 | 
			
		||||
 0130 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0140 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0150 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0160 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0170 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0180 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0190 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 01a0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 01b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 01c0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 01d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 01e0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 01f0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0200 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0210 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0220 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0230 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0240 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0250 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0260 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0270 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0280 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0290 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 02a0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 02b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 02c0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 02d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 02e0 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 02f0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0300 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0310 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0320 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0330 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0340 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0350 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0360 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0370 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0380 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0390 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 03a0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 03b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 03c0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 03d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 03e0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 03f0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0400 7cbe6aa6 2c250000 408200e0 3c608c00  |.j.,%..@...<`..
 | 
			
		||||
 0410 3800001f 38400015 38800000 3900023f  8...8@..8...9..?
 | 
			
		||||
 0420 7c7cfba6 7c4011a6 7c8009a6 7d0001a6  ||..|@..|...}...
 | 
			
		||||
 0430 4c00012c 39400000 654a0000 614a003f  L..,9@..eJ..aJ.?
 | 
			
		||||
 0440 3800001e 38800000 64840001 60840000  8...8...d...`...
 | 
			
		||||
 0450 39000000 65080001 61080000 6108023f  9...e...a...a..?
 | 
			
		||||
 0460 7d4011a6 7c8009a6 7d0001a6 4c00012c  }@..|...}...L..,
 | 
			
		||||
 0470 3c608800 3800000f 3840003f 38800000  <`..8...8@.?8...
 | 
			
		||||
 0480 3900023f 7c7cfba6 7c4011a6 7c8009a6  9..?||..|@..|...
 | 
			
		||||
 0490 7d0001a6 4c00012c 3800000d 38800000  }...L..,8...8...
 | 
			
		||||
 04a0 64840001 60840000 39000000 65080001  d...`...9...e...
 | 
			
		||||
 04b0 61080000 6108023f 7d4011a6 7c8009a6  a...a..?}@..|...
 | 
			
		||||
 04c0 7d0001a6 4c00012c 48000004 39400000  }...L..,H...9@..
 | 
			
		||||
 04d0 654a8002 614ab000 7d400124 4c00012c  eJ..aJ..}@.$L..,
 | 
			
		||||
 04e0 80200904 48000020 39400000 654a8002  . ..H.. 9@..eJ..
 | 
			
		||||
 04f0 614ab000 7d400124 4c00012c 80200908  aJ..}@.$L..,. ..
 | 
			
		||||
 0500 48000004 3c600000 60630920 7c6903a6  H...<`..`c. |i..
 | 
			
		||||
 0510 7c7e6aa6 4e800421 480002e4 00000000  |~j.N..!H.......
 | 
			
		||||
 0520 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0530 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0540 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0550 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0560 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0570 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0580 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0590 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 05a0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 05b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 05c0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 05d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 05e0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 05f0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0600 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0610 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0620 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0630 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0640 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0650 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0660 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0670 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0680 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0690 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 06a0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 06b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 06c0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 06d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 06e0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 06f0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0700 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0710 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0720 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0730 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0740 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0750 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0760 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0770 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0780 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0790 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 07a0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 07b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 07c0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 07d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 07e0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 07f0 00000000 00000000 00000000 48000000  ............H...
 | 
			
		||||
 0800 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0810 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0820 48000000 00000000 00000000 00000000  H...............
 | 
			
		||||
 0830 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0840 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0850 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0860 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0870 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0880 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 0890 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 08a0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 08b0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 08c0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 08d0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
 08e0 00000000 00000000 00000000 00000000  ................
 | 
			
		||||
Contents of section .rodata:
 | 
			
		||||
 08f0 43520000 58455200 43545200 4c520000  CR..XER.CTR.LR..
 | 
			
		||||
 0900 54415200 0001fff8 0000fff8 00000000  TAR.............
 | 
			
		||||
Contents of section .bios:
 | 
			
		||||
 0910 60000000 60000000 60000000 60000000  `...`...`...`...
 | 
			
		||||
 0920 9421ffc0 90610038 3d200001 81290000  .!...a.8= ...)..
 | 
			
		||||
 0930 9121000c 3d200000 39290d20 91210010  .!..= ..9). .!..
 | 
			
		||||
 0940 81210038 2c090000 4182000c 3920ffff  .!.8,...A...9 ..
 | 
			
		||||
 0950 48000188 3d200000 81290d00 91210008  H...= ...)...!..
 | 
			
		||||
 0960 48000028 8121000c 39490004 9141000c  H..(.!..9I...A..
 | 
			
		||||
 0970 81410008 814a0000 91490000 81210008  .A...J...I...!..
 | 
			
		||||
 0980 39290004 91210008 3d200000 81290d00  9)...!..= ...)..
 | 
			
		||||
 0990 81410008 7c0a4840 4180ffcc 3d200001  .A..|.H@A...= ..
 | 
			
		||||
 09a0 81290000 91210008 48000020 3d200001  .)...!..H.. = ..
 | 
			
		||||
 09b0 81290000 39400000 91490000 81210008  .)..9@...I...!..
 | 
			
		||||
 09c0 39290004 91210008 3d200001 81290000  9)...!..= ...)..
 | 
			
		||||
 09d0 81410008 7c0a4840 4180ffd4 3d200300  .A..|.H@A...= ..
 | 
			
		||||
 09e0 91210034 81210034 3c800000 60840009  .!.4.!.4<...`...
 | 
			
		||||
 09f0 7c934ba6 60000000 39200000 91210030  |.K.`...9 ...!.0
 | 
			
		||||
 0a00 81210030 3c800000 60840009 7c9603a6  .!.0<...`...|...
 | 
			
		||||
 0a10 60000000 39200000 9121002c 8121002c  `...9 ...!.,.!.,
 | 
			
		||||
 0a20 3c800000 60840009 7c9d43a6 60000000  <...`...|.C.`...
 | 
			
		||||
 0a30 39200000 91210028 81210028 3c800000  9 ...!.(.!.(<...
 | 
			
		||||
 0a40 60840009 7c9c43a6 60000000 3d20fe00  `...|.C.`...= ..
 | 
			
		||||
 0a50 91210024 81210024 3c800000 60840009  .!.$.!.$<...`...
 | 
			
		||||
 0a60 7c9053a6 60000000 7d36faa6 91210020  |.S.`...}6...!. 
 | 
			
		||||
 0a70 81210020 552905ac 9121001c 8121001c  .!. U)...!...!..
 | 
			
		||||
 0a80 3c800000 60840009 7c96fba6 60000000  <...`...|...`...
 | 
			
		||||
 0a90 39200000 91210018 81210018 3c800000  9 ...!...!..<...
 | 
			
		||||
 0aa0 60840009 7c9053a6 60000000 39200000  `...|.S.`...9 ..
 | 
			
		||||
 0ab0 91210014 81210014 3c800000 60840009  .!...!..<...`...
 | 
			
		||||
 0ac0 7c9453a6 60000000 81210010 7d234b78  |.S.`....!..}#Kx
 | 
			
		||||
 0ad0 48000370 48000000 7d234b78 38210040  H..pH...}#Kx8!.@
 | 
			
		||||
 0ae0 4e800020 9421ffe0 7c0802a6 90010024  N.. .!..|......$
 | 
			
		||||
 0af0 90610018 39200001 91210008 39200000  .a..9 ...!..9 ..
 | 
			
		||||
 0b00 9121000c 81410018 3d200867 61295309  .!...A..= .ga)S.
 | 
			
		||||
 0b10 7c0a4800 4182000c 39200000 91210008  |.H.A...9 ...!..
 | 
			
		||||
 0b20 81210008 2c090000 41820028 3d200000  .!..,...A..(= ..
 | 
			
		||||
 0b30 388908f0 38600020 48000115 7c691b78  8...8`. H...|i.x
 | 
			
		||||
 0b40 2c090000 4182000c 39200001 48000008  ,...A...9 ..H...
 | 
			
		||||
 0b50 39200000 91210008 81210008 2c090000  9 ...!...!..,...
 | 
			
		||||
 0b60 41820028 3d200000 388908f4 38600021  A..(= ..8...8`.!
 | 
			
		||||
 0b70 480000dd 7c691b78 2c090000 4182000c  H...|i.x,...A...
 | 
			
		||||
 0b80 39200001 48000008 39200000 91210008  9 ..H...9 ...!..
 | 
			
		||||
 0b90 81210008 2c090000 41820028 3d200000  .!..,...A..(= ..
 | 
			
		||||
 0ba0 388908f8 38600022 480000a5 7c691b78  8...8`."H...|i.x
 | 
			
		||||
 0bb0 2c090000 4182000c 39200001 48000008  ,...A...9 ..H...
 | 
			
		||||
 0bc0 39200000 91210008 81210008 2c090000  9 ...!...!..,...
 | 
			
		||||
 0bd0 41820028 3d200000 388908fc 38600023  A..(= ..8...8`.#
 | 
			
		||||
 0be0 4800006d 7c691b78 2c090000 4182000c  H..m|i.x,...A...
 | 
			
		||||
 0bf0 39200001 48000008 39200000 91210008  9 ..H...9 ...!..
 | 
			
		||||
 0c00 81210008 2c090000 41820028 3d200000  .!..,...A..(= ..
 | 
			
		||||
 0c10 38890900 38600024 48000035 7c691b78  8...8`.$H..5|i.x
 | 
			
		||||
 0c20 2c090000 4182000c 39200001 48000008  ,...A...9 ..H...
 | 
			
		||||
 0c30 39200000 91210008 60000000 80010024  9 ...!..`......$
 | 
			
		||||
 0c40 7c0803a6 38210020 4e800020 9421ffe0  |...8!. N.. .!..
 | 
			
		||||
 0c50 90610018 9081001c 39200001 91210008  .a......9 ...!..
 | 
			
		||||
 0c60 81210018 552a103a 3d200000 39290d20  .!..U*.:= ..9). 
 | 
			
		||||
 0c70 7d2a4a14 81290000 9121000c 81210018  }*J..)...!...!..
 | 
			
		||||
 0c80 552a103a 3d200000 39291020 7d2a4a14  U*.:= ..9). }*J.
 | 
			
		||||
 0c90 81290000 91210010 81210018 552a103a  .)...!...!..U*.:
 | 
			
		||||
 0ca0 3d200000 392910c0 7d2a4a14 81290000  = ..9)..}*J..)..
 | 
			
		||||
 0cb0 91210014 81410010 81210014 7d494a78  .!...A...!..}IJx
 | 
			
		||||
 0cc0 3149ffff 7d2a4910 5529063e 91210008  1I..}*I.U).>.!..
 | 
			
		||||
 0cd0 81210008 7d234b78 38210020 4e800020  .!..}#Kx8!. N.. 
 | 
			
		||||
 0ce0 9421fff0 90610008 9081000c 48000248  .!...a......H..H
 | 
			
		||||
 0cf0 60000000 38210010 4e800020 48000000  `...8!..N.. H...
 | 
			
		||||
Contents of section .arcitst:
 | 
			
		||||
 0d00 696e666f 20746578 74006865 61646572  info text.header
 | 
			
		||||
 0d10 20746578 74000000 00000000 00000000   text...........
 | 
			
		||||
 0d20 00000000 5822c905 ffffffff 91b6d1a3  ....X"..........
 | 
			
		||||
 0d30 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 0d40 ffffffff 7e11ee88 ffffffff 7fffffff  ....~...........
 | 
			
		||||
 0d50 ffffffff ffffffff 8c20bde6 ffffffff  ......... ......
 | 
			
		||||
 0d60 76d0dadf 15111f42 ffffffff 36108e50  v......B....6..P
 | 
			
		||||
 0d70 ffffffff ffffffff 328a0ced ffffffff  ........2.......
 | 
			
		||||
 0d80 ffffffff af224c19 ffffffff ffffffff  ....."L.........
 | 
			
		||||
 0d90 d624b27a ffffffff ffffffff ffffffff  .$.z............
 | 
			
		||||
 0da0 dbfd3628 89f0006e ffffffff ffffffff  ..6(...n........
 | 
			
		||||
 0db0 ffffffff 00001104 00010000 00000000  ................
 | 
			
		||||
 0dc0 0000000d 7c61cc14 7d230595 7ac37392  ....|a..}#..z.s.
 | 
			
		||||
 0dd0 7e094c11 7e1cb115 7a338886 7c6004d1  ~.L.~...z3..|`..
 | 
			
		||||
 0de0 7e09b038 7c360591 7e2b00d1 60000000  ~..8|6..~+..`...
 | 
			
		||||
 0df0 60000000 60000000 00010000 00010004  `...`...........
 | 
			
		||||
 0e00 00010008 0001000c 00010010 00010014  ................
 | 
			
		||||
 0e10 00010018 0001001c 00010020 00010024  ........... ...$
 | 
			
		||||
 0e20 00010028 0001002c 00010030 48000014  ...(...,...0H...
 | 
			
		||||
 0e30 60000000 60000000 60000000 60000000  `...`...`...`...
 | 
			
		||||
 0e40 9023009c 802300a0 7c2903a6 382300a4  .#...#..|)..8#..
 | 
			
		||||
 0e50 384300d8 80810000 80a20000 90850000  8C..............
 | 
			
		||||
 0e60 38210004 38420004 4200ffec 3c804800  8!..8B..B...<.H.
 | 
			
		||||
 0e70 60840006 90850000 80200db4 7c3b03a6  `........ ..|;..
 | 
			
		||||
 0e80 80200df8 7c3a03a6 80230080 7c2ff120  . ..|:...#..|/. 
 | 
			
		||||
 0e90 80230084 7c2103a6 80230088 7c2903a6  .#..|!...#..|)..
 | 
			
		||||
 0ea0 8023008c 7c2803a6 80230090 7c2fcba6  .#..|(...#..|/..
 | 
			
		||||
 0eb0 80030000 80230004 80430008 80830010  .....#...C......
 | 
			
		||||
 0ec0 80a30014 80c30018 80e3001c 81030020  ............... 
 | 
			
		||||
 0ed0 81230024 81430028 8163002c 81830030  .#.$.C.(.c.,...0
 | 
			
		||||
 0ee0 81a30034 81c30038 81e3003c 82030040  ...4...8...<...@
 | 
			
		||||
 0ef0 82230044 82430048 8263004c 82830050  .#.D.C.H.c.L...P
 | 
			
		||||
 0f00 82a30054 82c30058 82e3005c 83030060  ...T...X...\...`
 | 
			
		||||
 0f10 83230064 83430068 8363006c 83830070  .#.d.C.h.c.l...p
 | 
			
		||||
 0f20 83a30074 83c30078 83e3007c 8063000c  ...t...x...|.c..
 | 
			
		||||
 0f30 48010002 4800000c 60000000 60000000  H...H...`...`...
 | 
			
		||||
 0f40 7c2fcba6 3c200000 60211020 90010000  |/..< ..`!. ....
 | 
			
		||||
 0f50 90410008 9061000c 90810010 90a10014  .A...a..........
 | 
			
		||||
 0f60 90c10018 90e1001c 91010020 91210024  ........... .!.$
 | 
			
		||||
 0f70 91410028 9161002c 91810030 91a10034  .A.(.a.,...0...4
 | 
			
		||||
 0f80 91c10038 91e1003c 92010040 92210044  ...8...<...@.!.D
 | 
			
		||||
 0f90 92410048 9261004c 92810050 92a10054  .A.H.a.L...P...T
 | 
			
		||||
 0fa0 92c10058 92e1005c 93010060 93210064  ...X...\...`.!.d
 | 
			
		||||
 0fb0 93410068 9361006c 93810070 93a10074  .A.h.a.l...p...t
 | 
			
		||||
 0fc0 93c10078 93e1007c 7c4fcaa6 90410004  ...x...||O...A..
 | 
			
		||||
 0fd0 7c400026 90410080 7c4102a6 90410084  |@.&.A..|A...A..
 | 
			
		||||
 0fe0 7c4902a6 90410088 7c4802a6 9041008c  |I...A..|H...A..
 | 
			
		||||
 0ff0 7c4fcaa6 90410090 3c600000 60630d20  |O...A..<`..`c. 
 | 
			
		||||
 1000 8023009c 3c600867 60635309 4bfffad8  .#..<`.g`cS.K...
 | 
			
		||||
 1010 60000000 60000000 60000000 60000000  `...`...`...`...
 | 
			
		||||
 1020 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1030 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1040 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1050 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1060 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1070 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1080 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 1090 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 10a0 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 10b0 ffffffff 60000000 60000000 60000000  ....`...`...`...
 | 
			
		||||
 10c0 00000000 cd75f313 ffffffff 00000000  .....u..........
 | 
			
		||||
 10d0 ffffffff ffffffff ffffffff ffffffff  ................
 | 
			
		||||
 10e0 ffffffff 008a0c68 ffffffff 7fffffff  .......h........
 | 
			
		||||
 10f0 ffffffff ffffffff 8c20bde6 ffffffff  ......... ......
 | 
			
		||||
 1100 08aebf68 80000001 ffffffff 00000000  ...h............
 | 
			
		||||
 1110 ffffffff ffffffff 328a0ced ffffffff  ........2.......
 | 
			
		||||
 1120 ffffffff af224c19 ffffffff ffffffff  ....."L.........
 | 
			
		||||
 1130 d624b27a ffffffff ffffffff ffffffff  .$.z............
 | 
			
		||||
 1140 9bfd3628 98f0006e ffffffff ffffffff  ..6(...n........
 | 
			
		||||
 1150 ffffffff 00001104 00010038           ...........8    
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
../../sim/mem/test3
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue