verilator optimization experiments

pull/18/head
openpowerwtf 2 years ago
parent cb04a607db
commit 81f5d8dca2

@ -45,6 +45,60 @@ obj_dir_$mod/V$mod | tee sim_soc.txt
vcd2fst a2olitex.vcd soc.fst
rm a2olitex.vcd
gtkwave soc.fst soc.gtkw

time obj_dir_$mod/V$mod > sim_soc_notrace.txt

real 1m3.318s
user 0m58.941s
sys 0m3.368s
```

* notrace - faster execution?

```
dir=obj_dir_${mod}_notrace
verilator -cc --exe -CFLAGS -DNO_TRACE=1 --Mdir $dir --language 1364-2001 -Wno-fatal -Wno-LITENDIAN --error-limit 1 -I$. -Iverilog/a2o_litex -Iverilog/work -Iverilog/trilib -Iverilog/unisims -Iverilog/unisims_soc $mod tb_litex_$mod.cpp |& tee verilator_$mod.txt
make -j6 -C $dir -f V$mod.mk V$mod

time $dir/V$mod > sim_soc_notrace.txt

real 0m19.814s
user 0m19.577s
sys 0m0.188s
```

that is ~1.25KHz clk (25K cycs/20s).

* -O3 + notrace

```
dir=obj_dir_${mod}_notrace_o3
verilator -cc --exe -O3 -CFLAGS -DNO_TRACE=1 --Mdir $dir --language 1364-2001 -Wno-fatal -Wno-LITENDIAN --error-limit 1 -I$. -Iverilog/a2o_litex -Iverilog/work -Iverilog/trilib -Iverilog/unisims -Iverilog/unisims_soc $mod tb_litex_$mod.cpp |& tee verilator_$mod.txt
make -j6 -C $dir -f V$mod.mk V$mod
$dir/V$mod | tee sim_soc_o3.txt

time $dir/V$mod > sim_soc_notrace_o3.txt

real 0m23.279s
user 0m22.916s
sys 0m0.260s

```

* -O3 -O3 + notrace

```
dir=obj_dir_${mod}_notrace_o3_o3
verilator -cc --exe -O3 -CFLAGS -O3 -CFLAGS -DNO_TRACE=1 --Mdir $dir --language 1364-2001 -Wno-fatal -Wno-LITENDIAN --error-limit 1 -I$. -Iverilog/a2o_litex -Iverilog/work -Iverilog/trilib -Iverilog/unisims -Iverilog/unisims_soc $mod tb_litex_$mod.cpp |& tee verilator_$mod.txt
make -j6 -C $dir -f V$mod.mk V$mod
$dir/V$mod | tee sim_soc_o3_o3.txt

time $dir/V$mod > sim_soc_notrace_o3_o3.txt

real 0m23.244s
user 0m22.963s
sys 0m0.192s

```

##### first try

@ -1,7 +1,9 @@
// simple verilator top
// litex soc w/a2o

#ifndef NO_TRACE
#define TRACING
#endif

// old public access method
//#define OLD_PUBLIC

@ -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 0230 4C000064 rfi
163 #rfid
164 #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 48000003 bla 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

@ -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

bla 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,175 @@
#include <stdint.h>
#include <stdio.h>

#include "bios.h"

#ifdef PRINTF
#include "liblitex.h"

//static char printbuf[1000]; // make this a pointer with address a define
//const char* printbuf = (char *)0x12000;
#ifndef PRINTBUF
#define PRINTBUF 0x0001C000
#endif
//static int printbuf_ptr = 0;
static char *printbuf_ptr = (char *)PRINTBUF;
//wtf needs smt
void putchar_handler(char c) {
//printbuf[printbuf_ptr++] = c;
//*(printbuf + printbuf_ptr++) = c;
*printbuf_ptr++ = c;
}
#endif

// arci stuff
//void tst_done(unsigned int rc);
void tst_done(unsigned int rc);

// in kernel (for constant locs)
extern void tst_pass(void);
extern void tst_fail(int i);
/*
void tst_pass(void);
void tst_fail(int i);

void tst_fail(int i) {
while(1) {}
}

void tst_pass(void) {
while(1) {}
}
*/

//inline unsigned int checkResult(unsigned int r) __attribute__((always_inline));
unsigned int checkResult(unsigned int r);

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++) {
*(p++) = 0;
}

#ifdef PRINTF
console_set_write_hook(putchar_handler);
putchar('w');
putchar('t');
putchar('f');
putchar('\n');
printf("main(%i)\n", tid);
#endif

// 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

// r1 has been restored to where it was for 'b init_tst' above
void tst_done(unsigned int rc) {
unsigned int i, ok = 1;
unsigned int act, exp;

if (rc != MAGIC) {
tst_fail(0x80000000);
}

// check GPR & CR
for (i = 0; i < 32; i++) {
act = *(&tst_results + i);
exp = *(&tst_expects + i);
ok = ok && (act == exp);
if (!ok) {
tst_fail(i);
}
}

// check XER - a2o not compliant right now (only so/ov/ca/len)
i = 33;
act = *(&tst_results + i);
exp = *(&tst_expects + i) & 0xE000007F;
ok = ok && (act == exp);
if (!ok) {
tst_fail(i);
}

// check CLT - skip tar, a2o doesn't have usermode sprg to use for save reg, so using tar
//for (i = 34; i < 37; i++) {
for (i = 34; i < 36; i++) {
act = *(&tst_results + i);
exp = *(&tst_expects + i);
ok = ok && (act == exp);
if (!ok) {
tst_fail(i);
}
}

// could get back to kernel
tst_pass();
while (1) {}
}

// these are branched to! but if fun, they assume r1 is stack!!!!

// tst is ended with sc to return to priv mode; then save results
void int_sc(int code, int srr0) {
asm (
"b tst_end\n"
: // outputs
: // inputs
: // clobbers
);
}

void int_unhandled(void) {
while(1) {}
}

@ -0,0 +1,111 @@
#ifndef _BIOS_H_
#define _BIOS_H_

// need address for linker constants!
extern int _fdata_rom;
extern int _edata_rom;
extern int _fdata;
extern int _fbss;
extern int _ebss;

// printf to mem
void putchar_handler(char c);


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(
"mtspr 307,%0\n" // epcr
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_dec(int v) {
asm volatile(
"mtspr 22,%0\n" // dec
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tbh(int v) {
asm volatile(
"mtspr 285,%0\n" // tbh
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tbl(int v) {
asm volatile(
"mtspr 284,%0\n" // tbl
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tsr(int v) {
asm volatile(
"mtspr 336,%0\n" // tsr
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tcr(int v) {
asm volatile(
"mtspr 340,%0\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(
"mtspr 1014,%0\n" // xucr0
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tens(int v) {
asm volatile(
"mtspr 438,%0\n" // tens
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

#endif

@ -0,0 +1,390 @@
# © 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

.ifndef THREAD_ENABLES
.set THREAD_ENABLES 0x1
.endif

.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

#wtf this should to be done in bios based on the tst
# 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

#wtf get rid of this and just make the low 1G a single erat entry - it can be fixed up by bios later
.ifndef BIOS_START
.set BIOS_START,0x00010000
.endif

.section .text

.global _start

.org 0x000
_start:
int_000:
b boot_start

.ifdef TST_END
# tst ends with ba here, which switches to priv and jumps to tst_end
sc
.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 TST_END
# tst results haven't been saved yet; if want to call bios, need to save r1, then restore or set stack
b tst_end
.else
.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
.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 threads
# set thread configuration

li r1,THREAD_ENABLES
mtspr tens,r1 # 60:63 = tid 3:0 enabled
not r1,r1
mtspr tenc,r1 # in case T0 is marked disabled
isync

# 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

# ------------------------------------------------------------------------------------------------------------------------------

.ifdef TST_PASSFAIL
.global tst_pass
.global tst_fail

.org 0x7F0
tst_pass:
b .

.org 0x7F4
tst_fail:
b .
.endif

.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,102 @@
#!/usr/bin/bash

export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"

#LITEXLIB=
#PRINTF=
LITEXLIB="libc.o vsnprintf.o console.o"
# getting dtlb in vsnprintf
PRINTF="-DPRINTF"

# 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 THREAD_ENABLES=3 -defsym TST_END=1 -defsym INT_UNHANDLED=1 -defsym TST_PASSFAIL=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 $PRINTF -c -I. $CFLAGS bios.c
if [ $? -ne 0 ]; then
exit
fi

echo ""
echo "Linking..."
powerpc-linux-gnu-ld -nostdlib -nodefaultlibs -T linker.ld crt0.o bios.o arcitst.o $LITEXLIB -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}"
#

@ -0,0 +1,43 @@
#!/usr/bin/bash

export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"

echo -n "Compiling..."

echo ""

echo -n "libc.c "
powerpc-linux-gnu-gcc -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS -DNO_FLOAT litex/libbase/libc.c
if [ $? -ne 0 ]; then
exit
fi

echo -n "vsnprintf.c "
# NO_FLOAT gets rid of
#snprintf.c:(.text+0x800): undefined reference to `log10'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x80c): undefined reference to `floor'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x824): undefined reference to `pow'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x898): undefined reference to `fmod'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x950): undefined reference to `fmod'
powerpc-linux-gnu-gcc -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS -DNO_FLOAT litex/libbase/vsnprintf.c
if [ $? -ne 0 ]; then
exit
fi

echo -n "console.c "
# use hacked console.c to printf to mem instead of uart - use console_set_write_hook(console_write_hook putchar_handler)) to print to buffer
#powerpc-linux-gnu-gcc -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS litex/libbase/console.c
powerpc-linux-gnu-gcc -nostdlib -nodefaultlibs -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS console.c

if [ $? -ne 0 ]; then
exit
fi

echo ""

#echo "Linking to test dependencies..."
#powerpc-linux-gnu-ld -nostdlib -nodefaultlibs libc.o vsnprintf.o console.o -o litexlib.o
#if [ $? -ne 0 ]; then
# exit
#fi

@ -0,0 +1,113 @@
// use console_set_write_hook(func) to do putchar() to mem

//#include <uart.h>
#include <console.h>
#include <stdio.h>
#include <stdarg.h>

//#include <generated/csr.h>

FILE *stdin, *stdout, *stderr;

static console_write_hook write_hook;
static console_read_hook read_hook;
static console_read_nonblock_hook read_nonblock_hook;

void console_set_write_hook(console_write_hook h)
{
write_hook = h;
}

void console_set_read_hook(console_read_hook r, console_read_nonblock_hook rn)
{
read_hook = r;
read_nonblock_hook = rn;
}

#ifdef CSR_UART_BASE
int putchar(int c)
{
uart_write(c);
if(write_hook != NULL)
write_hook(c);
if (c == '\n')
putchar('\r');
return c;
}

char readchar(void)
{
while(1) {
if(uart_read_nonblock())
return uart_read();
if((read_nonblock_hook != NULL) && read_nonblock_hook())
return read_hook();
}
}

int readchar_nonblock(void)
{
return (uart_read_nonblock()
|| ((read_nonblock_hook != NULL) && read_nonblock_hook()));
}

#else

int putchar(int c)
{
if(write_hook != NULL)
write_hook(c);
return c;
}

char readchar(void)
{
while(1) {
if((read_nonblock_hook != NULL) && read_nonblock_hook())
return read_hook();
}
}

int readchar_nonblock(void)
{
return ((read_nonblock_hook != NULL) && read_nonblock_hook());
}

#endif

int puts(const char *s)
{
putsnonl(s);
putchar('\n');
return 1;
}

void putsnonl(const char *s)
{
while(*s) {
putchar(*s);
s++;
}
}

#define PRINTF_BUFFER_SIZE 256

int vprintf(const char *fmt, va_list args)
{
int len;
char outbuf[PRINTF_BUFFER_SIZE];
len = vscnprintf(outbuf, sizeof(outbuf), fmt, args);
outbuf[len] = 0;
putsnonl(outbuf);
return len;
}

