1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
|
build/smp.elf: file format elf32-littleriscv
Disassembly of section .crt_section:
80000000 <_start>:
80000000: f1402473 csrr s0,mhartid
80000004: f80002b7 lui t0,0xf8000
80000008: f1402373 csrr t1,mhartid
8000000c: 01031313 slli t1,t1,0x10
80000010: 006282b3 add t0,t0,t1
80000014: 0082a023 sw s0,0(t0) # f8000000 <consistancy_done_call+0x77fffab8>
80000018 <count_thread_start>:
80000018: 00100513 li a0,1
8000001c: 00000597 auipc a1,0x0
80000020: 42058593 addi a1,a1,1056 # 8000043c <thread_count>
80000024: 00a5a02f amoadd.w zero,a0,(a1)
80000028 <count_thread_wait>:
80000028: 00000417 auipc s0,0x0
8000002c: 41442403 lw s0,1044(s0) # 8000043c <thread_count>
80000030: 19000513 li a0,400
80000034: 3fc000ef jal ra,80000430 <sleep>
80000038: 00000497 auipc s1,0x0
8000003c: 4044a483 lw s1,1028(s1) # 8000043c <thread_count>
80000040: fe8494e3 bne s1,s0,80000028 <count_thread_wait>
80000044: f80002b7 lui t0,0xf8000
80000048: 00428293 addi t0,t0,4 # f8000004 <consistancy_done_call+0x77fffabc>
8000004c: f1402373 csrr t1,mhartid
80000050: 01031313 slli t1,t1,0x10
80000054: 006282b3 add t0,t0,t1
80000058: 0092a023 sw s1,0(t0)
8000005c <barrier_amo_test>:
8000005c: 00100513 li a0,1
80000060: 290000ef jal ra,800002f0 <barrier_amo>
80000064: 00200513 li a0,2
80000068: 288000ef jal ra,800002f0 <barrier_amo>
8000006c: 00300513 li a0,3
80000070: 280000ef jal ra,800002f0 <barrier_amo>
80000074: 00400513 li a0,4
80000078: 2f4000ef jal ra,8000036c <barrier_lrsc>
8000007c: 00500513 li a0,5
80000080: 2ec000ef jal ra,8000036c <barrier_lrsc>
80000084: 00600513 li a0,6
80000088: 2e4000ef jal ra,8000036c <barrier_lrsc>
8000008c: 00700513 li a0,7
80000090: 260000ef jal ra,800002f0 <barrier_amo>
80000094: 00800513 li a0,8
80000098: 2d4000ef jal ra,8000036c <barrier_lrsc>
8000009c: 00000197 auipc gp,0x0
800000a0: 3ac1a183 lw gp,940(gp) # 80000448 <barrier_allocator>
800000a4 <consistancy_test1>:
800000a4: 00000297 auipc t0,0x0
800000a8: 06828293 addi t0,t0,104 # 8000010c <consistancy_init_load>
800000ac: 00000317 auipc t1,0x0
800000b0: 48532a23 sw t0,1172(t1) # 80000540 <consistancy_init_call>
800000b4: 00000297 auipc t0,0x0
800000b8: 06028293 addi t0,t0,96 # 80000114 <consistancy_do_simple_fence>
800000bc: 00000317 auipc t1,0x0
800000c0: 48532423 sw t0,1160(t1) # 80000544 <consistancy_do_call>
800000c4: 00000297 auipc t0,0x0
800000c8: 01428293 addi t0,t0,20 # 800000d8 <consistancy_test2>
800000cc: 00000317 auipc t1,0x0
800000d0: 46532e23 sw t0,1148(t1) # 80000548 <consistancy_done_call>
800000d4: 0640006f j 80000138 <consistancy_start>
800000d8 <consistancy_test2>:
800000d8: 00000297 auipc t0,0x0
800000dc: 03428293 addi t0,t0,52 # 8000010c <consistancy_init_load>
800000e0: 00000317 auipc t1,0x0
800000e4: 46532023 sw t0,1120(t1) # 80000540 <consistancy_init_call>
800000e8: 00000297 auipc t0,0x0
800000ec: 04028293 addi t0,t0,64 # 80000128 <consistancy_do_rl_fence>
800000f0: 00000317 auipc t1,0x0
800000f4: 44532a23 sw t0,1108(t1) # 80000544 <consistancy_do_call>
800000f8: 00000297 auipc t0,0x0
800000fc: 2f428293 addi t0,t0,756 # 800003ec <success>
80000100: 00000317 auipc t1,0x0
80000104: 44532423 sw t0,1096(t1) # 80000548 <consistancy_done_call>
80000108: 0300006f j 80000138 <consistancy_start>
8000010c <consistancy_init_load>:
8000010c: 0004a983 lw s3,0(s1)
80000110: 0c40006f j 800001d4 <consistancy_do_init_done>
80000114 <consistancy_do_simple_fence>:
80000114: 01242023 sw s2,0(s0)
80000118: 0120000f fence w,r
8000011c: 0004a983 lw s3,0(s1)
80000120: 05342023 sw s3,64(s0)
80000124: 0cc0006f j 800001f0 <consistancy_join>
80000128 <consistancy_do_rl_fence>:
80000128: 01242023 sw s2,0(s0)
8000012c: 1204a9af lr.w.rl s3,(s1)
80000130: 05342023 sw s3,64(s0)
80000134: 0bc0006f j 800001f0 <consistancy_join>
80000138 <consistancy_start>:
80000138: 00018513 mv a0,gp
8000013c: 00118193 addi gp,gp,1
80000140: 22c000ef jal ra,8000036c <barrier_lrsc>
80000144: 00000297 auipc t0,0x0
80000148: 3002a823 sw zero,784(t0) # 80000454 <consistancy_all_tested>
8000014c <consistancy_loop>:
8000014c: 00018513 mv a0,gp
80000150: 00118193 addi gp,gp,1
80000154: 218000ef jal ra,8000036c <barrier_lrsc>
80000158: 00000297 auipc t0,0x0
8000015c: 2fc2a283 lw t0,764(t0) # 80000454 <consistancy_all_tested>
80000160: 03200313 li t1,50
80000164: 1662da63 bge t0,t1,800002d8 <consistancy_passed>
80000168: 00000297 auipc t0,0x0
8000016c: 2e42a283 lw t0,740(t0) # 8000044c <consistancy_a_hart>
80000170: 00000317 auipc t1,0x0
80000174: 2e032303 lw t1,736(t1) # 80000450 <consistancy_b_hart>
80000178: 06628c63 beq t0,t1,800001f0 <consistancy_join>
8000017c: f14022f3 csrr t0,mhartid
80000180: 00000317 auipc t1,0x0
80000184: 2cc32303 lw t1,716(t1) # 8000044c <consistancy_a_hart>
80000188: 00000417 auipc s0,0x0
8000018c: 33840413 addi s0,s0,824 # 800004c0 <consistancy_a_value>
80000190: 00000497 auipc s1,0x0
80000194: 33448493 addi s1,s1,820 # 800004c4 <consistancy_b_value>
80000198: 02628863 beq t0,t1,800001c8 <consistancy_do>
8000019c: 00000317 auipc t1,0x0
800001a0: 2b432303 lw t1,692(t1) # 80000450 <consistancy_b_hart>
800001a4: 00000417 auipc s0,0x0
800001a8: 32040413 addi s0,s0,800 # 800004c4 <consistancy_b_value>
800001ac: 00000497 auipc s1,0x0
800001b0: 31448493 addi s1,s1,788 # 800004c0 <consistancy_a_value>
800001b4: 00628a63 beq t0,t1,800001c8 <consistancy_do>
800001b8 <consistancy_hart_not_involved>:
800001b8: 00018513 mv a0,gp
800001bc: 00118193 addi gp,gp,1
800001c0: 1ac000ef jal ra,8000036c <barrier_lrsc>
800001c4: 02c0006f j 800001f0 <consistancy_join>
800001c8 <consistancy_do>:
800001c8: 00000297 auipc t0,0x0
800001cc: 3782a283 lw t0,888(t0) # 80000540 <consistancy_init_call>
800001d0: 000280e7 jalr t0
800001d4 <consistancy_do_init_done>:
800001d4: 29a00913 li s2,666
800001d8: 00018513 mv a0,gp
800001dc: 00118193 addi gp,gp,1
800001e0: 18c000ef jal ra,8000036c <barrier_lrsc>
800001e4: 00000297 auipc t0,0x0
800001e8: 3602a283 lw t0,864(t0) # 80000544 <consistancy_do_call>
800001ec: 000280e7 jalr t0
800001f0 <consistancy_join>:
800001f0: 0330000f fence rw,rw
800001f4: 00018513 mv a0,gp
800001f8: 00118193 addi gp,gp,1
800001fc: 170000ef jal ra,8000036c <barrier_lrsc>
80000200: f14022f3 csrr t0,mhartid
80000204: f40294e3 bnez t0,8000014c <consistancy_loop>
80000208 <consistancy_assert>:
80000208: 00000297 auipc t0,0x0
8000020c: 2442a283 lw t0,580(t0) # 8000044c <consistancy_a_hart>
80000210: 00000317 auipc t1,0x0
80000214: 24032303 lw t1,576(t1) # 80000450 <consistancy_b_hart>
80000218: 04628263 beq t0,t1,8000025c <consistancy_increment>
8000021c: 00000517 auipc a0,0x0
80000220: 2e852503 lw a0,744(a0) # 80000504 <consistancy_a_readed>
80000224: f80002b7 lui t0,0xf8000
80000228: 01428293 addi t0,t0,20 # f8000014 <consistancy_done_call+0x77fffacc>
8000022c: f1402373 csrr t1,mhartid
80000230: 01031313 slli t1,t1,0x10
80000234: 006282b3 add t0,t0,t1
80000238: 00a2a023 sw a0,0(t0)
8000023c: 00000517 auipc a0,0x0
80000240: 2c452503 lw a0,708(a0) # 80000500 <consistancy_b_readed>
80000244: f80002b7 lui t0,0xf8000
80000248: 01428293 addi t0,t0,20 # f8000014 <consistancy_done_call+0x77fffacc>
8000024c: f1402373 csrr t1,mhartid
80000250: 01031313 slli t1,t1,0x10
80000254: 006282b3 add t0,t0,t1
80000258: 00a2a023 sw a0,0(t0)
8000025c <consistancy_increment>:
8000025c: f14022f3 csrr t0,mhartid
80000260: ee0296e3 bnez t0,8000014c <consistancy_loop>
80000264: 00000297 auipc t0,0x0
80000268: 2402ae23 sw zero,604(t0) # 800004c0 <consistancy_a_value>
8000026c: 00000297 auipc t0,0x0
80000270: 2402ac23 sw zero,600(t0) # 800004c4 <consistancy_b_value>
80000274: 00000417 auipc s0,0x0
80000278: 1c842403 lw s0,456(s0) # 8000043c <thread_count>
8000027c: 00000297 auipc t0,0x0
80000280: 1d42a283 lw t0,468(t0) # 80000450 <consistancy_b_hart>
80000284: 00128293 addi t0,t0,1
80000288: 00000317 auipc t1,0x0
8000028c: 1c532423 sw t0,456(t1) # 80000450 <consistancy_b_hart>
80000290: 04829063 bne t0,s0,800002d0 <consistancy_increment_fence>
80000294: 00000317 auipc t1,0x0
80000298: 1a032e23 sw zero,444(t1) # 80000450 <consistancy_b_hart>
8000029c: 00000297 auipc t0,0x0
800002a0: 1b02a283 lw t0,432(t0) # 8000044c <consistancy_a_hart>
800002a4: 00128293 addi t0,t0,1
800002a8: 00000317 auipc t1,0x0
800002ac: 1a532223 sw t0,420(t1) # 8000044c <consistancy_a_hart>
800002b0: 02829063 bne t0,s0,800002d0 <consistancy_increment_fence>
800002b4: 00000317 auipc t1,0x0
800002b8: 18032c23 sw zero,408(t1) # 8000044c <consistancy_a_hart>
800002bc: 00000297 auipc t0,0x0
800002c0: 1982a283 lw t0,408(t0) # 80000454 <consistancy_all_tested>
800002c4: 00128293 addi t0,t0,1
800002c8: 00000317 auipc t1,0x0
800002cc: 18532623 sw t0,396(t1) # 80000454 <consistancy_all_tested>
800002d0 <consistancy_increment_fence>:
800002d0: 0130000f fence w,rw
800002d4: e79ff06f j 8000014c <consistancy_loop>
800002d8 <consistancy_passed>:
800002d8: 00000417 auipc s0,0x0
800002dc: 27042403 lw s0,624(s0) # 80000548 <consistancy_done_call>
800002e0: 00018513 mv a0,gp
800002e4: 00118193 addi gp,gp,1
800002e8: 084000ef jal ra,8000036c <barrier_lrsc>
800002ec: 000400e7 jalr s0
800002f0 <barrier_amo>:
800002f0: f80002b7 lui t0,0xf8000
800002f4: 00c28293 addi t0,t0,12 # f800000c <consistancy_done_call+0x77fffac4>
800002f8: f1402373 csrr t1,mhartid
800002fc: 01031313 slli t1,t1,0x10
80000300: 006282b3 add t0,t0,t1
80000304: 00a2a023 sw a0,0(t0)
80000308: 00000e97 auipc t4,0x0
8000030c: 13ceae83 lw t4,316(t4) # 80000444 <barrier_phase>
80000310: 00000297 auipc t0,0x0
80000314: 13028293 addi t0,t0,304 # 80000440 <barrier_value>
80000318: 00100313 li t1,1
8000031c: 0062a2af amoadd.w t0,t1,(t0)
80000320: 00128293 addi t0,t0,1
80000324: 00000317 auipc t1,0x0
80000328: 11832303 lw t1,280(t1) # 8000043c <thread_count>
8000032c: 00629c63 bne t0,t1,80000344 <barrier_amo_wait>
80000330: 001e8293 addi t0,t4,1
80000334: 00000317 auipc t1,0x0
80000338: 10032623 sw zero,268(t1) # 80000440 <barrier_value>
8000033c: 00000317 auipc t1,0x0
80000340: 10532423 sw t0,264(t1) # 80000444 <barrier_phase>
80000344 <barrier_amo_wait>:
80000344: 00000297 auipc t0,0x0
80000348: 1002a283 lw t0,256(t0) # 80000444 <barrier_phase>
8000034c: ffd28ce3 beq t0,t4,80000344 <barrier_amo_wait>
80000350: f80002b7 lui t0,0xf8000
80000354: 01028293 addi t0,t0,16 # f8000010 <consistancy_done_call+0x77fffac8>
80000358: f1402373 csrr t1,mhartid
8000035c: 01031313 slli t1,t1,0x10
80000360: 006282b3 add t0,t0,t1
80000364: 00a2a023 sw a0,0(t0)
80000368: 00008067 ret
8000036c <barrier_lrsc>:
8000036c: f80002b7 lui t0,0xf8000
80000370: 00c28293 addi t0,t0,12 # f800000c <consistancy_done_call+0x77fffac4>
80000374: f1402373 csrr t1,mhartid
80000378: 01031313 slli t1,t1,0x10
8000037c: 006282b3 add t0,t0,t1
80000380: 00a2a023 sw a0,0(t0)
80000384: 00000e97 auipc t4,0x0
80000388: 0c0eae83 lw t4,192(t4) # 80000444 <barrier_phase>
8000038c: 00000297 auipc t0,0x0
80000390: 0b428293 addi t0,t0,180 # 80000440 <barrier_value>
80000394 <barrier_lrsc_try>:
80000394: 1002a32f lr.w t1,(t0)
80000398: 00130313 addi t1,t1,1
8000039c: 1862a3af sc.w t2,t1,(t0)
800003a0: fe039ae3 bnez t2,80000394 <barrier_lrsc_try>
800003a4: 00000297 auipc t0,0x0
800003a8: 0982a283 lw t0,152(t0) # 8000043c <thread_count>
800003ac: 00629c63 bne t0,t1,800003c4 <barrier_lrsc_wait>
800003b0: 001e8293 addi t0,t4,1
800003b4: 00000317 auipc t1,0x0
800003b8: 08032623 sw zero,140(t1) # 80000440 <barrier_value>
800003bc: 00000317 auipc t1,0x0
800003c0: 08532423 sw t0,136(t1) # 80000444 <barrier_phase>
800003c4 <barrier_lrsc_wait>:
800003c4: 00000297 auipc t0,0x0
800003c8: 0802a283 lw t0,128(t0) # 80000444 <barrier_phase>
800003cc: ffd28ce3 beq t0,t4,800003c4 <barrier_lrsc_wait>
800003d0: f80002b7 lui t0,0xf8000
800003d4: 01028293 addi t0,t0,16 # f8000010 <consistancy_done_call+0x77fffac8>
800003d8: f1402373 csrr t1,mhartid
800003dc: 01031313 slli t1,t1,0x10
800003e0: 006282b3 add t0,t0,t1
800003e4: 00a2a023 sw a0,0(t0)
800003e8: 00008067 ret
800003ec <success>:
800003ec: 00000413 li s0,0
800003f0: f80002b7 lui t0,0xf8000
800003f4: 00828293 addi t0,t0,8 # f8000008 <consistancy_done_call+0x77fffac0>
800003f8: f1402373 csrr t1,mhartid
800003fc: 01031313 slli t1,t1,0x10
80000400: 006282b3 add t0,t0,t1
80000404: 0082a023 sw s0,0(t0)
80000408: 0240006f j 8000042c <end>
8000040c <failure>:
8000040c: 00100413 li s0,1
80000410: f80002b7 lui t0,0xf8000
80000414: 00828293 addi t0,t0,8 # f8000008 <consistancy_done_call+0x77fffac0>
80000418: f1402373 csrr t1,mhartid
8000041c: 01031313 slli t1,t1,0x10
80000420: 006282b3 add t0,t0,t1
80000424: 0082a023 sw s0,0(t0)
80000428: 0040006f j 8000042c <end>
8000042c <end>:
8000042c: 0000006f j 8000042c <end>
80000430 <sleep>:
80000430: fff50513 addi a0,a0,-1
80000434: fe051ee3 bnez a0,80000430 <sleep>
80000438: 00008067 ret
8000043c <thread_count>:
8000043c: 0000 unimp
...
80000440 <barrier_value>:
80000440: 0000 unimp
...
80000444 <barrier_phase>:
80000444: 0000 unimp
...
80000448 <barrier_allocator>:
80000448: 1000 addi s0,sp,32
...
8000044c <consistancy_a_hart>:
8000044c: 0000 unimp
...
80000450 <consistancy_b_hart>:
80000450: 0000 unimp
...
80000454 <consistancy_all_tested>:
80000454: 0000 unimp
80000456: 0000 unimp
80000458: 00000013 nop
8000045c: 00000013 nop
80000460: 00000013 nop
80000464: 00000013 nop
80000468: 00000013 nop
8000046c: 00000013 nop
80000470: 00000013 nop
80000474: 00000013 nop
80000478: 00000013 nop
8000047c: 00000013 nop
80000480: 00000013 nop
80000484: 00000013 nop
80000488: 00000013 nop
8000048c: 00000013 nop
80000490: 00000013 nop
80000494: 00000013 nop
80000498: 00000013 nop
8000049c: 00000013 nop
800004a0: 00000013 nop
800004a4: 00000013 nop
800004a8: 00000013 nop
800004ac: 00000013 nop
800004b0: 00000013 nop
800004b4: 00000013 nop
800004b8: 00000013 nop
800004bc: 00000013 nop
800004c0 <consistancy_a_value>:
800004c0: 0000 unimp
...
800004c4 <consistancy_b_value>:
800004c4: 0000 unimp
800004c6: 0000 unimp
800004c8: 00000013 nop
800004cc: 00000013 nop
800004d0: 00000013 nop
800004d4: 00000013 nop
800004d8: 00000013 nop
800004dc: 00000013 nop
800004e0: 00000013 nop
800004e4: 00000013 nop
800004e8: 00000013 nop
800004ec: 00000013 nop
800004f0: 00000013 nop
800004f4: 00000013 nop
800004f8: 00000013 nop
800004fc: 00000013 nop
80000500 <consistancy_b_readed>:
80000500: 0000 unimp
...
80000504 <consistancy_a_readed>:
80000504: 0000 unimp
80000506: 0000 unimp
80000508: 00000013 nop
8000050c: 00000013 nop
80000510: 00000013 nop
80000514: 00000013 nop
80000518: 00000013 nop
8000051c: 00000013 nop
80000520: 00000013 nop
80000524: 00000013 nop
80000528: 00000013 nop
8000052c: 00000013 nop
80000530: 00000013 nop
80000534: 00000013 nop
80000538: 00000013 nop
8000053c: 00000013 nop
80000540 <consistancy_init_call>:
80000540: 0000 unimp
...
80000544 <consistancy_do_call>:
80000544: 0000 unimp
...
80000548 <consistancy_done_call>:
...
|