int printf(const char *fmt, ...)
{
int len;
va_list args;
va_start(args, fmt);
len = vprintf(fmt, args);
va_end(args);
return len;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

@ -0,0 +1,674 @@
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 .ifndef THREAD_ENABLES
35 .set THREAD_ENABLES 0x1
36 .endif
37
38 .ifdef BIOS_32
39 # sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
40 .set BIOS_MSR,0x0002B000
41 .else
42 # sup MSR cm=1 ce=1 ee=1 pr=0 fp=1 me=1 fe=00 de=0 is=0 ds=0
43 .set BIOS_MSR,0x8002B000
44 .endif
45
46 #wtf this should to be done in bios based on the tst
47 # 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
48 .ifdef BIOS_LE
49 .set BIOS_ERATW2,0x000000BF
50 .else
51 .set BIOS_ERATW2,0x0000003F
52 .endif
53
54 # bios might be able to use one stack during thread startup if careful
55 .ifndef BIOS_STACK_0
56 .set BIOS_STACK_0,_stack_0
57 .endif
58
59 .ifndef BIOS_STACK_1
60 .set BIOS_STACK_1,_stack_1
61 .endif
62
63 #wtf get rid of this and just make the low 1G a single erat entry - it can be fixed up by bios late
64 .ifndef BIOS_START
65 .set BIOS_START,0x00010000
66 .endif
67
68 .section .text
69
70 .global _start
71
72 .org 0x000
73 _start:
74 int_000:
75 0000 48000400 b boot_start
76
77 .ifdef TST_END
78 # tst ends with ba here, which switches to priv and jumps to tst_end
79 0004 44000002 sc
80 .endif
81
82 # critical input
83 0008 00000000 .org 0x020
83 00000000
83 00000000
83 00000000
83 00000000
84 int_020:
85 .ifdef INT_UNHANDLED
86 0020 48000000 b int_unhandled
87 .else
88 b .
89 .endif
90
91 # debug
92 0024 00000000 .org 0x040
92 00000000
92 00000000
92 00000000
92 00000000
93 int_040:
94 0040 48000000 b .
95
96 # dsi
97 0044 00000000 .org 0x060
97 00000000
97 00000000
97 00000000
97 00000000
98 int_060:
99 0060 48000000 b .
100
101 # isi
102 0064 00000000 .org 0x080
102 00000000
102 00000000
102 00000000
102 00000000
103 int_080:
104 0080 48000000 b .
105
106 # external
107 0084 00000000 .org 0x0A0
107 00000000
107 00000000
107 00000000
107 00000000
108 int_0A0:
109 00a0 48000000 b .
110
111 # alignment
112 00a4 00000000 .org 0x0C0
112 00000000
112 00000000
112 00000000
112 00000000
113 int_0C0:
114 00c0 48000000 b .
115
116 # program
117 00c4 00000000 .org 0x0E0
117 00000000
117 00000000
117 00000000
117 00000000
118 int_0E0:
119 00e0 48000000 b .
120
121 # fp unavailable
122 00e4 00000000 .org 0x100
122 00000000
122 00000000
122 00000000
122 00000000
123 int_100:
124 0100 48000000 b .
125
126 # sc
127 0104 00000000 .org 0x120
127 00000000
127 00000000
127 00000000
127 00000000
128 int_120:
129 .ifdef TST_END
130 # tst results haven't been saved yet; if want to call bios, need to save r1, then restore or set st
131 0120 48000000 b tst_end
132 .else
133 .ifdef INT_SC
134 # lev is in 20:26, but supposed to use scv now
135 li r3,0
136 mfsrr0 r4
137 b int_sc
138 .else
139 .ifdef INT_UNHANDLED
140 b int_unhandled
141 .else
142 b .
143 .endif
144 .endif
145 .endif
146
147 # apu unavailable
148 0124 00000000 .org 0x140
148 00000000
148 00000000
148 00000000
148 00000000
149 int_140:
150 0140 48000000 b .
151
152 # decrementer
153 0144 00000000 .org 0x160
153 00000000
153 00000000
153 00000000
153 00000000
154 int_160:
155 0160 48000000 b .
156
157 # fit
158 0164 00000000 .org 0x180
158 00000000
158 00000000
158 00000000
158 00000000
159 int_180:
160 0180 48000000 b .
161
162 # watchdog
163 0184 00000000 .org 0x1A0
163 00000000
163 00000000
163 00000000
163 00000000
164 int_1A0:
165 01a0 48000000 b .
166
167 # dtlb
168 01a4 00000000 .org 0x1C0
168 00000000
168 00000000
168 00000000
168 00000000
169 int_1C0:
170 01c0 48000000 b .
171
172 # itlb
173 01c4 00000000 .org 0x1E0
173 00000000
173 00000000
173 00000000
173 00000000
174 int_1E0:
175 01e0 48000000 b .
176
177 # vector unavailable
178 01e4 00000000 .org 0x200
178 00000000
178 00000000
178 00000000
178 00000000
179 int_200:
180 0200 48000000 b .
181
182 #
183 0204 00000000 .org 0x220
183 00000000
183 00000000
183 00000000
183 00000000
184 int_220:
185 0220 48000000 b .
186
187 #
188 0224 00000000 .org 0x240
188 00000000
188 00000000
188 00000000
188 00000000
189 int_240:
190 0240 48000000 b .
191
192 #
193 0244 00000000 .org 0x260
193 00000000
193 00000000
193 00000000
193 00000000
194 int_260:
195 0260 48000000 b .
196
197 # doorbell
198 0264 00000000 .org 0x280
198 00000000
198 00000000
198 00000000
198 00000000
199 int_280:
200 0280 48000000 b .
201
202 # doorbell critical
203 0284 00000000 .org 0x2A0
203 00000000
203 00000000
203 00000000
203 00000000
204 int_2A0:
205 02a0 48000000 b .
206
207 # doorbell guest
208 02a4 00000000 .org 0x2C0
208 00000000
208 00000000
208 00000000
208 00000000
209 int_2C0:
210 02c0 48000000 b .
211
212 # doorbell guest critical
213 02c4 00000000 .org 0x2E0
213 00000000
213 00000000
213 00000000
213 00000000
214 int_2E0:
215 02e0 48000000 b .
216
217 # hvsc
218 02e4 00000000 .org 0x300
218 00000000
218 00000000
218 00000000
218 00000000
219 int_300:
220 0300 48000000 b .
221
222 # hvpriv
223 0304 00000000 .org 0x320
223 00000000
223 00000000
223 00000000
223 00000000
224 int_320:
225 0320 48000000 b .
226
227 # lrat
228 0324 00000000 .org 0x340
228 00000000
228 00000000
228 00000000
228 00000000
229 int_340:
230 0340 48000000 b .
231
232 # -------------------------------------------------------------------------------------------------
233 # initial translation
234 # both erats:
235 # 00000000 64K: (rom, BE)
236 # 00010000 64K: (ram, BE or LE)
237 #
238 0344 00000000 .org 0x400
238 00000000
238 00000000
238 00000000
238 00000000
239 boot_start:
240
241 0400 7CBE6AA6 mfspr r5,tir # who am i?
242 0404 2C250000 cmpdi r5,0x00 # skip unless T0
243 0408 408200F4 bne init_t123
244
245 040c 3C608C00 lis r3,0x8C00 # 32=ecl 36:37=tlbsel (10=i, 11=d)
246
247 # derat 31 @00000000
248 0410 3800001F li r0,0x001F # entry #31
249 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/
250 0418 38800000 li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
251 041c 3900023F li r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
252
253 0420 7C7CFBA6 mtspr mmucr0,r3
254 0424 7C4011A6 eratwe r2,r0,2
255 0428 7C8009A6 eratwe r4,r0,1
256 042c 7D0001A6 eratwe r8,r0,0
257 0430 4C00012C isync
258
259 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/
259 654A0000
259 614A003F
260
261 # derat 30 @<BIOS_START>
262 0440 3800001E li r0,0x001E # entry #30
263 0444 38800000 load32 r4,BIOS_START # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
263 64840001
263 60840000
264 0450 39000000 load32 r8,BIOS_START
264 65080001
264 61080000
265 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
266
267 0460 7D4011A6 eratwe r10,r0,2
268 0464 7C8009A6 eratwe r4,r0,1
269 0468 7D0001A6 eratwe r8,r0,0
270 046c 4C00012C isync
271
272 0470 3C608800 lis r3,0x8800 # 32=ecl 36:37=tlbsel (10=i, 11=d)
273
274 # ierat 15 @00000000
275 0474 3800000F li r0,0x000F # entry #15
276 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/
277 047c 38800000 li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
278 0480 3900023F li r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
279
280 0484 7C7CFBA6 mtspr mmucr0,r3
281 0488 7C4011A6 eratwe r2,r0,2
282 048c 7C8009A6 eratwe r4,r0,1
283 0490 7D0001A6 eratwe r8,r0,0
284 0494 4C00012C isync
285
286 # *** leave the init'd entry 14 for MT access to FFFFFFC0
287 # ierat 13 @<BIOS_START>
288 0498 3800000D li r0,0x000D # entry #13
289 049c 38800000 load32 r4,BIOS_START # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
289 64840001
289 60840000
290 04a8 39000000 load32 r8,BIOS_START
290 65080001
290 61080000
291 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
292
293 04b8 7D4011A6 eratwe r10,r0,2
294 04bc 7C8009A6 eratwe r4,r0,1
295 04c0 7D0001A6 eratwe r8,r0,0
296 04c4 4C00012C isync
297
298 04c8 48000004 b init_t0
299
300 # -------------------------------------------------------------------------------------------------
301 # init
302 #
303
304 # T0
305
306 init_t0:
307
308 # set up threads
309 # set thread configuration
310
311 04cc 38200003 li r1,THREAD_ENABLES
312 04d0 7C366BA6 mtspr tens,r1 # 60:63 = tid 3:0 enabled
313 04d4 7C2108F8 not r1,r1
314 04d8 7C376BA6 mtspr tenc,r1 # in case T0 is marked disabled
315 04dc 4C00012C isync
316
317 # set up BIOS msr
318
319 04e0 39400000 load32 r10,BIOS_MSR
319 654A8002
319 614AB000
320 04ec 7D400124 mtmsr r10
321 04f0 4C00012C isync
322 # can't use load32 unless you can .set BIOS_STACK_0 to the linked value
323 # load32 r1,BIOS_STACK_0 # @stack_0
324 # this ignores def
325 # lis r1,_stack_0@h
326 # ori r1,r1,_stack_0@l
327 # this requires data load
328 04f4 80200000 lwz r1,stack_0(r0)
329
330 04f8 48000020 b boot_complete
331
332 # except T0
333
334 init_t123:
335
336 # set up BIOS msr
337
338 04fc 39400000 load32 r10,BIOS_MSR
338 654A8002
338 614AB000
339 0508 7D400124 mtmsr r10
340 050c 4C00012C isync
341 # check tir if more than 2 threads possible
342 0510 80200000 lwz r1,stack_1(r0)
343
344 0514 48000004 b boot_complete
345
346 # -------------------------------------------------------------------------------------------------
347 boot_complete:
348
349 # set up thread and hop to it
350
351 0518 3C600000 lis r3,main@h
352 051c 60630000 ori r3,r3,main@l
353 0520 7C6903A6 mtctr r3
354 0524 7C7E6AA6 mfspr r3,tir # who am i?
355 0528 4E800421 bctrl
356 052c 480002D0 b kernel_return
357
358 # -------------------------------------------------------------------------------------------------
359
360 .ifdef TST_PASSFAIL
361 .global tst_pass
362 .global tst_fail
363
364 0530 00000000 .org 0x7F0
364 00000000
364 00000000
364 00000000
364 00000000
365 tst_pass:
366 07f0 48000000 b .
367
368 .org 0x7F4
369 tst_fail:
370 07f4 48000000 b .
371 .endif
372
373 07f8 00000000 .org 0x7FC
374 kernel_return:
375 07fc 48000000 b .
376
377 # dec
378 .org 0x800
379 int_800:
380 0800 48000000 b .
381
382 # perf
383 0804 00000000 .org 0x820
383 00000000
383 00000000
383 00000000
383 00000000
384 int_820:
385 0820 48000000 b .
386
387 0824 00000000 .org 0x8F0
387 00000000
387 00000000
387 00000000
387 00000000
388 .section .rodata
389 0000 00000000 stack_0: .long BIOS_STACK_0
390 0004 00000000 stack_1: .long BIOS_STACK_1

@ -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,8 @@
#ifndef _LITEXLIB_
#define _LITEXLIB_

//#include <litex/include/base/console.h>
#include <litex/libbase/console.h>


#endif

@ -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.* .sdata .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 :
{
. = 0x0000C000; /*relative to start of ram! ALIGN(16384*4);*/
_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 @@
/home/wtf/projects/litex/litex/soc/software

@ -0,0 +1,85 @@
# 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
```

### methodology

1. produce tst.s (stub code and tst definition) and link with kernel/bios
2. tst init is done in tst.s
3. jmp2tst
4. tst ends (bla through kernel, sc, etc.)
5. tst cleanup is done in tst.s
6. tst checking, etc. is done in bios




### debug

* hanging during results save; itags not executed in cpl queue

![](cpl_hang.png)

* itags 07-0B are dispatched but not marked 'executed' in cplq; they were sent to stq

* not documented completely in spec (CPCR2, CPCR3, CPCR4, CPCR5); 2/3 are for hi-pri and 4/5 for med(?)

```
assign spr_t0_cpcr2_fx0_cnt = cpcr2_l2[0][35:39];
assign spr_t0_cpcr2_fx1_cnt = cpcr2_l2[0][43:47];
assign spr_t0_cpcr2_lq_cnt = cpcr2_l2[0][51:55];
assign spr_t0_cpcr2_sq_cnt = cpcr2_l2[0][59:63];
assign spr_t0_cpcr3_fu0_cnt = cpcr3_l2[0][43:47];
assign spr_t0_cpcr3_fu1_cnt = cpcr3_l2[0][51:55];
assign spr_t0_cpcr3_cp_cnt = cpcr3_l2[0][57:63];
assign spr_t0_cpcr4_fx0_cnt = cpcr4_l2[0][35:39];
assign spr_t0_cpcr4_fx1_cnt = cpcr4_l2[0][43:47];
assign spr_t0_cpcr4_lq_cnt = cpcr4_l2[0][51:55];
assign spr_t0_cpcr4_sq_cnt = cpcr4_l2[0][59:63];
assign spr_t0_cpcr5_fu0_cnt = cpcr5_l2[0][43:47];
assign spr_t0_cpcr5_fu1_cnt = cpcr5_l2[0][51:55];
assign spr_t0_cpcr5_cp_cnt = cpcr5_l2[0][57:63];
```

* verilog violation in iuq_dispatch! unused thread 1 strand bits skipping force to 0, and used later as x's for credit checks which didn't stop dispatch

```
//wtf (THREADS1 is def'd)
// iverilog sez: ../../verilog/work/iuq_dispatch.v:2322: warning: @* found no sensitivities so it will never trigger.
// seems to be correct behavior - block won't be entered without a value change
// make it initial, or a generate?
`ifdef THREADS1
//always @(*)
initial
```


### printf from litex

add putchar function to store to memory buffer

```
/home/wtf/projects/litex/litex/soc/software/libbase/vsnprintf.c

plus at least these:

from /home/wtf/projects/litex/litex/soc/software/include/base/
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stddef.h>

from /home/wtf/projects/litex/litex/soc/software/include/fdlibm
#include <fdlibm.h>
```

@ -0,0 +1,6 @@
MEMORY {
rom : ORIGIN = 0x00000000, LENGTH = 0x00010000
tst : ORIGIN = 0x00010000, LENGTH = 0x00002000
ram : ORIGIN = 0x00012000, LENGTH = 0x0000E000
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,958 @@

rom: file format elf32-powerpc

Contents of section .kernel:
0000 48000400 44000002 00000000 00000000 H...D...........
0010 00000000 00000000 00000000 00000000 ................
0020 48001010 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 48001154 00000000 00000000 00000000 H..T............
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 408200f4 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 38200003 }...L..,H...8 ..
04d0 7c366ba6 7c2108f8 7c376ba6 4c00012c |6k.|!..|7k.L..,
04e0 39400000 654a8002 614ab000 7d400124 9@..eJ..aJ..}@.$
04f0 4c00012c 802008fa 48000020 39400000 L..,. ..H.. 9@..
0500 654a8002 614ab000 7d400124 4c00012c eJ..aJ..}@.$L..,
0510 802008fe 48000004 3c600000 60630c34 . ..H...<`..`c.4
0520 7c6903a6 7c7e6aa6 4e800421 480002d0 |i..|~j.N..!H...
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 48000000 48000000 00000000 48000000 H...H.......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 6d61696e 28256929 0a000001 fff80000 main(%i)........
0900 fff80000 08080808 08080808 08282828 .............(((
0910 28280808 08080808 08080808 08080808 ((..............
0920 08080808 a0101010 10101010 10101010 ................
0930 10101010 04040404 04040404 04041010 ................
0940 10101010 10414141 41414101 01010101 .....AAAAAA.....
0950 01010101 01010101 01010101 01010110 ................
0960 10101010 10424242 42424202 02020202 .....BBBBBB.....
0970 02020202 02020202 02020202 02020210 ................
0980 10101008 00000000 00000000 00000000 ................
0990 00000000 00000000 00000000 00000000 ................
09a0 00000000 a0101010 10101010 10101010 ................
09b0 10101010 10101010 10101010 10101010 ................
09c0 10101010 01010101 01010101 01010101 ................
09d0 01010101 01010101 01010110 01010101 ................
09e0 01010102 02020202 02020202 02020202 ................
09f0 02020202 02020202 02020210 02020202 ................
0a00 02020202 41626f72 7465642e 00000000 ....Aborted.....
0a10 30313233 34353637 38394142 43444546 0123456789ABCDEF
0a20 4748494a 4b4c4d4e 4f505152 53545556 GHIJKLMNOPQRSTUV
0a30 5758595a 00000000 30313233 34353637 WXYZ....01234567
0a40 38396162 63646566 6768696a 6b6c6d6e 89abcdefghijklmn
0a50 6f707172 73747576 7778797a 00000000 opqrstuvwxyz....
0a60 3c4e554c 4c3e0000 00002180 000021b0 <NULL>....!...!.
0a70 000021b0 00002190 000021b0 000021b0 ..!...!...!...!.
0a80 000021b0 000021b0 000021b0 000021b0 ..!...!...!...!.
0a90 000021b0 00002170 000021b0 00002160 ..!...!p..!...!`
0aa0 000021b0 000021b0 000021a0 000028e8 ..!...!...!...(.
0ab0 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0ac0 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0ad0 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0ae0 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0af0 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b00 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b10 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b20 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b30 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b40 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b50 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b60 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b70 00002948 00002948 00002920 00002948 ..)H..)H..) ..)H
0b80 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0b90 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0ba0 00002948 00002424 00002938 00002948 ..)H..$$..)8..)H
0bb0 00002948 00002948 00002948 00002938 ..)H..)H..)H..)8
0bc0 00002948 00002948 00002948 00002948 ..)H..)H..)H..)H
0bd0 0000276c 00002914 000026c4 00002948 ..'l..)...&...)H
0be0 00002948 00002540 00002948 000029c0 ..)H..%@..)H..).
0bf0 00002948 00002948 0000292c 00000000 ..)H..)H..),....
Contents of section .bios:
0c00 9421fff0 7c691b78 99210008 3d200001 .!..|i.x.!..= ..
0c10 81292000 39090001 3d400001 910a2000 .) .9...=@.... .
0c20 89410008 99490000 60000000 38210010 .A...I..`...8!..
0c30 4e800020 9421ffc0 7c0802a6 90010044 N.. .!..|......D
0c40 90610038 3d200001 39292000 9121000c .a.8= ..9) ..!..
0c50 3d200000 39291060 91210010 81210038 = ..9).`.!...!.8
0c60 2c090000 4182000c 3920ffff 48000190 ,...A...9 ..H...
0c70 3d200000 39291034 91210008 48000028 = ..9).4.!..H..(
0c80 8121000c 39490004 9141000c 81410008 .!..9I...A...A..
0c90 814a0000 91490000 81210008 39290004 .J...I...!..9)..
0ca0 91210008 81410008 3d200000 3929103c .!...A..= ..9).<
0cb0 7c0a4840 4180ffcc 3d200002 3929e008 |.H@A...= ..9)..
0cc0 91210008 48000024 81210008 39490004 .!..H..$.!..9I..
0cd0 91410008 39400000 91490000 81210008 .A..9@...I...!..
0ce0 39290004 91210008 81410008 3d200002 9)...!...A..= ..
0cf0 3929e028 7c0a4840 4180ffd0 3d200000 9).(|.H@A...= ..
0d00 38690c00 4cc63182 48002b39 38600077 8i..L.1.H.+98`.w
0d10 48002b81 38600074 48002b79 38600066 H.+.8`.tH.+y8`.f
0d20 48002b71 3860000a 48002b69 80810038 H.+q8`..H.+i...8
0d30 3d200000 386908f0 4cc63182 48002d5d = ..8i..L.1.H.-]
0d40 3d200300 91210034 81210034 7d334ba6 = ...!.4.!.4}3K.
0d50 60000000 39200000 91210030 81210030 `...9 ...!.0.!.0
0d60 7d3603a6 60000000 39200000 9121002c }6..`...9 ...!.,
0d70 8121002c 7d3d43a6 60000000 39200000 .!.,}=C.`...9 ..
0d80 91210028 81210028 7d3c43a6 60000000 .!.(.!.(}<C.`...
0d90 3d20fe00 91210024 81210024 7d3053a6 = ...!.$.!.$}0S.
0da0 60000000 7d36faa6 91210020 81210020 `...}6...!. .!.
0db0 552905ea 9121001c 8121001c 7d36fba6 U)...!...!..}6..
0dc0 60000000 39200000 91210018 81210018 `...9 ...!...!..
0dd0 7d3053a6 60000000 39200000 91210014 }0S.`...9 ...!..
0de0 81210014 7d3453a6 60000000 81210010 .!..}4S.`....!..
0df0 7d234b78 4800038c 48000000 7d234b78 }#KxH...H...}#Kx
0e00 80010044 7c0803a6 38210040 4e800020 ...D|...8!.@N..
0e10 9421ffe0 7c0802a6 90010024 90610018 .!..|......$.a..
0e20 39200001 9121000c 81410018 3d200867 9 ...!...A..= .g
0e30 61295309 7c0a4800 4182000c 3c608000 a)S.|.H.A...<`..
0e40 4bfff9b5 39200000 91210008 4800008c K...9 ...!..H...
0e50 81210008 552a103a 3d200000 39291360 .!..U*.:= ..9).`
0e60 7d2a4a14 81290000 91210010 81210008 }*J..)...!...!..
0e70 552a103a 3d200000 39291400 7d2a4a14 U*.:= ..9)..}*J.
0e80 81290000 91210014 8121000c 2c090000 .)...!...!..,...
0e90 4182001c 81410010 81210014 7c0a4800 A....A...!..|.H.
0ea0 4082000c 39200001 48000008 39200000 @...9 ..H...9 ..
0eb0 9121000c 8121000c 2c090000 40820010 .!...!..,...@...
0ec0 81210008 7d234b78 4bfff92d 81210008 .!..}#KxK..-.!..
0ed0 39290001 91210008 81210008 2809001f 9)...!...!..(...
0ee0 4081ff70 39200021 91210008 81210008 @..p9 .!.!...!..
0ef0 552a103a 3d200000 39291360 7d2a4a14 U*.:= ..9).`}*J.
0f00 81290000 91210010 81210008 552a103a .)...!...!..U*.:
0f10 3d200000 39291400 7d2a4a14 81290000 = ..9)..}*J..)..
0f20 55290644 91210014 8121000c 2c090000 U).D.!...!..,...
0f30 4182001c 81410010 81210014 7c0a4800 A....A...!..|.H.
0f40 4082000c 39200001 48000008 39200000 @...9 ..H...9 ..
0f50 9121000c 8121000c 2c090000 40820010 .!...!..,...@...
0f60 81210008 7d234b78 4bfff88d 39200022 .!..}#KxK...9 ."
0f70 91210008 4800008c 81210008 552a103a .!..H....!..U*.:
0f80 3d200000 39291360 7d2a4a14 81290000 = ..9).`}*J..)..
0f90 91210010 81210008 552a103a 3d200000 .!...!..U*.:= ..
0fa0 39291400 7d2a4a14 81290000 91210014 9)..}*J..)...!..
0fb0 8121000c 2c090000 4182001c 81410010 .!..,...A....A..
0fc0 81210014 7c0a4800 4082000c 39200001 .!..|.H.@...9 ..
0fd0 48000008 39200000 9121000c 8121000c H...9 ...!...!..
0fe0 2c090000 40820010 81210008 7d234b78 ,...@....!..}#Kx
0ff0 4bfff805 81210008 39290001 91210008 K....!..9)...!..
1000 81210008 28090023 4081ff70 4bfff7e5 .!..(..#@..pK...
1010 48000000 9421fff0 90610008 9081000c H....!...a......
1020 48000254 60000000 38210010 4e800020 H..T`...8!..N..
1030 48000000 H...
Contents of section .data:
12000 0001c000 00000000 ........
Contents of section .arcitst:
1040 696e666f 20746578 74006865 61646572 info text.header
1050 20746578 74000000 00000000 00000000 text...........
1060 00000000 5822c905 ffffffff 91b6d1a3 ....X"..........
1070 ffffffff ffffffff ffffffff ffffffff ................
1080 ffffffff 7e11ee88 ffffffff 7fffffff ....~...........
1090 ffffffff ffffffff 8c20bde6 ffffffff ......... ......
10a0 76d0dadf 15111f42 ffffffff 36108e50 v......B....6..P
10b0 ffffffff ffffffff 328a0ced ffffffff ........2.......
10c0 ffffffff af224c19 ffffffff ffffffff ....."L.........
10d0 d624b27a ffffffff ffffffff ffffffff .$.z............
10e0 dbfd3628 89f0006e ffffffff ffffffff ..6(...n........
10f0 ffffffff 00001104 00010000 00000000 ................
1100 0000000d 7c61cc14 7d230595 7ac37392 ....|a..}#..z.s.
1110 7e094c11 7e1cb115 7a338886 7c6004d1 ~.L.~...z3..|`..
1120 7e09b038 7c360591 7e2b00d1 60000000 ~..8|6..~+..`...
1130 60000000 60000000 00010000 00010004 `...`...........
1140 00010008 0001000c 00010010 00010014 ................
1150 00010018 0001001c 00010020 00010024 ........... ...$
1160 00010028 0001002c 00010030 48000014 ...(...,...0H...
1170 60000000 60000000 60000000 60000000 `...`...`...`...
1180 9023009c 802300a0 7c2903a6 382300a4 .#...#..|)..8#..
1190 384300d8 80810000 80a20000 90850000 8C..............
11a0 38210004 38420004 4200ffec 3c804800 8!..8B..B...<.H.
11b0 60840006 90850000 802010f4 7c3b03a6 `........ ..|;..
11c0 80201138 7c3a03a6 80230080 7c2ff120 . .8|:...#..|/.
11d0 80230084 7c2103a6 80230088 7c2903a6 .#..|!...#..|)..
11e0 8023008c 7c2803a6 80230090 7c2fcba6 .#..|(...#..|/..
11f0 80030000 80230004 80430008 80830010 .....#...C......
1200 80a30014 80c30018 80e3001c 81030020 ...............
1210 81230024 81430028 8163002c 81830030 .#.$.C.(.c.,...0
1220 81a30034 81c30038 81e3003c 82030040 ...4...8...<...@
1230 82230044 82430048 8263004c 82830050 .#.D.C.H.c.L...P
1240 82a30054 82c30058 82e3005c 83030060 ...T...X...\...`
1250 83230064 83430068 8363006c 83830070 .#.d.C.h.c.l...p
1260 83a30074 83c30078 83e3007c 8063000c ...t...x...|.c..
1270 4c000064 4800000c 60000000 60000000 L..dH...`...`...
1280 7c2fcba6 3c200000 60211360 90010000 |/..< ..`!.`....
1290 90410008 9061000c 90810010 90a10014 .A...a..........
12a0 90c10018 90e1001c 91010020 91210024 ........... .!.$
12b0 91410028 9161002c 91810030 91a10034 .A.(.a.,...0...4
12c0 91c10038 91e1003c 92010040 92210044 ...8...<...@.!.D
12d0 92410048 9261004c 92810050 92a10054 .A.H.a.L...P...T
12e0 92c10058 92e1005c 93010060 93210064 ...X...\...`.!.d
12f0 93410068 9361006c 93810070 93a10074 .A.h.a.l...p...t
1300 93c10078 93e1007c 7c4fcaa6 90410004 ...x...||O...A..
1310 7c400026 90410080 7c4102a6 90410084 |@.&.A..|A...A..
1320 7c4902a6 90410088 7c4802a6 9041008c |I...A..|H...A..
1330 7c4fcaa6 90410090 3c600000 60631060 |O...A..<`..`c.`
1340 8023009c 3c600867 60635309 48000e13 .#..<`.g`cS.H...
1350 60000000 60000000 60000000 60000000 `...`...`...`...
1360 ffffffff ffffffff ffffffff ffffffff ................
1370 ffffffff ffffffff ffffffff ffffffff ................
1380 ffffffff ffffffff ffffffff ffffffff ................
1390 ffffffff ffffffff ffffffff ffffffff ................
13a0 ffffffff ffffffff ffffffff ffffffff ................
13b0 ffffffff ffffffff ffffffff ffffffff ................
13c0 ffffffff ffffffff ffffffff ffffffff ................
13d0 ffffffff ffffffff ffffffff ffffffff ................
13e0 ffffffff ffffffff ffffffff ffffffff ................
13f0 ffffffff 60000000 60000000 60000000 ....`...`...`...
1400 00000000 cd75f313 ffffffff 00000000 .....u..........
1410 ffffffff ffffffff ffffffff ffffffff ................
1420 ffffffff 008a0c68 ffffffff 7fffffff .......h........
1430 ffffffff ffffffff 8c20bde6 ffffffff ......... ......
1440 08aebf68 80000001 ffffffff 00000000 ...h............
1450 ffffffff ffffffff 328a0ced ffffffff ........2.......
1460 ffffffff af224c19 ffffffff ffffffff ....."L.........
1470 d624b27a ffffffff ffffffff ffffffff .$.z............
1480 9bfd3628 98f0006e ffffffff ffffffff ..6(...n........
1490 ffffffff 00001104 00010038 ...........8
Contents of section .text:
149c 9421fff0 7c691b78 99210008 89210008 .!..|i.x.!...!..
14ac 3d400000 394a0904 7d2a48ae 552907bc =@..9J..}*H.U)..
14bc 2c090000 41820010 89210008 3929ffe0 ,...A....!..9)..
14cc 99210008 89210008 7d234b78 38210010 .!...!..}#Kx8!..
14dc 4e800020 9421fff0 7c691b78 b1210008 N.. .!..|i.x.!..
14ec a1210008 5529402e 7d2a0734 a1210008 .!..U)@.}*.4.!..
14fc 5529c23e 5529043e 7d290734 7d494b78 U).>U).>}).4}IKx
150c 7d290734 5529043e 7d234b78 38210010 }).4U).>}#Kx8!..
151c 4e800020 9421fff0 90610008 81210008 N.. .!...a...!..
152c 552a463e 81210008 5529c23e 5529042e U*F>.!..U).>U)..
153c 7d4a4b78 81210008 5529402e 5529021e }JKx.!..U)@.U)..
154c 7d4a4b78 81210008 5529c00e 7d494b78 }JKx.!..U)..}IKx
155c 7d234b78 38210010 4e800020 9421fff0 }#Kx8!..N.. .!..
156c 90610008 9081000c 48000028 81210008 .a......H..(.!..
157c 89290000 2c090000 4082000c 39200000 .)..,...@...9 ..
158c 4800002c 81210008 39290001 91210008 H..,.!..9)...!..
159c 81210008 89490000 8121000c 5529063e .!...I...!..U).>
15ac 7c0a4840 4082ffc8 81210008 7d234b78 |.H@@....!..}#Kx
15bc 38210010 4e800020 9421ffe0 90610018 8!..N.. .!...a..
15cc 9081001c 81210018 91210008 48000058 .....!...!..H..X
15dc 8121001c 9121000c 48000030 81210008 .!...!..H..0.!..
15ec 89490000 8121000c 89290000 7c0a4840 .I...!...)..|.H@
15fc 4082000c 81210008 48000040 8121000c @....!..H..@.!..
160c 39290001 9121000c 8121000c 89290000 9)...!...!...)..
161c 2c090000 4082ffc8 81210008 39290001 ,...@....!..9)..
162c 91210008 81210008 89290000 2c090000 .!...!...)..,...
163c 4082ffa0 39200000 7d234b78 38210020 @...9 ..}#Kx8!.
164c 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
165c 90610018 9081001c 80610018 480003dd .a.......a..H...
166c 7c6a1b78 81210018 7d295214 91210008 |j.x.!..})R..!..
167c 81210008 89490000 8121001c 5529063e .!...I...!..U).>
168c 7c0a4840 4082000c 81210008 48000024 |.H@@....!..H..$
169c 81210008 3929ffff 91210008 81410008 .!..9)...!...A..
16ac 81210018 7c0a4840 4080ffc8 39200000 .!..|.H@@...9 ..
16bc 7d234b78 80010024 7c0803a6 38210020 }#Kx...$|...8!.
16cc 4e800020 9421ffe0 90610008 9081000c N.. .!...a......
16dc 90a10010 48000030 81210008 89490000 ....H..0.!...I..
16ec 81210010 5529063e 7c0a4840 4082000c .!..U).>|.H@@...
16fc 81210008 48000038 81210008 39290001 .!..H..8.!..9)..
170c 91210008 8121000c 3949ffff 9141000c .!...!..9I...A..
171c 2c090000 41820014 81210008 89290000 ,...A....!...)..
172c 2c090000 4082ffb4 39200000 7d234b78 ,...@...9 ..}#Kx
173c 38210020 4e800020 9421ffe0 90610018 8!. N.. .!...a..
174c 9081001c 81210018 91210008 60000000 .....!...!..`...
175c 8141001c 392a0001 9121001c 81210018 .A..9*...!...!..
176c 39090001 91010018 894a0000 99490000 9........J...I..
177c 89290000 2c090000 4082ffd8 81210008 .)..,...@....!..
178c 7d234b78 38210020 4e800020 9421ffd0 }#Kx8!. N.. .!..
179c 90610018 9081001c 90a10020 81210018 .a......... .!..
17ac 91210008 48000048 8121001c 89490000 .!..H..H.!...I..
17bc 81210008 99490000 81210008 89290000 .!...I...!...)..
17cc 2c090000 41820010 8121001c 39290001 ,...A....!..9)..
17dc 9121001c 81210008 39290001 91210008 .!...!..9)...!..
17ec 81210020 3929ffff 91210020 81210020 .!. 9)...!. .!.
17fc 2c090000 4082ffb4 81210018 7d234b78 ,...@....!..}#Kx
180c 38210030 4e800020 9421ffe0 90610018 8!.0N.. .!...a..
181c 9081001c 81210018 89490000 8121001c .....!...I...!..
182c 39090001 9101001c 89290000 7d295050 9........)..})PP
183c 5529063e 99210008 89210008 7d290774 U).>.!...!..}).t
184c 2c090000 40820020 81210018 39490001 ,...@.. .!..9I..
185c 91410018 89290000 2c090000 41820008 .A...)..,...A...
186c 4bffffb4 89210008 7d290774 7d234b78 K....!..}).t}#Kx
187c 38210020 4e800020 9421ffd0 90610018 8!. N.. .!...a..
188c 9081001c 90a10020 39200000 9121000c ....... 9 ...!..
189c 39200000 99210008 4800005c 81210018 9 ...!..H..\.!..
18ac 89490000 8121001c 39090001 9101001c .I...!..9.......
18bc 89290000 7d295050 5529063e 99210008 .)..})PPU).>.!..
18cc 89210008 7d290774 2c090000 40820038 .!..}).t,...@..8
18dc 81210018 39490001 91410018 89290000 .!..9I...A...)..
18ec 2c090000 41820020 8121000c 39290001 ,...A.. .!..9)..
18fc 9121000c 8141000c 81210020 7c0a4840 .!...A...!. |.H@
190c 4180ff9c 89210008 7d290774 7d234b78 A....!..}).t}#Kx
191c 38210030 4e800020 9421ffe0 90610018 8!.0N.. .!...a..
192c 9081001c 81210018 91210008 48000010 .....!...!..H...
193c 81210018 39290001 91210018 81210018 .!..9)...!...!..
194c 89290000 2c090000 4082ffe8 60000000 .)..,...@...`...
195c 8141001c 392a0001 9121001c 81210018 .A..9*...!...!..
196c 39090001 91010018 894a0000 99490000 9........J...I..
197c 89290000 2c090000 4082ffd8 81210008 .)..,...@....!..
198c 7d234b78 38210020 4e800020 9421ffd0 }#Kx8!. N.. .!..
199c 90610018 9081001c 90a10020 81210018 .a......... .!..
19ac 91210008 81210020 2c090000 4182007c .!...!. ,...A..|
19bc 48000010 81210018 39290001 91210018 H....!..9)...!..
19cc 81210018 89290000 2c090000 4082ffe8 .!...)..,...@...
19dc 4800002c 81210020 3929ffff 91210020 H..,.!. 9)...!.
19ec 81210020 2c090000 40820014 81210018 .!. ,...@....!..
19fc 39400000 99490000 48000030 8141001c 9@...I..H..0.A..
1a0c 392a0001 9121001c 81210018 39090001 9*...!...!..9...
1a1c 91010018 894a0000 99490000 89290000 .....J...I...)..
1a2c 2c090000 4082ffb0 81210008 7d234b78 ,...@....!..}#Kx
1a3c 38210030 4e800020 9421ffe0 90610018 8!.0N.. .!...a..
1a4c 81210018 91210008 48000010 81210008 .!...!..H....!..
1a5c 39290001 91210008 81210008 89290000 9)...!...!...)..
1a6c 2c090000 4082ffe8 81410008 81210018 ,...@....A...!..
1a7c 7d295050 7d234b78 38210020 4e800020 })PP}#Kx8!. N..
1a8c 9421ffe0 90610018 9081001c 81210018 .!...a.......!..
1a9c 91210008 48000010 81210008 39290001 .!..H....!..9)..
1aac 91210008 8121001c 3949ffff 9141001c .!...!..9I...A..
1abc 2c090000 41820014 81210008 89290000 ,...A....!...)..
1acc 2c090000 4082ffd4 81410008 81210018 ,...@....A...!..
1adc 7d295050 7d234b78 38210020 4e800020 })PP}#Kx8!. N..
1aec 9421ffe0 90610018 9081001c 39200000 .!...a......9 ..
1afc 91210010 81210018 91210008 4800007c .!...!...!..H..|
1b0c 8121001c 9121000c 48000028 81210008 .!...!..H..(.!..
1b1c 89490000 8121000c 89290000 7c0a4840 .I...!...)..|.H@
1b2c 41820024 8121000c 39290001 9121000c A..$.!..9)...!..
1b3c 8121000c 89290000 2c090000 4082ffd0 .!...)..,...@...
1b4c 48000008 60000000 8121000c 89290000 H...`....!...)..
1b5c 2c090000 4082000c 81210010 48000030 ,...@....!..H..0
1b6c 81210010 39290001 91210010 81210008 .!..9)...!...!..
1b7c 39290001 91210008 81210008 89290000 9)...!...!...)..
1b8c 2c090000 4082ff7c 81210010 7d234b78 ,...@..|.!..}#Kx
1b9c 38210020 4e800020 9421ffd0 90610018 8!. N.. .!...a..
1bac 9081001c 90a10020 39200000 91210010 ....... 9 ...!..
1bbc 81210018 91210008 8121001c 9121000c .!...!...!...!..
1bcc 48000050 81210008 89290000 7d2a4b78 H..P.!...)..}*Kx
1bdc 8121000c 89290000 7d295050 91210010 .!...)..})PP.!..
1bec 81210010 2c090000 40820038 81210008 .!..,...@..8.!..
1bfc 39290001 91210008 8121000c 39290001 9)...!...!..9)..
1c0c 9121000c 81210020 3929ffff 91210020 .!...!. 9)...!.
1c1c 81210020 2c090000 4082ffac 48000008 .!. ,...@...H...
1c2c 60000000 81210010 7d234b78 38210030 `....!..}#Kx8!.0
1c3c 4e800020 9421ffd0 90610018 9081001c N.. .!...a......
1c4c 90a10020 81210018 91210008 4800001c ... .!...!..H...
1c5c 81210008 39490001 91410008 8141001c .!..9I...A...A..
1c6c 554a063e 99490000 81210020 3949ffff UJ.>.I...!. 9I..
1c7c 91410020 2c090000 4082ffd8 81210018 .A. ,...@....!..
1c8c 7d234b78 38210030 4e800020 9421ffd0 }#Kx8!.0N.. .!..
1c9c 90610018 9081001c 90a10020 81210018 .a......... .!..
1cac 91210008 8121001c 9121000c 48000024 .!...!...!..H..$
1cbc 8141000c 392a0001 9121000c 81210008 .A..9*...!...!..
1ccc 39090001 91010008 894a0000 99490000 9........J...I..
1cdc 81210020 3949ffff 91410020 2c090000 .!. 9I...A. ,...
1cec 4082ffd0 81210018 7d234b78 38210030 @....!..}#Kx8!.0
1cfc 4e800020 9421ffd0 90610018 9081001c N.. .!...a......
1d0c 90a10020 81410018 8121001c 7c0a4840 ... .A...!..|.H@
1d1c 41810050 81210018 91210008 8121001c A..P.!...!...!..
1d2c 9121000c 48000024 8141000c 392a0001 .!..H..$.A..9*..
1d3c 9121000c 81210008 39090001 91010008 .!...!..9.......
1d4c 894a0000 99490000 81210020 3949ffff .J...I...!. 9I..
1d5c 91410020 2c090000 4082ffd0 48000064 .A. ,...@...H..d
1d6c 81410018 81210020 7d2a4a14 91210008 .A...!. }*J..!..
1d7c 8141001c 81210020 7d2a4a14 9121000c .A...!. }*J..!..
1d8c 4800002c 8121000c 3929ffff 9121000c H..,.!..9)...!..
1d9c 81210008 3929ffff 91210008 8121000c .!..9)...!...!..
1dac 89490000 81210008 99490000 81210020 .I...!...I...!.
1dbc 3949ffff 91410020 2c090000 4082ffc8 9I...A. ,...@...
1dcc 81210018 7d234b78 38210030 4e800020 .!..}#Kx8!.0N..
1ddc 9421ffe0 7c0802a6 90010024 90610018 .!..|......$.a..
1dec 9081001c 8061001c 4bfffc51 7c691b78 .....a..K..Q|i.x
1dfc 9121000c 8121000c 2c090000 4082000c .!...!..,...@...
1e0c 81210018 48000068 80610018 4bfffc2d .!..H..h.a..K..-
1e1c 7c691b78 91210008 48000040 81210008 |i.x.!..H..@.!..
1e2c 3929ffff 91210008 80a1000c 8081001c 9)...!..........
1e3c 80610018 4bfffd65 7c691b78 2c090000 .a..K..e|i.x,...
1e4c 4082000c 81210018 48000024 81210018 @....!..H..$.!..
1e5c 39290001 91210018 81410008 8121000c 9)...!...A...!..
1e6c 7c0a4840 4080ffb8 39200000 7d234b78 |.H@@...9 ..}#Kx
1e7c 80010024 7c0803a6 38210020 4e800020 ...$|...8!. N..
1e8c 9421ffd0 90610018 9081001c 90a10020 .!...a.........
1e9c 81210018 91210008 48000030 8121001c .!...!..H..0.!..
1eac 552a063e 81210008 39090001 91010008 U*.>.!..9.......
1ebc 89290000 7c0a4840 40820010 81210008 .)..|.H@@....!..
1ecc 3929ffff 4800001c 81210020 3949ffff 9)..H....!. 9I..
1edc 91410020 2c090000 4082ffc4 39200000 .A. ,...@...9 ..
1eec 7d234b78 38210030 4e800020 9421ffd0 }#Kx8!.0N.. .!..
1efc 7c0802a6 90010034 90610018 9081001c |......4.a......
1f0c 90a10020 39200000 91210008 81210020 ... 9 ...!...!.
1f1c 2c090000 4082008c 3920000a 91210020 ,...@...9 ...!.
1f2c 81210018 89290000 28090030 408200e4 .!...)..(..0@...
1f3c 39200008 91210020 81210018 39290001 9 ...!. .!..9)..
1f4c 91210018 81210018 89290000 7d234b78 .!...!...)..}#Kx
1f5c 4bfff541 7c691b78 28090058 408200b4 K..A|i.x(..X@...
1f6c 81210018 39290001 89290000 7d2a4b78 .!..9)...)..}*Kx
1f7c 3d200000 39290904 7d2950ae 71290044 = ..9)..})P.q).D
1f8c 2c090000 4182008c 81210018 39290001 ,...A....!..9)..
1f9c 91210018 39200010 91210020 48000074 .!..9 ...!. H..t
1fac 81210020 2c090010 40820068 81210018 .!. ,...@..h.!..
1fbc 89290000 28090030 40820058 81210018 .)..(..0@..X.!..
1fcc 39290001 89290000 7d234b78 4bfff4c5 9)...)..}#KxK...
1fdc 7c691b78 28090058 40820038 81210018 |i.x(..X@..8.!..
1fec 39290002 91210018 48000028 81410008 9)...!..H..(.A..
1ffc 81210020 7d2a49d6 8141000c 7d2a4a14 .!. }*I..A..}*J.
200c 91210008 81210018 39290001 91210018 .!...!..9)...!..
201c 81210018 89290000 7d2a4b78 3d200000 .!...)..}*Kx= ..
202c 39290904 7d2950ae 71290044 2c090000 9)..})P.q).D,...
203c 41820064 81210018 89290000 7d2a4b78 A..d.!...)..}*Kx
204c 3d200000 39290904 7d2950ae 5529077a = ..9)..})P.U).z
205c 2c090000 41820014 81210018 89290000 ,...A....!...)..
206c 3929ffd0 4800001c 81210018 89290000 9)..H....!...)..
207c 7d234b78 4bfff41d 7c691b78 3929ffc9 }#KxK...|i.x9)..
208c 9121000c 8141000c 81210020 7c0a4840 .!...A...!. |.H@
209c 4180ff5c 8121001c 2c090000 41820010 A..\.!..,...A...
20ac 8121001c 81410018 91490000 81210008 .!...A...I...!..
20bc 7d234b78 80010034 7c0803a6 38210030 }#Kx...4|...8!.0
20cc 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
20dc 90610008 9081000c 90a10010 81210008 .a...........!..
20ec 89290000 2809002d 4082002c 81210008 .)..(..-@..,.!..
20fc 39290001 81410010 7d455378 8081000c 9)...A..}ESx....
210c 7d234b78 4bfffde9 7c691b78 7d2900d0 }#KxK...|i.x})..
211c 4800001c 81210010 7d254b78 8081000c H....!..}%Kx....
212c 80610008 4bfffdc9 7c691b78 7d234b78 .a..K...|i.x}#Kx
213c 80010024 7c0803a6 38210020 4e800020 ...$|...8!. N..
214c 9421ffe0 90610018 39200000 91210008 .!...a..9 ...!..
215c 48000030 81210008 1d49000a 81210018 H..0.!...I...!..
216c 81290000 38e90001 81010018 90e80000 .)..8...........
217c 89290000 7d2a4a14 3929ffd0 91210008 .)..}*J.9)...!..
218c 81210018 81290000 89290000 7d2a4b78 .!...)...)..}*Kx
219c 3d200000 39290904 7d2950ae 5529077a = ..9)..})P.U).z
21ac 2c090000 4082ffb0 81210008 7d234b78 ,...@....!..}#Kx
21bc 38210020 4e800020 9421ff70 90610068 8!. N.. .!.p.a.h
21cc 9081006c 90a10070 90c10074 90e10078 ...l...p...t...x
21dc 9101007c 91210080 81210080 55290672 ...|.!...!..U).r
21ec 2c090000 41820010 3d200000 39290a10 ,...A...= ..9)..
21fc 4800000c 3d200000 39290a38 91210010 H...= ..9).8.!..
220c 81210080 552906f6 2c090000 41820010 .!..U)..,...A...
221c 81210080 5529003c 91210080 81210074 .!..U).<.!...!.t
222c 2c090001 40810010 81210074 2c090024 ,...@....!.t,..$
223c 4081000c 39200000 480003fc 81210080 @...9 ..H....!..
224c 552907fe 2c090000 4182000c 39200030 U)..,...A...9 .0
225c 48000008 39200020 99210014 39200000 H...9 . .!..9 ..
226c 99210008 81210080 552907bc 2c090000 .!...!..U)..,...
227c 41820080 81210070 2c090000 40800028 A....!.p,...@..(
228c 3920002d 99210008 81210070 7d2900d0 9 .-.!...!.p})..
229c 91210070 81210078 3929ffff 91210078 .!.p.!.x9)...!.x
22ac 48000050 81210080 5529077a 2c090000 H..P.!..U).z,...
22bc 4182001c 3920002b 99210008 81210078 A...9 .+.!...!.x
22cc 3929ffff 91210078 48000028 81210080 9)...!.xH..(.!..
22dc 55290738 2c090000 41820018 39200020 U).8,...A...9 .
22ec 99210008 81210078 3929ffff 91210078 .!...!.x9)...!.x
22fc 81210080 552906b4 2c090000 41820038 .!..U)..,...A..8
230c 81210074 2c090010 40820014 81210078 .!.t,...@....!.x
231c 3929fffe 91210078 4800001c 81210074 9)...!.xH....!.t
232c 2c090008 40820010 81210078 3929ffff ,...@....!.x9)..
233c 91210078 39200000 9121000c 81210070 .!.x9 ...!...!.p
234c 2c090000 4082006c 8121000c 39490001 ,...@..l.!..9I..
235c 9141000c 39410008 7d2a4a14 39400030 .A..9A..}*J.9@.0
236c 99490010 48000058 81410074 81210070 .I..H..X.A.t.!.p
237c 7d095396 7d4851d6 7d2a4850 81410010 }.S.}HQ.}*HP.A..
238c 7d4a4a14 8121000c 39090001 9101000c }JJ..!..9.......
239c 894a0000 39010008 7d284a14 99490010 .J..9...}(J..I..
23ac 81210074 81410070 7d2a4b96 91210070 .!.t.A.p}*K..!.p
23bc 81210070 2c090000 4082ffb0 8141000c .!.p,...@....A..
23cc 8121007c 7c0a4800 4081000c 8121000c .!.||.H.@....!..
23dc 9121007c 81410078 8121007c 7d295050 .!.|.A.x.!.|})PP
23ec 91210078 81210080 71290011 2c090000 .!.x.!..q)..,...
23fc 40820044 4800002c 81410068 8121006c @..DH..,.A.h.!.l
240c 7c0a4840 40800010 81210068 39400020 |.H@@....!.h9@.
241c 99490000 81210068 39290001 91210068 .I...!.h9)...!.h
242c 81210078 3949ffff 91410078 2c090000 .!.x9I...A.x,...
243c 4181ffc8 89210008 2c090000 4182002c A....!..,...A..,
244c 81410068 8121006c 7c0a4840 40800010 .A.h.!.l|.H@@...
245c 81210068 89410008 99490000 81210068 .!.h.A...I...!.h
246c 39290001 91210068 81210080 552906b4 9)...!.h.!..U)..
247c 2c090000 4182009c 81210074 2c090008 ,...A....!.t,...
248c 40820030 81410068 8121006c 7c0a4840 @..0.A.h.!.l|.H@
249c 40800010 81210068 39400030 99490000 @....!.h9@.0.I..
24ac 81210068 39290001 91210068 48000064 .!.h9)...!.hH..d
24bc 81210074 2c090010 40820058 81410068 .!.t,...@..X.A.h
24cc 8121006c 7c0a4840 40800010 81210068 .!.l|.H@@....!.h
24dc 39400030 99490000 81210068 39290001 9@.0.I...!.h9)..
24ec 91210068 81410068 8121006c 7c0a4840 .!.h.A.h.!.l|.H@
24fc 40800014 81210010 89490021 81210068 @....!...I.!.!.h
250c 99490000 81210068 39290001 91210068 .I...!.h9)...!.h
251c 81210080 552906f6 2c090000 40820070 .!..U)..,...@..p
252c 4800002c 81410068 8121006c 7c0a4840 H..,.A.h.!.l|.H@
253c 40800010 81210068 89410014 99490000 @....!.h.A...I..
254c 81210068 39290001 91210068 81210078 .!.h9)...!.h.!.x
255c 3949ffff 91410078 2c090000 4181ffc8 9I...A.x,...A...
256c 4800002c 81410068 8121006c 7c0a4840 H..,.A.h.!.l|.H@
257c 40800010 81210068 39400030 99490000 @....!.h9@.0.I..
258c 81210068 39290001 91210068 8121007c .!.h9)...!.h.!.|
259c 3949ffff 9141007c 8141000c 7c0a4800 9I...A.|.A..|.H.
25ac 4180ffc4 48000038 81410068 8121006c A...H..8.A.h.!.l
25bc 7c0a4840 4080001c 39410018 8121000c |.H@@...9A...!..
25cc 7d2a4a14 89490000 81210068 99490000 }*J..I...!.h.I..
25dc 81210068 39290001 91210068 8121000c .!.h9)...!.h.!..
25ec 3949ffff 9141000c 2c090000 4181ffbc 9I...A..,...A...
25fc 4800002c 81410068 8121006c 7c0a4840 H..,.A.h.!.l|.H@
260c 40800010 81210068 39400020 99490000 @....!.h9@. .I..
261c 81210068 39290001 91210068 81210078 .!.h9)...!.h.!.x
262c 3949ffff 91410078 2c090000 4181ffc8 9I...A.x,...A...
263c 81210068 7d234b78 38210090 4e800020 .!.h}#Kx8!..N..
264c 9421ffd0 7c0802a6 90010034 90610018 .!..|......4.a..
265c 9081001c 90a10020 90c10024 80c10024 ....... ...$...$
266c 80a10020 8081001c 80610018 4800044d ... .....a..H..M
267c 7c691b78 91210008 81410008 8121001c |i.x.!...A...!..
268c 7c0a4840 41800010 8121001c 3929ffff |.H@A....!..9)..
269c 48000008 81210008 7d234b78 80010034 H....!..}#Kx...4
26ac 7c0803a6 38210030 4e800020 9421ff80 |...8!.0N.. .!..
26bc 7c0802a6 90010084 90610018 9081001c |........a......
26cc 90a10020 90c1002c 90e10030 91010034 ... ...,...0...4
26dc 91210038 9141003c 40860024 d8210040 .!.8.A.<@..$.!.@
26ec d8410048 d8610050 d8810058 d8a10060 .A.H.a.P...X...`
26fc d8c10068 d8e10070 d9010078 39200003 ...h...p...x9 ..
270c 9921000c 39200000 9921000d 39210088 .!..9 ...!..9!..
271c 91210010 39210020 91210014 3921000c .!..9!. .!..9!..
272c 7d264b78 80a10020 8081001c 80610018 }&Kx... .....a..
273c 48000389 7c691b78 91210008 81210008 H...|i.x.!...!..
274c 7d234b78 80010084 7c0803a6 38210080 }#Kx....|...8!..
275c 4e800020 9421ff80 7c0802a6 90010084 N.. .!..|.......
276c 90610018 9081001c 90a10020 90c1002c .a......... ...,
277c 90e10030 91010034 91210038 9141003c ...0...4.!.8.A.<
278c 40860024 d8210040 d8410048 d8610050 @..$.!.@.A.H.a.P
279c d8810058 d8a10060 d8c10068 d8e10070 ...X...`...h...p
27ac d9010078 39200003 9921000c 39200000 ...x9 ...!..9 ..
27bc 9921000d 39210088 91210010 39210020 .!..9!...!..9!.
27cc 91210014 3921000c 7d264b78 80a10020 .!..9!..}&Kx...
27dc 8081001c 80610018 480002e1 7c691b78 .....a..H...|i.x
27ec 91210008 81410008 8121001c 7c0a4840 .!...A...!..|.H@
27fc 41800010 8121001c 3929ffff 48000008 A....!..9)..H...
280c 81210008 7d234b78 80010084 7c0803a6 .!..}#Kx....|...
281c 38210080 4e800020 9421ffe0 7c0802a6 8!..N.. .!..|...
282c 90010024 90610008 9081000c 90a10010 ...$.a..........
283c 80c10010 80a1000c 3d207fff 6124ffff ........= ..a$..
284c 80610008 48000275 7c691b78 7d234b78 .a..H..u|i.x}#Kx
285c 80010024 7c0803a6 38210020 4e800020 ...$|...8!. N..
286c 9421ff80 7c0802a6 90010084 90610018 .!..|........a..
287c 9081001c 90a10020 90c10024 90e10028 ....... ...$...(
288c 9101002c 91210030 91410034 40860024 ...,.!.0.A.4@..$
289c d8210038 d8410040 d8610048 d8810050 .!.8.A.@.a.H...P
28ac d8a10058 d8c10060 d8e10068 d9010070 ...X...`...h...p
28bc 39200002 9921000c 39200000 9921000d 9 ...!..9 ...!..
28cc 39210088 91210010 39210018 91210014 9!...!..9!...!..
28dc 3921000c 7d264b78 80a1001c 3d207fff 9!..}&Kx....= ..
28ec 6124ffff 80610018 480001d1 7c691b78 a$...a..H...|i.x
28fc 91210008 81210008 7d234b78 80010084 .!...!..}#Kx....
290c 7c0803a6 38210080 4e800020 3d200002 |...8!..N.. = ..
291c 8129e014 1d290081 3d293619 394962e9 .)...)..=)6.9Ib.
292c 3d200002 9149e014 3d200002 8129e014 = ...I..= ...)..
293c 7d234b78 4e800020 9421fff0 90610008 }#KxN.. .!...a..
294c 3d200002 81410008 9149e014 60000000 = ...A...I..`...
295c 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
296c 90010014 3d200000 38690a04 4cc63182 ....= ..8i..L.1.
297c 4800111d 48000000 9421ffe0 7c0802a6 H...H....!..|...
298c 90010024 90610018 39200001 91210008 ...$.a..9 ...!..
299c 89210008 2c090000 41820014 80610018 .!..,...A....a..
29ac 4bffeb75 7c691b78 48000008 81210018 K..u|i.xH....!..
29bc 7d234b78 80010024 7c0803a6 38210020 }#Kx...$|...8!.
29cc 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
29dc 7c691b78 b1210018 39200001 91210008 |i.x.!..9 ...!..
29ec 89210008 2c090000 41820018 a1210018 .!..,...A....!..
29fc 7d234b78 4bffeae1 7c691b78 48000008 }#KxK...|i.xH...
2a0c a1210018 7d234b78 80010024 7c0803a6 .!..}#Kx...$|...
2a1c 38210020 4e800020 9421ffe0 7c0802a6 8!. N.. .!..|...
2a2c 90010024 90610018 39200001 91210008 ...$.a..9 ...!..
2a3c 89210008 2c090000 41820014 80610018 .!..,...A....a..
2a4c 4bffead5 7c691b78 48000008 81210018 K...|i.xH....!..
2a5c 7d234b78 80010024 7c0803a6 38210020 }#Kx...$|...8!.
2a6c 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
2a7c 7c691b78 b1210018 39200001 91210008 |i.x.!..9 ...!..
2a8c 89210008 2c090000 41820018 a1210018 .!..,...A....!..
2a9c 7d234b78 4bffea41 7c691b78 48000008 }#KxK..A|i.xH...
2aac a1210018 7d234b78 80010024 7c0803a6 .!..}#Kx...$|...
2abc 38210020 4e800020 9421ffa0 7c0802a6 8!. N.. .!..|...
2acc 90010064 90610048 9081004c 90a10050 ...d.a.H...L...P
2adc 90c10054 8121004c 2c090000 4080000c ...T.!.L,...@...
2aec 39200000 48000d3c 81210048 91210018 9 ..H..<.!.H.!..
2afc 81410048 8121004c 7d2a4a14 9121001c .A.H.!.L}*J..!..
2b0c 8141001c 81210048 7c0a4840 40800cbc .A...!.H|.H@@...
2b1c 3920ffff 9121001c 8141001c 81210048 9 ...!...A...!.H
2b2c 7d295050 9121004c 48000ca0 81210050 })PP.!.LH....!.P
2b3c 89290000 28090025 41820034 81410018 .)..(..%A..4.A..
2b4c 8121001c 7c0a4840 40800014 81210050 .!..|.H@@....!.P
2b5c 89490000 81210018 99490000 81210018 .I...!...I...!..
2b6c 39290001 91210018 48000c54 39200000 9)...!..H..T9 ..
2b7c 91210024 81210050 39290001 91210050 .!.$.!.P9)...!.P
2b8c 81210050 89290000 3929ffe0 28090010 .!.P.)..9)..(...
2b9c 4181007c 552a103a 3d200000 39290a68 A..|U*.:= ..9).h
2bac 7d2a4a14 81490000 3d200000 39290a68 }*J..I..= ..9).h
2bbc 7d2a4a14 7d2903a6 4e800420 81210024 }*J.})..N.. .!.$
2bcc 61290010 91210024 4bffffac 81210024 a)...!.$K....!.$
2bdc 61290004 91210024 4bffff9c 81210024 a)...!.$K....!.$
2bec 61290008 91210024 4bffff8c 81210024 a)...!.$K....!.$
2bfc 61290020 91210024 4bffff7c 81210024 a). .!.$K..|.!.$
2c0c 61290001 91210024 4bffff6c 3920ffff a)...!.$K..l9 ..
2c1c 91210028 81210050 89290000 7d2a4b78 .!.(.!.P.)..}*Kx
2c2c 3d200000 39290904 7d2950ae 5529077a = ..9)..})P.U).z
2c3c 2c090000 4182001c 39210050 7d234b78 ,...A...9!.P}#Kx
2c4c 4bfff501 7c691b78 91210028 4800009c K...|i.x.!.(H...
2c5c 81210050 89290000 2809002a 4082008c .!.P.)..(..*@...
2c6c 81210050 39290001 91210050 81210054 .!.P9)...!.P.!.T
2c7c 89290000 28090007 41810030 81210054 .)..(...A..0.!.T
2c8c 81490008 81210054 89290000 39090001 .I...!.T.)..9...
2c9c 5507063e 81010054 98e80000 5529103a U..>...T....U).:
2cac 7d2a4a14 48000018 81210054 81290004 }*J.H....!.T.)..
2cbc 39090004 81410054 910a0004 81290000 9....A.T.....)..
2ccc 91210028 81210028 2c090000 4080001c .!.(.!.(,...@...
2cdc 81210028 7d2900d0 91210028 81210024 .!.(})...!.(.!.$
2cec 61290010 91210024 3920ffff 9121002c a)...!.$9 ...!.,
2cfc 81210050 89290000 2809002e 408200d4 .!.P.)..(...@...
2d0c 81210050 39290001 91210050 81210050 .!.P9)...!.P.!.P
2d1c 89290000 7d2a4b78 3d200000 39290904 .)..}*Kx= ..9)..
2d2c 7d2950ae 5529077a 2c090000 4182001c })P.U).z,...A...
2d3c 39210050 7d234b78 4bfff409 7c691b78 9!.P}#KxK...|i.x
2d4c 9121002c 48000078 81210050 89290000 .!.,H..x.!.P.)..
2d5c 2809002a 40820068 81210050 39290001 (..*@..h.!.P9)..
2d6c 91210050 81210054 89290000 28090007 .!.P.!.T.)..(...
2d7c 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
2d8c 89290000 39090001 5507063e 81010054 .)..9...U..>...T
2d9c 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
2dac 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
2dbc 910a0004 81290000 9121002c 8121002c .....)...!.,.!.,
2dcc 2c090000 4080000c 39200000 9121002c ,...@...9 ...!.,
2ddc 3920ffff 91210030 81210050 89290000 9 ...!.0.!.P.)..
2dec 28090068 41820054 81210050 89290000 (..hA..T.!.P.)..
2dfc 2809006c 41820044 81210050 89290000 (..lA..D.!.P.)..
2e0c 2809004c 41820034 81210050 89290000 (..LA..4.!.P.)..
2e1c 2809005a 41820024 81210050 89290000 (..ZA..$.!.P.)..
2e2c 2809007a 41820014 81210050 89290000 (..zA....!.P.)..
2e3c 28090074 4082004c 81210050 89290000 (..t@..L.!.P.)..
2e4c 91210030 81210050 39290001 91210050 .!.0.!.P9)...!.P
2e5c 81210030 2c09006c 40820028 81210050 .!.0,..l@..(.!.P
2e6c 89290000 2809006c 40820018 3920004c .)..(..l@...9 .L
2e7c 91210030 81210050 39290001 91210050 .!.0.!.P9)...!.P
2e8c 3920000a 91210014 81210050 89290000 9 ...!...!.P.)..
2e9c 3929ffdb 28090053 41810550 552a103a 9)..(..SA..PU*.:
2eac 3d200000 39290aac 7d2a4a14 81490000 = ..9)..}*J..I..
2ebc 3d200000 39290aac 7d2a4a14 7d2903a6 = ..9)..}*J.})..
2ecc 4e800420 81210024 552906f6 2c090000 N.. .!.$U)..,...
2edc 40820048 4800002c 81410018 8121001c @..HH..,.A...!..
2eec 7c0a4840 40800010 81210018 39400020 |.H@@....!..9@.
2efc 99490000 81210018 39290001 91210018 .I...!..9)...!..
2f0c 81210028 3929ffff 91210028 81210028 .!.(9)...!.(.!.(
2f1c 2c090000 4181ffc4 81210054 89290000 ,...A....!.T.)..
2f2c 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
2f3c 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
2f4c 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
2f5c 48000018 81210054 81290004 39090004 H....!.T.)..9...
2f6c 81410054 910a0004 81290000 99210044 .A.T.....)...!.D
2f7c 81410018 8121001c 7c0a4840 40800010 .A...!..|.H@@...
2f8c 81210018 89410044 99490000 81210018 .!...A.D.I...!..
2f9c 39290001 91210018 4800002c 81410018 9)...!..H..,.A..
2fac 8121001c 7c0a4840 40800010 81210018 .!..|.H@@....!..
2fbc 39400020 99490000 81210018 39290001 9@. .I...!..9)..
2fcc 91210018 81210028 3929ffff 91210028 .!...!.(9)...!.(
2fdc 81210028 2c090000 4181ffc4 480007e0 .!.(,...A...H...
2fec 81210054 89290000 28090007 41810030 .!.T.)..(...A..0
2ffc 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
300c 39090001 5507063e 81010054 98e80000 9...U..>...T....
301c 5529103a 7d2a4a14 48000018 81210054 U).:}*J.H....!.T
302c 81290004 39090004 81410054 910a0004 .)..9....A.T....
303c 81290000 91210020 81210020 2c090000 .)...!. .!. ,...
304c 40820010 3d200000 39290a60 91210020 @...= ..9).`.!.
305c 8121002c 7d244b78 80610020 4bffea25 .!.,}$Kx.a. K..%
306c 7c691b78 91210034 81210024 552906f6 |i.x.!.4.!.$U)..
307c 2c090000 40820048 4800002c 81410018 ,...@..HH..,.A..
308c 8121001c 7c0a4840 40800010 81210018 .!..|.H@@....!..
309c 39400020 99490000 81210018 39290001 9@. .I...!..9)..
30ac 91210018 81210028 3949ffff 91410028 .!...!.(9I...A.(
30bc 81410034 7c0a4800 4180ffc4 39200000 .A.4|.H.A...9 ..
30cc 91210010 48000048 81410018 8121001c .!..H..H.A...!..
30dc 7c0a4840 40800014 81210020 89490000 |.H@@....!. .I..
30ec 81210018 99490000 81210018 39290001 .!...I...!..9)..
30fc 91210018 81210020 39290001 91210020 .!...!. 9)...!.
310c 81210010 39290001 91210010 81410010 .!..9)...!...A..
311c 81210034 7c0a4800 4180ffb0 4800002c .!.4|.H.A...H..,
312c 81410018 8121001c 7c0a4840 40800010 .A...!..|.H@@...
313c 81210018 39400020 99490000 81210018 .!..9@. .I...!..
314c 39290001 91210018 81210028 3949ffff 9)...!...!.(9I..
315c 91410028 81410034 7c0a4800 4180ffc4 .A.(.A.4|.H.A...
316c 4800065c 81410028 3920ffff 7c0a4800 H..\.A.(9 ..|.H.
317c 40820018 39200008 91210028 81210024 @...9 ...!.(.!.$
318c 61290021 91210024 81210054 89290000 a).!.!.$.!.T.)..
319c 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
31ac 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
31bc 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
31cc 48000018 81210054 81290004 39090004 H....!.T.)..9...
31dc 81410054 910a0004 81290000 7d2a4b78 .A.T.....)..}*Kx
31ec 81210024 8101002c 80e10028 38c00010 .!.$...,...(8...
31fc 7d455378 8081001c 80610018 4bffefbd }ESx.....a..K...
320c 7c691b78 91210018 480005b4 81210030 |i.x.!..H....!.0
321c 2c09006c 40820074 81210054 89290000 ,..l@..t.!.T.)..
322c 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
323c 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
324c 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
325c 48000018 81210054 81290004 39090004 H....!.T.)..9...
326c 81410054 910a0004 81290000 91210040 .A.T.....)...!.@
327c 81410018 81210048 7d495050 81210040 .A...!.H}IPP.!.@
328c 91490000 48000538 81210030 2c09005a .I..H..8.!.0,..Z
329c 41820010 81210030 2c09007a 4082007c A....!.0,..z@..|
32ac 81210054 89290000 28090007 41810030 .!.T.)..(...A..0
32bc 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
32cc 39090001 5507063e 81010054 98e80000 9...U..>...T....
32dc 5529103a 7d2a4a14 48000018 81210054 U).:}*J.H....!.T
32ec 81290004 39090004 81410054 910a0004 .)..9....A.T....
32fc 81290000 9121003c 81410018 81210048 .)...!.<.A...!.H
330c 7d295050 7d2a4b78 8121003c 91490000 })PP}*Kx.!.<.I..
331c 60000000 480004a8 81210054 89290000 `...H....!.T.)..
332c 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
333c 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
334c 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
335c 48000018 81210054 81290004 39090004 H....!.T.)..9...
336c 81410054 910a0004 81290000 91210038 .A.T.....)...!.8
337c 81410018 81210048 7d495050 81210038 .A...!.H}IPP.!.8
338c 91490000 48000438 81410018 8121001c .I..H..8.A...!..
339c 7c0a4840 40800010 81210018 39400025 |.H@@....!..9@.%
33ac 99490000 81210018 39290001 91210018 .I...!..9)...!..
33bc 4800040c 39200008 91210014 480000a8 H...9 ...!..H...
33cc 81210024 61290040 91210024 39200010 .!.$a).@.!.$9 ..
33dc 91210014 48000090 81210024 61290002 .!..H....!.$a)..
33ec 91210024 4800007c 81410018 8121001c .!.$H..|.A...!..
33fc 7c0a4840 40800010 81210018 39400025 |.H@@....!..9@.%
340c 99490000 81210018 39290001 91210018 .I...!..9)...!..
341c 81210050 89290000 2c090000 41820034 .!.P.)..,...A..4
342c 81410018 8121001c 7c0a4840 40800014 .A...!..|.H@@...
343c 81210050 89490000 81210018 99490000 .!.P.I...!...I..
344c 81210018 39290001 91210018 48000370 .!..9)...!..H..p
345c 81210050 3929ffff 91210050 48000360 .!.P9)...!.PH..`
346c 60000000 81210030 2c09004c 40820090 `....!.0,..L@...
347c 81210054 89290000 81410054 894a0000 .!.T.)...A.T.J..
348c 554a07fe 554a063e 7d4a4a14 5548063e UJ..UJ.>}JJ.UH.>
349c 81410054 990a0000 28090006 41810030 .A.T....(...A..0
34ac 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
34bc 39090002 5507063e 81010054 98e80000 9...U..>...T....
34cc 5529103a 7d2a4a14 48000020 81210054 U).:}*J.H.. .!.T
34dc 81290004 39290007 55290038 39090008 .)..9)..U).89...
34ec 81410054 910a0004 81490000 81690004 .A.T.....I...i..
34fc 91410008 9161000c 48000298 81210030 .A...a..H....!.0
350c 2c09006c 40820088 81210054 89290000 ,..l@....!.T.)..
351c 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
352c 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
353c 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
354c 48000018 81210054 81290004 39090004 H....!.T.)..9...
355c 81410054 910a0004 81290000 9121000c .A.T.....)...!..
356c 39200000 91210008 81210024 552907bc 9 ...!...!.$U)..
357c 2c090000 4182021c 8121000c 9121000c ,...A....!...!..
358c 7d29fe70 91210008 48000208 81210030 }).p.!..H....!.0
359c 2c09005a 41820010 81210030 2c09007a ,..ZA....!.0,..z
35ac 40820068 81210054 89290000 28090007 @..h.!.T.)..(...
35bc 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
35cc 89290000 39090001 5507063e 81010054 .)..9...U..>...T
35dc 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
35ec 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
35fc 910a0004 81290000 9121000c 39200000 .....)...!..9 ..
360c 91210008 4800018c 81210030 2c090074 .!..H....!.0,..t
361c 40820068 81210054 89290000 28090007 @..h.!.T.)..(...
362c 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
363c 89290000 39090001 5507063e 81010054 .)..9...U..>...T
364c 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
365c 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
366c 910a0004 81290000 9121000c 7d29fe70 .....)...!..}).p
367c 91210008 4800011c 81210030 2c090068 .!..H....!.0,..h
368c 40820090 81210054 89290000 28090007 @....!.T.)..(...
369c 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
36ac 89290000 39090001 5507063e 81010054 .)..9...U..>...T
36bc 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
36cc 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
36dc 910a0004 81290000 5529043e 9121000c .....)..U).>.!..
36ec 39200000 91210008 81210024 552907bc 9 ...!...!.$U)..
36fc 2c090000 4182009c a121000e 7d290734 ,...A....!..}).4
370c 9121000c 7d29fe70 91210008 48000084 .!..}).p.!..H...
371c 81210054 89290000 28090007 41810030 .!.T.)..(...A..0
372c 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
373c 39090001 5507063e 81010054 98e80000 9...U..>...T....
374c 5529103a 7d2a4a14 48000018 81210054 U).:}*J.H....!.T
375c 81290004 39090004 81410054 910a0004 .)..9....A.T....
376c 81290000 9121000c 39200000 91210008 .)...!..9 ...!..
377c 81210024 552907bc 2c090000 41820014 .!.$U)..,...A...
378c 8121000c 9121000c 7d29fe70 91210008 .!...!..}).p.!..
379c 8141000c 81210024 8101002c 80e10028 .A...!.$...,...(
37ac 80c10014 7d455378 8081001c 80610018 ....}ESx.....a..
37bc 4bffea09 7c691b78 91210018 81210050 K...|i.x.!...!.P
37cc 39290001 91210050 81210050 89290000 9)...!.P.!.P.)..
37dc 2c090000 4082f358 8121004c 2c090000 ,...@..X.!.L,...
37ec 41820034 81410018 8121001c 7c0a4840 A..4.A...!..|.H@
37fc 40800014 81210018 39400000 99490000 @....!..9@...I..
380c 48000014 8121001c 3929ffff 39400000 H....!..9)..9@..
381c 99490000 81410018 81210048 7d295050 .I...A...!.H})PP
382c 7d234b78 80010064 7c0803a6 38210060 }#Kx...d|...8!.`
383c 4e800020 9421fff0 90610008 3d200002 N.. .!...a..= ..
384c 81410008 9149e018 60000000 38210010 .A...I..`...8!..
385c 4e800020 9421fff0 90610008 9081000c N.. .!...a......
386c 3d200002 81410008 9149e01c 3d200002 = ...A...I..= ..
387c 8141000c 9149e020 60000000 38210010 .A...I. `...8!..
388c 4e800020 9421fff0 7c0802a6 90010014 N.. .!..|.......
389c 90610008 3d200002 8129e018 2c090000 .a..= ...)..,...
38ac 41820020 3d200002 8129e018 81410008 A.. = ...)...A..
38bc 554a063e 7d435378 7d2903a6 4e800421 UJ.>}CSx})..N..!
38cc 81210008 7d234b78 80010014 7c0803a6 .!..}#Kx....|...
38dc 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
38ec 90010014 3d200002 8129e020 2c090000 ....= ...). ,...
38fc 4182fff4 3d200002 8129e020 7d2903a6 A...= ...). })..
390c 4e800421 7c691b78 2c090000 4182ffd8 N..!|i.x,...A...
391c 3d200002 8129e01c 7d2903a6 4e800421 = ...)..})..N..!
392c 7c691b78 7d234b78 80010014 7c0803a6 |i.x}#Kx....|...
393c 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
394c 90010014 3d200002 8129e020 2c090000 ....= ...). ,...
395c 41820028 3d200002 8129e020 7d2903a6 A..(= ...). })..
396c 4e800421 7c691b78 2c090000 4182000c N..!|i.x,...A...
397c 39200001 48000008 39200000 7d234b78 9 ..H...9 ..}#Kx
398c 80010014 7c0803a6 38210010 4e800020 ....|...8!..N..
399c 9421fff0 7c0802a6 90010014 90610008 .!..|........a..
39ac 80610008 48000025 3860000a 4bfffed9 .a..H..%8`..K...
39bc 39200001 7d234b78 80010014 7c0803a6 9 ..}#Kx....|...
39cc 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
39dc 90010014 90610008 48000020 81210008 .....a..H.. .!..
39ec 89290000 7d234b78 4bfffe9d 81210008 .)..}#KxK....!..
39fc 39290001 91210008 81210008 89290000 9)...!...!...)..
3a0c 2c090000 4082ffd8 60000000 60000000 ,...@...`...`...
3a1c 80010014 7c0803a6 38210010 4e800020 ....|...8!..N..
3a2c 9421fee0 7c0802a6 90010124 90610118 .!..|......$.a..
3a3c 9081011c 3921000c 80c1011c 80a10118 ....9!..........
3a4c 38800100 7d234b78 4bffebf9 7c691b78 8...}#KxK...|i.x
3a5c 91210008 3941000c 81210008 7d2a4a14 .!..9A...!..}*J.
3a6c 39400000 99490000 3921000c 7d234b78 9@...I..9!..}#Kx
3a7c 4bffff59 81210008 7d234b78 80010124 K..Y.!..}#Kx...$
3a8c 7c0803a6 38210120 4e800020 9421ff80 |...8!. N.. .!..
3a9c 7c0802a6 90010084 90610018 90810024 |........a.....$
3aac 90a10028 90c1002c 90e10030 91010034 ...(...,...0...4
3abc 91210038 9141003c 40860024 d8210040 .!.8.A.<@..$.!.@
3acc d8410048 d8610050 d8810058 d8a10060 .A.H.a.P...X...`
3adc d8c10068 d8e10070 d9010078 39200001 ...h...p...x9 ..
3aec 9921000c 39200000 9921000d 39210088 .!..9 ...!..9!..
3afc 91210010 39210020 91210014 3921000c .!..9!. .!..9!..
3b0c 7d244b78 80610018 4bffff19 7c691b78 }$Kx.a..K...|i.x
3b1c 91210008 81210008 7d234b78 80010084 .!...!..}#Kx....
3b2c 7c0803a6 38210080 4e800020 |...8!..N..

@ -0,0 +1 @@
../../sim/mem/test3

@ -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 80230094 lwz r1,(init_msr-tst_inits)(r3)
111 017c 7C3B03A6 mtsrr1 r1
112 0180 80230098 lwz r1,(init_iar-tst_inits)(r3)
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 0230 4C000064 rfi
163 #rfid
164 #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 48000003 bla 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

@ -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-tst_inits)(r3)
mtsrr1 r1
lwz r1,(init_iar-tst_inits)(r3)
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

bla 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,175 @@
#include <stdint.h>
#include <stdio.h>

#include "bios.h"

#ifdef PRINTF
#include "liblitex.h"

//static char printbuf[1000]; // make this a pointer with address a define
//const char* printbuf = (char *)0x12000;
#ifndef PRINTBUF
#define PRINTBUF 0x0001C000
#endif
//static int printbuf_ptr = 0;
static char *printbuf_ptr = (char *)PRINTBUF;
//wtf needs smt
void putchar_handler(char c) {
//printbuf[printbuf_ptr++] = c;
//*(printbuf + printbuf_ptr++) = c;
*printbuf_ptr++ = c;
}
#endif

// arci stuff
//void tst_done(unsigned int rc);
void tst_done(unsigned int rc);

// in kernel (for constant locs)
extern void tst_pass(void);
extern void tst_fail(int i);
/*
void tst_pass(void);
void tst_fail(int i);

void tst_fail(int i) {
while(1) {}
}

void tst_pass(void) {
while(1) {}
}
*/

//inline unsigned int checkResult(unsigned int r) __attribute__((always_inline));
unsigned int checkResult(unsigned int r);

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++) {
*(p++) = 0;
}

#ifdef PRINTF
console_set_write_hook(putchar_handler);
putchar('w');
putchar('t');
putchar('f');
putchar('\n');
printf("main(%i)\n", tid);
#endif

// 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

// r1 has been restored to where it was for 'b init_tst' above
void tst_done(unsigned int rc) {
unsigned int i, ok = 1;
unsigned int act, exp;

if (rc != MAGIC) {
tst_fail(0x80000000);
}

// check GPR & CR
for (i = 0; i < 32; i++) {
act = *(&tst_results + i);
exp = *(&tst_expects + i);
ok = ok && (act == exp);
if (!ok) {
tst_fail(i);
}
}

// check XER - a2o not compliant right now (only so/ov/ca/len)
i = 33;
act = *(&tst_results + i);
exp = *(&tst_expects + i) & 0xE000007F;
ok = ok && (act == exp);
if (!ok) {
tst_fail(i);
}

// check CLT - skip tar, a2o doesn't have usermode sprg to use for save reg, so using tar
//for (i = 34; i < 37; i++) {
for (i = 34; i < 36; i++) {
act = *(&tst_results + i);
exp = *(&tst_expects + i);
ok = ok && (act == exp);
if (!ok) {
tst_fail(i);
}
}

// could get back to kernel
tst_pass();
while (1) {}
}

// these are branched to! but if fun, they assume r1 is stack!!!!

// tst is ended with sc to return to priv mode; then save results
void int_sc(int code, int srr0) {
asm (
"b tst_end\n"
: // outputs
: // inputs
: // clobbers
);
}

void int_unhandled(void) {
while(1) {}
}

@ -0,0 +1,111 @@
#ifndef _BIOS_H_
#define _BIOS_H_

// need address for linker constants!
extern int _fdata_rom;
extern int _edata_rom;
extern int _fdata;
extern int _fbss;
extern int _ebss;

// printf to mem
void putchar_handler(char c);


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(
"mtspr 307,%0\n" // epcr
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_dec(int v) {
asm volatile(
"mtspr 22,%0\n" // dec
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tbh(int v) {
asm volatile(
"mtspr 285,%0\n" // tbh
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tbl(int v) {
asm volatile(
"mtspr 284,%0\n" // tbl
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tsr(int v) {
asm volatile(
"mtspr 336,%0\n" // tsr
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tcr(int v) {
asm volatile(
"mtspr 340,%0\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(
"mtspr 1014,%0\n" // xucr0
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

inline void set_tens(int v) {
asm volatile(
"mtspr 438,%0\n" // tens
: // outputs
: "r"(v) // inputs
: "r4" // clobbers
);
}

#endif

@ -0,0 +1,377 @@
# © 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

#wtf this should to be done in bios based on the tst
# 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

#wtf get rid of this and just make the low 1G a single erat entry - it can be fixed up by bios later
.ifndef BIOS_START
.set BIOS_START,0x00010000
.endif

.section .text

.global _start

.org 0x000
_start:
int_000:
b boot_start

.ifdef TST_END
# tst ends with ba here, which switches to priv and jumps to tst_end
sc
.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 TST_END
# tst results haven't been saved yet; if want to call bios, need to save r1, then restore or set stack
b tst_end
.else
.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
.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

# ------------------------------------------------------------------------------------------------------------------------------

.ifdef TST_PASSFAIL
.global tst_pass
.global tst_fail

.org 0x7F0
tst_pass:
b .

.org 0x7F4
tst_fail:
b .
.endif

.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,102 @@
#!/usr/bin/bash

export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"

#LITEXLIB=
#PRINTF=
LITEXLIB="libc.o vsnprintf.o console.o"
# getting dtlb in vsnprintf
PRINTF="-DPRINTF"

# 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 THREAD_ENABLES=3 -defsym TST_END=1 -defsym INT_UNHANDLED=1 -defsym TST_PASSFAIL=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 $PRINTF -c -I. $CFLAGS bios.c
if [ $? -ne 0 ]; then
exit
fi

echo ""
echo "Linking..."
powerpc-linux-gnu-ld -nostdlib -nodefaultlibs -T linker.ld crt0.o bios.o arcitst.o $LITEXLIB -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}"
#

@ -0,0 +1,43 @@
#!/usr/bin/bash

export COMMONFLAGS="-ffreestanding -fomit-frame-pointer -Wall -fno-stack-protector"
export CFLAGS="$COMMONFLAGS -fexceptions -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes"

echo -n "Compiling..."

echo ""

echo -n "libc.c "
powerpc-linux-gnu-gcc -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS -DNO_FLOAT litex/libbase/libc.c
if [ $? -ne 0 ]; then
exit
fi

echo -n "vsnprintf.c "
# NO_FLOAT gets rid of
#snprintf.c:(.text+0x800): undefined reference to `log10'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x80c): undefined reference to `floor'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x824): undefined reference to `pow'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x898): undefined reference to `fmod'
#powerpc-linux-gnu-ld: vsnprintf.c:(.text+0x950): undefined reference to `fmod'
powerpc-linux-gnu-gcc -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS -DNO_FLOAT litex/libbase/vsnprintf.c
if [ $? -ne 0 ]; then
exit
fi

echo -n "console.c "
# use hacked console.c to printf to mem instead of uart - use console_set_write_hook(console_write_hook putchar_handler)) to print to buffer
#powerpc-linux-gnu-gcc -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS litex/libbase/console.c
powerpc-linux-gnu-gcc -nostdlib -nodefaultlibs -c -Ilitex/include/base -Ilitex/include/flibm $CFLAGS console.c

if [ $? -ne 0 ]; then
exit
fi

echo ""

#echo "Linking to test dependencies..."
#powerpc-linux-gnu-ld -nostdlib -nodefaultlibs libc.o vsnprintf.o console.o -o litexlib.o
#if [ $? -ne 0 ]; then
# exit
#fi

@ -0,0 +1,113 @@
// use console_set_write_hook(func) to do putchar() to mem

//#include <uart.h>
#include <console.h>
#include <stdio.h>
#include <stdarg.h>

//#include <generated/csr.h>

FILE *stdin, *stdout, *stderr;

static console_write_hook write_hook;
static console_read_hook read_hook;
static console_read_nonblock_hook read_nonblock_hook;

void console_set_write_hook(console_write_hook h)
{
write_hook = h;
}

void console_set_read_hook(console_read_hook r, console_read_nonblock_hook rn)
{
read_hook = r;
read_nonblock_hook = rn;
}

#ifdef CSR_UART_BASE
int putchar(int c)
{
uart_write(c);
if(write_hook != NULL)
write_hook(c);
if (c == '\n')
putchar('\r');
return c;
}

char readchar(void)
{
while(1) {
if(uart_read_nonblock())
return uart_read();
if((read_nonblock_hook != NULL) && read_nonblock_hook())
return read_hook();
}
}

int readchar_nonblock(void)
{
return (uart_read_nonblock()
|| ((read_nonblock_hook != NULL) && read_nonblock_hook()));
}

#else

int putchar(int c)
{
if(write_hook != NULL)
write_hook(c);
return c;
}

char readchar(void)
{
while(1) {
if((read_nonblock_hook != NULL) && read_nonblock_hook())
return read_hook();
}
}

int readchar_nonblock(void)
{
return ((read_nonblock_hook != NULL) && read_nonblock_hook());
}

#endif

int puts(const char *s)
{
putsnonl(s);
putchar('\n');
return 1;
}

void putsnonl(const char *s)
{
while(*s) {
putchar(*s);
s++;
}
}

#define PRINTF_BUFFER_SIZE 256

int vprintf(const char *fmt, va_list args)
{
int len;
char outbuf[PRINTF_BUFFER_SIZE];
len = vscnprintf(outbuf, sizeof(outbuf), fmt, args);
outbuf[len] = 0;
putsnonl(outbuf);
return len;
}

int printf(const char *fmt, ...)
{
int len;
va_list args;
va_start(args, fmt);
len = vprintf(fmt, args);
va_end(args);
return len;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

@ -0,0 +1,661 @@
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 #wtf this should to be done in bios based on the tst
43 # 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
44 .ifdef BIOS_LE
45 .set BIOS_ERATW2,0x000000BF
46 .else
47 .set BIOS_ERATW2,0x0000003F
48 .endif
49
50 # bios might be able to use one stack during thread startup if careful
51 .ifndef BIOS_STACK_0
52 .set BIOS_STACK_0,_stack_0
53 .endif
54
55 .ifndef BIOS_STACK_1
56 .set BIOS_STACK_1,_stack_1
57 .endif
58
59 #wtf get rid of this and just make the low 1G a single erat entry - it can be fixed up by bios late
60 .ifndef BIOS_START
61 .set BIOS_START,0x00010000
62 .endif
63
64 .section .text
65
66 .global _start
67
68 .org 0x000
69 _start:
70 int_000:
71 0000 48000400 b boot_start
72
73 .ifdef TST_END
74 # tst ends with ba here, which switches to priv and jumps to tst_end
75 0004 44000002 sc
76 .endif
77
78 # critical input
79 0008 00000000 .org 0x020
79 00000000
79 00000000
79 00000000
79 00000000
80 int_020:
81 .ifdef INT_UNHANDLED
82 0020 48000000 b int_unhandled
83 .else
84 b .
85 .endif
86
87 # debug
88 0024 00000000 .org 0x040
88 00000000
88 00000000
88 00000000
88 00000000
89 int_040:
90 0040 48000000 b .
91
92 # dsi
93 0044 00000000 .org 0x060
93 00000000
93 00000000
93 00000000
93 00000000
94 int_060:
95 0060 48000000 b .
96
97 # isi
98 0064 00000000 .org 0x080
98 00000000
98 00000000
98 00000000
98 00000000
99 int_080:
100 0080 48000000 b .
101
102 # external
103 0084 00000000 .org 0x0A0
103 00000000
103 00000000
103 00000000
103 00000000
104 int_0A0:
105 00a0 48000000 b .
106
107 # alignment
108 00a4 00000000 .org 0x0C0
108 00000000
108 00000000
108 00000000
108 00000000
109 int_0C0:
110 00c0 48000000 b .
111
112 # program
113 00c4 00000000 .org 0x0E0
113 00000000
113 00000000
113 00000000
113 00000000
114 int_0E0:
115 00e0 48000000 b .
116
117 # fp unavailable
118 00e4 00000000 .org 0x100
118 00000000
118 00000000
118 00000000
118 00000000
119 int_100:
120 0100 48000000 b .
121
122 # sc
123 0104 00000000 .org 0x120
123 00000000
123 00000000
123 00000000
123 00000000
124 int_120:
125 .ifdef TST_END
126 # tst results haven't been saved yet; if want to call bios, need to save r1, then restore or set st
127 0120 48000000 b tst_end
128 .else
129 .ifdef INT_SC
130 # lev is in 20:26, but supposed to use scv now
131 li r3,0
132 mfsrr0 r4
133 b int_sc
134 .else
135 .ifdef INT_UNHANDLED
136 b int_unhandled
137 .else
138 b .
139 .endif
140 .endif
141 .endif
142
143 # apu unavailable
144 0124 00000000 .org 0x140
144 00000000
144 00000000
144 00000000
144 00000000
145 int_140:
146 0140 48000000 b .
147
148 # decrementer
149 0144 00000000 .org 0x160
149 00000000
149 00000000
149 00000000
149 00000000
150 int_160:
151 0160 48000000 b .
152
153 # fit
154 0164 00000000 .org 0x180
154 00000000
154 00000000
154 00000000
154 00000000
155 int_180:
156 0180 48000000 b .
157
158 # watchdog
159 0184 00000000 .org 0x1A0
159 00000000
159 00000000
159 00000000
159 00000000
160 int_1A0:
161 01a0 48000000 b .
162
163 # dtlb
164 01a4 00000000 .org 0x1C0
164 00000000
164 00000000
164 00000000
164 00000000
165 int_1C0:
166 01c0 48000000 b .
167
168 # itlb
169 01c4 00000000 .org 0x1E0
169 00000000
169 00000000
169 00000000
169 00000000
170 int_1E0:
171 01e0 48000000 b .
172
173 # vector unavailable
174 01e4 00000000 .org 0x200
174 00000000
174 00000000
174 00000000
174 00000000
175 int_200:
176 0200 48000000 b .
177
178 #
179 0204 00000000 .org 0x220
179 00000000
179 00000000
179 00000000
179 00000000
180 int_220:
181 0220 48000000 b .
182
183 #
184 0224 00000000 .org 0x240
184 00000000
184 00000000
184 00000000
184 00000000
185 int_240:
186 0240 48000000 b .
187
188 #
189 0244 00000000 .org 0x260
189 00000000
189 00000000
189 00000000
189 00000000
190 int_260:
191 0260 48000000 b .
192
193 # doorbell
194 0264 00000000 .org 0x280
194 00000000
194 00000000
194 00000000
194 00000000
195 int_280:
196 0280 48000000 b .
197
198 # doorbell critical
199 0284 00000000 .org 0x2A0
199 00000000
199 00000000
199 00000000
199 00000000
200 int_2A0:
201 02a0 48000000 b .
202
203 # doorbell guest
204 02a4 00000000 .org 0x2C0
204 00000000
204 00000000
204 00000000
204 00000000
205 int_2C0:
206 02c0 48000000 b .
207
208 # doorbell guest critical
209 02c4 00000000 .org 0x2E0
209 00000000
209 00000000
209 00000000
209 00000000
210 int_2E0:
211 02e0 48000000 b .
212
213 # hvsc
214 02e4 00000000 .org 0x300
214 00000000
214 00000000
214 00000000
214 00000000
215 int_300:
216 0300 48000000 b .
217
218 # hvpriv
219 0304 00000000 .org 0x320
219 00000000
219 00000000
219 00000000
219 00000000
220 int_320:
221 0320 48000000 b .
222
223 # lrat
224 0324 00000000 .org 0x340
224 00000000
224 00000000
224 00000000
224 00000000
225 int_340:
226 0340 48000000 b .
227
228 # -------------------------------------------------------------------------------------------------
229 # initial translation
230 # both erats:
231 # 00000000 64K: (rom, BE)
232 # 00010000 64K: (ram, BE or LE)
233 #
234 0344 00000000 .org 0x400
234 00000000
234 00000000
234 00000000
234 00000000
235 boot_start:
236
237 0400 7CBE6AA6 mfspr r5,tir # who am i?
238 0404 2C250000 cmpdi r5,0x00 # skip unless T0
239 0408 408200E0 bne init_t123
240
241 040c 3C608C00 lis r3,0x8C00 # 32=ecl 36:37=tlbsel (10=i, 11=d)
242
243 # derat 31 @00000000
244 0410 3800001F li r0,0x001F # entry #31
245 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/
246 0418 38800000 li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
247 041c 3900023F li r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
248
249 0420 7C7CFBA6 mtspr mmucr0,r3
250 0424 7C4011A6 eratwe r2,r0,2
251 0428 7C8009A6 eratwe r4,r0,1
252 042c 7D0001A6 eratwe r8,r0,0
253 0430 4C00012C isync
254
255 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/
255 654A0000
255 614A003F
256
257 # derat 30 @<BIOS_START>
258 0440 3800001E li r0,0x001E # entry #30
259 0444 38800000 load32 r4,BIOS_START # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
259 64840001
259 60840000
260 0450 39000000 load32 r8,BIOS_START
260 65080001
260 61080000
261 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
262
263 0460 7D4011A6 eratwe r10,r0,2
264 0464 7C8009A6 eratwe r4,r0,1
265 0468 7D0001A6 eratwe r8,r0,0
266 046c 4C00012C isync
267
268 0470 3C608800 lis r3,0x8800 # 32=ecl 36:37=tlbsel (10=i, 11=d)
269
270 # ierat 15 @00000000
271 0474 3800000F li r0,0x000F # entry #15
272 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/
273 047c 38800000 li r4,0 # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
274 0480 3900023F li r8,0x023F # word 0 epn=32:51 class=52:53 v=54 x=55 size=56:59 thrd=60:63 s
275
276 0484 7C7CFBA6 mtspr mmucr0,r3
277 0488 7C4011A6 eratwe r2,r0,2
278 048c 7C8009A6 eratwe r4,r0,1
279 0490 7D0001A6 eratwe r8,r0,0
280 0494 4C00012C isync
281
282 # *** leave the init'd entry 14 for MT access to FFFFFFC0
283 # ierat 13 @<BIOS_START>
284 0498 3800000D li r0,0x000D # entry #13
285 049c 38800000 load32 r4,BIOS_START # word 1 rpn(32:51)=32:51 rpn(22:31)=54:63
285 64840001
285 60840000
286 04a8 39000000 load32 r8,BIOS_START
286 65080001
286 61080000
287 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
288
289 04b8 7D4011A6 eratwe r10,r0,2
290 04bc 7C8009A6 eratwe r4,r0,1
291 04c0 7D0001A6 eratwe r8,r0,0
292 04c4 4C00012C isync
293
294 04c8 48000004 b init_t0
295
296 # -------------------------------------------------------------------------------------------------
297 # init
298 #
299
300 # T0
301
302 init_t0:
303
304 # set up BIOS msr
305
306 04cc 39400000 load32 r10,BIOS_MSR
306 654A8002
306 614AB000
307 04d8 7D400124 mtmsr r10
308 04dc 4C00012C isync
309 # can't use load32 unless you can .set BIOS_STACK_0 to the linked value
310 # load32 r1,BIOS_STACK_0 # @stack_0
311 # this ignores def
312 # lis r1,_stack_0@h
313 # ori r1,r1,_stack_0@l
314 # this requires data load
315 04e0 80200000 lwz r1,stack_0(r0)
316
317 04e4 48000020 b boot_complete
318
319 # except T0
320
321 init_t123:
322
323 # set up BIOS msr
324
325 04e8 39400000 load32 r10,BIOS_MSR
325 654A8002
325 614AB000
326 04f4 7D400124 mtmsr r10
327 04f8 4C00012C isync
328 # check tir if more than 2 threads possible
329 04fc 80200000 lwz r1,stack_1(r0)
330
331 0500 48000004 b boot_complete
332
333 # -------------------------------------------------------------------------------------------------
334 boot_complete:
335
336 # set up thread and hop to it
337
338 0504 3C600000 lis r3,main@h
339 0508 60630000 ori r3,r3,main@l
340 050c 7C6903A6 mtctr r3
341 0510 7C7E6AA6 mfspr r3,tir # who am i?
342 0514 4E800421 bctrl
343 0518 480002E4 b kernel_return
344
345 # -------------------------------------------------------------------------------------------------
346
347 .ifdef TST_PASSFAIL
348 .global tst_pass
349 .global tst_fail
350
351 051c 00000000 .org 0x7F0
351 00000000
351 00000000
351 00000000
351 00000000
352 tst_pass:
353 07f0 48000000 b .
354
355 .org 0x7F4
356 tst_fail:
357 07f4 48000000 b .
358 .endif
359
360 07f8 00000000 .org 0x7FC
361 kernel_return:
362 07fc 48000000 b .
363
364 # dec
365 .org 0x800
366 int_800:
367 0800 48000000 b .
368
369 # perf
370 0804 00000000 .org 0x820
370 00000000
370 00000000
370 00000000
370 00000000
371 int_820:
372 0820 48000000 b .
373
374 0824 00000000 .org 0x8F0
374 00000000
374 00000000
374 00000000
374 00000000
375 .section .rodata
376 0000 00000000 stack_0: .long BIOS_STACK_0
377 0004 00000000 stack_1: .long BIOS_STACK_1

@ -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,8 @@
#ifndef _LITEXLIB_
#define _LITEXLIB_

//#include <litex/include/base/console.h>
#include <litex/libbase/console.h>


#endif

@ -0,0 +1,96 @@
/* this version puts kernel and bios at rom start
/* and makes the tst be copied to ram (soc really does have rom memory)

/* 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.* .sdata .gnu.linkonce.d.*)
FILL(0);
. = ALIGN(8);
_edata = .;
} > ram AT > rom

/* tst - if statically loaded in rom, must be copied to ram (save/restore) */
/* now if i don't make it .data, linker puts bios after it??? because of .text???*/
.data :
{
. = ALIGN(32);
arcitst.o (.text .text* .gnu.linkonce.t.*)
. = ALIGN(4);
} > ram AT > rom

.bss :
{
/*. = 0x00000000; */
_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 @@
/home/wtf/projects/litex/litex/soc/software

@ -0,0 +1,85 @@
# 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
```

### methodology

1. produce tst.s (stub code and tst definition) and link with kernel/bios
2. tst init is done in tst.s
3. jmp2tst
4. tst ends (bla through kernel, sc, etc.)
5. tst cleanup is done in tst.s
6. tst checking, etc. is done in bios




### debug

* hanging during results save; itags not executed in cpl queue

![](cpl_hang.png)

* itags 07-0B are dispatched but not marked 'executed' in cplq; they were sent to stq

* not documented completely in spec (CPCR2, CPCR3, CPCR4, CPCR5); 2/3 are for hi-pri and 4/5 for med(?)

```
assign spr_t0_cpcr2_fx0_cnt = cpcr2_l2[0][35:39];
assign spr_t0_cpcr2_fx1_cnt = cpcr2_l2[0][43:47];
assign spr_t0_cpcr2_lq_cnt = cpcr2_l2[0][51:55];
assign spr_t0_cpcr2_sq_cnt = cpcr2_l2[0][59:63];
assign spr_t0_cpcr3_fu0_cnt = cpcr3_l2[0][43:47];
assign spr_t0_cpcr3_fu1_cnt = cpcr3_l2[0][51:55];
assign spr_t0_cpcr3_cp_cnt = cpcr3_l2[0][57:63];
assign spr_t0_cpcr4_fx0_cnt = cpcr4_l2[0][35:39];
assign spr_t0_cpcr4_fx1_cnt = cpcr4_l2[0][43:47];
assign spr_t0_cpcr4_lq_cnt = cpcr4_l2[0][51:55];
assign spr_t0_cpcr4_sq_cnt = cpcr4_l2[0][59:63];
assign spr_t0_cpcr5_fu0_cnt = cpcr5_l2[0][43:47];
assign spr_t0_cpcr5_fu1_cnt = cpcr5_l2[0][51:55];
assign spr_t0_cpcr5_cp_cnt = cpcr5_l2[0][57:63];
```

* verilog violation in iuq_dispatch! unused thread 1 strand bits skipping force to 0, and used later as x's for credit checks which didn't stop dispatch

```
//wtf (THREADS1 is def'd)
// iverilog sez: ../../verilog/work/iuq_dispatch.v:2322: warning: @* found no sensitivities so it will never trigger.
// seems to be correct behavior - block won't be entered without a value change
// make it initial, or a generate?
`ifdef THREADS1
//always @(*)
initial
```


### printf from litex

add putchar function to store to memory buffer

```
/home/wtf/projects/litex/litex/soc/software/libbase/vsnprintf.c

plus at least these:

from /home/wtf/projects/litex/litex/soc/software/include/base/
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stddef.h>

from /home/wtf/projects/litex/litex/soc/software/include/fdlibm
#include <fdlibm.h>
```

@ -0,0 +1,6 @@
MEMORY {
rom : ORIGIN = 0x00000000, LENGTH = 0x00010000
tst : ORIGIN = 0x00010000, LENGTH = 0x00002000
ram : ORIGIN = 0x00012000, LENGTH = 0x0000E000
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

File diff suppressed because it is too large Load Diff

@ -0,0 +1,958 @@

rom: file format elf32-powerpc

Contents of section .kernel:
0000 48000400 44000002 00000000 00000000 H...D...........
0010 00000000 00000000 00000000 00000000 ................
0020 48001010 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 48012134 00000000 00000000 00000000 H.!4............
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 802008fa 48000020 39400000 654a8002 . ..H.. 9@..eJ..
04f0 614ab000 7d400124 4c00012c 802008fe aJ..}@.$L..,. ..
0500 48000004 3c600000 60630c34 7c6903a6 H...<`..`c.4|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 48000000 48000000 00000000 48000000 H...H.......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 6d61696e 28256929 0a000001 fff80000 main(%i)........
0900 fff80000 08080808 08080808 08282828 .............(((
0910 28280808 08080808 08080808 08080808 ((..............
0920 08080808 a0101010 10101010 10101010 ................
0930 10101010 04040404 04040404 04041010 ................
0940 10101010 10414141 41414101 01010101 .....AAAAAA.....
0950 01010101 01010101 01010101 01010110 ................
0960 10101010 10424242 42424202 02020202 .....BBBBBB.....
0970 02020202 02020202 02020202 02020210 ................
0980 10101008 00000000 00000000 00000000 ................
0990 00000000 00000000 00000000 00000000 ................
09a0 00000000 a0101010 10101010 10101010 ................
09b0 10101010 10101010 10101010 10101010 ................
09c0 10101010 01010101 01010101 01010101 ................
09d0 01010101 01010101 01010110 01010101 ................
09e0 01010102 02020202 02020202 02020202 ................
09f0 02020202 02020202 02020210 02020202 ................
0a00 02020202 41626f72 7465642e 00000000 ....Aborted.....
0a10 30313233 34353637 38394142 43444546 0123456789ABCDEF
0a20 4748494a 4b4c4d4e 4f505152 53545556 GHIJKLMNOPQRSTUV
0a30 5758595a 00000000 30313233 34353637 WXYZ....01234567
0a40 38396162 63646566 6768696a 6b6c6d6e 89abcdefghijklmn
0a50 6f707172 73747576 7778797a 00000000 opqrstuvwxyz....
0a60 3c4e554c 4c3e0000 00001d18 00001d48 <NULL>.........H
0a70 00001d48 00001d28 00001d48 00001d48 ...H...(...H...H
0a80 00001d48 00001d48 00001d48 00001d48 ...H...H...H...H
0a90 00001d48 00001d08 00001d48 00001cf8 ...H.......H....
0aa0 00001d48 00001d48 00001d38 00002480 ...H...H...8..$.
0ab0 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0ac0 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0ad0 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0ae0 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0af0 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b00 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b10 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b20 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b30 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b40 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b50 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b60 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b70 000024e0 000024e0 000024b8 000024e0 ..$...$...$...$.
0b80 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0b90 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0ba0 000024e0 00001fbc 000024d0 000024e0 ..$.......$...$.
0bb0 000024e0 000024e0 000024e0 000024d0 ..$...$...$...$.
0bc0 000024e0 000024e0 000024e0 000024e0 ..$...$...$...$.
0bd0 00002304 000024ac 0000225c 000024e0 ..#...$..."\..$.
0be0 000024e0 000020d8 000024e0 00002558 ..$... ...$...%X
0bf0 000024e0 000024e0 000024c4 00000000 ..$...$...$.....
Contents of section .bios:
0c00 9421fff0 7c691b78 99210008 3d200001 .!..|i.x.!..= ..
0c10 81292000 39090001 3d400001 910a2000 .) .9...=@.... .
0c20 89410008 99490000 60000000 38210010 .A...I..`...8!..
0c30 4e800020 9421ffc0 7c0802a6 90010044 N.. .!..|......D
0c40 90610038 3d200001 39292000 9121000c .a.8= ..9) ..!..
0c50 3d200001 39292040 91210010 81210038 = ..9) @.!...!.8
0c60 2c090000 4182000c 3920ffff 48000190 ,...A...9 ..H...
0c70 3d200000 392936d0 91210008 48000028 = ..9)6..!..H..(
0c80 8121000c 39490004 9141000c 81410008 .!..9I...A...A..
0c90 814a0000 91490000 81210008 39290004 .J...I...!..9)..
0ca0 91210008 81410008 3d200000 39293b4c .!...A..= ..9);L
0cb0 7c0a4840 4180ffcc 3d200001 3929247c |.H@A...= ..9)$|
0cc0 91210008 48000024 81210008 39490004 .!..H..$.!..9I..
0cd0 91410008 39400000 91490000 81210008 .A..9@...I...!..
0ce0 39290004 91210008 81410008 3d200001 9)...!...A..= ..
0cf0 39292498 7c0a4840 4180ffd0 3d200000 9)$.|.H@A...= ..
0d00 38690c00 4cc63182 480026d1 38600077 8i..L.1.H.&.8`.w
0d10 48002719 38600074 48002711 38600066 H.'.8`.tH.'.8`.f
0d20 48002709 3860000a 48002701 80810038 H.'.8`..H.'....8
0d30 3d200000 386908f0 4cc63182 480028f5 = ..8i..L.1.H.(.
0d40 3d200300 91210034 81210034 7d334ba6 = ...!.4.!.4}3K.
0d50 60000000 39200000 91210030 81210030 `...9 ...!.0.!.0
0d60 7d3603a6 60000000 39200000 9121002c }6..`...9 ...!.,
0d70 8121002c 7d3d43a6 60000000 39200000 .!.,}=C.`...9 ..
0d80 91210028 81210028 7d3c43a6 60000000 .!.(.!.(}<C.`...
0d90 3d20fe00 91210024 81210024 7d3053a6 = ...!.$.!.$}0S.
0da0 60000000 7d36faa6 91210020 81210020 `...}6...!. .!.
0db0 552905ea 9121001c 8121001c 7d36fba6 U)...!...!..}6..
0dc0 60000000 39200000 91210018 81210018 `...9 ...!...!..
0dd0 7d3053a6 60000000 39200000 91210014 }0S.`...9 ...!..
0de0 81210014 7d3453a6 60000000 81210010 .!..}4S.`....!..
0df0 7d234b78 4801136c 48000000 7d234b78 }#KxH..lH...}#Kx
0e00 80010044 7c0803a6 38210040 4e800020 ...D|...8!.@N..
0e10 9421ffe0 7c0802a6 90010024 90610018 .!..|......$.a..
0e20 39200001 9121000c 81410018 3d200867 9 ...!...A..= .g
0e30 61295309 7c0a4800 4182000c 3c608000 a)S.|.H.A...<`..
0e40 4bfff9b5 39200000 91210008 4800008c K...9 ...!..H...
0e50 81210008 552a103a 3d200001 39292340 .!..U*.:= ..9)#@
0e60 7d2a4a14 81290000 91210010 81210008 }*J..)...!...!..
0e70 552a103a 3d200001 392923e0 7d2a4a14 U*.:= ..9)#.}*J.
0e80 81290000 91210014 8121000c 2c090000 .)...!...!..,...
0e90 4182001c 81410010 81210014 7c0a4800 A....A...!..|.H.
0ea0 4082000c 39200001 48000008 39200000 @...9 ..H...9 ..
0eb0 9121000c 8121000c 2c090000 40820010 .!...!..,...@...
0ec0 81210008 7d234b78 4bfff92d 81210008 .!..}#KxK..-.!..
0ed0 39290001 91210008 81210008 2809001f 9)...!...!..(...
0ee0 4081ff70 39200021 91210008 81210008 @..p9 .!.!...!..
0ef0 552a103a 3d200001 39292340 7d2a4a14 U*.:= ..9)#@}*J.
0f00 81290000 91210010 81210008 552a103a .)...!...!..U*.:
0f10 3d200001 392923e0 7d2a4a14 81290000 = ..9)#.}*J..)..
0f20 55290644 91210014 8121000c 2c090000 U).D.!...!..,...
0f30 4182001c 81410010 81210014 7c0a4800 A....A...!..|.H.
0f40 4082000c 39200001 48000008 39200000 @...9 ..H...9 ..
0f50 9121000c 8121000c 2c090000 40820010 .!...!..,...@...
0f60 81210008 7d234b78 4bfff88d 39200022 .!..}#KxK...9 ."
0f70 91210008 4800008c 81210008 552a103a .!..H....!..U*.:
0f80 3d200001 39292340 7d2a4a14 81290000 = ..9)#@}*J..)..
0f90 91210010 81210008 552a103a 3d200001 .!...!..U*.:= ..
0fa0 392923e0 7d2a4a14 81290000 91210014 9)#.}*J..)...!..
0fb0 8121000c 2c090000 4182001c 81410010 .!..,...A....A..
0fc0 81210014 7c0a4800 4082000c 39200001 .!..|.H.@...9 ..
0fd0 48000008 39200000 9121000c 8121000c H...9 ...!...!..
0fe0 2c090000 40820010 81210008 7d234b78 ,...@....!..}#Kx
0ff0 4bfff805 81210008 39290001 91210008 K....!..9)...!..
1000 81210008 28090023 4081ff70 4bfff7e5 .!..(..#@..pK...
1010 48000000 9421fff0 90610008 9081000c H....!...a......
1020 48011234 60000000 38210010 4e800020 H..4`...8!..N..
1030 48000000 H...
Contents of section .text:
1034 9421fff0 7c691b78 99210008 89210008 .!..|i.x.!...!..
1044 3d400000 394a0904 7d2a48ae 552907bc =@..9J..}*H.U)..
1054 2c090000 41820010 89210008 3929ffe0 ,...A....!..9)..
1064 99210008 89210008 7d234b78 38210010 .!...!..}#Kx8!..
1074 4e800020 9421fff0 7c691b78 b1210008 N.. .!..|i.x.!..
1084 a1210008 5529402e 7d2a0734 a1210008 .!..U)@.}*.4.!..
1094 5529c23e 5529043e 7d290734 7d494b78 U).>U).>}).4}IKx
10a4 7d290734 5529043e 7d234b78 38210010 }).4U).>}#Kx8!..
10b4 4e800020 9421fff0 90610008 81210008 N.. .!...a...!..
10c4 552a463e 81210008 5529c23e 5529042e U*F>.!..U).>U)..
10d4 7d4a4b78 81210008 5529402e 5529021e }JKx.!..U)@.U)..
10e4 7d4a4b78 81210008 5529c00e 7d494b78 }JKx.!..U)..}IKx
10f4 7d234b78 38210010 4e800020 9421fff0 }#Kx8!..N.. .!..
1104 90610008 9081000c 48000028 81210008 .a......H..(.!..
1114 89290000 2c090000 4082000c 39200000 .)..,...@...9 ..
1124 4800002c 81210008 39290001 91210008 H..,.!..9)...!..
1134 81210008 89490000 8121000c 5529063e .!...I...!..U).>
1144 7c0a4840 4082ffc8 81210008 7d234b78 |.H@@....!..}#Kx
1154 38210010 4e800020 9421ffe0 90610018 8!..N.. .!...a..
1164 9081001c 81210018 91210008 48000058 .....!...!..H..X
1174 8121001c 9121000c 48000030 81210008 .!...!..H..0.!..
1184 89490000 8121000c 89290000 7c0a4840 .I...!...)..|.H@
1194 4082000c 81210008 48000040 8121000c @....!..H..@.!..
11a4 39290001 9121000c 8121000c 89290000 9)...!...!...)..
11b4 2c090000 4082ffc8 81210008 39290001 ,...@....!..9)..
11c4 91210008 81210008 89290000 2c090000 .!...!...)..,...
11d4 4082ffa0 39200000 7d234b78 38210020 @...9 ..}#Kx8!.
11e4 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
11f4 90610018 9081001c 80610018 480003dd .a.......a..H...
1204 7c6a1b78 81210018 7d295214 91210008 |j.x.!..})R..!..
1214 81210008 89490000 8121001c 5529063e .!...I...!..U).>
1224 7c0a4840 4082000c 81210008 48000024 |.H@@....!..H..$
1234 81210008 3929ffff 91210008 81410008 .!..9)...!...A..
1244 81210018 7c0a4840 4080ffc8 39200000 .!..|.H@@...9 ..
1254 7d234b78 80010024 7c0803a6 38210020 }#Kx...$|...8!.
1264 4e800020 9421ffe0 90610008 9081000c N.. .!...a......
1274 90a10010 48000030 81210008 89490000 ....H..0.!...I..
1284 81210010 5529063e 7c0a4840 4082000c .!..U).>|.H@@...
1294 81210008 48000038 81210008 39290001 .!..H..8.!..9)..
12a4 91210008 8121000c 3949ffff 9141000c .!...!..9I...A..
12b4 2c090000 41820014 81210008 89290000 ,...A....!...)..
12c4 2c090000 4082ffb4 39200000 7d234b78 ,...@...9 ..}#Kx
12d4 38210020 4e800020 9421ffe0 90610018 8!. N.. .!...a..
12e4 9081001c 81210018 91210008 60000000 .....!...!..`...
12f4 8141001c 392a0001 9121001c 81210018 .A..9*...!...!..
1304 39090001 91010018 894a0000 99490000 9........J...I..
1314 89290000 2c090000 4082ffd8 81210008 .)..,...@....!..
1324 7d234b78 38210020 4e800020 9421ffd0 }#Kx8!. N.. .!..
1334 90610018 9081001c 90a10020 81210018 .a......... .!..
1344 91210008 48000048 8121001c 89490000 .!..H..H.!...I..
1354 81210008 99490000 81210008 89290000 .!...I...!...)..
1364 2c090000 41820010 8121001c 39290001 ,...A....!..9)..
1374 9121001c 81210008 39290001 91210008 .!...!..9)...!..
1384 81210020 3929ffff 91210020 81210020 .!. 9)...!. .!.
1394 2c090000 4082ffb4 81210018 7d234b78 ,...@....!..}#Kx
13a4 38210030 4e800020 9421ffe0 90610018 8!.0N.. .!...a..
13b4 9081001c 81210018 89490000 8121001c .....!...I...!..
13c4 39090001 9101001c 89290000 7d295050 9........)..})PP
13d4 5529063e 99210008 89210008 7d290774 U).>.!...!..}).t
13e4 2c090000 40820020 81210018 39490001 ,...@.. .!..9I..
13f4 91410018 89290000 2c090000 41820008 .A...)..,...A...
1404 4bffffb4 89210008 7d290774 7d234b78 K....!..}).t}#Kx
1414 38210020 4e800020 9421ffd0 90610018 8!. N.. .!...a..
1424 9081001c 90a10020 39200000 9121000c ....... 9 ...!..
1434 39200000 99210008 4800005c 81210018 9 ...!..H..\.!..
1444 89490000 8121001c 39090001 9101001c .I...!..9.......
1454 89290000 7d295050 5529063e 99210008 .)..})PPU).>.!..
1464 89210008 7d290774 2c090000 40820038 .!..}).t,...@..8
1474 81210018 39490001 91410018 89290000 .!..9I...A...)..
1484 2c090000 41820020 8121000c 39290001 ,...A.. .!..9)..
1494 9121000c 8141000c 81210020 7c0a4840 .!...A...!. |.H@
14a4 4180ff9c 89210008 7d290774 7d234b78 A....!..}).t}#Kx
14b4 38210030 4e800020 9421ffe0 90610018 8!.0N.. .!...a..
14c4 9081001c 81210018 91210008 48000010 .....!...!..H...
14d4 81210018 39290001 91210018 81210018 .!..9)...!...!..
14e4 89290000 2c090000 4082ffe8 60000000 .)..,...@...`...
14f4 8141001c 392a0001 9121001c 81210018 .A..9*...!...!..
1504 39090001 91010018 894a0000 99490000 9........J...I..
1514 89290000 2c090000 4082ffd8 81210008 .)..,...@....!..
1524 7d234b78 38210020 4e800020 9421ffd0 }#Kx8!. N.. .!..
1534 90610018 9081001c 90a10020 81210018 .a......... .!..
1544 91210008 81210020 2c090000 4182007c .!...!. ,...A..|
1554 48000010 81210018 39290001 91210018 H....!..9)...!..
1564 81210018 89290000 2c090000 4082ffe8 .!...)..,...@...
1574 4800002c 81210020 3929ffff 91210020 H..,.!. 9)...!.
1584 81210020 2c090000 40820014 81210018 .!. ,...@....!..
1594 39400000 99490000 48000030 8141001c 9@...I..H..0.A..
15a4 392a0001 9121001c 81210018 39090001 9*...!...!..9...
15b4 91010018 894a0000 99490000 89290000 .....J...I...)..
15c4 2c090000 4082ffb0 81210008 7d234b78 ,...@....!..}#Kx
15d4 38210030 4e800020 9421ffe0 90610018 8!.0N.. .!...a..
15e4 81210018 91210008 48000010 81210008 .!...!..H....!..
15f4 39290001 91210008 81210008 89290000 9)...!...!...)..
1604 2c090000 4082ffe8 81410008 81210018 ,...@....A...!..
1614 7d295050 7d234b78 38210020 4e800020 })PP}#Kx8!. N..
1624 9421ffe0 90610018 9081001c 81210018 .!...a.......!..
1634 91210008 48000010 81210008 39290001 .!..H....!..9)..
1644 91210008 8121001c 3949ffff 9141001c .!...!..9I...A..
1654 2c090000 41820014 81210008 89290000 ,...A....!...)..
1664 2c090000 4082ffd4 81410008 81210018 ,...@....A...!..
1674 7d295050 7d234b78 38210020 4e800020 })PP}#Kx8!. N..
1684 9421ffe0 90610018 9081001c 39200000 .!...a......9 ..
1694 91210010 81210018 91210008 4800007c .!...!...!..H..|
16a4 8121001c 9121000c 48000028 81210008 .!...!..H..(.!..
16b4 89490000 8121000c 89290000 7c0a4840 .I...!...)..|.H@
16c4 41820024 8121000c 39290001 9121000c A..$.!..9)...!..
16d4 8121000c 89290000 2c090000 4082ffd0 .!...)..,...@...
16e4 48000008 60000000 8121000c 89290000 H...`....!...)..
16f4 2c090000 4082000c 81210010 48000030 ,...@....!..H..0
1704 81210010 39290001 91210010 81210008 .!..9)...!...!..
1714 39290001 91210008 81210008 89290000 9)...!...!...)..
1724 2c090000 4082ff7c 81210010 7d234b78 ,...@..|.!..}#Kx
1734 38210020 4e800020 9421ffd0 90610018 8!. N.. .!...a..
1744 9081001c 90a10020 39200000 91210010 ....... 9 ...!..
1754 81210018 91210008 8121001c 9121000c .!...!...!...!..
1764 48000050 81210008 89290000 7d2a4b78 H..P.!...)..}*Kx
1774 8121000c 89290000 7d295050 91210010 .!...)..})PP.!..
1784 81210010 2c090000 40820038 81210008 .!..,...@..8.!..
1794 39290001 91210008 8121000c 39290001 9)...!...!..9)..
17a4 9121000c 81210020 3929ffff 91210020 .!...!. 9)...!.
17b4 81210020 2c090000 4082ffac 48000008 .!. ,...@...H...
17c4 60000000 81210010 7d234b78 38210030 `....!..}#Kx8!.0
17d4 4e800020 9421ffd0 90610018 9081001c N.. .!...a......
17e4 90a10020 81210018 91210008 4800001c ... .!...!..H...
17f4 81210008 39490001 91410008 8141001c .!..9I...A...A..
1804 554a063e 99490000 81210020 3949ffff UJ.>.I...!. 9I..
1814 91410020 2c090000 4082ffd8 81210018 .A. ,...@....!..
1824 7d234b78 38210030 4e800020 9421ffd0 }#Kx8!.0N.. .!..
1834 90610018 9081001c 90a10020 81210018 .a......... .!..
1844 91210008 8121001c 9121000c 48000024 .!...!...!..H..$
1854 8141000c 392a0001 9121000c 81210008 .A..9*...!...!..
1864 39090001 91010008 894a0000 99490000 9........J...I..
1874 81210020 3949ffff 91410020 2c090000 .!. 9I...A. ,...
1884 4082ffd0 81210018 7d234b78 38210030 @....!..}#Kx8!.0
1894 4e800020 9421ffd0 90610018 9081001c N.. .!...a......
18a4 90a10020 81410018 8121001c 7c0a4840 ... .A...!..|.H@
18b4 41810050 81210018 91210008 8121001c A..P.!...!...!..
18c4 9121000c 48000024 8141000c 392a0001 .!..H..$.A..9*..
18d4 9121000c 81210008 39090001 91010008 .!...!..9.......
18e4 894a0000 99490000 81210020 3949ffff .J...I...!. 9I..
18f4 91410020 2c090000 4082ffd0 48000064 .A. ,...@...H..d
1904 81410018 81210020 7d2a4a14 91210008 .A...!. }*J..!..
1914 8141001c 81210020 7d2a4a14 9121000c .A...!. }*J..!..
1924 4800002c 8121000c 3929ffff 9121000c H..,.!..9)...!..
1934 81210008 3929ffff 91210008 8121000c .!..9)...!...!..
1944 89490000 81210008 99490000 81210020 .I...!...I...!.
1954 3949ffff 91410020 2c090000 4082ffc8 9I...A. ,...@...
1964 81210018 7d234b78 38210030 4e800020 .!..}#Kx8!.0N..
1974 9421ffe0 7c0802a6 90010024 90610018 .!..|......$.a..
1984 9081001c 8061001c 4bfffc51 7c691b78 .....a..K..Q|i.x
1994 9121000c 8121000c 2c090000 4082000c .!...!..,...@...
19a4 81210018 48000068 80610018 4bfffc2d .!..H..h.a..K..-
19b4 7c691b78 91210008 48000040 81210008 |i.x.!..H..@.!..
19c4 3929ffff 91210008 80a1000c 8081001c 9)...!..........
19d4 80610018 4bfffd65 7c691b78 2c090000 .a..K..e|i.x,...
19e4 4082000c 81210018 48000024 81210018 @....!..H..$.!..
19f4 39290001 91210018 81410008 8121000c 9)...!...A...!..
1a04 7c0a4840 4080ffb8 39200000 7d234b78 |.H@@...9 ..}#Kx
1a14 80010024 7c0803a6 38210020 4e800020 ...$|...8!. N..
1a24 9421ffd0 90610018 9081001c 90a10020 .!...a.........
1a34 81210018 91210008 48000030 8121001c .!...!..H..0.!..
1a44 552a063e 81210008 39090001 91010008 U*.>.!..9.......
1a54 89290000 7c0a4840 40820010 81210008 .)..|.H@@....!..
1a64 3929ffff 4800001c 81210020 3949ffff 9)..H....!. 9I..
1a74 91410020 2c090000 4082ffc4 39200000 .A. ,...@...9 ..
1a84 7d234b78 38210030 4e800020 9421ffd0 }#Kx8!.0N.. .!..
1a94 7c0802a6 90010034 90610018 9081001c |......4.a......
1aa4 90a10020 39200000 91210008 81210020 ... 9 ...!...!.
1ab4 2c090000 4082008c 3920000a 91210020 ,...@...9 ...!.
1ac4 81210018 89290000 28090030 408200e4 .!...)..(..0@...
1ad4 39200008 91210020 81210018 39290001 9 ...!. .!..9)..
1ae4 91210018 81210018 89290000 7d234b78 .!...!...)..}#Kx
1af4 4bfff541 7c691b78 28090058 408200b4 K..A|i.x(..X@...
1b04 81210018 39290001 89290000 7d2a4b78 .!..9)...)..}*Kx
1b14 3d200000 39290904 7d2950ae 71290044 = ..9)..})P.q).D
1b24 2c090000 4182008c 81210018 39290001 ,...A....!..9)..
1b34 91210018 39200010 91210020 48000074 .!..9 ...!. H..t
1b44 81210020 2c090010 40820068 81210018 .!. ,...@..h.!..
1b54 89290000 28090030 40820058 81210018 .)..(..0@..X.!..
1b64 39290001 89290000 7d234b78 4bfff4c5 9)...)..}#KxK...
1b74 7c691b78 28090058 40820038 81210018 |i.x(..X@..8.!..
1b84 39290002 91210018 48000028 81410008 9)...!..H..(.A..
1b94 81210020 7d2a49d6 8141000c 7d2a4a14 .!. }*I..A..}*J.
1ba4 91210008 81210018 39290001 91210018 .!...!..9)...!..
1bb4 81210018 89290000 7d2a4b78 3d200000 .!...)..}*Kx= ..
1bc4 39290904 7d2950ae 71290044 2c090000 9)..})P.q).D,...
1bd4 41820064 81210018 89290000 7d2a4b78 A..d.!...)..}*Kx
1be4 3d200000 39290904 7d2950ae 5529077a = ..9)..})P.U).z
1bf4 2c090000 41820014 81210018 89290000 ,...A....!...)..
1c04 3929ffd0 4800001c 81210018 89290000 9)..H....!...)..
1c14 7d234b78 4bfff41d 7c691b78 3929ffc9 }#KxK...|i.x9)..
1c24 9121000c 8141000c 81210020 7c0a4840 .!...A...!. |.H@
1c34 4180ff5c 8121001c 2c090000 41820010 A..\.!..,...A...
1c44 8121001c 81410018 91490000 81210008 .!...A...I...!..
1c54 7d234b78 80010034 7c0803a6 38210030 }#Kx...4|...8!.0
1c64 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
1c74 90610008 9081000c 90a10010 81210008 .a...........!..
1c84 89290000 2809002d 4082002c 81210008 .)..(..-@..,.!..
1c94 39290001 81410010 7d455378 8081000c 9)...A..}ESx....
1ca4 7d234b78 4bfffde9 7c691b78 7d2900d0 }#KxK...|i.x})..
1cb4 4800001c 81210010 7d254b78 8081000c H....!..}%Kx....
1cc4 80610008 4bfffdc9 7c691b78 7d234b78 .a..K...|i.x}#Kx
1cd4 80010024 7c0803a6 38210020 4e800020 ...$|...8!. N..
1ce4 9421ffe0 90610018 39200000 91210008 .!...a..9 ...!..
1cf4 48000030 81210008 1d49000a 81210018 H..0.!...I...!..
1d04 81290000 38e90001 81010018 90e80000 .)..8...........
1d14 89290000 7d2a4a14 3929ffd0 91210008 .)..}*J.9)...!..
1d24 81210018 81290000 89290000 7d2a4b78 .!...)...)..}*Kx
1d34 3d200000 39290904 7d2950ae 5529077a = ..9)..})P.U).z
1d44 2c090000 4082ffb0 81210008 7d234b78 ,...@....!..}#Kx
1d54 38210020 4e800020 9421ff70 90610068 8!. N.. .!.p.a.h
1d64 9081006c 90a10070 90c10074 90e10078 ...l...p...t...x
1d74 9101007c 91210080 81210080 55290672 ...|.!...!..U).r
1d84 2c090000 41820010 3d200000 39290a10 ,...A...= ..9)..
1d94 4800000c 3d200000 39290a38 91210010 H...= ..9).8.!..
1da4 81210080 552906f6 2c090000 41820010 .!..U)..,...A...
1db4 81210080 5529003c 91210080 81210074 .!..U).<.!...!.t
1dc4 2c090001 40810010 81210074 2c090024 ,...@....!.t,..$
1dd4 4081000c 39200000 480003fc 81210080 @...9 ..H....!..
1de4 552907fe 2c090000 4182000c 39200030 U)..,...A...9 .0
1df4 48000008 39200020 99210014 39200000 H...9 . .!..9 ..
1e04 99210008 81210080 552907bc 2c090000 .!...!..U)..,...
1e14 41820080 81210070 2c090000 40800028 A....!.p,...@..(
1e24 3920002d 99210008 81210070 7d2900d0 9 .-.!...!.p})..
1e34 91210070 81210078 3929ffff 91210078 .!.p.!.x9)...!.x
1e44 48000050 81210080 5529077a 2c090000 H..P.!..U).z,...
1e54 4182001c 3920002b 99210008 81210078 A...9 .+.!...!.x
1e64 3929ffff 91210078 48000028 81210080 9)...!.xH..(.!..
1e74 55290738 2c090000 41820018 39200020 U).8,...A...9 .
1e84 99210008 81210078 3929ffff 91210078 .!...!.x9)...!.x
1e94 81210080 552906b4 2c090000 41820038 .!..U)..,...A..8
1ea4 81210074 2c090010 40820014 81210078 .!.t,...@....!.x
1eb4 3929fffe 91210078 4800001c 81210074 9)...!.xH....!.t
1ec4 2c090008 40820010 81210078 3929ffff ,...@....!.x9)..
1ed4 91210078 39200000 9121000c 81210070 .!.x9 ...!...!.p
1ee4 2c090000 4082006c 8121000c 39490001 ,...@..l.!..9I..
1ef4 9141000c 39410008 7d2a4a14 39400030 .A..9A..}*J.9@.0
1f04 99490010 48000058 81410074 81210070 .I..H..X.A.t.!.p
1f14 7d095396 7d4851d6 7d2a4850 81410010 }.S.}HQ.}*HP.A..
1f24 7d4a4a14 8121000c 39090001 9101000c }JJ..!..9.......
1f34 894a0000 39010008 7d284a14 99490010 .J..9...}(J..I..
1f44 81210074 81410070 7d2a4b96 91210070 .!.t.A.p}*K..!.p
1f54 81210070 2c090000 4082ffb0 8141000c .!.p,...@....A..
1f64 8121007c 7c0a4800 4081000c 8121000c .!.||.H.@....!..
1f74 9121007c 81410078 8121007c 7d295050 .!.|.A.x.!.|})PP
1f84 91210078 81210080 71290011 2c090000 .!.x.!..q)..,...
1f94 40820044 4800002c 81410068 8121006c @..DH..,.A.h.!.l
1fa4 7c0a4840 40800010 81210068 39400020 |.H@@....!.h9@.
1fb4 99490000 81210068 39290001 91210068 .I...!.h9)...!.h
1fc4 81210078 3949ffff 91410078 2c090000 .!.x9I...A.x,...
1fd4 4181ffc8 89210008 2c090000 4182002c A....!..,...A..,
1fe4 81410068 8121006c 7c0a4840 40800010 .A.h.!.l|.H@@...
1ff4 81210068 89410008 99490000 81210068 .!.h.A...I...!.h
2004 39290001 91210068 81210080 552906b4 9)...!.h.!..U)..
2014 2c090000 4182009c 81210074 2c090008 ,...A....!.t,...
2024 40820030 81410068 8121006c 7c0a4840 @..0.A.h.!.l|.H@
2034 40800010 81210068 39400030 99490000 @....!.h9@.0.I..
2044 81210068 39290001 91210068 48000064 .!.h9)...!.hH..d
2054 81210074 2c090010 40820058 81410068 .!.t,...@..X.A.h
2064 8121006c 7c0a4840 40800010 81210068 .!.l|.H@@....!.h
2074 39400030 99490000 81210068 39290001 9@.0.I...!.h9)..
2084 91210068 81410068 8121006c 7c0a4840 .!.h.A.h.!.l|.H@
2094 40800014 81210010 89490021 81210068 @....!...I.!.!.h
20a4 99490000 81210068 39290001 91210068 .I...!.h9)...!.h
20b4 81210080 552906f6 2c090000 40820070 .!..U)..,...@..p
20c4 4800002c 81410068 8121006c 7c0a4840 H..,.A.h.!.l|.H@
20d4 40800010 81210068 89410014 99490000 @....!.h.A...I..
20e4 81210068 39290001 91210068 81210078 .!.h9)...!.h.!.x
20f4 3949ffff 91410078 2c090000 4181ffc8 9I...A.x,...A...
2104 4800002c 81410068 8121006c 7c0a4840 H..,.A.h.!.l|.H@
2114 40800010 81210068 39400030 99490000 @....!.h9@.0.I..
2124 81210068 39290001 91210068 8121007c .!.h9)...!.h.!.|
2134 3949ffff 9141007c 8141000c 7c0a4800 9I...A.|.A..|.H.
2144 4180ffc4 48000038 81410068 8121006c A...H..8.A.h.!.l
2154 7c0a4840 4080001c 39410018 8121000c |.H@@...9A...!..
2164 7d2a4a14 89490000 81210068 99490000 }*J..I...!.h.I..
2174 81210068 39290001 91210068 8121000c .!.h9)...!.h.!..
2184 3949ffff 9141000c 2c090000 4181ffbc 9I...A..,...A...
2194 4800002c 81410068 8121006c 7c0a4840 H..,.A.h.!.l|.H@
21a4 40800010 81210068 39400020 99490000 @....!.h9@. .I..
21b4 81210068 39290001 91210068 81210078 .!.h9)...!.h.!.x
21c4 3949ffff 91410078 2c090000 4181ffc8 9I...A.x,...A...
21d4 81210068 7d234b78 38210090 4e800020 .!.h}#Kx8!..N..
21e4 9421ffd0 7c0802a6 90010034 90610018 .!..|......4.a..
21f4 9081001c 90a10020 90c10024 80c10024 ....... ...$...$
2204 80a10020 8081001c 80610018 4800044d ... .....a..H..M
2214 7c691b78 91210008 81410008 8121001c |i.x.!...A...!..
2224 7c0a4840 41800010 8121001c 3929ffff |.H@A....!..9)..
2234 48000008 81210008 7d234b78 80010034 H....!..}#Kx...4
2244 7c0803a6 38210030 4e800020 9421ff80 |...8!.0N.. .!..
2254 7c0802a6 90010084 90610018 9081001c |........a......
2264 90a10020 90c1002c 90e10030 91010034 ... ...,...0...4
2274 91210038 9141003c 40860024 d8210040 .!.8.A.<@..$.!.@
2284 d8410048 d8610050 d8810058 d8a10060 .A.H.a.P...X...`
2294 d8c10068 d8e10070 d9010078 39200003 ...h...p...x9 ..
22a4 9921000c 39200000 9921000d 39210088 .!..9 ...!..9!..
22b4 91210010 39210020 91210014 3921000c .!..9!. .!..9!..
22c4 7d264b78 80a10020 8081001c 80610018 }&Kx... .....a..
22d4 48000389 7c691b78 91210008 81210008 H...|i.x.!...!..
22e4 7d234b78 80010084 7c0803a6 38210080 }#Kx....|...8!..
22f4 4e800020 9421ff80 7c0802a6 90010084 N.. .!..|.......
2304 90610018 9081001c 90a10020 90c1002c .a......... ...,
2314 90e10030 91010034 91210038 9141003c ...0...4.!.8.A.<
2324 40860024 d8210040 d8410048 d8610050 @..$.!.@.A.H.a.P
2334 d8810058 d8a10060 d8c10068 d8e10070 ...X...`...h...p
2344 d9010078 39200003 9921000c 39200000 ...x9 ...!..9 ..
2354 9921000d 39210088 91210010 39210020 .!..9!...!..9!.
2364 91210014 3921000c 7d264b78 80a10020 .!..9!..}&Kx...
2374 8081001c 80610018 480002e1 7c691b78 .....a..H...|i.x
2384 91210008 81410008 8121001c 7c0a4840 .!...A...!..|.H@
2394 41800010 8121001c 3929ffff 48000008 A....!..9)..H...
23a4 81210008 7d234b78 80010084 7c0803a6 .!..}#Kx....|...
23b4 38210080 4e800020 9421ffe0 7c0802a6 8!..N.. .!..|...
23c4 90010024 90610008 9081000c 90a10010 ...$.a..........
23d4 80c10010 80a1000c 3d207fff 6124ffff ........= ..a$..
23e4 80610008 48000275 7c691b78 7d234b78 .a..H..u|i.x}#Kx
23f4 80010024 7c0803a6 38210020 4e800020 ...$|...8!. N..
2404 9421ff80 7c0802a6 90010084 90610018 .!..|........a..
2414 9081001c 90a10020 90c10024 90e10028 ....... ...$...(
2424 9101002c 91210030 91410034 40860024 ...,.!.0.A.4@..$
2434 d8210038 d8410040 d8610048 d8810050 .!.8.A.@.a.H...P
2444 d8a10058 d8c10060 d8e10068 d9010070 ...X...`...h...p
2454 39200002 9921000c 39200000 9921000d 9 ...!..9 ...!..
2464 39210088 91210010 39210018 91210014 9!...!..9!...!..
2474 3921000c 7d264b78 80a1001c 3d207fff 9!..}&Kx....= ..
2484 6124ffff 80610018 480001d1 7c691b78 a$...a..H...|i.x
2494 91210008 81210008 7d234b78 80010084 .!...!..}#Kx....
24a4 7c0803a6 38210080 4e800020 3d200001 |...8!..N.. = ..
24b4 81292488 1d290081 3d293619 394962e9 .)$..)..=)6.9Ib.
24c4 3d200001 91492488 3d200001 81292488 = ...I$.= ...)$.
24d4 7d234b78 4e800020 9421fff0 90610008 }#KxN.. .!...a..
24e4 3d200001 81410008 91492488 60000000 = ...A...I$.`...
24f4 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
2504 90010014 3d200000 38690a04 4cc63182 ....= ..8i..L.1.
2514 4800111d 48000000 9421ffe0 7c0802a6 H...H....!..|...
2524 90010024 90610018 39200001 91210008 ...$.a..9 ...!..
2534 89210008 2c090000 41820014 80610018 .!..,...A....a..
2544 4bffeb75 7c691b78 48000008 81210018 K..u|i.xH....!..
2554 7d234b78 80010024 7c0803a6 38210020 }#Kx...$|...8!.
2564 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
2574 7c691b78 b1210018 39200001 91210008 |i.x.!..9 ...!..
2584 89210008 2c090000 41820018 a1210018 .!..,...A....!..
2594 7d234b78 4bffeae1 7c691b78 48000008 }#KxK...|i.xH...
25a4 a1210018 7d234b78 80010024 7c0803a6 .!..}#Kx...$|...
25b4 38210020 4e800020 9421ffe0 7c0802a6 8!. N.. .!..|...
25c4 90010024 90610018 39200001 91210008 ...$.a..9 ...!..
25d4 89210008 2c090000 41820014 80610018 .!..,...A....a..
25e4 4bffead5 7c691b78 48000008 81210018 K...|i.xH....!..
25f4 7d234b78 80010024 7c0803a6 38210020 }#Kx...$|...8!.
2604 4e800020 9421ffe0 7c0802a6 90010024 N.. .!..|......$
2614 7c691b78 b1210018 39200001 91210008 |i.x.!..9 ...!..
2624 89210008 2c090000 41820018 a1210018 .!..,...A....!..
2634 7d234b78 4bffea41 7c691b78 48000008 }#KxK..A|i.xH...
2644 a1210018 7d234b78 80010024 7c0803a6 .!..}#Kx...$|...
2654 38210020 4e800020 9421ffa0 7c0802a6 8!. N.. .!..|...
2664 90010064 90610048 9081004c 90a10050 ...d.a.H...L...P
2674 90c10054 8121004c 2c090000 4080000c ...T.!.L,...@...
2684 39200000 48000d3c 81210048 91210018 9 ..H..<.!.H.!..
2694 81410048 8121004c 7d2a4a14 9121001c .A.H.!.L}*J..!..
26a4 8141001c 81210048 7c0a4840 40800cbc .A...!.H|.H@@...
26b4 3920ffff 9121001c 8141001c 81210048 9 ...!...A...!.H
26c4 7d295050 9121004c 48000ca0 81210050 })PP.!.LH....!.P
26d4 89290000 28090025 41820034 81410018 .)..(..%A..4.A..
26e4 8121001c 7c0a4840 40800014 81210050 .!..|.H@@....!.P
26f4 89490000 81210018 99490000 81210018 .I...!...I...!..
2704 39290001 91210018 48000c54 39200000 9)...!..H..T9 ..
2714 91210024 81210050 39290001 91210050 .!.$.!.P9)...!.P
2724 81210050 89290000 3929ffe0 28090010 .!.P.)..9)..(...
2734 4181007c 552a103a 3d200000 39290a68 A..|U*.:= ..9).h
2744 7d2a4a14 81490000 3d200000 39290a68 }*J..I..= ..9).h
2754 7d2a4a14 7d2903a6 4e800420 81210024 }*J.})..N.. .!.$
2764 61290010 91210024 4bffffac 81210024 a)...!.$K....!.$
2774 61290004 91210024 4bffff9c 81210024 a)...!.$K....!.$
2784 61290008 91210024 4bffff8c 81210024 a)...!.$K....!.$
2794 61290020 91210024 4bffff7c 81210024 a). .!.$K..|.!.$
27a4 61290001 91210024 4bffff6c 3920ffff a)...!.$K..l9 ..
27b4 91210028 81210050 89290000 7d2a4b78 .!.(.!.P.)..}*Kx
27c4 3d200000 39290904 7d2950ae 5529077a = ..9)..})P.U).z
27d4 2c090000 4182001c 39210050 7d234b78 ,...A...9!.P}#Kx
27e4 4bfff501 7c691b78 91210028 4800009c K...|i.x.!.(H...
27f4 81210050 89290000 2809002a 4082008c .!.P.)..(..*@...
2804 81210050 39290001 91210050 81210054 .!.P9)...!.P.!.T
2814 89290000 28090007 41810030 81210054 .)..(...A..0.!.T
2824 81490008 81210054 89290000 39090001 .I...!.T.)..9...
2834 5507063e 81010054 98e80000 5529103a U..>...T....U).:
2844 7d2a4a14 48000018 81210054 81290004 }*J.H....!.T.)..
2854 39090004 81410054 910a0004 81290000 9....A.T.....)..
2864 91210028 81210028 2c090000 4080001c .!.(.!.(,...@...
2874 81210028 7d2900d0 91210028 81210024 .!.(})...!.(.!.$
2884 61290010 91210024 3920ffff 9121002c a)...!.$9 ...!.,
2894 81210050 89290000 2809002e 408200d4 .!.P.)..(...@...
28a4 81210050 39290001 91210050 81210050 .!.P9)...!.P.!.P
28b4 89290000 7d2a4b78 3d200000 39290904 .)..}*Kx= ..9)..
28c4 7d2950ae 5529077a 2c090000 4182001c })P.U).z,...A...
28d4 39210050 7d234b78 4bfff409 7c691b78 9!.P}#KxK...|i.x
28e4 9121002c 48000078 81210050 89290000 .!.,H..x.!.P.)..
28f4 2809002a 40820068 81210050 39290001 (..*@..h.!.P9)..
2904 91210050 81210054 89290000 28090007 .!.P.!.T.)..(...
2914 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
2924 89290000 39090001 5507063e 81010054 .)..9...U..>...T
2934 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
2944 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
2954 910a0004 81290000 9121002c 8121002c .....)...!.,.!.,
2964 2c090000 4080000c 39200000 9121002c ,...@...9 ...!.,
2974 3920ffff 91210030 81210050 89290000 9 ...!.0.!.P.)..
2984 28090068 41820054 81210050 89290000 (..hA..T.!.P.)..
2994 2809006c 41820044 81210050 89290000 (..lA..D.!.P.)..
29a4 2809004c 41820034 81210050 89290000 (..LA..4.!.P.)..
29b4 2809005a 41820024 81210050 89290000 (..ZA..$.!.P.)..
29c4 2809007a 41820014 81210050 89290000 (..zA....!.P.)..
29d4 28090074 4082004c 81210050 89290000 (..t@..L.!.P.)..
29e4 91210030 81210050 39290001 91210050 .!.0.!.P9)...!.P
29f4 81210030 2c09006c 40820028 81210050 .!.0,..l@..(.!.P
2a04 89290000 2809006c 40820018 3920004c .)..(..l@...9 .L
2a14 91210030 81210050 39290001 91210050 .!.0.!.P9)...!.P
2a24 3920000a 91210014 81210050 89290000 9 ...!...!.P.)..
2a34 3929ffdb 28090053 41810550 552a103a 9)..(..SA..PU*.:
2a44 3d200000 39290aac 7d2a4a14 81490000 = ..9)..}*J..I..
2a54 3d200000 39290aac 7d2a4a14 7d2903a6 = ..9)..}*J.})..
2a64 4e800420 81210024 552906f6 2c090000 N.. .!.$U)..,...
2a74 40820048 4800002c 81410018 8121001c @..HH..,.A...!..
2a84 7c0a4840 40800010 81210018 39400020 |.H@@....!..9@.
2a94 99490000 81210018 39290001 91210018 .I...!..9)...!..
2aa4 81210028 3929ffff 91210028 81210028 .!.(9)...!.(.!.(
2ab4 2c090000 4181ffc4 81210054 89290000 ,...A....!.T.)..
2ac4 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
2ad4 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
2ae4 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
2af4 48000018 81210054 81290004 39090004 H....!.T.)..9...
2b04 81410054 910a0004 81290000 99210044 .A.T.....)...!.D
2b14 81410018 8121001c 7c0a4840 40800010 .A...!..|.H@@...
2b24 81210018 89410044 99490000 81210018 .!...A.D.I...!..
2b34 39290001 91210018 4800002c 81410018 9)...!..H..,.A..
2b44 8121001c 7c0a4840 40800010 81210018 .!..|.H@@....!..
2b54 39400020 99490000 81210018 39290001 9@. .I...!..9)..
2b64 91210018 81210028 3929ffff 91210028 .!...!.(9)...!.(
2b74 81210028 2c090000 4181ffc4 480007e0 .!.(,...A...H...
2b84 81210054 89290000 28090007 41810030 .!.T.)..(...A..0
2b94 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
2ba4 39090001 5507063e 81010054 98e80000 9...U..>...T....
2bb4 5529103a 7d2a4a14 48000018 81210054 U).:}*J.H....!.T
2bc4 81290004 39090004 81410054 910a0004 .)..9....A.T....
2bd4 81290000 91210020 81210020 2c090000 .)...!. .!. ,...
2be4 40820010 3d200000 39290a60 91210020 @...= ..9).`.!.
2bf4 8121002c 7d244b78 80610020 4bffea25 .!.,}$Kx.a. K..%
2c04 7c691b78 91210034 81210024 552906f6 |i.x.!.4.!.$U)..
2c14 2c090000 40820048 4800002c 81410018 ,...@..HH..,.A..
2c24 8121001c 7c0a4840 40800010 81210018 .!..|.H@@....!..
2c34 39400020 99490000 81210018 39290001 9@. .I...!..9)..
2c44 91210018 81210028 3949ffff 91410028 .!...!.(9I...A.(
2c54 81410034 7c0a4800 4180ffc4 39200000 .A.4|.H.A...9 ..
2c64 91210010 48000048 81410018 8121001c .!..H..H.A...!..
2c74 7c0a4840 40800014 81210020 89490000 |.H@@....!. .I..
2c84 81210018 99490000 81210018 39290001 .!...I...!..9)..
2c94 91210018 81210020 39290001 91210020 .!...!. 9)...!.
2ca4 81210010 39290001 91210010 81410010 .!..9)...!...A..
2cb4 81210034 7c0a4800 4180ffb0 4800002c .!.4|.H.A...H..,
2cc4 81410018 8121001c 7c0a4840 40800010 .A...!..|.H@@...
2cd4 81210018 39400020 99490000 81210018 .!..9@. .I...!..
2ce4 39290001 91210018 81210028 3949ffff 9)...!...!.(9I..
2cf4 91410028 81410034 7c0a4800 4180ffc4 .A.(.A.4|.H.A...
2d04 4800065c 81410028 3920ffff 7c0a4800 H..\.A.(9 ..|.H.
2d14 40820018 39200008 91210028 81210024 @...9 ...!.(.!.$
2d24 61290021 91210024 81210054 89290000 a).!.!.$.!.T.)..
2d34 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
2d44 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
2d54 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
2d64 48000018 81210054 81290004 39090004 H....!.T.)..9...
2d74 81410054 910a0004 81290000 7d2a4b78 .A.T.....)..}*Kx
2d84 81210024 8101002c 80e10028 38c00010 .!.$...,...(8...
2d94 7d455378 8081001c 80610018 4bffefbd }ESx.....a..K...
2da4 7c691b78 91210018 480005b4 81210030 |i.x.!..H....!.0
2db4 2c09006c 40820074 81210054 89290000 ,..l@..t.!.T.)..
2dc4 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
2dd4 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
2de4 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
2df4 48000018 81210054 81290004 39090004 H....!.T.)..9...
2e04 81410054 910a0004 81290000 91210040 .A.T.....)...!.@
2e14 81410018 81210048 7d495050 81210040 .A...!.H}IPP.!.@
2e24 91490000 48000538 81210030 2c09005a .I..H..8.!.0,..Z
2e34 41820010 81210030 2c09007a 4082007c A....!.0,..z@..|
2e44 81210054 89290000 28090007 41810030 .!.T.)..(...A..0
2e54 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
2e64 39090001 5507063e 81010054 98e80000 9...U..>...T....
2e74 5529103a 7d2a4a14 48000018 81210054 U).:}*J.H....!.T
2e84 81290004 39090004 81410054 910a0004 .)..9....A.T....
2e94 81290000 9121003c 81410018 81210048 .)...!.<.A...!.H
2ea4 7d295050 7d2a4b78 8121003c 91490000 })PP}*Kx.!.<.I..
2eb4 60000000 480004a8 81210054 89290000 `...H....!.T.)..
2ec4 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
2ed4 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
2ee4 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
2ef4 48000018 81210054 81290004 39090004 H....!.T.)..9...
2f04 81410054 910a0004 81290000 91210038 .A.T.....)...!.8
2f14 81410018 81210048 7d495050 81210038 .A...!.H}IPP.!.8
2f24 91490000 48000438 81410018 8121001c .I..H..8.A...!..
2f34 7c0a4840 40800010 81210018 39400025 |.H@@....!..9@.%
2f44 99490000 81210018 39290001 91210018 .I...!..9)...!..
2f54 4800040c 39200008 91210014 480000a8 H...9 ...!..H...
2f64 81210024 61290040 91210024 39200010 .!.$a).@.!.$9 ..
2f74 91210014 48000090 81210024 61290002 .!..H....!.$a)..
2f84 91210024 4800007c 81410018 8121001c .!.$H..|.A...!..
2f94 7c0a4840 40800010 81210018 39400025 |.H@@....!..9@.%
2fa4 99490000 81210018 39290001 91210018 .I...!..9)...!..
2fb4 81210050 89290000 2c090000 41820034 .!.P.)..,...A..4
2fc4 81410018 8121001c 7c0a4840 40800014 .A...!..|.H@@...
2fd4 81210050 89490000 81210018 99490000 .!.P.I...!...I..
2fe4 81210018 39290001 91210018 48000370 .!..9)...!..H..p
2ff4 81210050 3929ffff 91210050 48000360 .!.P9)...!.PH..`
3004 60000000 81210030 2c09004c 40820090 `....!.0,..L@...
3014 81210054 89290000 81410054 894a0000 .!.T.)...A.T.J..
3024 554a07fe 554a063e 7d4a4a14 5548063e UJ..UJ.>}JJ.UH.>
3034 81410054 990a0000 28090006 41810030 .A.T....(...A..0
3044 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
3054 39090002 5507063e 81010054 98e80000 9...U..>...T....
3064 5529103a 7d2a4a14 48000020 81210054 U).:}*J.H.. .!.T
3074 81290004 39290007 55290038 39090008 .)..9)..U).89...
3084 81410054 910a0004 81490000 81690004 .A.T.....I...i..
3094 91410008 9161000c 48000298 81210030 .A...a..H....!.0
30a4 2c09006c 40820088 81210054 89290000 ,..l@....!.T.)..
30b4 28090007 41810030 81210054 81490008 (...A..0.!.T.I..
30c4 81210054 89290000 39090001 5507063e .!.T.)..9...U..>
30d4 81010054 98e80000 5529103a 7d2a4a14 ...T....U).:}*J.
30e4 48000018 81210054 81290004 39090004 H....!.T.)..9...
30f4 81410054 910a0004 81290000 9121000c .A.T.....)...!..
3104 39200000 91210008 81210024 552907bc 9 ...!...!.$U)..
3114 2c090000 4182021c 8121000c 9121000c ,...A....!...!..
3124 7d29fe70 91210008 48000208 81210030 }).p.!..H....!.0
3134 2c09005a 41820010 81210030 2c09007a ,..ZA....!.0,..z
3144 40820068 81210054 89290000 28090007 @..h.!.T.)..(...
3154 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
3164 89290000 39090001 5507063e 81010054 .)..9...U..>...T
3174 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
3184 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
3194 910a0004 81290000 9121000c 39200000 .....)...!..9 ..
31a4 91210008 4800018c 81210030 2c090074 .!..H....!.0,..t
31b4 40820068 81210054 89290000 28090007 @..h.!.T.)..(...
31c4 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
31d4 89290000 39090001 5507063e 81010054 .)..9...U..>...T
31e4 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
31f4 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
3204 910a0004 81290000 9121000c 7d29fe70 .....)...!..}).p
3214 91210008 4800011c 81210030 2c090068 .!..H....!.0,..h
3224 40820090 81210054 89290000 28090007 @....!.T.)..(...
3234 41810030 81210054 81490008 81210054 A..0.!.T.I...!.T
3244 89290000 39090001 5507063e 81010054 .)..9...U..>...T
3254 98e80000 5529103a 7d2a4a14 48000018 ....U).:}*J.H...
3264 81210054 81290004 39090004 81410054 .!.T.)..9....A.T
3274 910a0004 81290000 5529043e 9121000c .....)..U).>.!..
3284 39200000 91210008 81210024 552907bc 9 ...!...!.$U)..
3294 2c090000 4182009c a121000e 7d290734 ,...A....!..}).4
32a4 9121000c 7d29fe70 91210008 48000084 .!..}).p.!..H...
32b4 81210054 89290000 28090007 41810030 .!.T.)..(...A..0
32c4 81210054 81490008 81210054 89290000 .!.T.I...!.T.)..
32d4 39090001 5507063e 81010054 98e80000 9...U..>...T....
32e4 5529103a 7d2a4a14 48000018 81210054 U).:}*J.H....!.T
32f4 81290004 39090004 81410054 910a0004 .)..9....A.T....
3304 81290000 9121000c 39200000 91210008 .)...!..9 ...!..
3314 81210024 552907bc 2c090000 41820014 .!.$U)..,...A...
3324 8121000c 9121000c 7d29fe70 91210008 .!...!..}).p.!..
3334 8141000c 81210024 8101002c 80e10028 .A...!.$...,...(
3344 80c10014 7d455378 8081001c 80610018 ....}ESx.....a..
3354 4bffea09 7c691b78 91210018 81210050 K...|i.x.!...!.P
3364 39290001 91210050 81210050 89290000 9)...!.P.!.P.)..
3374 2c090000 4082f358 8121004c 2c090000 ,...@..X.!.L,...
3384 41820034 81410018 8121001c 7c0a4840 A..4.A...!..|.H@
3394 40800014 81210018 39400000 99490000 @....!..9@...I..
33a4 48000014 8121001c 3929ffff 39400000 H....!..9)..9@..
33b4 99490000 81410018 81210048 7d295050 .I...A...!.H})PP
33c4 7d234b78 80010064 7c0803a6 38210060 }#Kx...d|...8!.`
33d4 4e800020 9421fff0 90610008 3d200001 N.. .!...a..= ..
33e4 81410008 9149248c 60000000 38210010 .A...I$.`...8!..
33f4 4e800020 9421fff0 90610008 9081000c N.. .!...a......
3404 3d200001 81410008 91492490 3d200001 = ...A...I$.= ..
3414 8141000c 91492494 60000000 38210010 .A...I$.`...8!..
3424 4e800020 9421fff0 7c0802a6 90010014 N.. .!..|.......
3434 90610008 3d200001 8129248c 2c090000 .a..= ...)$.,...
3444 41820020 3d200001 8129248c 81410008 A.. = ...)$..A..
3454 554a063e 7d435378 7d2903a6 4e800421 UJ.>}CSx})..N..!
3464 81210008 7d234b78 80010014 7c0803a6 .!..}#Kx....|...
3474 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
3484 90010014 3d200001 81292494 2c090000 ....= ...)$.,...
3494 4182fff4 3d200001 81292494 7d2903a6 A...= ...)$.})..
34a4 4e800421 7c691b78 2c090000 4182ffd8 N..!|i.x,...A...
34b4 3d200001 81292490 7d2903a6 4e800421 = ...)$.})..N..!
34c4 7c691b78 7d234b78 80010014 7c0803a6 |i.x}#Kx....|...
34d4 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
34e4 90010014 3d200001 81292494 2c090000 ....= ...)$.,...
34f4 41820028 3d200001 81292494 7d2903a6 A..(= ...)$.})..
3504 4e800421 7c691b78 2c090000 4182000c N..!|i.x,...A...
3514 39200001 48000008 39200000 7d234b78 9 ..H...9 ..}#Kx
3524 80010014 7c0803a6 38210010 4e800020 ....|...8!..N..
3534 9421fff0 7c0802a6 90010014 90610008 .!..|........a..
3544 80610008 48000025 3860000a 4bfffed9 .a..H..%8`..K...
3554 39200001 7d234b78 80010014 7c0803a6 9 ..}#Kx....|...
3564 38210010 4e800020 9421fff0 7c0802a6 8!..N.. .!..|...
3574 90010014 90610008 48000020 81210008 .....a..H.. .!..
3584 89290000 7d234b78 4bfffe9d 81210008 .)..}#KxK....!..
3594 39290001 91210008 81210008 89290000 9)...!...!...)..
35a4 2c090000 4082ffd8 60000000 60000000 ,...@...`...`...
35b4 80010014 7c0803a6 38210010 4e800020 ....|...8!..N..
35c4 9421fee0 7c0802a6 90010124 90610118 .!..|......$.a..
35d4 9081011c 3921000c 80c1011c 80a10118 ....9!..........
35e4 38800100 7d234b78 4bffebf9 7c691b78 8...}#KxK...|i.x
35f4 91210008 3941000c 81210008 7d2a4a14 .!..9A...!..}*J.
3604 39400000 99490000 3921000c 7d234b78 9@...I..9!..}#Kx
3614 4bffff59 81210008 7d234b78 80010124 K..Y.!..}#Kx...$
3624 7c0803a6 38210120 4e800020 9421ff80 |...8!. N.. .!..
3634 7c0802a6 90010084 90610018 90810024 |........a.....$
3644 90a10028 90c1002c 90e10030 91010034 ...(...,...0...4
3654 91210038 9141003c 40860024 d8210040 .!.8.A.<@..$.!.@
3664 d8410048 d8610050 d8810058 d8a10060 .A.H.a.P...X...`
3674 d8c10068 d8e10070 d9010078 39200001 ...h...p...x9 ..
3684 9921000c 39200000 9921000d 39210088 .!..9 ...!..9!..
3694 91210010 39210020 91210014 3921000c .!..9!. .!..9!..
36a4 7d244b78 80610018 4bffff19 7c691b78 }$Kx.a..K...|i.x
36b4 91210008 81210008 7d234b78 80010084 .!...!..}#Kx....
36c4 7c0803a6 38210080 4e800020 |...8!..N..
Contents of section .data:
12000 0001c000 00000000 00000000 00000000 ................
12010 00000000 00000000 00000000 00000000 ................
12020 696e666f 20746578 74006865 61646572 info text.header
12030 20746578 74000000 00000000 00000000 text...........
12040 00000000 5822c905 ffffffff 91b6d1a3 ....X"..........
12050 ffffffff ffffffff ffffffff ffffffff ................
12060 ffffffff 7e11ee88 ffffffff 7fffffff ....~...........
12070 ffffffff ffffffff 8c20bde6 ffffffff ......... ......
12080 76d0dadf 15111f42 ffffffff 36108e50 v......B....6..P
12090 ffffffff ffffffff 328a0ced ffffffff ........2.......
120a0 ffffffff af224c19 ffffffff ffffffff ....."L.........
120b0 d624b27a ffffffff ffffffff ffffffff .$.z............
120c0 dbfd3628 89f0006e ffffffff ffffffff ..6(...n........
120d0 ffffffff 00001104 00010000 00000000 ................
120e0 0000000d 7c61cc14 7d230595 7ac37392 ....|a..}#..z.s.
120f0 7e094c11 7e1cb115 7a338886 7c6004d1 ~.L.~...z3..|`..
12100 7e09b038 7c360591 7e2b00d1 60000000 ~..8|6..~+..`...
12110 60000000 60000000 00010000 00010004 `...`...........
12120 00010008 0001000c 00010010 00010014 ................
12130 00010018 0001001c 00010020 00010024 ........... ...$
12140 00010028 0001002c 00010030 48000014 ...(...,...0H...
12150 60000000 60000000 60000000 60000000 `...`...`...`...
12160 9023009c 802300a0 7c2903a6 382300a4 .#...#..|)..8#..
12170 384300d8 80810000 80a20000 90850000 8C..............
12180 38210004 38420004 4200ffec 3c804800 8!..8B..B...<.H.
12190 60840006 90850000 80230094 7c3b03a6 `........#..|;..
121a0 80230098 7c3a03a6 80230080 7c2ff120 .#..|:...#..|/.
121b0 80230084 7c2103a6 80230088 7c2903a6 .#..|!...#..|)..
121c0 8023008c 7c2803a6 80230090 7c2fcba6 .#..|(...#..|/..
121d0 80030000 80230004 80430008 80830010 .....#...C......
121e0 80a30014 80c30018 80e3001c 81030020 ...............
121f0 81230024 81430028 8163002c 81830030 .#.$.C.(.c.,...0
12200 81a30034 81c30038 81e3003c 82030040 ...4...8...<...@
12210 82230044 82430048 8263004c 82830050 .#.D.C.H.c.L...P
12220 82a30054 82c30058 82e3005c 83030060 ...T...X...\...`
12230 83230064 83430068 8363006c 83830070 .#.d.C.h.c.l...p
12240 83a30074 83c30078 83e3007c 8063000c ...t...x...|.c..
12250 4c000064 4800000c 60000000 60000000 L..dH...`...`...
12260 7c2fcba6 3c200001 60212340 90010000 |/..< ..`!#@....
12270 90410008 9061000c 90810010 90a10014 .A...a..........
12280 90c10018 90e1001c 91010020 91210024 ........... .!.$
12290 91410028 9161002c 91810030 91a10034 .A.(.a.,...0...4
122a0 91c10038 91e1003c 92010040 92210044 ...8...<...@.!.D
122b0 92410048 9261004c 92810050 92a10054 .A.H.a.L...P...T
122c0 92c10058 92e1005c 93010060 93210064 ...X...\...`.!.d
122d0 93410068 9361006c 93810070 93a10074 .A.h.a.l...p...t
122e0 93c10078 93e1007c 7c4fcaa6 90410004 ...x...||O...A..
122f0 7c400026 90410080 7c4102a6 90410084 |@.&.A..|A...A..
12300 7c4902a6 90410088 7c4802a6 9041008c |I...A..|H...A..
12310 7c4fcaa6 90410090 3c600001 60632040 |O...A..<`..`c @
12320 8023009c 3c600867 60635309 48000e13 .#..<`.g`cS.H...
12330 60000000 60000000 60000000 60000000 `...`...`...`...
12340 ffffffff ffffffff ffffffff ffffffff ................
12350 ffffffff ffffffff ffffffff ffffffff ................
12360 ffffffff ffffffff ffffffff ffffffff ................
12370 ffffffff ffffffff ffffffff ffffffff ................
12380 ffffffff ffffffff ffffffff ffffffff ................
12390 ffffffff ffffffff ffffffff ffffffff ................
123a0 ffffffff ffffffff ffffffff ffffffff ................
123b0 ffffffff ffffffff ffffffff ffffffff ................
123c0 ffffffff ffffffff ffffffff ffffffff ................
123d0 ffffffff 60000000 60000000 60000000 ....`...`...`...
123e0 00000000 cd75f313 ffffffff 00000000 .....u..........
123f0 ffffffff ffffffff ffffffff ffffffff ................
12400 ffffffff 008a0c68 ffffffff 7fffffff .......h........
12410 ffffffff ffffffff 8c20bde6 ffffffff ......... ......
12420 08aebf68 80000001 ffffffff 00000000 ...h............
12430 ffffffff ffffffff 328a0ced ffffffff ........2.......
12440 ffffffff af224c19 ffffffff ffffffff ....."L.........
12450 d624b27a ffffffff ffffffff ffffffff .$.z............
12460 9bfd3628 98f0006e ffffffff ffffffff ..6(...n........
12470 ffffffff 00001104 00010038 ...........8

@ -0,0 +1 @@
../../sim/mem/test3
Loading…
Cancel
Save