aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon French <jf451@cam.ac.uk>2019-03-14 15:30:17 +0000
committerJon French <jf451@cam.ac.uk>2019-03-14 15:30:17 +0000
commit734b2f693b3ded3d70c6552d52f9802c46d667a2 (patch)
tree3b7c030ff6a6502dacff43e834226d68f9025393
parentba6ed9f40bdb5f6c3fe8c232fdd4fc1b3b634495 (diff)
parent925b2c8a0e3b0adc10d9de8dd6620450561e6c52 (diff)
downloadsail-riscv-734b2f693b3ded3d70c6552d52f9802c46d667a2.zip
sail-riscv-734b2f693b3ded3d70c6552d52f9802c46d667a2.tar.gz
sail-riscv-734b2f693b3ded3d70c6552d52f9802c46d667a2.tar.bz2
Merge branch 'master' into rmem_interpreter
-rw-r--r--LICENCE2
-rw-r--r--Makefile186
-rw-r--r--README.md131
-rw-r--r--c_emulator/riscv_platform.c18
-rw-r--r--c_emulator/riscv_platform_impl.c2
-rw-r--r--c_emulator/riscv_platform_impl.h1
-rw-r--r--c_emulator/riscv_sail.h4
-rw-r--r--c_emulator/riscv_sim.c124
-rw-r--r--doc/ReadingGuide.md25
-rw-r--r--handwritten_support/riscv_extras.lem22
-rw-r--r--model/main.sail5
-rw-r--r--model/main_rvfi.sail26
-rw-r--r--model/prelude.sail979
-rw-r--r--model/prelude_mapping.sail690
-rw-r--r--model/prelude_mem.sail70
-rw-r--r--model/riscv_duopod.sail24
-rw-r--r--model/riscv_insts_aext.sail66
-rw-r--r--model/riscv_insts_base.sail152
-rw-r--r--model/riscv_insts_cext.sail58
-rw-r--r--model/riscv_insts_mext.sail25
-rw-r--r--model/riscv_insts_zicsr.sail183
-rw-r--r--model/riscv_jalr_rmem.sail2
-rw-r--r--model/riscv_jalr_seq.sail2
-rw-r--r--model/riscv_mem.sail16
-rw-r--r--model/riscv_next_regs.sail4
-rw-r--r--model/riscv_platform.sail116
-rw-r--r--model/riscv_step.sail7
-rw-r--r--model/riscv_sys_control.sail36
-rw-r--r--model/riscv_sys_regs.sail140
-rw-r--r--model/riscv_termination_common.sail (renamed from model/riscv_termination.sail)1
-rw-r--r--model/riscv_termination_rv32.sail1
-rw-r--r--model/riscv_termination_rv64.sail2
-rw-r--r--model/riscv_types.sail19
-rw-r--r--model/riscv_vmem.sail406
-rw-r--r--model/riscv_vmem_common.sail239
-rw-r--r--model/riscv_vmem_rv32.sail66
-rw-r--r--model/riscv_vmem_rv64.sail85
-rw-r--r--model/riscv_vmem_sv32.sail185
-rw-r--r--model/riscv_vmem_sv39.sail179
-rw-r--r--model/riscv_vmem_sv48.sail144
-rw-r--r--model/riscv_vmem_tlb.sail54
-rw-r--r--model/riscv_xlen32.sail5
-rw-r--r--model/riscv_xlen64.sail5
-rw-r--r--model/rvfi_dii.sail2
-rw-r--r--ocaml_emulator/platform.ml99
-rw-r--r--ocaml_emulator/platform_impl.ml32
-rw-r--r--ocaml_emulator/riscv_ocaml_sim.ml159
-rw-r--r--ocaml_emulator/tracecmp.ml75
-rw-r--r--os-boot/README.md90
-rw-r--r--os-boot/freebsd-rv64.bblbin0 -> 24118552 bytes
-rw-r--r--os-boot/linux-rv64-64mb.bblbin0 -> 9711152 bytes
-rw-r--r--os-boot/os-boot-patch.diff42
-rw-r--r--os-boot/rv64-2gb.dts45
-rw-r--r--os-boot/rv64-64mb.dts45
-rw-r--r--os-boot/sel4-rv64.bblbin0 -> 9692592 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-breakpoint.dump207
-rw-r--r--test/riscv-tests/rv32mi-p-breakpoint.elfbin0 -> 13148 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-csr.dump241
-rw-r--r--test/riscv-tests/rv32mi-p-csr.elfbin0 -> 13436 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-illegal.dump382
-rw-r--r--test/riscv-tests/rv32mi-p-illegal.elfbin0 -> 9272 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-ma_addr.dump363
-rw-r--r--test/riscv-tests/rv32mi-p-ma_addr.elfbin0 -> 13380 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-ma_fetch.dump219
-rw-r--r--test/riscv-tests/rv32mi-p-ma_fetch.elfbin0 -> 9004 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-mcsr.dump126
-rw-r--r--test/riscv-tests/rv32mi-p-mcsr.elfbin0 -> 9020 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-sbreak.dump130
-rw-r--r--test/riscv-tests/rv32mi-p-sbreak.elfbin0 -> 9028 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-scall.dump147
-rw-r--r--test/riscv-tests/rv32mi-p-scall.elfbin0 -> 9028 bytes
-rw-r--r--test/riscv-tests/rv32mi-p-shamt.dump128
-rw-r--r--test/riscv-tests/rv32mi-p-shamt.elfbin0 -> 9048 bytes
-rw-r--r--test/riscv-tests/rv32si-p-csr.dump228
-rw-r--r--test/riscv-tests/rv32si-p-csr.elfbin0 -> 13388 bytes
-rw-r--r--test/riscv-tests/rv32si-p-dirty.dump203
-rw-r--r--test/riscv-tests/rv32si-p-dirty.elfbin0 -> 13196 bytes
-rw-r--r--test/riscv-tests/rv32si-p-ma_fetch.dump175
-rw-r--r--test/riscv-tests/rv32si-p-ma_fetch.elfbin0 -> 9004 bytes
-rw-r--r--test/riscv-tests/rv32si-p-sbreak.dump128
-rw-r--r--test/riscv-tests/rv32si-p-sbreak.elfbin0 -> 9028 bytes
-rw-r--r--test/riscv-tests/rv32si-p-scall.dump121
-rw-r--r--test/riscv-tests/rv32si-p-scall.elfbin0 -> 9028 bytes
-rw-r--r--test/riscv-tests/rv32si-p-wfi.dump128
-rw-r--r--test/riscv-tests/rv32si-p-wfi.elfbin0 -> 8972 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amoadd_w.dump124
-rw-r--r--test/riscv-tests/rv32ua-p-amoadd_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amoand_w.dump126
-rw-r--r--test/riscv-tests/rv32ua-p-amoand_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amomax_w.dump125
-rw-r--r--test/riscv-tests/rv32ua-p-amomax_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amomaxu_w.dump125
-rw-r--r--test/riscv-tests/rv32ua-p-amomaxu_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amomin_w.dump125
-rw-r--r--test/riscv-tests/rv32ua-p-amomin_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amominu_w.dump125
-rw-r--r--test/riscv-tests/rv32ua-p-amominu_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amoor_w.dump126
-rw-r--r--test/riscv-tests/rv32ua-p-amoor_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amoswap_w.dump126
-rw-r--r--test/riscv-tests/rv32ua-p-amoswap_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-amoxor_w.dump154
-rw-r--r--test/riscv-tests/rv32ua-p-amoxor_w.elfbin0 -> 9152 bytes
-rw-r--r--test/riscv-tests/rv32ua-p-lrsc.dump711
-rw-r--r--test/riscv-tests/rv32ua-p-lrsc.elfbin0 -> 14304 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amoadd_w.dump941
-rw-r--r--test/riscv-tests/rv32ua-v-amoadd_w.elfbin0 -> 17528 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amoand_w.dump939
-rw-r--r--test/riscv-tests/rv32ua-v-amoand_w.elfbin0 -> 17520 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amomax_w.dump940
-rw-r--r--test/riscv-tests/rv32ua-v-amomax_w.elfbin0 -> 17524 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amomaxu_w.dump940
-rw-r--r--test/riscv-tests/rv32ua-v-amomaxu_w.elfbin0 -> 17524 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amomin_w.dump940
-rw-r--r--test/riscv-tests/rv32ua-v-amomin_w.elfbin0 -> 17524 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amominu_w.dump940
-rw-r--r--test/riscv-tests/rv32ua-v-amominu_w.elfbin0 -> 17524 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amoor_w.dump939
-rw-r--r--test/riscv-tests/rv32ua-v-amoor_w.elfbin0 -> 17520 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amoswap_w.dump939
-rw-r--r--test/riscv-tests/rv32ua-v-amoswap_w.elfbin0 -> 17520 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-amoxor_w.dump943
-rw-r--r--test/riscv-tests/rv32ua-v-amoxor_w.elfbin0 -> 17536 bytes
-rw-r--r--test/riscv-tests/rv32ua-v-lrsc.dump1516
-rw-r--r--test/riscv-tests/rv32ua-v-lrsc.elfbin0 -> 19196 bytes
-rw-r--r--test/riscv-tests/rv32uc-p-rvc.dump4904
-rw-r--r--test/riscv-tests/rv32uc-p-rvc.elfbin0 -> 17780 bytes
-rw-r--r--test/riscv-tests/rv32uc-v-rvc.dump6474
-rw-r--r--test/riscv-tests/rv32uc-v-rvc.elfbin0 -> 31196 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-add.dump479
-rw-r--r--test/riscv-tests/rv32ui-p-add.elfbin0 -> 9852 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-addi.dump315
-rw-r--r--test/riscv-tests/rv32ui-p-addi.elfbin0 -> 9540 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-and.dump467
-rw-r--r--test/riscv-tests/rv32ui-p-and.elfbin0 -> 9588 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-andi.dump247
-rw-r--r--test/riscv-tests/rv32ui-p-andi.elfbin0 -> 9276 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-auipc.dump125
-rw-r--r--test/riscv-tests/rv32ui-p-auipc.elfbin0 -> 9020 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-beq.dump325
-rw-r--r--test/riscv-tests/rv32ui-p-beq.elfbin0 -> 9444 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-bge.dump339
-rw-r--r--test/riscv-tests/rv32ui-p-bge.elfbin0 -> 9516 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-bgeu.dump358
-rw-r--r--test/riscv-tests/rv32ui-p-bgeu.elfbin0 -> 9516 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-blt.dump325
-rw-r--r--test/riscv-tests/rv32ui-p-blt.elfbin0 -> 9444 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-bltu.dump344
-rw-r--r--test/riscv-tests/rv32ui-p-bltu.elfbin0 -> 9444 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-bne.dump324
-rw-r--r--test/riscv-tests/rv32ui-p-bne.elfbin0 -> 9444 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-fence_i.dump189
-rw-r--r--test/riscv-tests/rv32ui-p-fence_i.elfbin0 -> 13140 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-jal.dump128
-rw-r--r--test/riscv-tests/rv32ui-p-jal.elfbin0 -> 9072 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-jalr.dump166
-rw-r--r--test/riscv-tests/rv32ui-p-jalr.elfbin0 -> 9140 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-lb.dump306
-rw-r--r--test/riscv-tests/rv32ui-p-lb.elfbin0 -> 13608 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-lbu.dump306
-rw-r--r--test/riscv-tests/rv32ui-p-lbu.elfbin0 -> 13608 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-lh.dump327
-rw-r--r--test/riscv-tests/rv32ui-p-lh.elfbin0 -> 13608 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-lhu.dump322
-rw-r--r--test/riscv-tests/rv32ui-p-lhu.elfbin0 -> 13608 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-lui.dump127
-rw-r--r--test/riscv-tests/rv32ui-p-lui.elfbin0 -> 9088 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-lw.dump319
-rw-r--r--test/riscv-tests/rv32ui-p-lw.elfbin0 -> 13608 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-or.dump464
-rw-r--r--test/riscv-tests/rv32ui-p-or.elfbin0 -> 9588 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-ori.dump240
-rw-r--r--test/riscv-tests/rv32ui-p-ori.elfbin0 -> 9276 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sb.dump447
-rw-r--r--test/riscv-tests/rv32ui-p-sb.elfbin0 -> 13836 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sh.dump480
-rw-r--r--test/riscv-tests/rv32ui-p-sh.elfbin0 -> 13852 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-simple.dump110
-rw-r--r--test/riscv-tests/rv32ui-p-simple.elfbin0 -> 8932 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sll.dump523
-rw-r--r--test/riscv-tests/rv32ui-p-sll.elfbin0 -> 9948 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-slli.dump316
-rw-r--r--test/riscv-tests/rv32ui-p-slli.elfbin0 -> 9540 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-slt.dump485
-rw-r--r--test/riscv-tests/rv32ui-p-slt.elfbin0 -> 9852 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-slti.dump320
-rw-r--r--test/riscv-tests/rv32ui-p-slti.elfbin0 -> 9540 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sltiu.dump320
-rw-r--r--test/riscv-tests/rv32ui-p-sltiu.elfbin0 -> 9540 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sltu.dump485
-rw-r--r--test/riscv-tests/rv32ui-p-sltu.elfbin0 -> 9852 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sra.dump538
-rw-r--r--test/riscv-tests/rv32ui-p-sra.elfbin0 -> 9972 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-srai.dump335
-rw-r--r--test/riscv-tests/rv32ui-p-srai.elfbin0 -> 9540 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-srl.dump544
-rw-r--r--test/riscv-tests/rv32ui-p-srl.elfbin0 -> 9972 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-srli.dump309
-rw-r--r--test/riscv-tests/rv32ui-p-srli.elfbin0 -> 9540 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sub.dump485
-rw-r--r--test/riscv-tests/rv32ui-p-sub.elfbin0 -> 9828 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-sw.dump476
-rw-r--r--test/riscv-tests/rv32ui-p-sw.elfbin0 -> 13868 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-xor.dump465
-rw-r--r--test/riscv-tests/rv32ui-p-xor.elfbin0 -> 9588 bytes
-rw-r--r--test/riscv-tests/rv32ui-p-xori.dump238
-rw-r--r--test/riscv-tests/rv32ui-p-xori.elfbin0 -> 9276 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-add.dump1294
-rw-r--r--test/riscv-tests/rv32ui-v-add.elfbin0 -> 19436 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-addi.dump1118
-rw-r--r--test/riscv-tests/rv32ui-v-addi.elfbin0 -> 18524 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-and.dump1262
-rw-r--r--test/riscv-tests/rv32ui-v-and.elfbin0 -> 19132 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-andi.dump1046
-rw-r--r--test/riscv-tests/rv32ui-v-andi.elfbin0 -> 18060 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-auipc.dump929
-rw-r--r--test/riscv-tests/rv32ui-v-auipc.elfbin0 -> 17424 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-beq.dump1124
-rw-r--r--test/riscv-tests/rv32ui-v-beq.elfbin0 -> 18484 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-bge.dump1154
-rw-r--r--test/riscv-tests/rv32ui-v-bge.elfbin0 -> 18652 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-bgeu.dump1167
-rw-r--r--test/riscv-tests/rv32ui-v-bgeu.elfbin0 -> 18704 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-blt.dump1124
-rw-r--r--test/riscv-tests/rv32ui-v-blt.elfbin0 -> 18484 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-bltu.dump1137
-rw-r--r--test/riscv-tests/rv32ui-v-bltu.elfbin0 -> 18536 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-bne.dump1125
-rw-r--r--test/riscv-tests/rv32ui-v-bne.elfbin0 -> 18488 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-fence_i.dump1017
-rw-r--r--test/riscv-tests/rv32ui-v-fence_i.elfbin0 -> 18020 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-jal.dump937
-rw-r--r--test/riscv-tests/rv32ui-v-jal.elfbin0 -> 17492 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-jalr.dump975
-rw-r--r--test/riscv-tests/rv32ui-v-jalr.elfbin0 -> 17688 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-lb.dump1107
-rw-r--r--test/riscv-tests/rv32ui-v-lb.elfbin0 -> 22580 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-lbu.dump1107
-rw-r--r--test/riscv-tests/rv32ui-v-lbu.elfbin0 -> 22580 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-lh.dump1113
-rw-r--r--test/riscv-tests/rv32ui-v-lh.elfbin0 -> 22584 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-lhu.dump1118
-rw-r--r--test/riscv-tests/rv32ui-v-lhu.elfbin0 -> 22584 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-lui.dump942
-rw-r--r--test/riscv-tests/rv32ui-v-lui.elfbin0 -> 17520 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-lw.dump1124
-rw-r--r--test/riscv-tests/rv32ui-v-lw.elfbin0 -> 22592 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-or.dump1265
-rw-r--r--test/riscv-tests/rv32ui-v-or.elfbin0 -> 19144 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-ori.dump1053
-rw-r--r--test/riscv-tests/rv32ui-v-ori.elfbin0 -> 18088 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sb.dump1239
-rw-r--r--test/riscv-tests/rv32ui-v-sb.elfbin0 -> 22812 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sh.dump1270
-rw-r--r--test/riscv-tests/rv32ui-v-sh.elfbin0 -> 22824 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-simple.dump902
-rw-r--r--test/riscv-tests/rv32ui-v-simple.elfbin0 -> 17220 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sll.dump1330
-rw-r--r--test/riscv-tests/rv32ui-v-sll.elfbin0 -> 19644 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-slli.dump1117
-rw-r--r--test/riscv-tests/rv32ui-v-slli.elfbin0 -> 18520 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-slt.dump1288
-rw-r--r--test/riscv-tests/rv32ui-v-slt.elfbin0 -> 19412 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-slti.dump1113
-rw-r--r--test/riscv-tests/rv32ui-v-slti.elfbin0 -> 18504 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sltiu.dump1113
-rw-r--r--test/riscv-tests/rv32ui-v-sltiu.elfbin0 -> 18504 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sltu.dump1288
-rw-r--r--test/riscv-tests/rv32ui-v-sltu.elfbin0 -> 19412 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sra.dump1351
-rw-r--r--test/riscv-tests/rv32ui-v-sra.elfbin0 -> 19744 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-srai.dump1130
-rw-r--r--test/riscv-tests/rv32ui-v-srai.elfbin0 -> 18572 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-srl.dump1345
-rw-r--r--test/riscv-tests/rv32ui-v-srl.elfbin0 -> 19720 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-srli.dump1124
-rw-r--r--test/riscv-tests/rv32ui-v-srli.elfbin0 -> 18548 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sub.dump1284
-rw-r--r--test/riscv-tests/rv32ui-v-sub.elfbin0 -> 19380 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-sw.dump1273
-rw-r--r--test/riscv-tests/rv32ui-v-sw.elfbin0 -> 22844 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-xor.dump1264
-rw-r--r--test/riscv-tests/rv32ui-v-xor.elfbin0 -> 19140 bytes
-rw-r--r--test/riscv-tests/rv32ui-v-xori.dump1055
-rw-r--r--test/riscv-tests/rv32ui-v-xori.elfbin0 -> 18096 bytes
-rw-r--r--test/riscv-tests/rv32um-p-div.dump168
-rw-r--r--test/riscv-tests/rv32um-p-div.elfbin0 -> 9180 bytes
-rw-r--r--test/riscv-tests/rv32um-p-divu.dump167
-rw-r--r--test/riscv-tests/rv32um-p-divu.elfbin0 -> 9180 bytes
-rw-r--r--test/riscv-tests/rv32um-p-mul.dump483
-rw-r--r--test/riscv-tests/rv32um-p-mul.elfbin0 -> 9828 bytes
-rw-r--r--test/riscv-tests/rv32um-p-mulh.dump479
-rw-r--r--test/riscv-tests/rv32um-p-mulh.elfbin0 -> 9780 bytes
-rw-r--r--test/riscv-tests/rv32um-p-mulhsu.dump479
-rw-r--r--test/riscv-tests/rv32um-p-mulhsu.elfbin0 -> 9780 bytes
-rw-r--r--test/riscv-tests/rv32um-p-mulhu.dump479
-rw-r--r--test/riscv-tests/rv32um-p-mulhu.elfbin0 -> 9780 bytes
-rw-r--r--test/riscv-tests/rv32um-p-rem.dump168
-rw-r--r--test/riscv-tests/rv32um-p-rem.elfbin0 -> 9180 bytes
-rw-r--r--test/riscv-tests/rv32um-p-remu.dump168
-rw-r--r--test/riscv-tests/rv32um-p-remu.elfbin0 -> 9180 bytes
-rw-r--r--test/riscv-tests/rv32um-v-div.dump981
-rw-r--r--test/riscv-tests/rv32um-v-div.elfbin0 -> 17736 bytes
-rw-r--r--test/riscv-tests/rv32um-v-divu.dump982
-rw-r--r--test/riscv-tests/rv32um-v-divu.elfbin0 -> 17740 bytes
-rw-r--r--test/riscv-tests/rv32um-v-mul.dump1286
-rw-r--r--test/riscv-tests/rv32um-v-mul.elfbin0 -> 19388 bytes
-rw-r--r--test/riscv-tests/rv32um-v-mulh.dump1282
-rw-r--r--test/riscv-tests/rv32um-v-mulh.elfbin0 -> 19340 bytes
-rw-r--r--test/riscv-tests/rv32um-v-mulhsu.dump1282
-rw-r--r--test/riscv-tests/rv32um-v-mulhsu.elfbin0 -> 19340 bytes
-rw-r--r--test/riscv-tests/rv32um-v-mulhu.dump1282
-rw-r--r--test/riscv-tests/rv32um-v-mulhu.elfbin0 -> 19340 bytes
-rw-r--r--test/riscv-tests/rv32um-v-rem.dump981
-rw-r--r--test/riscv-tests/rv32um-v-rem.elfbin0 -> 17736 bytes
-rw-r--r--test/riscv-tests/rv32um-v-remu.dump981
-rw-r--r--test/riscv-tests/rv32um-v-remu.elfbin0 -> 17736 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-breakpoint.elfbin13488 -> 13488 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-csr.elfbin13936 -> 13936 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-illegal.dump95
-rw-r--r--test/riscv-tests/rv64mi-p-illegal.elfbin9648 -> 9648 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-ma_addr.dump2
-rw-r--r--test/riscv-tests/rv64mi-p-ma_addr.elfbin13712 -> 13712 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-ma_fetch.dump2
-rw-r--r--test/riscv-tests/rv64mi-p-ma_fetch.elfbin9296 -> 9296 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-mcsr.elfbin9320 -> 9320 bytes
-rw-r--r--test/riscv-tests/rv64mi-p-scall.dump4
-rw-r--r--test/riscv-tests/rv64mi-p-scall.elfbin9328 -> 9328 bytes
-rw-r--r--test/riscv-tests/rv64si-p-csr.elfbin13840 -> 13840 bytes
-rw-r--r--test/riscv-tests/rv64si-p-dirty.elfbin13552 -> 13552 bytes
-rw-r--r--test/riscv-tests/rv64si-p-ma_fetch.dump2
-rw-r--r--test/riscv-tests/rv64si-p-ma_fetch.elfbin9296 -> 9296 bytes
-rw-r--r--test/riscv-tests/rv64si-p-scall.elfbin9328 -> 9328 bytes
-rw-r--r--test/riscv-tests/rv64si-p-wfi.elfbin9256 -> 9256 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoadd_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoadd_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoand_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoand_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amomax_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amomax_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amomaxu_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amomaxu_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amomin_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amomin_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amominu_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amominu_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoor_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoor_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoswap_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoswap_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoxor_d.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-amoxor_w.elfbin9504 -> 9504 bytes
-rw-r--r--test/riscv-tests/rv64ua-p-lrsc.dump146
-rw-r--r--[-rwxr-xr-x]test/riscv-tests/rv64ua-p-lrsc.elfbin14632 -> 14688 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoadd_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoadd_d.elfbin17912 -> 17912 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoadd_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoadd_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoand_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoand_d.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoand_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoand_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amomax_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amomax_d.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amomax_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amomax_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amomaxu_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amomaxu_d.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amomaxu_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amomaxu_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amomin_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amomin_d.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amomin_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amomin_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amominu_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amominu_d.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amominu_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amominu_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoor_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoor_d.elfbin17888 -> 17888 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoor_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoor_w.elfbin17888 -> 17888 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoswap_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoswap_d.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoswap_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoswap_w.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoxor_d.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoxor_d.elfbin17904 -> 17904 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-amoxor_w.dump2
-rw-r--r--test/riscv-tests/rv64ua-v-amoxor_w.elfbin17912 -> 17912 bytes
-rw-r--r--test/riscv-tests/rv64ua-v-lrsc.dump138
-rw-r--r--[-rwxr-xr-x]test/riscv-tests/rv64ua-v-lrsc.elfbin19816 -> 19880 bytes
-rw-r--r--test/riscv-tests/rv64uc-p-rvc.elfbin18392 -> 18392 bytes
-rw-r--r--test/riscv-tests/rv64uc-v-rvc.dump2
-rw-r--r--test/riscv-tests/rv64uc-v-rvc.elfbin32128 -> 32128 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-add.elfbin10432 -> 10432 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-addi.elfbin10016 -> 10016 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-addiw.elfbin10016 -> 10016 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-addw.elfbin10432 -> 10432 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-and.elfbin10080 -> 10080 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-andi.elfbin9664 -> 9664 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-auipc.elfbin9320 -> 9320 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-beq.elfbin9888 -> 9888 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-bge.elfbin9984 -> 9984 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-bgeu.elfbin9984 -> 9984 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-blt.elfbin9888 -> 9888 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-bltu.elfbin9888 -> 9888 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-bne.elfbin9888 -> 9888 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-fence_i.elfbin13480 -> 13480 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-jal.elfbin9384 -> 9384 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-jalr.elfbin9480 -> 9480 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lb.elfbin14104 -> 14104 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lbu.elfbin14104 -> 14104 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-ld.elfbin14120 -> 14120 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lh.elfbin14104 -> 14104 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lhu.elfbin14104 -> 14104 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lui.elfbin9408 -> 9408 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lw.elfbin14104 -> 14104 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-lwu.elfbin14104 -> 14104 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-or.elfbin10080 -> 10080 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-ori.elfbin9664 -> 9664 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sb.elfbin14416 -> 14416 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sd.elfbin14480 -> 14480 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sh.elfbin14432 -> 14432 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-simple.elfbin9200 -> 9200 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sll.elfbin10688 -> 10688 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-slli.elfbin10112 -> 10112 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-slliw.dump316
-rw-r--r--test/riscv-tests/rv64ui-p-slliw.elfbin10016 -> 10144 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sllw.dump664
-rw-r--r--test/riscv-tests/rv64ui-p-sllw.elfbin10592 -> 10720 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-slt.elfbin10432 -> 10432 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-slti.elfbin10016 -> 10016 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sltiu.elfbin10016 -> 10016 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sltu.elfbin10432 -> 10432 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sra.elfbin10592 -> 10592 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-srai.elfbin10016 -> 10016 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sraiw.dump380
-rw-r--r--test/riscv-tests/rv64ui-p-sraiw.elfbin10080 -> 10208 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sraw.dump648
-rw-r--r--test/riscv-tests/rv64ui-p-sraw.elfbin10592 -> 10720 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-srl.elfbin10592 -> 10592 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-srli.elfbin10016 -> 10016 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-srliw.dump324
-rw-r--r--test/riscv-tests/rv64ui-p-srliw.elfbin10016 -> 10144 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-srlw.dump640
-rw-r--r--test/riscv-tests/rv64ui-p-srlw.elfbin10592 -> 10720 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sub.elfbin10400 -> 10400 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-subw.elfbin10400 -> 10400 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-sw.elfbin14448 -> 14448 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-xor.elfbin10080 -> 10080 bytes
-rw-r--r--test/riscv-tests/rv64ui-p-xori.elfbin9664 -> 9664 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-add.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-add.elfbin20080 -> 20080 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-addi.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-addi.elfbin19056 -> 19056 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-addiw.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-addiw.elfbin19048 -> 19048 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-addw.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-addw.elfbin20064 -> 20064 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-and.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-and.elfbin19832 -> 19832 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-andi.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-andi.elfbin18552 -> 18552 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-auipc.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-auipc.elfbin17768 -> 17768 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-beq.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-beq.elfbin18976 -> 18976 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-bge.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-bge.elfbin19168 -> 19168 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-bgeu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-bgeu.elfbin19384 -> 19384 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-blt.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-blt.elfbin18976 -> 18976 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-bltu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-bltu.elfbin19176 -> 19176 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-bne.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-bne.elfbin18976 -> 18976 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-fence_i.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-fence_i.elfbin18656 -> 18656 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-jal.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-jal.elfbin17856 -> 17856 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-jalr.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-jalr.elfbin18072 -> 18072 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lb.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lb.elfbin19280 -> 19280 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lbu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lbu.elfbin19280 -> 19280 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-ld.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-ld.elfbin23408 -> 23408 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lh.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lh.elfbin19288 -> 19288 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lhu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lhu.elfbin19288 -> 19288 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lui.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lui.elfbin17896 -> 17896 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lw.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lw.elfbin19296 -> 19296 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-lwu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-lwu.elfbin19296 -> 19296 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-or.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-or.elfbin19960 -> 19960 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-ori.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-ori.elfbin18536 -> 18536 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sb.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sb.elfbin23688 -> 23688 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sd.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sd.elfbin23760 -> 23760 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sh.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sh.elfbin23696 -> 23696 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-simple.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-simple.elfbin17528 -> 17528 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sll.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sll.elfbin20616 -> 20616 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-slli.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-slli.elfbin19256 -> 19256 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-slliw.dump288
-rw-r--r--test/riscv-tests/rv64ui-v-slliw.elfbin19040 -> 19312 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sllw.dump640
-rw-r--r--test/riscv-tests/rv64ui-v-sllw.elfbin20360 -> 20648 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-slt.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-slt.elfbin20040 -> 20040 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-slti.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-slti.elfbin19024 -> 19024 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sltiu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sltiu.elfbin19024 -> 19024 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sltu.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sltu.elfbin20104 -> 20104 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sra.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sra.elfbin20408 -> 20408 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-srai.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-srai.elfbin19104 -> 19104 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sraiw.dump426
-rw-r--r--test/riscv-tests/rv64ui-v-sraiw.elfbin19208 -> 19480 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sraw.dump640
-rw-r--r--test/riscv-tests/rv64ui-v-sraw.elfbin20408 -> 20696 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-srl.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-srl.elfbin20520 -> 20520 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-srli.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-srli.elfbin19160 -> 19160 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-srliw.dump290
-rw-r--r--test/riscv-tests/rv64ui-v-srliw.elfbin19072 -> 19344 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-srlw.dump640
-rw-r--r--test/riscv-tests/rv64ui-v-srlw.elfbin20384 -> 20672 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sub.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sub.elfbin20016 -> 20016 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-subw.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-subw.elfbin20000 -> 20000 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-sw.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-sw.elfbin23720 -> 23720 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-xor.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-xor.elfbin19944 -> 19944 bytes
-rw-r--r--test/riscv-tests/rv64ui-v-xori.dump2
-rw-r--r--test/riscv-tests/rv64ui-v-xori.elfbin18528 -> 18528 bytes
-rw-r--r--test/riscv-tests/rv64um-p-div.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-divu.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-divuw.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-divw.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-mul.elfbin10272 -> 10272 bytes
-rw-r--r--test/riscv-tests/rv64um-p-mulh.elfbin10144 -> 10144 bytes
-rw-r--r--test/riscv-tests/rv64um-p-mulhsu.elfbin10144 -> 10144 bytes
-rw-r--r--test/riscv-tests/rv64um-p-mulhu.elfbin10208 -> 10208 bytes
-rw-r--r--test/riscv-tests/rv64um-p-mulw.elfbin10144 -> 10144 bytes
-rw-r--r--test/riscv-tests/rv64um-p-rem.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-remu.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-remuw.elfbin9536 -> 9536 bytes
-rw-r--r--test/riscv-tests/rv64um-p-remw.elfbin9568 -> 9568 bytes
-rw-r--r--test/riscv-tests/rv64um-v-div.dump2
-rw-r--r--test/riscv-tests/rv64um-v-div.elfbin18160 -> 18160 bytes
-rw-r--r--test/riscv-tests/rv64um-v-divu.dump2
-rw-r--r--test/riscv-tests/rv64um-v-divu.elfbin18184 -> 18184 bytes
-rw-r--r--test/riscv-tests/rv64um-v-divuw.dump2
-rw-r--r--test/riscv-tests/rv64um-v-divuw.elfbin18152 -> 18152 bytes
-rw-r--r--test/riscv-tests/rv64um-v-divw.dump2
-rw-r--r--test/riscv-tests/rv64um-v-divw.elfbin18136 -> 18136 bytes
-rw-r--r--test/riscv-tests/rv64um-v-mul.dump2
-rw-r--r--test/riscv-tests/rv64um-v-mul.elfbin19880 -> 19880 bytes
-rw-r--r--test/riscv-tests/rv64um-v-mulh.dump2
-rw-r--r--test/riscv-tests/rv64um-v-mulh.elfbin19664 -> 19664 bytes
-rw-r--r--test/riscv-tests/rv64um-v-mulhsu.dump2
-rw-r--r--test/riscv-tests/rv64um-v-mulhsu.elfbin19664 -> 19664 bytes
-rw-r--r--test/riscv-tests/rv64um-v-mulhu.dump2
-rw-r--r--test/riscv-tests/rv64um-v-mulhu.elfbin19856 -> 19856 bytes
-rw-r--r--test/riscv-tests/rv64um-v-mulw.dump2
-rw-r--r--test/riscv-tests/rv64um-v-mulw.elfbin19512 -> 19512 bytes
-rw-r--r--test/riscv-tests/rv64um-v-rem.dump2
-rw-r--r--test/riscv-tests/rv64um-v-rem.elfbin18152 -> 18152 bytes
-rw-r--r--test/riscv-tests/rv64um-v-remu.dump2
-rw-r--r--test/riscv-tests/rv64um-v-remu.elfbin18160 -> 18160 bytes
-rw-r--r--test/riscv-tests/rv64um-v-remuw.dump2
-rw-r--r--test/riscv-tests/rv64um-v-remuw.elfbin18136 -> 18136 bytes
-rw-r--r--test/riscv-tests/rv64um-v-remw.dump2
-rw-r--r--test/riscv-tests/rv64um-v-remw.elfbin18192 -> 18192 bytes
-rwxr-xr-xtest/run_tests.sh73
594 files changed, 102598 insertions, 4948 deletions
diff --git a/LICENCE b/LICENCE
index 0d0ff70..be8918c 100644
--- a/LICENCE
+++ b/LICENCE
@@ -13,7 +13,7 @@ Copyright (c) 2017-2019
Thomas Bauereiss
Shaked Flur
Christopher Pulte
- Peter Sewell
+ Peter Sewell
All rights reserved.
diff --git a/Makefile b/Makefile
index 0307a2e..99cdf92 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,21 @@
+# Select architecture: RV32 or RV64.
+ARCH ?= RV64
+.PHONY: ARCH
+ifeq ($(ARCH),32)
+ ARCH = RV32
+ SAIL_XLEN = riscv_xlen32.sail
+else ifeq ($(ARCH),RV32)
+ SAIL_XLEN = riscv_xlen32.sail
+else ifeq ($(ARCH),64)
+ ARCH = RV64
+ SAIL_XLEN = riscv_xlen64.sail
+else ifeq ($(ARCH),RV64)
+ SAIL_XLEN = riscv_xlen64.sail
+else
+ $(error '$(ARCH)' is not a valid architecture, must be one of: RV32, RV64)
+endif
+
+# Instruction sources, depending on target
SAIL_DEFAULT_INST = riscv_insts_base.sail riscv_insts_aext.sail riscv_insts_cext.sail riscv_insts_mext.sail riscv_insts_zicsr.sail
SAIL_SEQ_INST = $(SAIL_DEFAULT_INST) riscv_jalr_seq.sail
SAIL_RMEM_INST = $(SAIL_DEFAULT_INST) riscv_jalr_rmem.sail riscv_insts_rmem.sail
@@ -5,20 +23,43 @@ SAIL_RMEM_INST = $(SAIL_DEFAULT_INST) riscv_jalr_rmem.sail riscv_insts_rmem.sail
SAIL_SEQ_INST_SRCS = riscv_insts_begin.sail $(SAIL_SEQ_INST) riscv_insts_end.sail
SAIL_RMEM_INST_SRCS = riscv_insts_begin.sail $(SAIL_RMEM_INST) riscv_insts_end.sail
+# System and platform sources
SAIL_SYS_SRCS = riscv_csr_map.sail riscv_sys_regs.sail riscv_next_regs.sail riscv_next_control.sail riscv_sys_control.sail
-# non-instruction sources
-SAIL_OTHER_SRCS = prelude.sail riscv_types.sail $(SAIL_SYS_SRCS) riscv_platform.sail riscv_mem.sail riscv_vmem.sail
-SAIL_OTHER_RVFI_SRCS = prelude.sail rvfi_dii.sail riscv_types.sail $(SAIL_SYS_SRCS) riscv_platform.sail riscv_mem.sail riscv_vmem.sail
+SAIL_RV32_VM_SRCS = riscv_vmem_sv32.sail riscv_vmem_rv32.sail
+SAIL_RV64_VM_SRCS = riscv_vmem_sv39.sail riscv_vmem_sv48.sail riscv_vmem_rv64.sail
-SAIL_SRCS = $(addprefix model/,$(SAIL_OTHER_SRCS) $(SAIL_SEQ_INST_SRCS) riscv_step.sail riscv_analysis.sail)
-SAIL_RMEM_SRCS = $(addprefix model/,$(SAIL_OTHER_SRCS) $(SAIL_RMEM_INST_SRCS) riscv_step.sail riscv_analysis.sail)
-SAIL_RVFI_SRCS = $(addprefix model/,$(SAIL_OTHER_RVFI_SRCS) $(SAIL_SEQ_INST_SRCS) riscv_step.sail riscv_analysis.sail)
-SAIL_COQ_SRCS = $(addprefix model/,$(SAIL_OTHER_SRCS) $(SAIL_SEQ_INST_SRCS) riscv_termination.sail riscv_analysis.sail)
+SAIL_VM_SRCS = riscv_vmem_common.sail riscv_vmem_tlb.sail
+ifeq ($(ARCH),RV32)
+SAIL_VM_SRCS += $(SAIL_RV32_VM_SRCS)
+else
+SAIL_VM_SRCS += $(SAIL_RV64_VM_SRCS)
+endif
+
+# Non-instruction sources
+PRELUDE = prelude.sail prelude_mapping.sail $(SAIL_XLEN) prelude_mem.sail
+SAIL_ARCH_SRCS = $(PRELUDE) riscv_types.sail $(SAIL_SYS_SRCS) riscv_platform.sail riscv_mem.sail $(SAIL_VM_SRCS)
+SAIL_ARCH_RVFI_SRCS = $(PRELUDE) rvfi_dii.sail riscv_types.sail $(SAIL_SYS_SRCS) riscv_platform.sail riscv_mem.sail $(SAIL_VM_SRCS)
+
+# Control inclusion of 64-bit only riscv_analysis
+ifeq ($(ARCH),RV32)
+SAIL_OTHER_SRCS = riscv_step.sail
+SAIL_OTHER_COQ_SRCS = riscv_termination_common.sail riscv_termination_rv32.sail
+else
+SAIL_OTHER_SRCS = riscv_step.sail riscv_analysis.sail
+SAIL_OTHER_COQ_SRCS = riscv_termination_common.sail riscv_termination_rv64.sail riscv_analysis.sail
+endif
+
+
+PRELUDE_SRCS = $(addprefix model/,$(PRELUDE))
+SAIL_SRCS = $(addprefix model/,$(SAIL_ARCH_SRCS) $(SAIL_SEQ_INST_SRCS) $(SAIL_OTHER_SRCS))
+SAIL_RMEM_SRCS = $(addprefix model/,$(SAIL_ARCH_SRCS) $(SAIL_RMEM_INST_SRCS) $(SAIL_OTHER_SRCS))
+SAIL_RVFI_SRCS = $(addprefix model/,$(SAIL_ARCH_RVFI_SRCS) $(SAIL_SEQ_INST_SRCS) $(SAIL_OTHER_SRCS))
+SAIL_COQ_SRCS = $(addprefix model/,$(SAIL_ARCH_SRCS) $(SAIL_SEQ_INST_SRCS) $(SAIL_OTHER_COQ_SRCS))
PLATFORM_OCAML_SRCS = $(addprefix ocaml_emulator/,platform.ml platform_impl.ml riscv_ocaml_sim.ml)
-#Attempt to work with either sail from opam or built from repo in SAIL_DIR
+# Attempt to work with either sail from opam or built from repo in SAIL_DIR
ifneq ($(SAIL_DIR),)
# Use sail repo in SAIL_DIR
SAIL:=$(SAIL_DIR)/sail
@@ -56,6 +97,8 @@ C_LIBS += -L $(TV_SPIKE_DIR) -ltv_spike -Wl,-rpath=$(TV_SPIKE_DIR)
C_LIBS += -L $(RISCV)/lib -lfesvr -lriscv -Wl,-rpath=$(RISCV)/lib
endif
+# SAIL_FLAGS = -dtc_verbose 4
+
ifneq (,$(COVERAGE))
C_FLAGS += --coverage -O1
SAIL_FLAGS += -Oconstant_fold
@@ -73,7 +116,7 @@ else
RISCV_EXTRAS_LEM = 0.7.1/riscv_extras.lem
endif
-all: ocaml_emulator/riscv_ocaml_sim c_emulator/riscv_sim riscv_isa riscv_coq riscv_hol riscv_rmem
+all: ocaml_emulator/riscv_ocaml_sim_$(ARCH) c_emulator/riscv_sim_$(ARCH) riscv_isa riscv_coq riscv_hol riscv_rmem
.PHONY: all
check: $(SAIL_SRCS) model/main.sail Makefile
@@ -85,35 +128,35 @@ interpret: $(SAIL_SRCS) model/main.sail
cgen: $(SAIL_SRCS) model/main.sail
$(SAIL) -cgen $(SAIL_FLAGS) $(SAIL_SRCS) model/main.sail
-generated_definitions/ocaml/riscv.ml: $(SAIL_SRCS) Makefile
- mkdir -p generated_definitions/ocaml
- $(SAIL) $(SAIL_FLAGS) -ocaml -ocaml-nobuild -ocaml_build_dir generated_definitions/ocaml -o riscv $(SAIL_SRCS)
+generated_definitions/ocaml/$(ARCH)/riscv.ml: $(SAIL_SRCS) Makefile
+ mkdir -p generated_definitions/ocaml/$(ARCH)
+ $(SAIL) $(SAIL_FLAGS) -ocaml -ocaml-nobuild -ocaml_build_dir generated_definitions/ocaml/$(ARCH) -o riscv $(SAIL_SRCS)
-ocaml_emulator/_sbuild/riscv_ocaml_sim.native: generated_definitions/ocaml/riscv.ml ocaml_emulator/_tags $(PLATFORM_OCAML_SRCS) Makefile
+ocaml_emulator/_sbuild/riscv_ocaml_sim.native: generated_definitions/ocaml/$(ARCH)/riscv.ml ocaml_emulator/_tags $(PLATFORM_OCAML_SRCS) Makefile
mkdir -p ocaml_emulator/_sbuild
- cp ocaml_emulator/_tags $(PLATFORM_OCAML_SRCS) generated_definitions/ocaml/*.ml ocaml_emulator/_sbuild
+ cp ocaml_emulator/_tags $(PLATFORM_OCAML_SRCS) generated_definitions/ocaml/$(ARCH)/*.ml ocaml_emulator/_sbuild
cd ocaml_emulator/_sbuild && ocamlbuild -use-ocamlfind riscv_ocaml_sim.native
-ocaml_emulator/_sbuild/coverage.native: generated_definitions/ocaml/riscv.ml ocaml_emulator/_tags.bisect $(PLATFORM_OCAML_SRCS) Makefile
+ocaml_emulator/_sbuild/coverage.native: generated_definitions/ocaml/$(ARCH)/riscv.ml ocaml_emulator/_tags.bisect $(PLATFORM_OCAML_SRCS) Makefile
mkdir -p ocaml_emulator/_sbuild
- cp $(PLATFORM_OCAML_SRCS) generated_definitions/ocaml/*.ml ocaml_emulator/_sbuild
+ cp $(PLATFORM_OCAML_SRCS) generated_definitions/ocaml/$(ARCH)/*.ml ocaml_emulator/_sbuild
cp ocaml_emulator/_tags.bisect ocaml_emulator/_sbuild/_tags
cd ocaml_emulator/_sbuild && ocamlbuild -use-ocamlfind riscv_ocaml_sim.native && cp -L riscv_ocaml_sim.native coverage.native
-ocaml_emulator/riscv_ocaml_sim: ocaml_emulator/_sbuild/riscv_ocaml_sim.native
- rm -f $@ && ln -s _sbuild/riscv_ocaml_sim.native $@
+ocaml_emulator/riscv_ocaml_sim_$(ARCH): ocaml_emulator/_sbuild/riscv_ocaml_sim.native
+ rm -f $@ && cp -L $^ $@ && rm -f $^
-ocaml_emulator/coverage: ocaml_emulator/_sbuild/coverage.native
- rm -f ocaml_emulator/riscv_ocaml_sim && ln -s ocaml_emulator/_sbuild/coverage.native ocaml_emulator/riscv_ocaml_sim # since the test scripts runs this file
- rm -rf bisect*.out bisect ocaml_emulator/coverage
+ocaml_emulator/coverage_$(ARCH): ocaml_emulator/_sbuild/coverage.native
+ rm -f ocaml_emulator/riscv_ocaml_sim_$(ARCH) && cp -L $^ ocaml_emulator/riscv_ocaml_sim_$(ARCH) # since the test scripts runs this file
+ rm -rf bisect*.out bisect ocaml_emulator/coverage_$(ARCH) $^
./test/run_tests.sh # this will generate bisect*.out files in this directory
mkdir ocaml_emulator/bisect && mv bisect*.out bisect/
- mkdir ocaml_emulator/coverage && bisect-ppx-report -html ocaml_emulator/coverage/ -I ocaml_emulator/_sbuild/ bisect/bisect*.out
+ mkdir ocaml_emulator/coverage_$(ARCH) && bisect-ppx-report -html ocaml_emulator/coverage_$(ARCH)/ -I ocaml_emulator/_sbuild/ bisect/bisect*.out
gcovr:
gcovr -r . --html --html-detail -o index.html
-generated_definitions/ocaml/riscv_duopod_ocaml: model/prelude.sail model/riscv_duopod.sail
+generated_definitions/ocaml/riscv_duopod_ocaml: $(PRELUDE_SRCS) model/riscv_duopod.sail
mkdir -p generated_definitions/ocaml
$(SAIL) $(SAIL_FLAGS) -ocaml -ocaml_build_dir generated_definitions/ocaml -o riscv_duopod_ocaml $^
@@ -127,29 +170,29 @@ generated_definitions/c/riscv.c: $(SAIL_SRCS) model/main.sail Makefile
c_emulator/riscv_c: generated_definitions/c/riscv.c $(C_INCS) $(C_SRCS) Makefile
gcc $(C_WARNINGS) $(C_FLAGS) $< $(C_SRCS) $(SAIL_LIB_DIR)/*.c -lgmp -lz -I $(SAIL_LIB_DIR) -o $@
-generated_definitions/c/riscv_model.c: $(SAIL_SRCS) model/main.sail Makefile
+generated_definitions/c/riscv_model_$(ARCH).c: $(SAIL_SRCS) model/main.sail Makefile
mkdir -p generated_definitions/c
$(SAIL) $(SAIL_FLAGS) -O -memo_z3 -c -c_include riscv_prelude.h -c_include riscv_platform.h -c_no_main $(SAIL_SRCS) model/main.sail 1> $@
-c_emulator/riscv_sim: generated_definitions/c/riscv_model.c c_emulator/riscv_sim.c $(C_INCS) $(C_SRCS) $(CPP_SRCS) Makefile
+c_emulator/riscv_sim_$(ARCH): generated_definitions/c/riscv_model_$(ARCH).c c_emulator/riscv_sim.c $(C_INCS) $(C_SRCS) Makefile
gcc -g $(C_WARNINGS) $(C_FLAGS) $< c_emulator/riscv_sim.c $(C_SRCS) $(SAIL_LIB_DIR)/*.c $(C_LIBS) -o $@
generated_definitions/c/riscv_rvfi_model.c: $(SAIL_RVFI_SRCS) model/main_rvfi.sail Makefile
mkdir -p generated_definitions/c
$(SAIL) $(SAIL_FLAGS) -O -memo_z3 -c -c_include riscv_prelude.h -c_include riscv_platform.h -c_no_main $(SAIL_RVFI_SRCS) model/main_rvfi.sail | sed '/^[[:space:]]*$$/d' > $@
-c_emulator/riscv_rvfi: generated_definitions/c/riscv_rvfi_model.c c_emulator/riscv_sim.c $(C_INCS) $(C_SRCS) $(CPP_SRCS) Makefile
+c_emulator/riscv_rvfi: generated_definitions/c/riscv_rvfi_model.c c_emulator/riscv_sim.c $(C_INCS) $(C_SRCS) Makefile
gcc -g $(C_WARNINGS) $(C_FLAGS) $< -DRVFI_DII c_emulator/riscv_sim.c $(C_SRCS) $(SAIL_LIB_DIR)/*.c $(C_LIBS) -o $@
latex: $(SAIL_SRCS) Makefile
mkdir -p generated_definitions/latex
$(SAIL) -latex -latex_prefix sail -o generated_definitions/latex $(SAIL_SRCS)
-generated_definitions/isabelle/ROOT: handwritten_support/ROOT
- mkdir -p generated_definitions/isabelle
- cp handwritten_support/ROOT generated_definitions/isabelle/
+generated_definitions/isabelle/$(ARCH)/ROOT: handwritten_support/ROOT
+ mkdir -p generated_definitions/isabelle/$(ARCH)
+ cp handwritten_support/ROOT generated_definitions/isabelle/$(ARCH)/
-generated_definitions/lem/riscv_duopod.lem: $(addprefix model/, prelude.sail riscv_duopod.sail)
+generated_definitions/lem/riscv_duopod.lem: $(PRELUDE_SRCS) model/riscv_duopod.sail
mkdir -p generated_definitions/lem
$(SAIL) $(SAIL_FLAGS) -lem -lem_output_dir generated_definitions/lem -isa_output_dir generated_definitions/isabelle -lem_mwords -lem_lib Riscv_extras -o riscv_duopod $^
generated_definitions/isabelle/Riscv_duopod.thy: generated_definitions/isabelle/ROOT generated_definitions/lem/riscv_duopod.lem handwritten_support/$(RISCV_EXTRAS_LEM)
@@ -160,7 +203,7 @@ generated_definitions/isabelle/Riscv_duopod.thy: generated_definitions/isabelle/
riscv_duopod: generated_definitions/ocaml/riscv_duopod_ocaml generated_definitions/isabelle/Riscv_duopod.thy
-riscv_isa: generated_definitions/isabelle/Riscv.thy
+riscv_isa: generated_definitions/isabelle/$(ARCH)/Riscv.thy
riscv_isa_build: riscv_isa
ifeq ($(wildcard $(LEM_DIR)/isabelle-lib),)
$(error Lem directory not found. Please set the LEM_DIR environment variable)
@@ -168,61 +211,62 @@ endif
ifeq ($(wildcard $(SAIL_LIB_DIR)/isabelle),)
$(error lib directory of Sail not found. Please set the SAIL_LIB_DIR environment variable)
endif
- isabelle build -b -d $(LEM_DIR)/isabelle-lib -d $(SAIL_LIB_DIR)/isabelle -d generated_definitions/isabelle Sail-RISC-V
+ isabelle build -b -d $(LEM_DIR)/isabelle-lib -d $(SAIL_LIB_DIR)/isabelle -d generated_definitions/isabelle/$(ARCH) Sail-RISC-V
.PHONY: riscv_isa riscv_isa_build
-generated_definitions/lem/riscv.lem: $(SAIL_SRCS) Makefile
- mkdir -p generated_definitions/lem
- $(SAIL) $(SAIL_FLAGS) -lem -lem_output_dir generated_definitions/lem -isa_output_dir generated_definitions/isabelle -o riscv -lem_mwords -lem_lib Riscv_extras $(SAIL_SRCS)
+generated_definitions/lem/$(ARCH)/riscv.lem: $(SAIL_SRCS) Makefile
+ mkdir -p generated_definitions/lem/$(ARCH) generated_definitions/isabelle/$(ARCH)
+ $(SAIL) $(SAIL_FLAGS) -lem -lem_output_dir generated_definitions/lem/$(ARCH) -isa_output_dir generated_definitions/isabelle/$(ARCH) -o riscv -lem_mwords -lem_lib Riscv_extras $(SAIL_SRCS)
-generated_definitions/lem/riscv_sequential.lem: $(SAIL_SRCS) Makefile
- mkdir -p generated_definitions/lem
- $(SAIL_DIR)/sail -lem -lem_output_dir generated_definitions/lem -isa_output_dir generated_definitions/isabelle -lem_sequential -o riscv_sequential -lem_mwords -lem_lib Riscv_extras_sequential $(SAIL_SRCS)
+generated_definitions/lem/$(ARCH)/riscv_sequential.lem: $(SAIL_SRCS) Makefile
+ mkdir -p generated_definitions/lem/$(ARCH) generated_definitions/isabelle/$(ARCH)
+ $(SAIL_DIR)/sail -lem -lem_output_dir generated_definitions/lem/$(ARCH) -isa_output_dir generated_definitions/isabelle/$(ARCH) -lem_sequential -o riscv_sequential -lem_mwords -lem_lib Riscv_extras_sequential $(SAIL_SRCS)
-generated_definitions/isabelle/Riscv.thy: generated_definitions/isabelle/ROOT generated_definitions/lem/riscv.lem handwritten_support/$(RISCV_EXTRAS_LEM) Makefile
- lem -isa -outdir generated_definitions/isabelle -lib Sail=$(SAIL_SRC_DIR)/lem_interp -lib Sail=$(SAIL_SRC_DIR)/gen_lib \
+generated_definitions/isabelle/$(ARCH)/Riscv.thy: generated_definitions/isabelle/$(ARCH)/ROOT generated_definitions/lem/$(ARCH)/riscv.lem handwritten_support/$(RISCV_EXTRAS_LEM) Makefile
+ lem -isa -outdir generated_definitions/isabelle/$(ARCH) -lib Sail=$(SAIL_SRC_DIR)/lem_interp -lib Sail=$(SAIL_SRC_DIR)/gen_lib \
handwritten_support/$(RISCV_EXTRAS_LEM) \
- generated_definitions/lem/riscv_types.lem \
- generated_definitions/lem/riscv.lem
- sed -i 's/datatype ast/datatype (plugins only: size) ast/' generated_definitions/isabelle/Riscv_types.thy
+ generated_definitions/lem/$(ARCH)/riscv_types.lem \
+ generated_definitions/lem/$(ARCH)/riscv.lem
+ sed -i 's/datatype ast/datatype (plugins only: size) ast/' generated_definitions/isabelle/$(ARCH)/Riscv_types.thy
+ sed -i "s/record( 'asidlen, 'valen, 'palen, 'ptelen) TLB_Entry/record (overloaded) ( 'asidlen, 'valen, 'palen, 'ptelen) TLB_Entry/" generated_definitions/isabelle/$(ARCH)/Riscv_types.thy
-generated_definitions/hol4/Holmakefile: handwritten_support/Holmakefile
- mkdir -p generated_definitions/hol4
- cp handwritten_support/Holmakefile generated_definitions/hol4
+generated_definitions/hol4/$(ARCH)/Holmakefile: handwritten_support/Holmakefile
+ mkdir -p generated_definitions/hol4/$(ARCH)
+ cp handwritten_support/Holmakefile generated_definitions/hol4/$(ARCH)
-generated_definitions/hol4/riscvScript.sml: generated_definitions/hol4/Holmakefile generated_definitions/lem/riscv.lem handwritten_support/$(RISCV_EXTRAS_LEM)
- lem -hol -outdir generated_definitions/hol4 -lib $(SAIL_LIB_DIR)/hol -i $(SAIL_LIB_DIR)/hol/sail2_prompt_monad.lem -i $(SAIL_LIB_DIR)/hol/sail2_prompt.lem \
+generated_definitions/hol4/$(ARCH)/riscvScript.sml: generated_definitions/hol4/$(ARCH)/Holmakefile generated_definitions/lem/$(ARCH)/riscv.lem handwritten_support/$(RISCV_EXTRAS_LEM)
+ lem -hol -outdir generated_definitions/hol4/$(ARCH) -lib $(SAIL_LIB_DIR)/hol -i $(SAIL_LIB_DIR)/hol/sail2_prompt_monad.lem -i $(SAIL_LIB_DIR)/hol/sail2_prompt.lem \
-lib $(SAIL_DIR)/src/lem_interp -lib $(SAIL_DIR)/src/gen_lib \
handwritten_support/$(RISCV_EXTRAS_LEM) \
- generated_definitions/lem/riscv_types.lem \
- generated_definitions/lem/riscv.lem
+ generated_definitions/lem/$(ARCH)/riscv_types.lem \
+ generated_definitions/lem/$(ARCH)/riscv.lem
-$(addprefix generated_definitions/hol4/,riscvTheory.uo riscvTheory.ui): generated_definitions/hol4/Holmakefile generated_definitions/hol4/riscvScript.sml
+$(addprefix generated_definitions/hol4/$(ARCH)/,riscvTheory.uo riscvTheory.ui): generated_definitions/hol4/$(ARCH)/Holmakefile generated_definitions/hol4/$(ARCH)/riscvScript.sml
ifeq ($(wildcard $(LEM_DIR)/hol-lib),)
$(error Lem directory not found. Please set the LEM_DIR environment variable)
endif
ifeq ($(wildcard $(SAIL_LIB_DIR)/hol),)
$(error lib directory of Sail not found. Please set the SAIL_LIB_DIR environment variable)
endif
- (cd generated_definitions/hol4 && Holmake riscvTheory.uo)
+ (cd generated_definitions/hol4/$(ARCH) && Holmake riscvTheory.uo)
-riscv_hol: generated_definitions/hol4/riscvScript.sml
-riscv_hol_build: generated_definitions/hol4/riscvTheory.uo
+riscv_hol: generated_definitions/hol4/$(ARCH)/riscvScript.sml
+riscv_hol_build: generated_definitions/hol4/$(ARCH)/riscvTheory.uo
.PHONY: riscv_hol riscv_hol_build
-COQ_LIBS = -R $(BBV_DIR)/theories bbv -R $(SAIL_LIB_DIR)/coq Sail -R coq '' -R generated_definitions/coq '' -R handwritten_support ''
+COQ_LIBS = -R $(BBV_DIR)/theories bbv -R $(SAIL_LIB_DIR)/coq Sail -R coq '' -R generated_definitions/coq/$(ARCH) '' -R handwritten_support ''
-riscv_coq: $(addprefix generated_definitions/coq/,riscv.v riscv_types.v)
-riscv_coq_build: generated_definitions/coq/riscv.vo
+riscv_coq: $(addprefix generated_definitions/coq/$(ARCH)/,riscv.v riscv_types.v)
+riscv_coq_build: generated_definitions/coq/$(ARCH)/riscv.vo
.PHONY: riscv_coq riscv_coq_build
-$(addprefix generated_definitions/coq/,riscv.v riscv_types.v): $(SAIL_COQ_SRCS) Makefile
- mkdir -p generated_definitions/coq
- $(SAIL) $(SAIL_FLAGS) -dcoq_undef_axioms -coq -coq_output_dir generated_definitions/coq -o riscv -coq_lib riscv_extras $(SAIL_COQ_SRCS)
-$(addprefix generated_definitions/coq/,riscv_duopod.v riscv_duopod_types.v): model/prelude.sail model/riscv_duopod.sail
- mkdir -p generated_definitions/coq
- $(SAIL) $(SAIL_FLAGS) -dcoq_undef_axioms -coq -coq_output_dir generated_definitions/coq -o riscv_duopod -coq_lib riscv_extras $^
+$(addprefix generated_definitions/coq/$(ARCH)/,riscv.v riscv_types.v): $(SAIL_COQ_SRCS) Makefile
+ mkdir -p generated_definitions/coq/$(ARCH)
+ $(SAIL) $(SAIL_FLAGS) -dcoq_undef_axioms -coq -coq_output_dir generated_definitions/coq/$(ARCH) -o riscv -coq_lib riscv_extras $(SAIL_COQ_SRCS)
+$(addprefix generated_definitions/coq/$(ARCH)/,riscv_duopod.v riscv_duopod_types.v): $(PRELUDE_SRCS) model/riscv_duopod.sail
+ mkdir -p generated_definitions/coq/$(ARCH)
+ $(SAIL) $(SAIL_FLAGS) -dcoq_undef_axioms -coq -coq_output_dir generated_definitions/coq/$(ARCH) -o riscv_duopod -coq_lib riscv_extras $^
%.vo: %.v
ifeq ($(wildcard $(BBV_DIR)/theories),)
@@ -233,22 +277,19 @@ ifeq ($(wildcard $(SAIL_LIB_DIR)/coq),)
endif
coqc $(COQ_LIBS) $<
-generated_definitions/coq/riscv.vo: generated_definitions/coq/riscv_types.vo handwritten_support/riscv_extras.vo
-generated_definitions/coq/riscv_duopod.vo: generated_definitions/coq/riscv_duopod_types.vo handwritten_support/riscv_extras.vo
-
+generated_definitions/coq/$(ARCH)/riscv.vo: generated_definitions/coq/$(ARCH)/riscv_types.vo handwritten_support/riscv_extras.vo
+generated_definitions/coq/$(ARCH)/riscv_duopod.vo: generated_definitions/coq/$(ARCH)/riscv_duopod_types.vo handwritten_support/riscv_extras.vo
echo_rmem_srcs:
echo $(SAIL_RMEM_SRCS)
riscv_rmem: generated_definitions/for-rmem/riscv.lem
-riscv_rmem: generated_definitions/for-rmem/riscv_sequential.lem
riscv_rmem: generated_definitions/for-rmem/riscv_toFromInterp2.ml
riscv_rmem: generated_definitions/for-rmem/riscv.defs
.PHONY: riscv_rmem
-generated_definitions/for-rmem/riscv.lem: SAIL_FLAGS += -lem_lib Riscv_extras
-generated_definitions/for-rmem/riscv_sequential.lem: SAIL_FLAGS += -lem_lib Riscv_extras_sequential -lem_sequential
-generated_definitions/for-rmem/%.lem: $(SAIL_RMEM_SRCS)
+generated_definitions/for-rmem/riscv.lem: SAIL_FLAGS += -lem_lib Riscv_extras
+generated_definitions/for-rmem/riscv.lem: $(SAIL_RMEM_SRCS)
mkdir -p $(dir $@)
# We do not need the isabelle .thy files, but sail always generates them
$(SAIL) $(SAIL_FLAGS) -lem -lem_mwords -lem_output_dir $(dir $@) -isa_output_dir $(dir $@) -o $(notdir $(basename $@)) $^
@@ -269,8 +310,9 @@ clean:
-rm -rf generated_definitions/ocaml/* generated_definitions/c/* generated_definitions/latex/*
-rm -rf generated_definitions/lem/* generated_definitions/isabelle/* generated_definitions/hol4/* generated_definitions/coq/*
-rm -rf generated_definitions/for-rmem/*
- -rm -f c_emulator/riscv_sim c_emulator/riscv_rvfi
- -rm -rf ocaml_emulator/_sbuild ocaml_emulator/_build ocaml_emulator/riscv_ocaml_sim ocaml_emulator/tracecmp
+ -rm -f c_emulator/riscv_sim_RV32 c_emulator/riscv_sim_RV64 c_emulator/riscv_rvfi
+ -rm -rf ocaml_emulator/_sbuild ocaml_emulator/_build ocaml_emulator/riscv_ocaml_sim_RV32 ocaml_emulator/riscv_ocaml_sim_RV64 ocaml_emulator/tracecmp
-rm -f *.gcno *.gcda
-Holmake cleanAll
+ -rm -f handwritten_support/riscv_extras.vo handwritten_support/riscv_extras.glob handwritten_support/.riscv_extras.aux
ocamlbuild -clean
diff --git a/README.md b/README.md
index 26efe91..8ab9e6c 100644
--- a/README.md
+++ b/README.md
@@ -5,10 +5,10 @@ This repository contains a model of the RISCV architecture written in
[Sail](https://www.cl.cam.ac.uk/~pes20/sail/). It used to be contained
in the [Sail repository](https://github.com/rems-project/sail).
-It currently implements enough of RV64IMAC to boot a conventional OS
-with a terminal output device. Work on a 32-bit model is ongoing.
-The model specifies assembly language formats of the instructions,
-the corresponding encoders and decoders, and the instruction semantics.
+It currently implements enough of RV32IMAC and RV64IMAC to boot a
+conventional OS with a terminal output device. The model specifies
+assembly language formats of the instructions, the corresponding
+encoders and decoders, and the instruction semantics.
Directory Structure
-------------------
@@ -18,7 +18,7 @@ sail-riscv
|
+---- model // Sail specification modules
|
-+---- generated_definitions // Files generated by Sail
++---- generated_definitions // Files generated by Sail, in RV32 and RV64 subdirectories
| |
| +---- c
| +---- ocaml
@@ -36,8 +36,10 @@ sail-riscv
+---- doc // documentation, including a reading-guide
|
+---- test // test files
- |
- +---- riscv-tests // snapshot of tests from the riscv/riscv-tests github repo
+| |
+| +---- riscv-tests // snapshot of tests from the riscv/riscv-tests github repo
+|
++---- os-boot // information and sample files for booting OS images
```
Documentation
@@ -54,90 +56,79 @@ The files in the OCaml and C simulators implement ELF-loading and the
platform devices, define the physical memory map, and use command-line
options to select implementation-specific ISA choices.
+Provers
+-------
+
+The files under `handwritten_support` provide library definitions for
+Coq, Isabelle and HOL4.
+
Building the model
------------------
-Install Sail via Opam, or build Sail from source and have SAIL_DIR in
+Install Sail via Opam, or build Sail from source and have `SAIL_DIR` in
your environment pointing to its top-level directory.
```
$ make
```
-will build the OCaml simulator in `ocaml_emulator/riscv_ocaml_sim`, the C simulator in
-`c_emulator/riscv_sim`, the Isabelle model in `generated_definitions/isabelle/Riscv.thy`, the Coq
-model in `generated_definitions/coq/riscv.v`, and the HOL4 model in
-`generated_definitions/hol4/riscvScript.sml`.
-
-The Makefile targets `riscv_isa_build`, `riscv_coq_build`, and
-`riscv_hol_build` invoke the respective prover to process the definitions. We
-have tested Isabelle 2018, Coq 8.8.1, and HOL4 Kananaskis-12.
-
-Executing test binaries
------------------------
-
-The C and OCaml simulators can be used to execute small test RV64 binaries.
+will build the 64-bit OCaml simulator in
+`ocaml_emulator/riscv_ocaml_sim_RV64`, the C simulator in
+`c_emulator/riscv_sim_RV64`, the Isabelle model in
+`generated_definitions/isabelle/RV64/Riscv.thy`, the Coq model in
+`generated_definitions/coq/RV64/riscv.v`, and the HOL4 model in
+`generated_definitions/hol4/RV64/riscvScript.sml`.
+
+One can build either the RV32 or the RV64 model by specifying
+`ARCH=RV32` or `ARCH=RV64` on the `make` line, and using the matching
+target suffix. RV64 is built by default, but the RV32 model can be
+built using:
```
-$ ./ocaml_emulator/riscv_ocaml_sim <elf-file>
-$ ./c_emulator/riscv_sim <elf-file>
+$ ARCH=RV32 make
```
-Some information on additional configuration options for each simulator is available
-from `./ocaml_emulator/riscv_ocaml_sim -h` and `./c_emulator/riscv_sim -h`.
-Booting Linux with the C backend
---------------------------------
+which creates the 32-bit OCaml simulator in
+`ocaml_emulator/riscv_ocaml_sim_RV32`, and the C simulator in
+`c_emulator/riscv_sim_RV32`, and the prover models in the
+corresponding `RV32` subdirectories.
-The C model needs an ELF-version of the BBL (Berkeley-Boot-Loader)
-that contains the Linux kernel as an embedded payload. It also needs
-a DTB (device-tree blob) file describing the platform (say in the file
-`spike.dtb`). Once those are available (see below for suggestions),
-the model should be run as:
+The Makefile targets `riscv_isa_build`, `riscv_coq_build`, and
+`riscv_hol_build` invoke the respective prover to process the
+definitions. We have tested Isabelle 2018, Coq 8.8.1, and HOL4
+Kananaskis-12. When building these targets, please make sure the
+corresponding prover libraries in the Sail directory
+(`$SAIL_DIR/lib/$prover`) are up-to-date and built, e.g. by running
+`make` in those directories.
-```
-$ ./c_emulator/riscv_sim -t console.log -b spike.dtb bbl > execution-trace.log 2>&1 &
-$ tail -f console.log
-```
-The `console.log` file contains the console boot messages. For maximum
-performance and benchmarking a model without any execution tracing is
-available on the optimize branch (`git checkout optimize`) of this
-repository. This currently requires the latest Sail built from source.
+Executing test binaries
+-----------------------
-Booting Linux with the OCaml backend
-------------------------------------
+The C and OCaml simulators can be used to execute small test binaries.
-The OCaml model only needs the ELF-version of the BBL, since it can generate its
-own DTB.
```
-$ ./ocaml_emulator/riscv_ocaml_sim bbl > execution-trace.log 2> console.log
+$ ./ocaml_emulator/riscv_ocaml_sim_<arch> <elf-file>
+$ ./c_emulator/riscv_sim_<arch> <elf-file>
```
-Generating input files for Linux boot
--------------------------------------
+A suite of RV32 and RV64 test programs derived from the
+[`riscv-tests`](https://github.com/riscv/riscv-tests) test-suite is
+included under [test/riscv-tests/](test/riscv-tests/). The test-suite
+can be run using `test/run_tests.sh`.
-One could directly build Linux and the toolchain using
-`https://github.com/sifive/freedom-u-sdk`. The built `bbl`
-will be available in `./work/riscv-pk/bbl`. You will need to configure
-a kernel that can be booted on Spike; in particular, it should be
-configured to use the HTIF console.
+Configuring platform options
+----------------------------
-The DTB can be generated using Spike and the DeviceTree compiler
-`dtc` as:
+Some information on additional configuration options for each
+simulator is available from `./ocaml_emulator/riscv_ocaml_sim_<arch>
+-h` and `./c_emulator/riscv_sim_<arch> -h`.
-```
-spike --dump-dts . | dtc > spike.dtb
-```
-
-(The '.' above is to work around a minor Spike bug and may not be
-needed in future Spike versions.)
-
-Caveats for OS boot
--------------------
+Some useful options are: configuring whether misaligned accesses trap
+(`--enable-misaligned` for C and `-enable-misaligned` for OCaml), and
+whether page-table walks update PTE bits (`--enable-dirty-update` for C
+and `-enable-dirty-update` for OCaml).
-- Some OS toolchains generate obsolete LR/SC instructions with now
- illegal combinations of `.aq` and `.rl` flags. You can work-around
- this by changing `riscv_mem.sail` to accept these flags.
+Booting OS images
+-----------------
-- One needs to manually ensure that the DTB used for the C model
- accurately describes the physical memory map implemented in the C
- platform. This will not be needed once the C model can generate its
- own DTB.
+For booting operating system images, see the information under the
+[os-boot/](os-boot/) subdirectory.
diff --git a/c_emulator/riscv_platform.c b/c_emulator/riscv_platform.c
index e3c85a8..d1b1f6e 100644
--- a/c_emulator/riscv_platform.c
+++ b/c_emulator/riscv_platform.c
@@ -2,6 +2,7 @@
#include "rts.h"
#include "riscv_prelude.h"
#include "riscv_platform_impl.h"
+#include "riscv_sail.h"
/* This file contains the definitions of the C externs of Sail model. */
@@ -46,12 +47,21 @@ unit load_reservation(mach_bits addr)
bool speculate_conditional(unit u)
{ return true; }
+static mach_bits check_mask(void)
+{
+ return (zxlen_val == 32) ? 0x00000000FFFFFFFF : -1;
+}
+
bool match_reservation(mach_bits addr)
-{ /*
- fprintf(stderr, "reservation(%c): %0" PRIx64 ", key=%0" PRIx64 "\n",
- reservation_valid ? 'v' : 'i', reservation, addr);
+{
+ mach_bits mask = check_mask();
+ bool ret = reservation_valid && (reservation & mask) == (addr & mask);
+ /*
+ fprintf(stderr, "reservation(%c): %0" PRIx64 ", key=%0" PRIx64 ": %s\n",
+ reservation_valid ? 'v' : 'i', reservation, addr, ret ? "ok" : "fail");
*/
- return reservation_valid && reservation == addr;
+
+ return ret;
}
unit cancel_reservation(unit u)
diff --git a/c_emulator/riscv_platform_impl.c b/c_emulator/riscv_platform_impl.c
index 04a661c..ed32979 100644
--- a/c_emulator/riscv_platform_impl.c
+++ b/c_emulator/riscv_platform_impl.c
@@ -9,7 +9,7 @@ bool rv_enable_misaligned = false;
bool rv_mtval_has_illegal_inst_bits = false;
uint64_t rv_ram_base = UINT64_C(0x80000000);
-uint64_t rv_ram_size = UINT64_C(0x80000000);
+uint64_t rv_ram_size = UINT64_C(0x4000000);
uint64_t rv_rom_base = UINT64_C(0x1000);
uint64_t rv_rom_size = UINT64_C(0x100);
diff --git a/c_emulator/riscv_platform_impl.h b/c_emulator/riscv_platform_impl.h
index 85e25c9..2e59fd8 100644
--- a/c_emulator/riscv_platform_impl.h
+++ b/c_emulator/riscv_platform_impl.h
@@ -6,7 +6,6 @@
/* Settings of the platform implementation. */
#define DEFAULT_RSTVEC 0x00001000
-#define SAIL_XLEN 64
extern bool rv_enable_dirty_update;
extern bool rv_enable_misaligned;
diff --git a/c_emulator/riscv_sail.h b/c_emulator/riscv_sail.h
index 424b64b..a02482e 100644
--- a/c_emulator/riscv_sail.h
+++ b/c_emulator/riscv_sail.h
@@ -12,8 +12,7 @@ struct zMisa zmisa;
void model_init(void);
void model_fini(void);
-unit zinit_platform(unit);
-unit zinit_sys(unit);
+unit zinit_model(unit);
bool zstep(sail_int);
unit ztick_clock(unit);
unit ztick_platform(unit);
@@ -28,6 +27,7 @@ unit zrvfi_halt_exec_packet(unit);
void zrvfi_get_exec_packet(sail_bits *rop, unit);
#endif
+extern mach_bits zxlen_val;
extern bool zhtif_done;
extern mach_bits zhtif_exit_code;
extern bool have_exception;
diff --git a/c_emulator/riscv_sim.c b/c_emulator/riscv_sim.c
index 2a70167..7be7fce 100644
--- a/c_emulator/riscv_sim.c
+++ b/c_emulator/riscv_sim.c
@@ -24,6 +24,9 @@
struct tv_spike_t;
#endif
+const char *RV64ISA = "RV64IMAC";
+const char *RV32ISA = "RV32IMAC";
+
/* Selected CSRs from riscv-isa-sim/riscv/encoding.h */
#define CSR_STVEC 0x105
#define CSR_SEPC 0x141
@@ -58,6 +61,10 @@ static int rvfi_dii_sock;
unsigned char *spike_dtb = NULL;
size_t spike_dtb_len = 0;
+char *sig_file = NULL;
+uint64_t mem_sig_start = 0;
+uint64_t mem_sig_end = 0;
+
bool config_print_instr = true;
bool config_print_reg = true;
bool config_print_mem_access = true;
@@ -67,7 +74,7 @@ struct timeval init_start, init_end, run_end;
int total_insns = 0;
static struct option options[] = {
- {"enable-dirty", no_argument, 0, 'd'},
+ {"enable-dirty-update", no_argument, 0, 'd'},
{"enable-misaligned", no_argument, 0, 'm'},
{"ram-size", required_argument, 0, 'z'},
{"disable-compressed", no_argument, 0, 'C'},
@@ -76,6 +83,8 @@ static struct option options[] = {
{"device-tree-blob", required_argument, 0, 'b'},
{"terminal-log", required_argument, 0, 't'},
{"show-times", required_argument, 0, 'p'},
+ {"report-arch", no_argument, 0, 'a'},
+ {"test-signature", required_argument, 0, 'T'},
#ifdef RVFI_DII
{"rvfi-dii", required_argument, 0, 'r'},
#endif
@@ -98,11 +107,23 @@ static void print_usage(const char *argv0, int ec)
exit(ec);
}
+static void report_arch(void)
+{
+ fprintf(stdout, "RV%" PRIu64 "\n", zxlen_val);
+ exit(0);
+}
+
+static bool is_32bit_model(void)
+{
+ return zxlen_val == 32;
+}
+
static void dump_dts(void)
{
#ifdef ENABLE_SPIKE
size_t dts_len = 0;
- struct tv_spike_t *s = tv_init("RV64IMAC", rv_ram_size, 0);
+ const char *isa = is_32bit_model() ? RV32ISA : RV64ISA;
+ struct tv_spike_t *s = tv_init(isa, rv_ram_size, 0);
tv_get_dts(s, NULL, &dts_len);
if (dts_len > 0) {
unsigned char *dts = (unsigned char *)malloc(dts_len + 1);
@@ -143,7 +164,7 @@ static void read_dtb(const char *path)
munmap(m, st.st_size);
close(fd);
- fprintf(stdout, "Read %ld bytes of DTB from %s.\n", dtb_len, path);
+ fprintf(stdout, "Read %" PRIi64 " bytes of DTB from %s.\n", dtb_len, path);
}
char *process_args(int argc, char **argv)
@@ -151,9 +172,12 @@ char *process_args(int argc, char **argv)
int c, idx = 1;
uint64_t ram_size = 0;
while(true) {
- c = getopt_long(argc, argv, "dmCspz:b:t:v:hr:", options, &idx);
+ c = getopt_long(argc, argv, "admCspz:b:t:v:hr:T:", options, &idx);
if (c == -1) break;
switch (c) {
+ case 'a':
+ report_arch();
+ break;
case 'd':
fprintf(stderr, "enabling dirty update.\n");
rv_enable_dirty_update = true;
@@ -167,6 +191,7 @@ char *process_args(int argc, char **argv)
break;
case 'i':
rv_mtval_has_illegal_inst_bits = true;
+ break;
case 's':
do_dump_dts = true;
break;
@@ -176,7 +201,7 @@ char *process_args(int argc, char **argv)
case 'z':
ram_size = atol(optarg);
if (ram_size) {
- fprintf(stderr, "setting ram-size to %lu MB\n", ram_size);
+ fprintf(stderr, "setting ram-size to %" PRIu64 " MB\n", ram_size);
rv_ram_size = ram_size << 20;
}
break;
@@ -186,6 +211,9 @@ char *process_args(int argc, char **argv)
case 't':
term_log = strdup(optarg);
break;
+ case 'T':
+ sig_file = strdup(optarg);
+ break;
case 'h':
print_usage(argv[0], 0);
break;
@@ -204,7 +232,7 @@ char *process_args(int argc, char **argv)
#ifdef RVFI_DII
if (idx > argc || (idx == argc && !rvfi_dii)) print_usage(argv[0], 0);
#else
- if (idx >= argc) print_usage(argv[0], 0);
+ if (optind >= argc) print_usage(argv[0], 0);
#endif
if (term_log == NULL) term_log = strdup("term.log");
if (dtb_file) read_dtb(dtb_file);
@@ -216,22 +244,43 @@ char *process_args(int argc, char **argv)
return argv[optind];
}
+void check_elf(bool is32bit)
+{
+ if (is32bit) {
+ if (zxlen_val != 32) {
+ fprintf(stderr, "32-bit ELF not supported by RV%" PRIu64 " model.\n", zxlen_val);
+ exit(1);
+ }
+ } else {
+ if (zxlen_val != 64) {
+ fprintf(stderr, "64-bit ELF not supported by RV%" PRIu64 " model.\n", zxlen_val);
+ exit(1);
+ }
+ }
+}
uint64_t load_sail(char *f)
{
bool is32bit;
uint64_t entry;
+ uint64_t begin_sig, end_sig;
load_elf(f, &is32bit, &entry);
- if (is32bit) {
- fprintf(stderr, "32-bit RISC-V not yet supported.\n");
- exit(1);
- }
- fprintf(stdout, "ELF Entry @ %lx\n", entry);
+ check_elf(is32bit);
+ fprintf(stdout, "ELF Entry @ 0x%" PRIx64 "\n", entry);
/* locate htif ports */
if (lookup_sym(f, "tohost", &rv_htif_tohost) < 0) {
fprintf(stderr, "Unable to locate htif tohost port.\n");
exit(1);
}
- fprintf(stderr, "tohost located at %0" PRIx64 "\n", rv_htif_tohost);
+ fprintf(stderr, "tohost located at 0x%0" PRIx64 "\n", rv_htif_tohost);
+ /* locate test-signature locations if any */
+ if (!lookup_sym(f, "begin_signature", &begin_sig)) {
+ fprintf(stdout, "begin_signature: 0x%0" PRIx64 "\n", begin_sig);
+ mem_sig_start = begin_sig;
+ }
+ if (!lookup_sym(f, "end_signature", &end_sig)) {
+ fprintf(stdout, "end_signature: 0x%0" PRIx64 "\n", end_sig);
+ mem_sig_end = end_sig;
+ }
return entry;
}
@@ -239,7 +288,8 @@ void init_spike(const char *f, uint64_t entry, uint64_t ram_size)
{
#ifdef ENABLE_SPIKE
bool mismatch = false;
- s = tv_init("RV64IMAC", ram_size, 1);
+ const char *isa = is_32bit_model() ? RV32ISA : RV64ISA;
+ s = tv_init(isa, ram_size, 1);
if (tv_is_dirty_enabled(s) != rv_enable_dirty_update) {
mismatch = true;
fprintf(stderr, "inconsistent enable-dirty-update setting: spike %s, sail %s\n",
@@ -254,7 +304,7 @@ void init_spike(const char *f, uint64_t entry, uint64_t ram_size)
}
if (tv_ram_size(s) != rv_ram_size) {
mismatch = true;
- fprintf(stderr, "inconsistent ram-size setting: spike %lx, sail %lx\n",
+ fprintf(stderr, "inconsistent ram-size setting: spike 0x%" PRIx64 ", sail 0x%" PRIx64 "\n",
tv_ram_size(s), rv_ram_size);
}
if (mismatch) exit(1);
@@ -274,7 +324,7 @@ void init_spike(const char *f, uint64_t entry, uint64_t ram_size)
spike_dtb = (unsigned char *)malloc(spike_dtb_len + 1);
spike_dtb[spike_dtb_len] = '\0';
if (!tv_get_dtb(s, spike_dtb, &spike_dtb_len)) {
- fprintf(stderr, "Got %ld bytes of dtb at %p\n", spike_dtb_len, spike_dtb);
+ fprintf(stderr, "Got %" PRIu64 " bytes of dtb at %p\n", spike_dtb_len, spike_dtb);
} else {
fprintf(stderr, "Error getting DTB from Spike.\n");
exit(1);
@@ -302,7 +352,7 @@ void init_sail_reset_vector(uint64_t entry)
0x297, // auipc t0,0x0
0x28593 + (RST_VEC_SIZE * 4 << 20), // addi a1, t0, &dtb
0xf1402573, // csrr a0, mhartid
- SAIL_XLEN == 32 ?
+ is_32bit_model() ?
0x0182a283u : // lw t0,24(t0)
0x0182b283u, // ld t0,24(t0)
0x28067, // jr t0
@@ -356,11 +406,14 @@ void init_sail_reset_vector(uint64_t entry)
zPC = rv_rom_base;
}
-void init_sail(uint64_t elf_entry)
+void preinit_sail()
{
model_init();
- zinit_platform(UNIT);
- zinit_sys(UNIT);
+}
+
+void init_sail(uint64_t elf_entry)
+{
+ zinit_model(UNIT);
#ifdef RVFI_DII
if (rvfi_dii) {
rv_ram_base = UINT64_C(0x80000000);
@@ -384,8 +437,34 @@ int init_check(struct tv_spike_t *s)
return passed;
}
+void write_signature(const char *file)
+{
+ if (mem_sig_start >= mem_sig_end) {
+ fprintf(stderr, "Invalid signature region [0x%0" PRIx64 ",0x%0" PRIx64 "] to %s.\n",
+ mem_sig_start, mem_sig_end, file);
+ return;
+ }
+ FILE *f = fopen(file, "w");
+ if (!f) {
+ fprintf(stderr, "Cannot open file '%s': %s\n", file, strerror(errno));
+ return;
+ }
+ /* write out words in signature area */
+ for (uint64_t addr = mem_sig_start; addr < mem_sig_end; addr += 4) {
+ /* most-significant byte first */
+ for (int i = 3; i >= 0; i--) {
+ uint8_t byte = (uint8_t) read_mem(addr+i);
+ fprintf(f, "%02x", byte);
+ }
+ fprintf(f, "\n");
+ }
+ fclose(f);
+}
+
void finish(int ec)
{
+ if (sig_file) write_signature(sig_file);
+
model_fini();
#ifdef ENABLE_SPIKE
tv_free(s);
@@ -584,7 +663,7 @@ void run_sail(void)
if (zhtif_done) {
if (!spike_done) {
- fprintf(stdout, "Sail done (exit-code %ld), but not Spike!\n", zhtif_exit_code);
+ fprintf(stdout, "Sail done (exit-code %" PRIi64 "), but not Spike!\n", zhtif_exit_code);
exit(1);
}
} else {
@@ -603,7 +682,7 @@ void run_sail(void)
if (zhtif_exit_code == 0)
fprintf(stdout, "SUCCESS\n");
else
- fprintf(stdout, "FAILURE: %lu\n", zhtif_exit_code);
+ fprintf(stdout, "FAILURE: %" PRIi64 "\n", zhtif_exit_code);
}
if (insn_cnt == rv_insns_per_tick) {
@@ -645,6 +724,9 @@ void init_logs()
int main(int argc, char **argv)
{
+ // Initialize model so that we can check or report its architecture.
+ preinit_sail();
+
char *file = process_args(argc, argv);
init_logs();
diff --git a/doc/ReadingGuide.md b/doc/ReadingGuide.md
index f1eb1ab..e6ad5f5 100644
--- a/doc/ReadingGuide.md
+++ b/doc/ReadingGuide.md
@@ -7,10 +7,15 @@ manual](https://github.com/rems-project/sail/blob/sail2/manual.pdf) handy.
The model contains the following Sail modules in the `model` directory:
-- `prelude.sail` contains useful Sail library functions. This file
- should be referred to as needed. The lowest level memory access
- primitives are defined in this file, and are implemented
- by the various Sail backends.
+- `riscv_xlen32.sail` and `riscv_xlen64.sail` define `xlen` for RV32
+ and RV64. One of them is chosen during the build using the ARCH
+ variable.
+
+- `prelude_*.sail` contains useful Sail library functions. These
+ files should be referred to as needed. The lowest level memory
+ access primitives are defined in `prelude_mem.sail`, and are
+ implemented by the various Sail backends. `prelude_mem.sail`
+ currently depends on the value of `xlen`.
- `riscv_types.sail` contains some basic RISC-V definitions. This
file should be read first, since it provides basic definitions that
@@ -48,10 +53,14 @@ The model contains the following Sail modules in the `model` directory:
appropriate access fault. This file also contains definitions that
are used in the weak memory concurrency model.
-- `riscv_vmem.sail` describes the S-mode address translation. It
- contains the definitions and processing of the page-table entries
- and their various permission and status bits, the specification of
- page-table walks, and the selection of the address translation mode.
+- The `riscv_vmem_*.sail` files describe the S-mode address
+ translation. `riscv_vmem_common.sail` contains the definitions and
+ processing of the page-table entries and their various permission
+ and status bits. `riscv_vmem_sv32.sail`, `riscv_vmem_sv39.sail`,
+ and `riscv_vmem_sv48.sail` contain the specifications for the
+ corresponding page-table walks, and `riscv_vmem_rv32.sail` and
+ `riscv_vmem_rv64.sail` describe the top-level address translation
+ for the corresponding architectures.
- Files matching `riscv_insts_*.sail` capture the instruction
definitions and their assembly language formats. Each file contains
diff --git a/handwritten_support/riscv_extras.lem b/handwritten_support/riscv_extras.lem
index 2919d77..ed572be 100644
--- a/handwritten_support/riscv_extras.lem
+++ b/handwritten_support/riscv_extras.lem
@@ -49,15 +49,19 @@ let MEMr_reserved addrsize size hexRAM addr = read_mem Read_RISCV
let MEMr_reserved_acquire addrsize size hexRAM addr = read_mem Read_RISCV_reserved_acquire addr size
let MEMr_reserved_strong_acquire addrsize size hexRAM addr = read_mem Read_RISCV_reserved_strong_acquire addr size
-val write_ram : forall 'rv 'a 'b 'e. Size 'a, Size 'b =>
- integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
-let write_ram addrsize size hexRAM address value =
- write_mem Write_plain address size value
-
-val read_ram : forall 'rv 'a 'b 'e. Size 'a, Size 'b =>
- integer -> integer -> bitvector 'a -> bitvector 'a -> monad 'rv (bitvector 'b) 'e
-let read_ram addrsize size hexRAM address =
- read_mem Read_plain address size
+val MEMw : forall 'rv 'a 'b 'e. Size 'a, Size 'b => integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
+val MEMw_release : forall 'rv 'a 'b 'e. Size 'a, Size 'b => integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
+val MEMw_strong_release : forall 'rv 'a 'b 'e. Size 'a, Size 'b => integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
+val MEMw_conditional : forall 'rv 'a 'b 'e. Size 'a, Size 'b => integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
+val MEMw_conditional_release : forall 'rv 'a 'b 'e. Size 'a, Size 'b => integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
+val MEMw_conditional_strong_release : forall 'rv 'a 'b 'e. Size 'a, Size 'b => integer -> integer -> bitvector 'a -> bitvector 'a -> bitvector 'b -> monad 'rv bool 'e
+
+let MEMw addrsize size hexRAM addr = write_mem Write_plain addr size
+let MEMw_release addrsize size hexRAM addr = write_mem Write_RISCV_release addr size
+let MEMw_strong_release addrsize size hexRAM addr = write_mem Write_RISCV_strong_release addr size
+let MEMw_conditional addrsize size hexRAM addr = write_mem Write_RISCV_conditional addr size
+let MEMw_conditional_release addrsize size hexRAM addr = write_mem Write_RISCV_conditional_release addr size
+let MEMw_conditional_strong_release addrsize size hexRAM addr = write_mem Write_RISCV_conditional_strong_release addr size
val load_reservation : forall 'a. Size 'a => bitvector 'a -> unit
let load_reservation addr = ()
diff --git a/model/main.sail b/model/main.sail
index a72eb3f..c349b3f 100644
--- a/model/main.sail
+++ b/model/main.sail
@@ -3,11 +3,10 @@ val main : unit -> unit effect {barr, eamem, escape, exmem, rmem, rreg, wmv, wre
function main () = {
// PC = __GetSlice_int(64, elf_entry(), 0);
- PC = zero_extend(0x1000, 64);
+ PC = sail_zero_extend(0x1000, sizeof(xlen));
print_bits("PC = ", PC);
try {
- init_platform();
- init_sys();
+ init_model();
loop()
} catch {
Error_not_implemented(s) => print_string("Error: Not implemented: ", s),
diff --git a/model/main_rvfi.sail b/model/main_rvfi.sail
index 0ba4acf..10b5428 100644
--- a/model/main_rvfi.sail
+++ b/model/main_rvfi.sail
@@ -4,19 +4,19 @@ val rvfi_fetch : unit -> FetchResult effect {escape, rmem, rreg, wmv, wreg}
function rvfi_fetch() =
/* check for legal PC */
- if (PC[0] != 0b0 | (PC[1] != 0b0 & (~ (haveRVC()))))
+ if (PC[0] != 0b0 | (PC[1] != 0b0 & (~ (haveRVC()))))
then F_Error(E_Fetch_Addr_Align, PC)
else {
let i = rvfi_instruction.rvfi_insn();
rvfi_exec->rvfi_order() = minstret;
rvfi_exec->rvfi_pc_rdata() = PC;
- rvfi_exec->rvfi_insn() = zero_extend(i,64);
+ rvfi_exec->rvfi_insn() = sail_zero_extend(i,64);
/* TODO: should we write these even if they're not really registers? */
rvfi_exec->rvfi_rs1_data() = X(i[19 .. 15]);
rvfi_exec->rvfi_rs2_data() = X(i[24 .. 20]);
- rvfi_exec->rvfi_rs1_addr() = zero_extend(i[19 .. 15],8);
- rvfi_exec->rvfi_rs2_addr() = zero_extend(i[24 .. 20],8);
- if (i[1 .. 0] == 0b11)
+ rvfi_exec->rvfi_rs1_addr() = sail_zero_extend(i[19 .. 15],8);
+ rvfi_exec->rvfi_rs2_addr() = sail_zero_extend(i[24 .. 20],8);
+ if (i[1 .. 0] == 0b11)
then F_Base(i)
else F_RVC(i[15 .. 0])
}
@@ -29,7 +29,7 @@ val rvfi_step : int -> bool effect {barr, eamem, escape, exmem, rmem, rreg, wmv,
function rvfi_step(step_no) = {
minstret_written = false; /* see note for minstret */
let (retired, stepped) : (bool, bool) =
- match curInterrupt(cur_privilege, mip, mie, mideleg) {
+ match dispatchInterrupt(cur_privilege) {
Some(intr, priv) => {
print_bits("Handling interrupt: ", intr);
handle_interrupt(intr, priv);
@@ -51,8 +51,13 @@ function rvfi_step(step_no) = {
},
Some(ast) => {
print("[" ^ string_of_int(step_no) ^ "] [" ^ cur_privilege ^ "]: " ^ BitStr(PC) ^ " (" ^ BitStr(h) ^ ") " ^ ast);
- nextPC = PC + 2;
- (execute(ast), true)
+ /* check for RVC once here instead of every RVC execute clause. */
+ if haveRVC() then {
+ nextPC = PC + 2;
+ (execute(ast), true)
+ } else {
+ (false, true)
+ }
}
}
},
@@ -95,11 +100,10 @@ function main () = {
rvfi_zero_exec_packet();
rvfi_halt_exec_packet();
let _ = rvfi_get_exec_packet();
- PC = zero_extend(0x1000, 64);
+ PC = sail_zero_extend(0x1000, 64);
print_bits("PC = ", PC);
try {
- init_platform();
- init_sys();
+ init_model();
loop()
} catch {
Error_not_implemented(s) => print_string("Error: Not implemented: ", s),
diff --git a/model/prelude.sail b/model/prelude.sail
index 806562c..73f96b0 100644
--- a/model/prelude.sail
+++ b/model/prelude.sail
@@ -1,779 +1,37 @@
default Order dec
-$include <flow.sail>
-
-type bits ('n : Int) = vector('n, dec, bit)
-union option ('a : Type) = {None : unit, Some : 'a}
-
+$include <option.sail>
+$include <arith.sail>
+$include <string.sail>
+$include <vector_dec.sail>
$include <regfp.sail>
-val spc : unit <-> string
-val opt_spc : unit <-> string
-val def_spc : unit <-> string
-
-val hex_bits : forall 'n . (atom('n), bits('n)) <-> string
-
val string_startswith = "string_startswith" : (string, string) -> bool
val string_drop = "string_drop" : (string, nat) -> string
val string_take = "string_take" : (string, nat) -> string
val string_length = "string_length" : string -> nat
val string_append = {c: "concat_str", _: "string_append"} : (string, string) -> string
-val maybe_int_of_prefix = "maybe_int_of_prefix" : string -> option((int, nat))
-val maybe_nat_of_prefix = "maybe_nat_of_prefix" : string -> option((nat, nat))
-val maybe_int_of_string = "maybe_int_of_string" : string -> option(int)
-
-/* Python:
-f = """val hex_bits_{0} : bits({0}) <-> string
-val hex_bits_{0}_forwards = "decimal_string_of_bits" : bits({0}) -> string
-val hex_bits_{0}_forwards_matches : bits({0}) -> bool
-function hex_bits_{0}_forwards_matches bv = true
-val "hex_bits_{0}_matches_prefix" : string -> option((bits({0}), nat))
-val hex_bits_{0}_backwards_matches : string -> bool
-function hex_bits_{0}_backwards_matches s = match s {{
- s if match hex_bits_{0}_matches_prefix(s) {{
- Some (_, n) if n == string_length(s) => true,
- _ => false
- }} => true,
- _ => false
-}}
-val hex_bits_{0}_backwards : string -> bits({0})
-function hex_bits_{0}_backwards s =
- match hex_bits_{0}_matches_prefix(s) {{
- Some (bv, n) if n == string_length(s) => bv
- }}
-"""
-
-for i in list(range(1, 34)) + [48, 64]:
- print(f.format(i))
-
-*/
-val hex_bits_1 : bits(1) <-> string
-val hex_bits_1_forwards = "decimal_string_of_bits" : bits(1) -> string
-val hex_bits_1_forwards_matches : bits(1) -> bool
-function hex_bits_1_forwards_matches bv = true
-val "hex_bits_1_matches_prefix" : string -> option((bits(1), nat))
-val hex_bits_1_backwards_matches : string -> bool
-function hex_bits_1_backwards_matches s = match s {
- s if match hex_bits_1_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_1_backwards : string -> bits(1)
-function hex_bits_1_backwards s =
- match hex_bits_1_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_2 : bits(2) <-> string
-val hex_bits_2_forwards = "decimal_string_of_bits" : bits(2) -> string
-val hex_bits_2_forwards_matches : bits(2) -> bool
-function hex_bits_2_forwards_matches bv = true
-val "hex_bits_2_matches_prefix" : string -> option((bits(2), nat))
-val hex_bits_2_backwards_matches : string -> bool
-function hex_bits_2_backwards_matches s = match s {
- s if match hex_bits_2_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_2_backwards : string -> bits(2)
-function hex_bits_2_backwards s =
- match hex_bits_2_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_3 : bits(3) <-> string
-val hex_bits_3_forwards = "decimal_string_of_bits" : bits(3) -> string
-val hex_bits_3_forwards_matches : bits(3) -> bool
-function hex_bits_3_forwards_matches bv = true
-val "hex_bits_3_matches_prefix" : string -> option((bits(3), nat))
-val hex_bits_3_backwards_matches : string -> bool
-function hex_bits_3_backwards_matches s = match s {
- s if match hex_bits_3_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_3_backwards : string -> bits(3)
-function hex_bits_3_backwards s =
- match hex_bits_3_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_4 : bits(4) <-> string
-val hex_bits_4_forwards = "decimal_string_of_bits" : bits(4) -> string
-val hex_bits_4_forwards_matches : bits(4) -> bool
-function hex_bits_4_forwards_matches bv = true
-val "hex_bits_4_matches_prefix" : string -> option((bits(4), nat))
-val hex_bits_4_backwards_matches : string -> bool
-function hex_bits_4_backwards_matches s = match s {
- s if match hex_bits_4_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_4_backwards : string -> bits(4)
-function hex_bits_4_backwards s =
- match hex_bits_4_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_5 : bits(5) <-> string
-val hex_bits_5_forwards = "decimal_string_of_bits" : bits(5) -> string
-val hex_bits_5_forwards_matches : bits(5) -> bool
-function hex_bits_5_forwards_matches bv = true
-val "hex_bits_5_matches_prefix" : string -> option((bits(5), nat))
-val hex_bits_5_backwards_matches : string -> bool
-function hex_bits_5_backwards_matches s = match s {
- s if match hex_bits_5_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_5_backwards : string -> bits(5)
-function hex_bits_5_backwards s =
- match hex_bits_5_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_6 : bits(6) <-> string
-val hex_bits_6_forwards = "decimal_string_of_bits" : bits(6) -> string
-val hex_bits_6_forwards_matches : bits(6) -> bool
-function hex_bits_6_forwards_matches bv = true
-val "hex_bits_6_matches_prefix" : string -> option((bits(6), nat))
-val hex_bits_6_backwards_matches : string -> bool
-function hex_bits_6_backwards_matches s = match s {
- s if match hex_bits_6_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_6_backwards : string -> bits(6)
-function hex_bits_6_backwards s =
- match hex_bits_6_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_7 : bits(7) <-> string
-val hex_bits_7_forwards = "decimal_string_of_bits" : bits(7) -> string
-val hex_bits_7_forwards_matches : bits(7) -> bool
-function hex_bits_7_forwards_matches bv = true
-val "hex_bits_7_matches_prefix" : string -> option((bits(7), nat))
-val hex_bits_7_backwards_matches : string -> bool
-function hex_bits_7_backwards_matches s = match s {
- s if match hex_bits_7_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_7_backwards : string -> bits(7)
-function hex_bits_7_backwards s =
- match hex_bits_7_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_8 : bits(8) <-> string
-val hex_bits_8_forwards = "decimal_string_of_bits" : bits(8) -> string
-val hex_bits_8_forwards_matches : bits(8) -> bool
-function hex_bits_8_forwards_matches bv = true
-val "hex_bits_8_matches_prefix" : string -> option((bits(8), nat))
-val hex_bits_8_backwards_matches : string -> bool
-function hex_bits_8_backwards_matches s = match s {
- s if match hex_bits_8_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_8_backwards : string -> bits(8)
-function hex_bits_8_backwards s =
- match hex_bits_8_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_9 : bits(9) <-> string
-val hex_bits_9_forwards = "decimal_string_of_bits" : bits(9) -> string
-val hex_bits_9_forwards_matches : bits(9) -> bool
-function hex_bits_9_forwards_matches bv = true
-val "hex_bits_9_matches_prefix" : string -> option((bits(9), nat))
-val hex_bits_9_backwards_matches : string -> bool
-function hex_bits_9_backwards_matches s = match s {
- s if match hex_bits_9_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_9_backwards : string -> bits(9)
-function hex_bits_9_backwards s =
- match hex_bits_9_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_10 : bits(10) <-> string
-val hex_bits_10_forwards = "decimal_string_of_bits" : bits(10) -> string
-val hex_bits_10_forwards_matches : bits(10) -> bool
-function hex_bits_10_forwards_matches bv = true
-val "hex_bits_10_matches_prefix" : string -> option((bits(10), nat))
-val hex_bits_10_backwards_matches : string -> bool
-function hex_bits_10_backwards_matches s = match s {
- s if match hex_bits_10_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_10_backwards : string -> bits(10)
-function hex_bits_10_backwards s =
- match hex_bits_10_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_11 : bits(11) <-> string
-val hex_bits_11_forwards = "decimal_string_of_bits" : bits(11) -> string
-val hex_bits_11_forwards_matches : bits(11) -> bool
-function hex_bits_11_forwards_matches bv = true
-val "hex_bits_11_matches_prefix" : string -> option((bits(11), nat))
-val hex_bits_11_backwards_matches : string -> bool
-function hex_bits_11_backwards_matches s = match s {
- s if match hex_bits_11_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_11_backwards : string -> bits(11)
-function hex_bits_11_backwards s =
- match hex_bits_11_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_12 : bits(12) <-> string
-val hex_bits_12_forwards = "decimal_string_of_bits" : bits(12) -> string
-val hex_bits_12_forwards_matches : bits(12) -> bool
-function hex_bits_12_forwards_matches bv = true
-val "hex_bits_12_matches_prefix" : string -> option((bits(12), nat))
-val hex_bits_12_backwards_matches : string -> bool
-function hex_bits_12_backwards_matches s = match s {
- s if match hex_bits_12_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_12_backwards : string -> bits(12)
-function hex_bits_12_backwards s =
- match hex_bits_12_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_13 : bits(13) <-> string
-val hex_bits_13_forwards = "decimal_string_of_bits" : bits(13) -> string
-val hex_bits_13_forwards_matches : bits(13) -> bool
-function hex_bits_13_forwards_matches bv = true
-val "hex_bits_13_matches_prefix" : string -> option((bits(13), nat))
-val hex_bits_13_backwards_matches : string -> bool
-function hex_bits_13_backwards_matches s = match s {
- s if match hex_bits_13_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_13_backwards : string -> bits(13)
-function hex_bits_13_backwards s =
- match hex_bits_13_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_14 : bits(14) <-> string
-val hex_bits_14_forwards = "decimal_string_of_bits" : bits(14) -> string
-val hex_bits_14_forwards_matches : bits(14) -> bool
-function hex_bits_14_forwards_matches bv = true
-val "hex_bits_14_matches_prefix" : string -> option((bits(14), nat))
-val hex_bits_14_backwards_matches : string -> bool
-function hex_bits_14_backwards_matches s = match s {
- s if match hex_bits_14_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_14_backwards : string -> bits(14)
-function hex_bits_14_backwards s =
- match hex_bits_14_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_15 : bits(15) <-> string
-val hex_bits_15_forwards = "decimal_string_of_bits" : bits(15) -> string
-val hex_bits_15_forwards_matches : bits(15) -> bool
-function hex_bits_15_forwards_matches bv = true
-val "hex_bits_15_matches_prefix" : string -> option((bits(15), nat))
-val hex_bits_15_backwards_matches : string -> bool
-function hex_bits_15_backwards_matches s = match s {
- s if match hex_bits_15_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_15_backwards : string -> bits(15)
-function hex_bits_15_backwards s =
- match hex_bits_15_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_16 : bits(16) <-> string
-val hex_bits_16_forwards = "decimal_string_of_bits" : bits(16) -> string
-val hex_bits_16_forwards_matches : bits(16) -> bool
-function hex_bits_16_forwards_matches bv = true
-val "hex_bits_16_matches_prefix" : string -> option((bits(16), nat))
-val hex_bits_16_backwards_matches : string -> bool
-function hex_bits_16_backwards_matches s = match s {
- s if match hex_bits_16_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_16_backwards : string -> bits(16)
-function hex_bits_16_backwards s =
- match hex_bits_16_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_17 : bits(17) <-> string
-val hex_bits_17_forwards = "decimal_string_of_bits" : bits(17) -> string
-val hex_bits_17_forwards_matches : bits(17) -> bool
-function hex_bits_17_forwards_matches bv = true
-val "hex_bits_17_matches_prefix" : string -> option((bits(17), nat))
-val hex_bits_17_backwards_matches : string -> bool
-function hex_bits_17_backwards_matches s = match s {
- s if match hex_bits_17_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_17_backwards : string -> bits(17)
-function hex_bits_17_backwards s =
- match hex_bits_17_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_18 : bits(18) <-> string
-val hex_bits_18_forwards = "decimal_string_of_bits" : bits(18) -> string
-val hex_bits_18_forwards_matches : bits(18) -> bool
-function hex_bits_18_forwards_matches bv = true
-val "hex_bits_18_matches_prefix" : string -> option((bits(18), nat))
-val hex_bits_18_backwards_matches : string -> bool
-function hex_bits_18_backwards_matches s = match s {
- s if match hex_bits_18_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_18_backwards : string -> bits(18)
-function hex_bits_18_backwards s =
- match hex_bits_18_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_19 : bits(19) <-> string
-val hex_bits_19_forwards = "decimal_string_of_bits" : bits(19) -> string
-val hex_bits_19_forwards_matches : bits(19) -> bool
-function hex_bits_19_forwards_matches bv = true
-val "hex_bits_19_matches_prefix" : string -> option((bits(19), nat))
-val hex_bits_19_backwards_matches : string -> bool
-function hex_bits_19_backwards_matches s = match s {
- s if match hex_bits_19_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_19_backwards : string -> bits(19)
-function hex_bits_19_backwards s =
- match hex_bits_19_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_20 : bits(20) <-> string
-val hex_bits_20_forwards = "decimal_string_of_bits" : bits(20) -> string
-val hex_bits_20_forwards_matches : bits(20) -> bool
-function hex_bits_20_forwards_matches bv = true
-val "hex_bits_20_matches_prefix" : string -> option((bits(20), nat))
-val hex_bits_20_backwards_matches : string -> bool
-function hex_bits_20_backwards_matches s = match s {
- s if match hex_bits_20_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_20_backwards : string -> bits(20)
-function hex_bits_20_backwards s =
- match hex_bits_20_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_21 : bits(21) <-> string
-val hex_bits_21_forwards = "decimal_string_of_bits" : bits(21) -> string
-val hex_bits_21_forwards_matches : bits(21) -> bool
-function hex_bits_21_forwards_matches bv = true
-val "hex_bits_21_matches_prefix" : string -> option((bits(21), nat))
-val hex_bits_21_backwards_matches : string -> bool
-function hex_bits_21_backwards_matches s = match s {
- s if match hex_bits_21_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_21_backwards : string -> bits(21)
-function hex_bits_21_backwards s =
- match hex_bits_21_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_22 : bits(22) <-> string
-val hex_bits_22_forwards = "decimal_string_of_bits" : bits(22) -> string
-val hex_bits_22_forwards_matches : bits(22) -> bool
-function hex_bits_22_forwards_matches bv = true
-val "hex_bits_22_matches_prefix" : string -> option((bits(22), nat))
-val hex_bits_22_backwards_matches : string -> bool
-function hex_bits_22_backwards_matches s = match s {
- s if match hex_bits_22_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_22_backwards : string -> bits(22)
-function hex_bits_22_backwards s =
- match hex_bits_22_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_23 : bits(23) <-> string
-val hex_bits_23_forwards = "decimal_string_of_bits" : bits(23) -> string
-val hex_bits_23_forwards_matches : bits(23) -> bool
-function hex_bits_23_forwards_matches bv = true
-val "hex_bits_23_matches_prefix" : string -> option((bits(23), nat))
-val hex_bits_23_backwards_matches : string -> bool
-function hex_bits_23_backwards_matches s = match s {
- s if match hex_bits_23_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_23_backwards : string -> bits(23)
-function hex_bits_23_backwards s =
- match hex_bits_23_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_24 : bits(24) <-> string
-val hex_bits_24_forwards = "decimal_string_of_bits" : bits(24) -> string
-val hex_bits_24_forwards_matches : bits(24) -> bool
-function hex_bits_24_forwards_matches bv = true
-val "hex_bits_24_matches_prefix" : string -> option((bits(24), nat))
-val hex_bits_24_backwards_matches : string -> bool
-function hex_bits_24_backwards_matches s = match s {
- s if match hex_bits_24_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_24_backwards : string -> bits(24)
-function hex_bits_24_backwards s =
- match hex_bits_24_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_25 : bits(25) <-> string
-val hex_bits_25_forwards = "decimal_string_of_bits" : bits(25) -> string
-val hex_bits_25_forwards_matches : bits(25) -> bool
-function hex_bits_25_forwards_matches bv = true
-val "hex_bits_25_matches_prefix" : string -> option((bits(25), nat))
-val hex_bits_25_backwards_matches : string -> bool
-function hex_bits_25_backwards_matches s = match s {
- s if match hex_bits_25_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_25_backwards : string -> bits(25)
-function hex_bits_25_backwards s =
- match hex_bits_25_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_26 : bits(26) <-> string
-val hex_bits_26_forwards = "decimal_string_of_bits" : bits(26) -> string
-val hex_bits_26_forwards_matches : bits(26) -> bool
-function hex_bits_26_forwards_matches bv = true
-val "hex_bits_26_matches_prefix" : string -> option((bits(26), nat))
-val hex_bits_26_backwards_matches : string -> bool
-function hex_bits_26_backwards_matches s = match s {
- s if match hex_bits_26_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_26_backwards : string -> bits(26)
-function hex_bits_26_backwards s =
- match hex_bits_26_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_27 : bits(27) <-> string
-val hex_bits_27_forwards = "decimal_string_of_bits" : bits(27) -> string
-val hex_bits_27_forwards_matches : bits(27) -> bool
-function hex_bits_27_forwards_matches bv = true
-val "hex_bits_27_matches_prefix" : string -> option((bits(27), nat))
-val hex_bits_27_backwards_matches : string -> bool
-function hex_bits_27_backwards_matches s = match s {
- s if match hex_bits_27_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_27_backwards : string -> bits(27)
-function hex_bits_27_backwards s =
- match hex_bits_27_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_28 : bits(28) <-> string
-val hex_bits_28_forwards = "decimal_string_of_bits" : bits(28) -> string
-val hex_bits_28_forwards_matches : bits(28) -> bool
-function hex_bits_28_forwards_matches bv = true
-val "hex_bits_28_matches_prefix" : string -> option((bits(28), nat))
-val hex_bits_28_backwards_matches : string -> bool
-function hex_bits_28_backwards_matches s = match s {
- s if match hex_bits_28_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_28_backwards : string -> bits(28)
-function hex_bits_28_backwards s =
- match hex_bits_28_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_29 : bits(29) <-> string
-val hex_bits_29_forwards = "decimal_string_of_bits" : bits(29) -> string
-val hex_bits_29_forwards_matches : bits(29) -> bool
-function hex_bits_29_forwards_matches bv = true
-val "hex_bits_29_matches_prefix" : string -> option((bits(29), nat))
-val hex_bits_29_backwards_matches : string -> bool
-function hex_bits_29_backwards_matches s = match s {
- s if match hex_bits_29_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_29_backwards : string -> bits(29)
-function hex_bits_29_backwards s =
- match hex_bits_29_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_30 : bits(30) <-> string
-val hex_bits_30_forwards = "decimal_string_of_bits" : bits(30) -> string
-val hex_bits_30_forwards_matches : bits(30) -> bool
-function hex_bits_30_forwards_matches bv = true
-val "hex_bits_30_matches_prefix" : string -> option((bits(30), nat))
-val hex_bits_30_backwards_matches : string -> bool
-function hex_bits_30_backwards_matches s = match s {
- s if match hex_bits_30_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_30_backwards : string -> bits(30)
-function hex_bits_30_backwards s =
- match hex_bits_30_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_31 : bits(31) <-> string
-val hex_bits_31_forwards = "decimal_string_of_bits" : bits(31) -> string
-val hex_bits_31_forwards_matches : bits(31) -> bool
-function hex_bits_31_forwards_matches bv = true
-val "hex_bits_31_matches_prefix" : string -> option((bits(31), nat))
-val hex_bits_31_backwards_matches : string -> bool
-function hex_bits_31_backwards_matches s = match s {
- s if match hex_bits_31_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_31_backwards : string -> bits(31)
-function hex_bits_31_backwards s =
- match hex_bits_31_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_32 : bits(32) <-> string
-val hex_bits_32_forwards = "decimal_string_of_bits" : bits(32) -> string
-val hex_bits_32_forwards_matches : bits(32) -> bool
-function hex_bits_32_forwards_matches bv = true
-val "hex_bits_32_matches_prefix" : string -> option((bits(32), nat))
-val hex_bits_32_backwards_matches : string -> bool
-function hex_bits_32_backwards_matches s = match s {
- s if match hex_bits_32_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_32_backwards : string -> bits(32)
-function hex_bits_32_backwards s =
- match hex_bits_32_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_33 : bits(33) <-> string
-val hex_bits_33_forwards = "decimal_string_of_bits" : bits(33) -> string
-val hex_bits_33_forwards_matches : bits(33) -> bool
-function hex_bits_33_forwards_matches bv = true
-val "hex_bits_33_matches_prefix" : string -> option((bits(33), nat))
-val hex_bits_33_backwards_matches : string -> bool
-function hex_bits_33_backwards_matches s = match s {
- s if match hex_bits_33_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_33_backwards : string -> bits(33)
-function hex_bits_33_backwards s =
- match hex_bits_33_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_48 : bits(48) <-> string
-val hex_bits_48_forwards = "decimal_string_of_bits" : bits(48) -> string
-val hex_bits_48_forwards_matches : bits(48) -> bool
-function hex_bits_48_forwards_matches bv = true
-val "hex_bits_48_matches_prefix" : string -> option((bits(48), nat))
-val hex_bits_48_backwards_matches : string -> bool
-function hex_bits_48_backwards_matches s = match s {
- s if match hex_bits_48_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_48_backwards : string -> bits(48)
-function hex_bits_48_backwards s =
- match hex_bits_48_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val hex_bits_64 : bits(64) <-> string
-val hex_bits_64_forwards = "decimal_string_of_bits" : bits(64) -> string
-val hex_bits_64_forwards_matches : bits(64) -> bool
-function hex_bits_64_forwards_matches bv = true
-val "hex_bits_64_matches_prefix" : string -> option((bits(64), nat))
-val hex_bits_64_backwards_matches : string -> bool
-function hex_bits_64_backwards_matches s = match s {
- s if match hex_bits_64_matches_prefix(s) {
- Some (_, n) if n == string_length(s) => true,
- _ => false
- } => true,
- _ => false
-}
-val hex_bits_64_backwards : string -> bits(64)
-function hex_bits_64_backwards s =
- match hex_bits_64_matches_prefix(s) {
- Some (bv, n) if n == string_length(s) => bv
- }
-
-val eq_vec = {ocaml: "eq_list", interpreter: "eq_list", lem: "eq_vec", coq: "eq_vec", c: "eq_bits"} : forall 'n. (bits('n), bits('n)) -> bool
-
-val eq_string = {c: "eq_string", ocaml: "eq_string", interpreter: "eq_string", lem: "eq", coq: "generic_eq"} : (string, string) -> bool
-
-val eq_real = {ocaml: "eq_real", interpreter: "eq_real", lem: "eq"} : (real, real) -> bool
val eq_anything = {ocaml: "(fun (x, y) -> x = y)", interpreter: "eq_anything", lem: "eq", coq: "generic_eq"} : forall ('a : Type). ('a, 'a) -> bool
-val bitvector_length = {ocaml: "length", interpreter: "length", lem: "length", coq: "length_mword"} : forall 'n. bits('n) -> atom('n)
-val vector_length = {ocaml: "length", interpreter: "length", lem: "length_list", coq: "vec_length"} : forall 'n ('a : Type). vector('n, dec, 'a) -> atom('n)
-val list_length = {ocaml: "length", interpreter: "length", lem: "length_list", coq: "length_list"} : forall ('a : Type). list('a) -> int
-
-overload length = {bitvector_length, vector_length, list_length}
+overload operator == = {eq_string, eq_anything}
val "reg_deref" : forall ('a : Type). register('a) -> 'a effect {rreg}
/* sneaky deref with no effect necessary for bitfield writes */
val _reg_deref = "reg_deref" : forall ('a : Type). register('a) -> 'a
-overload operator == = {eq_vec, eq_string, eq_real, eq_anything}
-
-val vector_subrange = {
- ocaml: "subrange",
- interpreter: "subrange",
- lem: "subrange_vec_dec",
- c: "vector_subrange",
- coq: "subrange_vec_dec"
-} : forall ('n : Int) ('m : Int) ('o : Int), 0 <= 'o <= 'm < 'n.
- (bits('n), atom('m), atom('o)) -> bits('m - 'o + 1)
-/*
-val vector_subrange = {ocaml: "subrange", interpreter: "subrange", lem: "subrange_vec_dec", coq: "subrange_vec_dec"} : forall ('n : Int) ('m : Int) ('o : Int), 'o <= 'm <= 'n.
- (bits('n), atom('m), atom('o)) -> bits('m - ('o - 1))
-*/
-
-val bitvector_access = {c: "bitvector_access", ocaml: "access", interpreter: "access", lem: "access_vec_dec", coq: "access_vec_dec"} : forall ('n : Int) ('m : Int), 0 <= 'm < 'n.
- (bits('n), atom('m)) -> bit
-
-val any_vector_access = {ocaml: "access", interpreter: "access", lem: "access_list_dec", coq: "vec_access_dec"} : forall ('n : Int) ('m : Int) ('a : Type), 0 <= 'm < 'n.
- (vector('n, dec, 'a), atom('m)) -> 'a
-
-overload vector_access = {bitvector_access, any_vector_access}
-
-val bitvector_update = {ocaml: "update", interpreter: "update", lem: "update_vec_dec", coq: "update_vec_dec"} : forall 'n.
- (bits('n), int, bit) -> bits('n)
-
-val any_vector_update = {ocaml: "update", interpreter: "update", lem: "update_list_dec", coq: "vector_update"} : forall 'n ('a : Type).
+val any_vector_update = {ocaml: "update", lem: "update_list_dec", coq: "vector_update"} : forall 'n ('a : Type).
(vector('n, dec, 'a), int, 'a) -> vector('n, dec, 'a)
-overload vector_update = {bitvector_update, any_vector_update}
+overload vector_update = {any_vector_update}
val update_subrange = {ocaml: "update_subrange", interpreter: "update_subrange", lem: "update_subrange_vec_dec", coq: "update_subrange_vec_dec"} : forall 'n 'm 'o.
(bits('n), atom('m), atom('o), bits('m - ('o - 1))) -> bits('n)
-val vcons = {lem: "cons_vec"} : forall ('n : Int) ('a : Type).
- ('a, vector('n, dec, 'a)) -> vector('n + 1, dec, 'a)
-
-val bitvector_concat = {c: "append", ocaml: "append", interpreter: "append", lem: "concat_vec", coq: "concat_vec"} : forall ('n : Int) ('m : Int).
- (bits('n), bits('m)) -> bits('n + 'm)
-
-val vector_concat = {ocaml: "append", interpreter: "append", lem: "append_list"} : forall ('n : Int) ('m : Int) ('a : Type).
+val vector_concat = {ocaml: "append", lem: "append_list"} : forall ('n : Int) ('m : Int) ('a : Type).
(vector('n, dec, 'a), vector('m, dec, 'a)) -> vector('n + 'm, dec, 'a)
-overload append = {bitvector_concat, vector_concat}
+overload append = {vector_concat}
val not_vec = {c: "not_bits", _: "not_vec"} : forall 'n. bits('n) -> bits('n)
@@ -781,7 +39,7 @@ overload ~ = {not_bool, not_vec}
val neq_vec = {lem: "neq"} : forall 'n. (bits('n), bits('n)) -> bool
-function neq_vec (x, y) = not_bool(eq_vec(x, y))
+function neq_vec (x, y) = not_bool(eq_bits(x, y))
val neq_anything = {lem: "neq", coq: "generic_neq"} : forall ('a : Type). ('a, 'a) -> bool
@@ -797,38 +55,9 @@ val or_vec = {lem: "or_vec", c: "or_bits", coq: "or_vec", ocaml: "or_vec", inter
overload operator | = {or_vec}
-val unsigned = {ocaml: "uint", interpreter: "uint", lem: "uint", coq: "uint", c: "sail_unsigned"} : forall 'n. bits('n) -> range(0, 2 ^ 'n - 1)
-
-val signed = {ocaml: "sint", interpreter: "sint", lem: "sint", coq: "sint", c: "sail_signed"} : forall 'n. bits('n) -> range(- (2 ^ ('n - 1)), 2 ^ ('n - 1) - 1)
-
-val hex_slice = "hex_slice" : forall 'n 'm, 'n >= 'm. (string, atom('n), atom('m)) -> bits('n - 'm)
-
-val __SetSlice_bits = "set_slice" : forall 'n 'm.
- (atom('n), atom('m), bits('n), int, bits('m)) -> bits('n)
-
-val __SetSlice_int = "set_slice_int" : forall 'w. (atom('w), int, int, bits('w)) -> int
-
-val __raw_SetSlice_int : forall 'w. (atom('w), int, int, bits('w)) -> int
-
-val __raw_GetSlice_int = "get_slice_int" : forall 'w, 'w >= 0. (atom('w), int, int) -> bits('w)
-
-val __GetSlice_int : forall 'n, 'n >= 0. (atom('n), int, int) -> bits('n)
-
-function __GetSlice_int (n, m, o) = __raw_GetSlice_int(n, m, o)
-
-val __raw_SetSlice_bits : forall 'n 'w.
- (atom('n), atom('w), bits('n), int, bits('w)) -> bits('n)
-
-val __raw_GetSlice_bits : forall 'n 'w, 'w >= 0.
- (atom('n), atom('w), bits('n), int) -> bits('w)
-
val "shiftl" : forall 'm. (bits('m), int) -> bits('m)
val "shiftr" : forall 'm. (bits('m), int) -> bits('m)
-val __SignExtendSlice = {lem: "exts_slice"} : forall 'm. (bits('m), int, int) -> bits('m)
-
-val __ZeroExtendSlice = {lem: "extz_slice"} : forall 'm. (bits('m), int, int) -> bits('m)
-
val cast cast_unit_vec : bit -> bits(1)
function cast_unit_vec b = match b {
@@ -836,120 +65,30 @@ function cast_unit_vec b = match b {
bitone => 0b1
}
-val putchar = "putchar" : forall ('a : Type). 'a -> unit
-
-val concat_str = {c: "concat_str", ocaml: "concat_str", interpreter: "concat_str", lem: "stringAppend", coq: "String.append"} : (string, string) -> string
-
-val string_of_int = {c: "string_of_int", ocaml: "string_of_int", interpreter: "string_of_int", lem: "stringFromInteger", coq: "string_of_int"} : int -> string
-
-val DecStr : int -> string
-
-val HexStr : int -> string
+val string_of_int = {c: "string_of_int", ocaml: "string_of_int", lem: "stringFromInteger", coq: "string_of_int"} : int -> string
val BitStr = "string_of_bits" : forall 'n. bits('n) -> string
-val "decimal_string_of_bits" : forall 'n. bits('n) -> string
val xor_vec = {c: "xor_bits", _: "xor_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
val int_power = {ocaml: "int_power", interpreter: "int_power", lem: "pow", coq: "pow", c: "pow_int"} : (int, int) -> int
-val real_power = {ocaml: "real_power", interpreter: "real_power", lem: "realPowInteger"} : (real, int) -> real
-
-overload operator ^ = {xor_vec, int_power, real_power, concat_str}
-
-val add_int = {ocaml: "add_int", interpreter: "add_int", lem: "integerAdd", c: "add_int", coq: "Z.add"} : forall 'n 'm.
- (int('n), int('m)) -> int('n + 'm)
-
-val add_vec = {c: "add_bits", _: "add_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
-
-val add_vec_int = {c: "add_bits_int", _: "add_vec_int"} : forall 'n. (bits('n), int) -> bits('n)
-
-val add_real = {ocaml: "add_real", interpreter: "add_real", lem: "realAdd"} : (real, real) -> real
-
-overload operator + = {add_int, add_vec, add_vec_int, add_real}
-
-val sub_int = {ocaml: "sub_int", interpreter: "sub_int", lem: "integerMinus", c: "sub_int", coq: "Z.sub"} : forall 'n 'm.
- (int('n), int('m)) -> int('n - 'm)
-
-val sub_nat = {ocaml: "(fun (x,y) -> let n = sub_int (x,y) in if Big_int.less_equal n Big_int.zero then Big_int.zero else n)",
- interpreter: "sub_nat", lem: "integerMinus", coq: "sub_nat", c: "sub_nat"}
- : (nat, nat) -> nat
+overload operator ^ = {xor_vec, int_power, concat_str}
val sub_vec = {c: "sub_bits", _: "sub_vec"} : forall 'n. (bits('n), bits('n)) -> bits('n)
val sub_vec_int = {c: "sub_bits_int", _: "sub_vec_int"} : forall 'n. (bits('n), int) -> bits('n)
-val sub_real = {ocaml: "sub_real", interpreter: "sub_real", lem: "realMinus"} : (real, real) -> real
-
-val negate_int = {ocaml: "negate", interpreter: "negate", lem: "integerNegate", coq: "Z.opp"} : forall 'n. int('n) -> int(- 'n)
-
-val negate_real = {ocaml: "Num.minus_num", interpreter: "neg_real", lem: "realNegate"} : real -> real
-
-overload operator - = {sub_int, sub_vec, sub_vec_int, sub_real}
-
-overload negate = {negate_int, negate_real}
-
-val mult_atom = {ocaml: "mult", interpreter: "mult", lem: "integerMult", c: "mult_int", coq: "Z.mul"} : forall 'n 'm.
- (atom('n), atom('m)) -> atom('n * 'm)
-
-val mult_int = {ocaml: "mult", interpreter: "mult", lem: "integerMult", coq: "Z.mul"} : (int, int) -> int
-
-val mult_real = {ocaml: "mult_real", interpreter: "mult_real", lem: "realMult"} : (real, real) -> real
-
-overload operator * = {mult_atom, mult_int, mult_real}
-
-val Sqrt = {ocaml: "sqrt_real", interpreter: "sqrt_real", lem: "realSqrt"} : real -> real
-
-val gteq_real = {ocaml: "gteq_real", interpreter: "gteq_real", lem: "gteq"} : (real, real) -> bool
-
-overload operator >= = {gteq_real}
-
-val lteq_real = {ocaml: "lteq_real", interpreter: "lteq_real", lem: "lteq"} : (real, real) -> bool
-
-overload operator <= = {lteq_real}
-
-val gt_real = {ocaml: "gt_real", interpreter: "gt_real", lem: "gt"} : (real, real) -> bool
-
-overload operator > = {gt_real}
-
-val lt_real = {ocaml: "lt_real", interpreter: "lt_real", lem: "lt"} : (real, real) -> bool
-
-overload operator < = {lt_real}
-
-val RoundDown = {ocaml: "round_down", interpreter: "round_down", lem: "realFloor"} : real -> int
-
-val RoundUp = {ocaml: "round_up", interpreter: "round_up", lem: "realCeiling"} : real -> int
-
-val abs_int = {ocaml: "abs_int", interpreter: "abs_int", lem: "abs", coq: "Z.abs"} : int -> int
-
-val abs_real = {ocaml: "abs_real", interpreter: "abs_real", lem: "abs"} : real -> real
-
-overload abs = {abs_int, abs_real}
-
-val quotient_nat = {ocaml: "quotient", interpreter: "quotient", lem: "integerDiv"} : (nat, nat) -> nat
-
-val quotient_real = {ocaml: "quotient_real", interpreter: "quotient_real", lem: "realDiv"} : (real, real) -> real
-
-val quotient = {ocaml: "quotient", interpreter: "quotient", lem: "integerDiv"} : (int, int) -> int
-
-overload operator / = {quotient_nat, quotient, quotient_real}
+overload operator - = {sub_vec, sub_vec_int}
val quot_round_zero = {ocaml: "quot_round_zero", interpreter: "quot_round_zero", lem: "hardware_quot", c: "tdiv_int"} : (int, int) -> int
val rem_round_zero = {ocaml: "rem_round_zero", interpreter: "rem_round_zero", lem: "hardware_mod", c: "tmod_int"} : (int, int) -> int
-val modulus = {ocaml: "modulus", interpreter: "modulus", lem: "hardware_mod", c: "tmod_int"} : (int, int) -> int
+val modulus = {lem: "hardware_mod"} : (int, int) -> int
overload operator % = {modulus}
-val Real = {ocaml: "Num.num_of_big_int", interpreter: "to_real", lem: "realFromInteger"} : int -> real
-
-val shl_int = "shl_int" : (int, int) -> int
-val shr_int = "shr_int" : (int, int) -> int
-val lor_int = "lor_int" : (int, int) -> int
-val land_int = "land_int" : (int, int) -> int
-val lxor_int = "lxor_int" : (int, int) -> int
-
-val min_nat = {ocaml: "min_int", interpreter: "min_int", lem: "min", coq: "min_nat", c: "min_int"} : (nat, nat) -> nat
+val min_nat = {ocaml: "min_int", lem: "min", coq: "min_nat", c: "min_int"} : (nat, nat) -> nat
val min_int = {ocaml: "min_int", interpreter: "min_int", lem: "min", coq: "Z.min", c: "min_int"} : (int, int) -> int
@@ -961,42 +100,9 @@ overload min = {min_nat, min_int}
overload max = {max_nat, max_int}
-val __TraceMemoryWrite : forall 'n 'm.
- (atom('n), bits('m), bits(8 * 'n)) -> unit
-
-val __TraceMemoryRead : forall 'n 'm. (atom('n), bits('m), bits(8 * 'n)) -> unit
-
-val replicate_bits = "replicate_bits" : forall 'n 'm, 'm >= 0. (bits('n), atom('m)) -> bits('n * 'm)
-
-val cast ex_nat : nat -> {'n, 'n >= 0. atom('n)}
-
-function ex_nat 'n = n
-
-val cast ex_int : int -> {'n, true. atom('n)}
-
-function ex_int 'n = n
-
-/*
-val cast ex_range : forall 'n 'm. range('n, 'm) -> {'o, 'n <= 'o <= 'm. atom('o)}
-
-function ex_range (n as 'N) = n
-*/
-
-val coerce_int_nat : int -> nat effect {escape}
-
-function coerce_int_nat 'x = {
- assert(constraint('x >= 0));
- x
-}
-
-val slice = "slice" : forall ('n : Int) ('m : Int), 'm >= 0 & 'n >= 0.
- (bits('m), int, atom('n)) -> bits('n)
-
val pow2 = "pow2" : forall 'n. atom('n) -> atom(2 ^ 'n)
val print = "print_endline" : string -> unit
-val print_int = "print_int" : (string, int) -> unit
-val print_bits = "print_bits" : forall 'n. (string, bits('n)) -> unit
val print_string = "print_string" : (string, string) -> unit
val print_instr = {ocaml: "Platform.print_instr", interpreter: "print_endline", c: "print_instr", _: "print_endline"} : string -> unit
@@ -1004,23 +110,32 @@ val print_reg = {ocaml: "Platform.print_reg", interpreter: "print_endline",
val print_mem = {ocaml: "Platform.print_mem_access", interpreter: "print_endline", c: "print_mem_access", _: "print_endline"} : string -> unit
val print_platform = {ocaml: "Platform.print_platform", interpreter: "print_endline", c: "print_platform", _: "print_endline"} : string -> unit
-val "sign_extend" : forall 'n 'm, 'm >= 'n. (bits('n), atom('m)) -> bits('m)
-val "zero_extend" : forall 'n 'm, 'm >= 'n. (bits('n), atom('m)) -> bits('m)
-
$ifndef FEATURE_IMPLICITS
val EXTS : forall 'n 'm , 'm >= 'n . bits('n) -> bits('m)
val EXTZ : forall 'n 'm , 'm >= 'n . bits('n) -> bits('m)
-function EXTS v = sign_extend(v, sizeof('m))
-function EXTZ v = zero_extend(v, sizeof('m))
+function EXTS v = sail_sign_extend(v, sizeof('m))
+function EXTZ v = sail_zero_extend(v, sizeof('m))
$else
val EXTS : forall 'n 'm, 'm >= 'n. (implicit('m), bits('n)) -> bits('m)
val EXTZ : forall 'n 'm, 'm >= 'n. (implicit('m), bits('n)) -> bits('m)
-function EXTS(m, v) = sign_extend(v, m)
-function EXTZ(m, v) = zero_extend(v, m)
+function EXTS(m, v) = sail_sign_extend(v, m)
+function EXTZ(m, v) = sail_zero_extend(v, m)
$endif
+val cast bool_to_bits : bool -> bits(1)
+function bool_to_bits x = if x then 0b1 else 0b0
+
+val cast bit_to_bool : bit -> bool
+function bit_to_bool b = match b {
+ bitone => true,
+ bitzero => false
+}
+
+val to_bits : forall 'l, 'l >= 0.(atom('l), int) -> bits('l)
+function to_bits (l, n) = get_slice_int(l, n, 0)
+
infix 4 <_s
infix 4 >=_s
infix 4 <_u
@@ -1039,36 +154,12 @@ function operator <_u (x, y) = unsigned(x) < unsigned(y)
function operator >=_u (x, y) = unsigned(x) >= unsigned(y)
function operator <=_u (x, y) = unsigned(x) <= unsigned(y)
-val cast bool_to_bits : bool -> bits(1)
-function bool_to_bits x = if x then 0b1 else 0b0
-
-val cast bit_to_bool : bit -> bool
-function bit_to_bool b = match b {
- bitone => true,
- bitzero => false
-}
-
infix 7 >>
infix 7 <<
val operator >> = "shift_bits_right" : forall 'n 'm. (bits('n), bits('m)) -> bits('n)
val operator << = "shift_bits_left" : forall 'n 'm. (bits('n), bits('m)) -> bits('n)
-val vector64 : int -> bits(64)
-
-function vector64 n = __raw_GetSlice_int(64, n, 0)
-
-val to_bits : forall 'l, 'l >= 0.(atom('l), int) -> bits('l)
-function to_bits (l, n) = __raw_GetSlice_int(l, n, 0)
-
-val vector_update_subrange_dec = {ocaml: "update_subrange", interpreter: "update_subrange", c: "vector_update_subrange", lem: "update_subrange_vec_dec", coq: "update_subrange_vec_dec"} : forall 'n 'm 'o.
- (bits('n), atom('m), atom('o), bits('m - ('o - 1))) -> bits('n)
-
-val vector_update_subrange_inc = {ocaml: "update_subrange", interpreter: "update_subrange", lem: "update_subrange_vec_inc"} : forall 'n 'm 'o.
- (vector('n, inc, bit), atom('m), atom('o), vector('o - ('m - 1), inc, bit)) -> vector('n, inc, bit)
-
-overload vector_update_subrange = {vector_update_subrange_dec, vector_update_subrange_inc}
-
/* Ideally these would be sail builtin */
function shift_right_arith64 (v : bits(64), shift : bits(6)) -> bits(64) =
@@ -1079,6 +170,14 @@ function shift_right_arith32 (v : bits(32), shift : bits(5)) -> bits(32) =
let v64 : bits(64) = EXTS(v) in
(v64 >> shift)[31..0]
+/* helpers for mappings */
+
+val spc : unit <-> string
+val opt_spc : unit <-> string
+val def_spc : unit <-> string
+
+val "decimal_string_of_bits" : forall 'n. bits('n) -> string
+val hex_bits : forall 'n . (atom('n), bits('n)) <-> string
val n_leading_spaces : string -> nat
function n_leading_spaces s =
diff --git a/model/prelude_mapping.sail b/model/prelude_mapping.sail
new file mode 100644
index 0000000..4826084
--- /dev/null
+++ b/model/prelude_mapping.sail
@@ -0,0 +1,690 @@
+/* Python:
+f = """val hex_bits_{0} : bits({0}) <-> string
+val hex_bits_{0}_forwards = "decimal_string_of_bits" : bits({0}) -> string
+val hex_bits_{0}_forwards_matches : bits({0}) -> bool
+function hex_bits_{0}_forwards_matches bv = true
+val "hex_bits_{0}_matches_prefix" : string -> option((bits({0}), nat))
+val hex_bits_{0}_backwards_matches : string -> bool
+function hex_bits_{0}_backwards_matches s = match s {{
+ s if match hex_bits_{0}_matches_prefix(s) {{
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ }} => true,
+ _ => false
+}}
+val hex_bits_{0}_backwards : string -> bits({0})
+function hex_bits_{0}_backwards s =
+ match hex_bits_{0}_matches_prefix(s) {{
+ Some (bv, n) if n == string_length(s) => bv
+ }}
+"""
+
+for i in list(range(1, 34)) + [48, 64]:
+ print(f.format(i))
+
+*/
+val hex_bits_1 : bits(1) <-> string
+val hex_bits_1_forwards = "decimal_string_of_bits" : bits(1) -> string
+val hex_bits_1_forwards_matches : bits(1) -> bool
+function hex_bits_1_forwards_matches bv = true
+val "hex_bits_1_matches_prefix" : string -> option((bits(1), nat))
+val hex_bits_1_backwards_matches : string -> bool
+function hex_bits_1_backwards_matches s = match s {
+ s if match hex_bits_1_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_1_backwards : string -> bits(1)
+function hex_bits_1_backwards s =
+ match hex_bits_1_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_2 : bits(2) <-> string
+val hex_bits_2_forwards = "decimal_string_of_bits" : bits(2) -> string
+val hex_bits_2_forwards_matches : bits(2) -> bool
+function hex_bits_2_forwards_matches bv = true
+val "hex_bits_2_matches_prefix" : string -> option((bits(2), nat))
+val hex_bits_2_backwards_matches : string -> bool
+function hex_bits_2_backwards_matches s = match s {
+ s if match hex_bits_2_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_2_backwards : string -> bits(2)
+function hex_bits_2_backwards s =
+ match hex_bits_2_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_3 : bits(3) <-> string
+val hex_bits_3_forwards = "decimal_string_of_bits" : bits(3) -> string
+val hex_bits_3_forwards_matches : bits(3) -> bool
+function hex_bits_3_forwards_matches bv = true
+val "hex_bits_3_matches_prefix" : string -> option((bits(3), nat))
+val hex_bits_3_backwards_matches : string -> bool
+function hex_bits_3_backwards_matches s = match s {
+ s if match hex_bits_3_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_3_backwards : string -> bits(3)
+function hex_bits_3_backwards s =
+ match hex_bits_3_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_4 : bits(4) <-> string
+val hex_bits_4_forwards = "decimal_string_of_bits" : bits(4) -> string
+val hex_bits_4_forwards_matches : bits(4) -> bool
+function hex_bits_4_forwards_matches bv = true
+val "hex_bits_4_matches_prefix" : string -> option((bits(4), nat))
+val hex_bits_4_backwards_matches : string -> bool
+function hex_bits_4_backwards_matches s = match s {
+ s if match hex_bits_4_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_4_backwards : string -> bits(4)
+function hex_bits_4_backwards s =
+ match hex_bits_4_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_5 : bits(5) <-> string
+val hex_bits_5_forwards = "decimal_string_of_bits" : bits(5) -> string
+val hex_bits_5_forwards_matches : bits(5) -> bool
+function hex_bits_5_forwards_matches bv = true
+val "hex_bits_5_matches_prefix" : string -> option((bits(5), nat))
+val hex_bits_5_backwards_matches : string -> bool
+function hex_bits_5_backwards_matches s = match s {
+ s if match hex_bits_5_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_5_backwards : string -> bits(5)
+function hex_bits_5_backwards s =
+ match hex_bits_5_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_6 : bits(6) <-> string
+val hex_bits_6_forwards = "decimal_string_of_bits" : bits(6) -> string
+val hex_bits_6_forwards_matches : bits(6) -> bool
+function hex_bits_6_forwards_matches bv = true
+val "hex_bits_6_matches_prefix" : string -> option((bits(6), nat))
+val hex_bits_6_backwards_matches : string -> bool
+function hex_bits_6_backwards_matches s = match s {
+ s if match hex_bits_6_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_6_backwards : string -> bits(6)
+function hex_bits_6_backwards s =
+ match hex_bits_6_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_7 : bits(7) <-> string
+val hex_bits_7_forwards = "decimal_string_of_bits" : bits(7) -> string
+val hex_bits_7_forwards_matches : bits(7) -> bool
+function hex_bits_7_forwards_matches bv = true
+val "hex_bits_7_matches_prefix" : string -> option((bits(7), nat))
+val hex_bits_7_backwards_matches : string -> bool
+function hex_bits_7_backwards_matches s = match s {
+ s if match hex_bits_7_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_7_backwards : string -> bits(7)
+function hex_bits_7_backwards s =
+ match hex_bits_7_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_8 : bits(8) <-> string
+val hex_bits_8_forwards = "decimal_string_of_bits" : bits(8) -> string
+val hex_bits_8_forwards_matches : bits(8) -> bool
+function hex_bits_8_forwards_matches bv = true
+val "hex_bits_8_matches_prefix" : string -> option((bits(8), nat))
+val hex_bits_8_backwards_matches : string -> bool
+function hex_bits_8_backwards_matches s = match s {
+ s if match hex_bits_8_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_8_backwards : string -> bits(8)
+function hex_bits_8_backwards s =
+ match hex_bits_8_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_9 : bits(9) <-> string
+val hex_bits_9_forwards = "decimal_string_of_bits" : bits(9) -> string
+val hex_bits_9_forwards_matches : bits(9) -> bool
+function hex_bits_9_forwards_matches bv = true
+val "hex_bits_9_matches_prefix" : string -> option((bits(9), nat))
+val hex_bits_9_backwards_matches : string -> bool
+function hex_bits_9_backwards_matches s = match s {
+ s if match hex_bits_9_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_9_backwards : string -> bits(9)
+function hex_bits_9_backwards s =
+ match hex_bits_9_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_10 : bits(10) <-> string
+val hex_bits_10_forwards = "decimal_string_of_bits" : bits(10) -> string
+val hex_bits_10_forwards_matches : bits(10) -> bool
+function hex_bits_10_forwards_matches bv = true
+val "hex_bits_10_matches_prefix" : string -> option((bits(10), nat))
+val hex_bits_10_backwards_matches : string -> bool
+function hex_bits_10_backwards_matches s = match s {
+ s if match hex_bits_10_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_10_backwards : string -> bits(10)
+function hex_bits_10_backwards s =
+ match hex_bits_10_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_11 : bits(11) <-> string
+val hex_bits_11_forwards = "decimal_string_of_bits" : bits(11) -> string
+val hex_bits_11_forwards_matches : bits(11) -> bool
+function hex_bits_11_forwards_matches bv = true
+val "hex_bits_11_matches_prefix" : string -> option((bits(11), nat))
+val hex_bits_11_backwards_matches : string -> bool
+function hex_bits_11_backwards_matches s = match s {
+ s if match hex_bits_11_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_11_backwards : string -> bits(11)
+function hex_bits_11_backwards s =
+ match hex_bits_11_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_12 : bits(12) <-> string
+val hex_bits_12_forwards = "decimal_string_of_bits" : bits(12) -> string
+val hex_bits_12_forwards_matches : bits(12) -> bool
+function hex_bits_12_forwards_matches bv = true
+val "hex_bits_12_matches_prefix" : string -> option((bits(12), nat))
+val hex_bits_12_backwards_matches : string -> bool
+function hex_bits_12_backwards_matches s = match s {
+ s if match hex_bits_12_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_12_backwards : string -> bits(12)
+function hex_bits_12_backwards s =
+ match hex_bits_12_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_13 : bits(13) <-> string
+val hex_bits_13_forwards = "decimal_string_of_bits" : bits(13) -> string
+val hex_bits_13_forwards_matches : bits(13) -> bool
+function hex_bits_13_forwards_matches bv = true
+val "hex_bits_13_matches_prefix" : string -> option((bits(13), nat))
+val hex_bits_13_backwards_matches : string -> bool
+function hex_bits_13_backwards_matches s = match s {
+ s if match hex_bits_13_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_13_backwards : string -> bits(13)
+function hex_bits_13_backwards s =
+ match hex_bits_13_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_14 : bits(14) <-> string
+val hex_bits_14_forwards = "decimal_string_of_bits" : bits(14) -> string
+val hex_bits_14_forwards_matches : bits(14) -> bool
+function hex_bits_14_forwards_matches bv = true
+val "hex_bits_14_matches_prefix" : string -> option((bits(14), nat))
+val hex_bits_14_backwards_matches : string -> bool
+function hex_bits_14_backwards_matches s = match s {
+ s if match hex_bits_14_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_14_backwards : string -> bits(14)
+function hex_bits_14_backwards s =
+ match hex_bits_14_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_15 : bits(15) <-> string
+val hex_bits_15_forwards = "decimal_string_of_bits" : bits(15) -> string
+val hex_bits_15_forwards_matches : bits(15) -> bool
+function hex_bits_15_forwards_matches bv = true
+val "hex_bits_15_matches_prefix" : string -> option((bits(15), nat))
+val hex_bits_15_backwards_matches : string -> bool
+function hex_bits_15_backwards_matches s = match s {
+ s if match hex_bits_15_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_15_backwards : string -> bits(15)
+function hex_bits_15_backwards s =
+ match hex_bits_15_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_16 : bits(16) <-> string
+val hex_bits_16_forwards = "decimal_string_of_bits" : bits(16) -> string
+val hex_bits_16_forwards_matches : bits(16) -> bool
+function hex_bits_16_forwards_matches bv = true
+val "hex_bits_16_matches_prefix" : string -> option((bits(16), nat))
+val hex_bits_16_backwards_matches : string -> bool
+function hex_bits_16_backwards_matches s = match s {
+ s if match hex_bits_16_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_16_backwards : string -> bits(16)
+function hex_bits_16_backwards s =
+ match hex_bits_16_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_17 : bits(17) <-> string
+val hex_bits_17_forwards = "decimal_string_of_bits" : bits(17) -> string
+val hex_bits_17_forwards_matches : bits(17) -> bool
+function hex_bits_17_forwards_matches bv = true
+val "hex_bits_17_matches_prefix" : string -> option((bits(17), nat))
+val hex_bits_17_backwards_matches : string -> bool
+function hex_bits_17_backwards_matches s = match s {
+ s if match hex_bits_17_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_17_backwards : string -> bits(17)
+function hex_bits_17_backwards s =
+ match hex_bits_17_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_18 : bits(18) <-> string
+val hex_bits_18_forwards = "decimal_string_of_bits" : bits(18) -> string
+val hex_bits_18_forwards_matches : bits(18) -> bool
+function hex_bits_18_forwards_matches bv = true
+val "hex_bits_18_matches_prefix" : string -> option((bits(18), nat))
+val hex_bits_18_backwards_matches : string -> bool
+function hex_bits_18_backwards_matches s = match s {
+ s if match hex_bits_18_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_18_backwards : string -> bits(18)
+function hex_bits_18_backwards s =
+ match hex_bits_18_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_19 : bits(19) <-> string
+val hex_bits_19_forwards = "decimal_string_of_bits" : bits(19) -> string
+val hex_bits_19_forwards_matches : bits(19) -> bool
+function hex_bits_19_forwards_matches bv = true
+val "hex_bits_19_matches_prefix" : string -> option((bits(19), nat))
+val hex_bits_19_backwards_matches : string -> bool
+function hex_bits_19_backwards_matches s = match s {
+ s if match hex_bits_19_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_19_backwards : string -> bits(19)
+function hex_bits_19_backwards s =
+ match hex_bits_19_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_20 : bits(20) <-> string
+val hex_bits_20_forwards = "decimal_string_of_bits" : bits(20) -> string
+val hex_bits_20_forwards_matches : bits(20) -> bool
+function hex_bits_20_forwards_matches bv = true
+val "hex_bits_20_matches_prefix" : string -> option((bits(20), nat))
+val hex_bits_20_backwards_matches : string -> bool
+function hex_bits_20_backwards_matches s = match s {
+ s if match hex_bits_20_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_20_backwards : string -> bits(20)
+function hex_bits_20_backwards s =
+ match hex_bits_20_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_21 : bits(21) <-> string
+val hex_bits_21_forwards = "decimal_string_of_bits" : bits(21) -> string
+val hex_bits_21_forwards_matches : bits(21) -> bool
+function hex_bits_21_forwards_matches bv = true
+val "hex_bits_21_matches_prefix" : string -> option((bits(21), nat))
+val hex_bits_21_backwards_matches : string -> bool
+function hex_bits_21_backwards_matches s = match s {
+ s if match hex_bits_21_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_21_backwards : string -> bits(21)
+function hex_bits_21_backwards s =
+ match hex_bits_21_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_22 : bits(22) <-> string
+val hex_bits_22_forwards = "decimal_string_of_bits" : bits(22) -> string
+val hex_bits_22_forwards_matches : bits(22) -> bool
+function hex_bits_22_forwards_matches bv = true
+val "hex_bits_22_matches_prefix" : string -> option((bits(22), nat))
+val hex_bits_22_backwards_matches : string -> bool
+function hex_bits_22_backwards_matches s = match s {
+ s if match hex_bits_22_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_22_backwards : string -> bits(22)
+function hex_bits_22_backwards s =
+ match hex_bits_22_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_23 : bits(23) <-> string
+val hex_bits_23_forwards = "decimal_string_of_bits" : bits(23) -> string
+val hex_bits_23_forwards_matches : bits(23) -> bool
+function hex_bits_23_forwards_matches bv = true
+val "hex_bits_23_matches_prefix" : string -> option((bits(23), nat))
+val hex_bits_23_backwards_matches : string -> bool
+function hex_bits_23_backwards_matches s = match s {
+ s if match hex_bits_23_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_23_backwards : string -> bits(23)
+function hex_bits_23_backwards s =
+ match hex_bits_23_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_24 : bits(24) <-> string
+val hex_bits_24_forwards = "decimal_string_of_bits" : bits(24) -> string
+val hex_bits_24_forwards_matches : bits(24) -> bool
+function hex_bits_24_forwards_matches bv = true
+val "hex_bits_24_matches_prefix" : string -> option((bits(24), nat))
+val hex_bits_24_backwards_matches : string -> bool
+function hex_bits_24_backwards_matches s = match s {
+ s if match hex_bits_24_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_24_backwards : string -> bits(24)
+function hex_bits_24_backwards s =
+ match hex_bits_24_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_25 : bits(25) <-> string
+val hex_bits_25_forwards = "decimal_string_of_bits" : bits(25) -> string
+val hex_bits_25_forwards_matches : bits(25) -> bool
+function hex_bits_25_forwards_matches bv = true
+val "hex_bits_25_matches_prefix" : string -> option((bits(25), nat))
+val hex_bits_25_backwards_matches : string -> bool
+function hex_bits_25_backwards_matches s = match s {
+ s if match hex_bits_25_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_25_backwards : string -> bits(25)
+function hex_bits_25_backwards s =
+ match hex_bits_25_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_26 : bits(26) <-> string
+val hex_bits_26_forwards = "decimal_string_of_bits" : bits(26) -> string
+val hex_bits_26_forwards_matches : bits(26) -> bool
+function hex_bits_26_forwards_matches bv = true
+val "hex_bits_26_matches_prefix" : string -> option((bits(26), nat))
+val hex_bits_26_backwards_matches : string -> bool
+function hex_bits_26_backwards_matches s = match s {
+ s if match hex_bits_26_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_26_backwards : string -> bits(26)
+function hex_bits_26_backwards s =
+ match hex_bits_26_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_27 : bits(27) <-> string
+val hex_bits_27_forwards = "decimal_string_of_bits" : bits(27) -> string
+val hex_bits_27_forwards_matches : bits(27) -> bool
+function hex_bits_27_forwards_matches bv = true
+val "hex_bits_27_matches_prefix" : string -> option((bits(27), nat))
+val hex_bits_27_backwards_matches : string -> bool
+function hex_bits_27_backwards_matches s = match s {
+ s if match hex_bits_27_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_27_backwards : string -> bits(27)
+function hex_bits_27_backwards s =
+ match hex_bits_27_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_28 : bits(28) <-> string
+val hex_bits_28_forwards = "decimal_string_of_bits" : bits(28) -> string
+val hex_bits_28_forwards_matches : bits(28) -> bool
+function hex_bits_28_forwards_matches bv = true
+val "hex_bits_28_matches_prefix" : string -> option((bits(28), nat))
+val hex_bits_28_backwards_matches : string -> bool
+function hex_bits_28_backwards_matches s = match s {
+ s if match hex_bits_28_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_28_backwards : string -> bits(28)
+function hex_bits_28_backwards s =
+ match hex_bits_28_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_29 : bits(29) <-> string
+val hex_bits_29_forwards = "decimal_string_of_bits" : bits(29) -> string
+val hex_bits_29_forwards_matches : bits(29) -> bool
+function hex_bits_29_forwards_matches bv = true
+val "hex_bits_29_matches_prefix" : string -> option((bits(29), nat))
+val hex_bits_29_backwards_matches : string -> bool
+function hex_bits_29_backwards_matches s = match s {
+ s if match hex_bits_29_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_29_backwards : string -> bits(29)
+function hex_bits_29_backwards s =
+ match hex_bits_29_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_30 : bits(30) <-> string
+val hex_bits_30_forwards = "decimal_string_of_bits" : bits(30) -> string
+val hex_bits_30_forwards_matches : bits(30) -> bool
+function hex_bits_30_forwards_matches bv = true
+val "hex_bits_30_matches_prefix" : string -> option((bits(30), nat))
+val hex_bits_30_backwards_matches : string -> bool
+function hex_bits_30_backwards_matches s = match s {
+ s if match hex_bits_30_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_30_backwards : string -> bits(30)
+function hex_bits_30_backwards s =
+ match hex_bits_30_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_31 : bits(31) <-> string
+val hex_bits_31_forwards = "decimal_string_of_bits" : bits(31) -> string
+val hex_bits_31_forwards_matches : bits(31) -> bool
+function hex_bits_31_forwards_matches bv = true
+val "hex_bits_31_matches_prefix" : string -> option((bits(31), nat))
+val hex_bits_31_backwards_matches : string -> bool
+function hex_bits_31_backwards_matches s = match s {
+ s if match hex_bits_31_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_31_backwards : string -> bits(31)
+function hex_bits_31_backwards s =
+ match hex_bits_31_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_32 : bits(32) <-> string
+val hex_bits_32_forwards = "decimal_string_of_bits" : bits(32) -> string
+val hex_bits_32_forwards_matches : bits(32) -> bool
+function hex_bits_32_forwards_matches bv = true
+val "hex_bits_32_matches_prefix" : string -> option((bits(32), nat))
+val hex_bits_32_backwards_matches : string -> bool
+function hex_bits_32_backwards_matches s = match s {
+ s if match hex_bits_32_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_32_backwards : string -> bits(32)
+function hex_bits_32_backwards s =
+ match hex_bits_32_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_33 : bits(33) <-> string
+val hex_bits_33_forwards = "decimal_string_of_bits" : bits(33) -> string
+val hex_bits_33_forwards_matches : bits(33) -> bool
+function hex_bits_33_forwards_matches bv = true
+val "hex_bits_33_matches_prefix" : string -> option((bits(33), nat))
+val hex_bits_33_backwards_matches : string -> bool
+function hex_bits_33_backwards_matches s = match s {
+ s if match hex_bits_33_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_33_backwards : string -> bits(33)
+function hex_bits_33_backwards s =
+ match hex_bits_33_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_48 : bits(48) <-> string
+val hex_bits_48_forwards = "decimal_string_of_bits" : bits(48) -> string
+val hex_bits_48_forwards_matches : bits(48) -> bool
+function hex_bits_48_forwards_matches bv = true
+val "hex_bits_48_matches_prefix" : string -> option((bits(48), nat))
+val hex_bits_48_backwards_matches : string -> bool
+function hex_bits_48_backwards_matches s = match s {
+ s if match hex_bits_48_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_48_backwards : string -> bits(48)
+function hex_bits_48_backwards s =
+ match hex_bits_48_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
+val hex_bits_64 : bits(64) <-> string
+val hex_bits_64_forwards = "decimal_string_of_bits" : bits(64) -> string
+val hex_bits_64_forwards_matches : bits(64) -> bool
+function hex_bits_64_forwards_matches bv = true
+val "hex_bits_64_matches_prefix" : string -> option((bits(64), nat))
+val hex_bits_64_backwards_matches : string -> bool
+function hex_bits_64_backwards_matches s = match s {
+ s if match hex_bits_64_matches_prefix(s) {
+ Some (_, n) if n == string_length(s) => true,
+ _ => false
+ } => true,
+ _ => false
+}
+val hex_bits_64_backwards : string -> bits(64)
+function hex_bits_64_backwards s =
+ match hex_bits_64_matches_prefix(s) {
+ Some (bv, n) if n == string_length(s) => bv
+ }
+
diff --git a/model/prelude_mem.sail b/model/prelude_mem.sail
new file mode 100644
index 0000000..8e483f8
--- /dev/null
+++ b/model/prelude_mem.sail
@@ -0,0 +1,70 @@
+/* These functions define the primitives for physical memory access.
+ * They depend on the XLEN of the architecture.
+ */
+
+val __WriteRAM = {lem: "MEMw", _: "write_ram"} : forall 'n 'm.
+ (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
+
+val __WriteRAM_release = {lem: "MEMw_release", _: "write_ram"} : forall 'n 'm.
+ (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
+
+val __WriteRAM_strong_release = {lem: "MEMw_strong_release", _: "write_ram"} : forall 'n 'm.
+ (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
+
+val __WriteRAM_conditional = {lem: "MEMw_conditional", _: "write_ram"} : forall 'n 'm.
+ (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
+
+val __WriteRAM_conditional_release = {lem: "MEMw_conditional_release", _: "write_ram"} : forall 'n 'm.
+ (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
+
+val __WriteRAM_conditional_strong_release = {lem: "MEMw_conditional_strong_release", _: "write_ram"} : forall 'n 'm.
+ (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> bool effect {wmv}
+
+val __RISCV_write : forall 'n. (xlenbits, atom('n), bits(8 * 'n), bool, bool, bool) -> bool effect {wmv}
+function __RISCV_write (addr, width, data, aq, rl, con) =
+ match (aq, rl, con) {
+ (false, false, false) => __WriteRAM(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (false, true, false) => __WriteRAM_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (false, false, true) => __WriteRAM_conditional(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (false, true, true) => __WriteRAM_conditional_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (true, true, false) => __WriteRAM_strong_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (true, true, true) => __WriteRAM_conditional_strong_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (true, false, false) => false,
+ (true, false, true) => false
+ }
+
+val __TraceMemoryWrite : forall 'n 'm.
+ (atom('n), bits('m), bits(8 * 'n)) -> unit
+
+val __ReadRAM = { lem: "MEMr", _ : "read_ram" } : forall 'n 'm, 'n >= 0.
+ (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
+
+val __ReadRAM_acquire = { lem: "MEMr_acquire", _ : "read_ram" } : forall 'n 'm, 'n >= 0.
+ (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
+
+val __ReadRAM_strong_acquire = { lem: "MEMr_strong_acquire", _ : "read_ram" } : forall 'n 'm, 'n >= 0.
+ (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
+
+val __ReadRAM_reserved = { lem: "MEMr_reserved", _ : "read_ram" } : forall 'n 'm, 'n >= 0.
+ (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
+
+val __ReadRAM_reserved_acquire = { lem: "MEMr_reserved_acquire", _ : "read_ram" } : forall 'n 'm, 'n >= 0.
+ (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
+
+val __ReadRAM_reserved_strong_acquire = { lem: "MEMr_reserved_strong_acquire", _ : "read_ram" } : forall 'n 'm, 'n >= 0.
+ (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem}
+
+val __RISCV_read : forall 'n, 'n >= 0. (xlenbits, atom('n), bool, bool, bool) -> option(bits(8 * 'n)) effect {rmem}
+function __RISCV_read (addr, width, aq, rl, res) =
+ match (aq, rl, res) {
+ (false, false, false) => Some(__ReadRAM(sizeof(xlen), width, EXTZ(0x0), addr)),
+ (true, false, false) => Some(__ReadRAM_acquire(sizeof(xlen), width, EXTZ(0x0), addr)),
+ (true, true, false) => Some(__ReadRAM_strong_acquire(sizeof(xlen), width, EXTZ(0x0), addr)),
+ (false, false, true) => Some(__ReadRAM_reserved(sizeof(xlen), width, EXTZ(0x0), addr)),
+ (true, false, true) => Some(__ReadRAM_reserved_acquire(sizeof(xlen), width, EXTZ(0x0), addr)),
+ (true, true, true) => Some(__ReadRAM_reserved_strong_acquire(sizeof(xlen), width, EXTZ(0x0), addr)),
+ (false, true, false) => None(),
+ (false, true, true) => None()
+ }
+
+val __TraceMemoryRead : forall 'n 'm. (atom('n), bits('m), bits(8 * 'n)) -> unit
diff --git a/model/riscv_duopod.sail b/model/riscv_duopod.sail
index f7a7712..99dbbba 100644
--- a/model/riscv_duopod.sail
+++ b/model/riscv_duopod.sail
@@ -1,6 +1,4 @@
-
-type xlen = atom(64)
-type xlen_t = bits(64)
+// This file depends on the xlen definitions in riscv_xlen.sail.
type regno ('n : Int), 0 <= 'n < 32 = atom('n)
type regbits = bits(5)
@@ -13,18 +11,18 @@ function regbits_to_regno b = let r as atom(_) = unsigned(b) in r
/* Architectural state */
-register PC : xlen_t
-register nextPC : xlen_t
+register PC : xlenbits
+register nextPC : xlenbits
-register Xs : vector(32, dec, xlen_t)
+register Xs : vector(32, dec, xlenbits)
/* Getters and setters for X registers (special case for zeros register, x0) */
-val rX : forall 'n, 0 <= 'n < 32. regno('n) -> xlen_t effect {rreg}
+val rX : forall 'n, 0 <= 'n < 32. regno('n) -> xlenbits effect {rreg}
-function rX 0 = 0x0000000000000000
+function rX 0 = EXTZ(0x0)
and rX (r if r > 0) = Xs[r]
-val wX : forall 'n, 0 <= 'n < 32. (regno('n), xlen_t) -> unit effect {wreg}
+val wX : forall 'n, 0 <= 'n < 32. (regno('n), xlenbits) -> unit effect {wreg}
function wX (r, v) =
if r != 0 then {
@@ -35,7 +33,7 @@ overload X = {rX, wX}
/* Accessors for memory */
-val MEMr : forall 'n, 'n >= 0. (xlen_t, atom('n)) -> bits(8 * 'n) effect {rmem}
+val MEMr : forall 'n, 'n >= 0. (xlenbits, atom('n)) -> bits(8 * 'n) effect {rmem}
function MEMr (addr, width) =
match __RISCV_read(addr, width, false, false, false) {
Some(v) => v,
@@ -61,7 +59,7 @@ function clause decode imm : bits(12) @ rs1 : regbits @ 0b000 @ rd : regbits @ 0
function clause execute (ITYPE (imm, rs1, rd, RISCV_ADDI)) =
let rs1_val = X(rs1) in
- let imm_ext : xlen_t = EXTS(imm) in
+ let imm_ext : xlenbits = EXTS(imm) in
let result = rs1_val + imm_ext in
X(rd) = result
@@ -74,8 +72,8 @@ function clause decode imm : bits(12) @ rs1 : regbits @ 0b011 @ rd : regbits @ 0
= Some(LOAD(imm, rs1, rd))
function clause execute(LOAD(imm, rs1, rd)) =
- let addr : xlen_t = X(rs1) + EXTS(imm) in
- let result : xlen_t = MEMr(addr, 8) in
+ let addr : xlenbits = X(rs1) + EXTS(imm) in
+ let result : xlenbits = MEMr(addr, xlen_bytes) in
X(rd) = result
/* ****************************************************************** */
diff --git a/model/riscv_insts_aext.sail b/model/riscv_insts_aext.sail
index 2f93cc5..7042583 100644
--- a/model/riscv_insts_aext.sail
+++ b/model/riscv_insts_aext.sail
@@ -32,7 +32,7 @@ mapping clause encdec = LOADRES(aq, rl, rs1, size, rd)
* call to load_reservation in LR and cancel_reservation in SC.
*/
-val process_loadres : forall 'n, 0 < 'n <= 8. (regbits, xlenbits, MemoryOpResult(bits(8 * 'n)), bool) -> bool effect {escape, rreg, wreg}
+val process_loadres : forall 'n, 0 < 'n <= xlen_bytes. (regbits, xlenbits, MemoryOpResult(bits(8 * 'n)), bool) -> bool effect {escape, rreg, wreg}
function process_loadres(rd, addr, value, is_unsigned) =
match extend_value(is_unsigned, value) {
MemValue(result) => { load_reservation(addr); X(rd) = result; true },
@@ -53,17 +53,17 @@ function clause execute(LOADRES(aq, rl, rs1, width, rd)) = {
DOUBLE => vaddr[2..0] == 0b000
};
/* "LR faults like a normal load, even though it's in the AMO major opcode space."
- - Andrew Waterman, isa-dev, 10 Jul 2018.
+ * - Andrew Waterman, isa-dev, 10 Jul 2018.
*/
if (~ (aligned))
then { handle_mem_exception(vaddr, E_Load_Addr_Align); false }
else match translateAddr(vaddr, Read, Data) {
TR_Failure(e) => { handle_mem_exception(vaddr, e); false },
TR_Address(addr) =>
- match width {
- WORD => process_loadres(rd, vaddr, mem_read(addr, 4, aq, rl, true), false),
- DOUBLE => process_loadres(rd, vaddr, mem_read(addr, 8, aq, rl, true), false),
- _ => internal_error("LOADRES expected WORD or DOUBLE")
+ match (width, sizeof(xlen)) {
+ (WORD, _) => process_loadres(rd, vaddr, mem_read(addr, 4, aq, rl, true), false),
+ (DOUBLE, 64) => process_loadres(rd, vaddr, mem_read(addr, 8, aq, rl, true), false),
+ _ => internal_error("LOADRES expected WORD or DOUBLE")
}
}
} else {
@@ -109,24 +109,24 @@ function clause execute (STORECON(aq, rl, rs2, rs1, width, rd)) = {
else {
if match_reservation(vaddr) == false then {
/* cannot happen in rmem */
- X(rd) = EXTZ(0b1); true
+ X(rd) = EXTZ(0b1); cancel_reservation(); true
} else {
match translateAddr(vaddr, Write, Data) {
TR_Failure(e) => { handle_mem_exception(vaddr, e); false },
TR_Address(addr) => {
- let eares : MemoryOpResult(unit) = match width {
- WORD => mem_write_ea(addr, 4, aq, rl, true),
- DOUBLE => mem_write_ea(addr, 8, aq, rl, true),
- _ => internal_error("STORECON expected word or double")
+ let eares : MemoryOpResult(unit) = match (width, sizeof(xlen)) {
+ (WORD, _) => mem_write_ea(addr, 4, aq, rl, true),
+ (DOUBLE, 64) => mem_write_ea(addr, 8, aq, rl, true),
+ _ => internal_error("STORECON expected word or double")
};
match (eares) {
MemException(e) => { handle_mem_exception(addr, e); false },
MemValue(_) => {
rs2_val = X(rs2);
- let res : MemoryOpResult(bool) = match width {
- WORD => mem_write_value(addr, 4, rs2_val[31..0], aq, rl, true),
- DOUBLE => mem_write_value(addr, 8, rs2_val, aq, rl, true),
- _ => internal_error("STORECON expected word or double")
+ let res : MemoryOpResult(bool) = match (width, sizeof(xlen)) {
+ (WORD, _) => mem_write_value(addr, 4, rs2_val[31..0], aq, rl, true),
+ (DOUBLE, 64) => mem_write_value(addr, 8, rs2_val, aq, rl, true),
+ _ => internal_error("STORECON expected word or double")
};
match (res) {
MemValue(true) => { X(rd) = EXTZ(0b0); cancel_reservation(); true },
@@ -175,19 +175,19 @@ function clause execute (AMO(op, aq, rl, rs2, rs1, width, rd)) = {
match translateAddr(vaddr, ReadWrite, Data) {
TR_Failure(e) => { handle_mem_exception(vaddr, e); false },
TR_Address(addr) => {
- let eares : MemoryOpResult(unit) = match width {
- WORD => mem_write_ea(addr, 4, aq & rl, rl, true),
- DOUBLE => mem_write_ea(addr, 8, aq & rl, rl, true),
- _ => internal_error ("AMO expected WORD or DOUBLE")
+ let eares : MemoryOpResult(unit) = match (width, sizeof(xlen)) {
+ (WORD, _) => mem_write_ea(addr, 4, aq & rl, rl, true),
+ (DOUBLE, 64) => mem_write_ea(addr, 8, aq & rl, rl, true),
+ _ => internal_error ("AMO expected WORD or DOUBLE")
};
rs2_val : xlenbits = X(rs2);
match (eares) {
MemException(e) => { handle_mem_exception(addr, e); false },
MemValue(_) => {
- let rval : MemoryOpResult(xlenbits) = match width {
- WORD => extend_value(false, mem_read(addr, 4, aq, aq & rl, true)),
- DOUBLE => extend_value(false, mem_read(addr, 8, aq, aq & rl, true)),
- _ => internal_error ("AMO expected WORD or DOUBLE")
+ let rval : MemoryOpResult(xlenbits) = match (width, sizeof(xlen)) {
+ (WORD, _) => extend_value(false, mem_read(addr, 4, aq, aq & rl, true)),
+ (DOUBLE, 64) => extend_value(false, mem_read(addr, 8, aq, aq & rl, true)),
+ _ => internal_error ("AMO expected WORD or DOUBLE")
};
match (rval) {
MemException(e) => { handle_mem_exception(addr, e); false },
@@ -200,17 +200,19 @@ function clause execute (AMO(op, aq, rl, rs2, rs1, width, rd)) = {
AMOAND => rs2_val & loaded,
AMOOR => rs2_val | loaded,
- /* Have to convert number to vector here. Check this */
- AMOMIN => vector64(min(signed(rs2_val), signed(loaded))),
- AMOMAX => vector64(max(signed(rs2_val), signed(loaded))),
- AMOMINU => vector64(min(unsigned(rs2_val), unsigned(loaded))),
- AMOMAXU => vector64(max(unsigned(rs2_val), unsigned(loaded)))
+ /* These operations convert bitvectors to integer values using [un]signed,
+ * and back using to_bits().
+ */
+ AMOMIN => to_bits(sizeof(xlen), min(signed(rs2_val), signed(loaded))),
+ AMOMAX => to_bits(sizeof(xlen), max(signed(rs2_val), signed(loaded))),
+ AMOMINU => to_bits(sizeof(xlen), min(unsigned(rs2_val), unsigned(loaded))),
+ AMOMAXU => to_bits(sizeof(xlen), max(unsigned(rs2_val), unsigned(loaded)))
};
- let wval : MemoryOpResult(bool) = match width {
- WORD => mem_write_value(addr, 4, result[31..0], aq & rl, rl, true),
- DOUBLE => mem_write_value(addr, 8, result, aq & rl, rl, true),
- _ => internal_error("AMO expected WORD or DOUBLE")
+ let wval : MemoryOpResult(bool) = match (width, sizeof(xlen)) {
+ (WORD, _) => mem_write_value(addr, 4, result[31..0], aq & rl, rl, true),
+ (DOUBLE, 64) => mem_write_value(addr, 8, result, aq & rl, rl, true),
+ _ => internal_error("AMO expected WORD or DOUBLE")
};
match (wval) {
MemValue(true) => { X(rd) = loaded; true },
diff --git a/model/riscv_insts_base.sail b/model/riscv_insts_base.sail
index 3f8eac8..8ae4923 100644
--- a/model/riscv_insts_base.sail
+++ b/model/riscv_insts_base.sail
@@ -179,16 +179,23 @@ mapping encdec_sop : sop <-> bits(3) = {
RISCV_SRAI <-> 0b101
}
-mapping clause encdec = SHIFTIOP(shamt, rs1, rd, RISCV_SLLI) <-> 0b000000 @ shamt @ rs1 @ 0b001 @ rd @ 0b0010011
-mapping clause encdec = SHIFTIOP(shamt, rs1, rd, RISCV_SRLI) <-> 0b000000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0010011
-mapping clause encdec = SHIFTIOP(shamt, rs1, rd, RISCV_SRAI) <-> 0b010000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0010011
+mapping clause encdec = SHIFTIOP(shamt, rs1, rd, RISCV_SLLI) <-> 0b000000 @ shamt @ rs1 @ 0b001 @ rd @ 0b0010011 if sizeof(xlen) == 64 | shamt[5] == false
+mapping clause encdec = SHIFTIOP(shamt, rs1, rd, RISCV_SRLI) <-> 0b000000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0010011 if sizeof(xlen) == 64 | shamt[5] == false
+mapping clause encdec = SHIFTIOP(shamt, rs1, rd, RISCV_SRAI) <-> 0b010000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0010011 if sizeof(xlen) == 64 | shamt[5] == false
function clause execute (SHIFTIOP(shamt, rs1, rd, op)) = {
let rs1_val = X(rs1);
+ /* the decoder guard should ensure that shamt[5] = 0 for RV32 */
let result : xlenbits = match op {
- RISCV_SLLI => rs1_val << shamt,
- RISCV_SRLI => rs1_val >> shamt,
- RISCV_SRAI => shift_right_arith64(rs1_val, shamt)
+ RISCV_SLLI => if sizeof(xlen) == 32
+ then rs1_val << shamt[4..0]
+ else rs1_val << shamt,
+ RISCV_SRLI => if sizeof(xlen) == 32
+ then rs1_val >> shamt[4..0]
+ else rs1_val >> shamt,
+ RISCV_SRAI => if sizeof(xlen) == 32
+ then shift_right_arith32(rs1_val, shamt[4..0])
+ else shift_right_arith64(rs1_val, shamt)
};
X(rd) = result;
true
@@ -227,10 +234,16 @@ function clause execute (RTYPE(rs2, rs1, rd, op)) = {
RISCV_AND => rs1_val & rs2_val,
RISCV_OR => rs1_val | rs2_val,
RISCV_XOR => rs1_val ^ rs2_val,
- RISCV_SLL => rs1_val << (rs2_val[5..0]),
- RISCV_SRL => rs1_val >> (rs2_val[5..0]),
+ RISCV_SLL => if sizeof(xlen) == 32
+ then rs1_val << (rs2_val[4..0])
+ else rs1_val << (rs2_val[5..0]),
+ RISCV_SRL => if sizeof(xlen) == 32
+ then rs1_val >> (rs2_val[4..0])
+ else rs1_val >> (rs2_val[5..0]),
RISCV_SUB => rs1_val - rs2_val,
- RISCV_SRA => shift_right_arith64(rs1_val, rs2_val[5..0])
+ RISCV_SRA => if sizeof(xlen) == 32
+ then shift_right_arith32(rs1_val, rs2_val[4..0])
+ else shift_right_arith64(rs1_val, rs2_val[5..0])
};
X(rd) = result;
true
@@ -260,13 +273,13 @@ union clause ast = LOAD : (bits(12), regbits, regbits, bool, word_width, bool, b
mapping clause encdec = LOAD(imm, rs1, rd, is_unsigned, size, false, false) if size_bits(size) != 0b11 | not_bool(is_unsigned)
<-> imm @ rs1 @ bool_bits(is_unsigned) @ size_bits(size) @ rd @ 0b0000011 if size_bits(size) != 0b11 | not_bool(is_unsigned)
-val extend_value : forall 'n, 0 < 'n <= 8. (bool, MemoryOpResult(bits(8 * 'n))) -> MemoryOpResult(xlenbits)
+val extend_value : forall 'n, 0 < 'n <= xlen_bytes. (bool, MemoryOpResult(bits(8 * 'n))) -> MemoryOpResult(xlenbits)
function extend_value(is_unsigned, value) = match (value) {
MemValue(v) => MemValue(if is_unsigned then EXTZ(v) else EXTS(v) : xlenbits),
MemException(e) => MemException(e)
}
-val process_load : forall 'n, 0 < 'n <= 8. (regbits, xlenbits, MemoryOpResult(bits(8 * 'n)), bool) -> bool effect {escape, rreg, wreg}
+val process_load : forall 'n, 0 < 'n <= xlen_bytes. (regbits, xlenbits, MemoryOpResult(bits(8 * 'n)), bool) -> bool effect {escape, rreg, wreg}
function process_load(rd, addr, value, is_unsigned) =
match extend_value(is_unsigned, value) {
MemValue(result) => { X(rd) = result; true },
@@ -289,14 +302,14 @@ function clause execute(LOAD(imm, rs1, rd, is_unsigned, width, aq, rl)) = {
else match translateAddr(vaddr, Read, Data) {
TR_Failure(e) => { handle_mem_exception(vaddr, e); false },
TR_Address(addr) =>
- match width {
- BYTE =>
+ match (width, sizeof(xlen)) {
+ (BYTE, _) =>
process_load(rd, vaddr, mem_read(addr, 1, aq, rl, false), is_unsigned),
- HALF =>
+ (HALF, _) =>
process_load(rd, vaddr, mem_read(addr, 2, aq, rl, false), is_unsigned),
- WORD =>
+ (WORD, _) =>
process_load(rd, vaddr, mem_read(addr, 4, aq, rl, false), is_unsigned),
- DOUBLE =>
+ (DOUBLE, 64) =>
process_load(rd, vaddr, mem_read(addr, 8, aq, rl, false), is_unsigned)
}
}
@@ -349,11 +362,11 @@ function clause execute (STORE(imm, rs2, rs1, width, aq, rl)) = {
MemException(e) => { handle_mem_exception(addr, e); false },
MemValue(_) => {
let rs2_val = X(rs2);
- let res : MemoryOpResult(bool) = match width {
- BYTE => mem_write_value(addr, 1, rs2_val[7..0], aq, rl, false),
- HALF => mem_write_value(addr, 2, rs2_val[15..0], aq, rl, false),
- WORD => mem_write_value(addr, 4, rs2_val[31..0], aq, rl, false),
- DOUBLE => mem_write_value(addr, 8, rs2_val, aq, rl, false)
+ let res : MemoryOpResult(bool) = match (width, sizeof(xlen)) {
+ (BYTE, _) => mem_write_value(addr, 1, rs2_val[7..0], aq, rl, false),
+ (HALF, _) => mem_write_value(addr, 2, rs2_val[15..0], aq, rl, false),
+ (WORD, _) => mem_write_value(addr, 4, rs2_val[31..0], aq, rl, false),
+ (DOUBLE, 64) => mem_write_value(addr, 8, rs2_val, aq, rl, false)
};
match (res) {
MemValue(true) => true,
@@ -373,7 +386,9 @@ mapping clause assembly = STORE(imm, rs1, rd, size, aq, rl)
union clause ast = ADDIW : (bits(12), regbits, regbits)
mapping clause encdec = ADDIW(imm, rs1, rd)
+ if sizeof(xlen) == 64
<-> imm @ rs1 @ 0b000 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
function clause execute (ADDIW(imm, rs1, rd)) = {
let result : xlenbits = EXTS(imm) + X(rs1);
@@ -382,14 +397,25 @@ function clause execute (ADDIW(imm, rs1, rd)) = {
}
mapping clause assembly = ADDIW(imm, rs1, rd)
+ if sizeof(xlen) == 64
<-> "addiw" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ hex_bits_12(imm)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = SHIFTW : (bits(5), regbits, regbits, sop)
-mapping clause encdec = SHIFTW(shamt, rs1, rd, RISCV_SLLI) <-> 0b0000000 @ shamt @ rs1 @ 0b001 @ rd @ 0b0011011
-mapping clause encdec = SHIFTW(shamt, rs1, rd, RISCV_SRLI) <-> 0b0000000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
-mapping clause encdec = SHIFTW(shamt, rs1, rd, RISCV_SRAI) <-> 0b0100000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
+mapping clause encdec = SHIFTW(shamt, rs1, rd, RISCV_SLLI)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ shamt @ rs1 @ 0b001 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
+mapping clause encdec = SHIFTW(shamt, rs1, rd, RISCV_SRLI)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
+mapping clause encdec = SHIFTW(shamt, rs1, rd, RISCV_SRAI)
+ if sizeof(xlen) == 64
+ <-> 0b0100000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
function clause execute (SHIFTW(shamt, rs1, rd, op)) = {
let rs1_val = (X(rs1))[31..0];
@@ -409,16 +435,33 @@ mapping shiftw_mnemonic : sop <-> string = {
}
mapping clause assembly = SHIFTW(shamt, rs1, rd, op)
+ if sizeof(xlen) == 64
<-> shiftw_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ hex_bits_5(shamt)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = RTYPEW : (regbits, regbits, regbits, ropw)
-mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_ADDW) <-> 0b0000000 @ rs2 @ rs1 @ 0b000 @ rd @ 0b0111011
-mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SUBW) <-> 0b0100000 @ rs2 @ rs1 @ 0b000 @ rd @ 0b0111011
-mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SLLW) <-> 0b0000000 @ rs2 @ rs1 @ 0b001 @ rd @ 0b0111011
-mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SRLW) <-> 0b0000000 @ rs2 @ rs1 @ 0b101 @ rd @ 0b0111011
-mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SRAW) <-> 0b0100000 @ rs2 @ rs1 @ 0b101 @ rd @ 0b0111011
+mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_ADDW)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ rs2 @ rs1 @ 0b000 @ rd @ 0b0111011
+ if sizeof(xlen) == 64
+mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SUBW)
+ if sizeof(xlen) == 64
+ <-> 0b0100000 @ rs2 @ rs1 @ 0b000 @ rd @ 0b0111011
+ if sizeof(xlen) == 64
+mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SLLW)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ rs2 @ rs1 @ 0b001 @ rd @ 0b0111011
+ if sizeof(xlen) == 64
+mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SRLW)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ rs2 @ rs1 @ 0b101 @ rd @ 0b0111011
+ if sizeof(xlen) == 64
+mapping clause encdec = RTYPEW(rs2, rs1, rd, RISCV_SRAW)
+ if sizeof(xlen) == 64
+ <-> 0b0100000 @ rs2 @ rs1 @ 0b101 @ rd @ 0b0111011
+ if sizeof(xlen) == 64
function clause execute (RTYPEW(rs2, rs1, rd, op)) = {
let rs1_val = (X(rs1))[31..0];
@@ -443,23 +486,34 @@ mapping rtypew_mnemonic : ropw <-> string = {
}
mapping clause assembly = RTYPEW(rs2, rs1, rd, op)
+ if sizeof(xlen) == 64
<-> rtypew_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = SHIFTIWOP : (bits(5), regbits, regbits, sopw)
-mapping clause encdec = SHIFTIWOP(shamt, rs1, rd, RISCV_SLLIW) <-> 0b0000000 @ shamt @ rs1 @ 0b001 @ rd @ 0b0011011
-mapping clause encdec = SHIFTIWOP(shamt, rs1, rd, RISCV_SRLIW) <-> 0b0000000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
-mapping clause encdec = SHIFTIWOP(shamt, rs1, rd, RISCV_SRAIW) <-> 0b0100000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
+mapping clause encdec = SHIFTIWOP(shamt, rs1, rd, RISCV_SLLIW)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ shamt @ rs1 @ 0b001 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
+mapping clause encdec = SHIFTIWOP(shamt, rs1, rd, RISCV_SRLIW)
+ if sizeof(xlen) == 64
+ <-> 0b0000000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
+mapping clause encdec = SHIFTIWOP(shamt, rs1, rd, RISCV_SRAIW)
+ if sizeof(xlen) == 64
+ <-> 0b0100000 @ shamt @ rs1 @ 0b101 @ rd @ 0b0011011
+ if sizeof(xlen) == 64
function clause execute (SHIFTIWOP(shamt, rs1, rd, op)) = {
let rs1_val = X(rs1);
- let result : xlenbits = match op {
- RISCV_SLLIW => EXTS(rs1_val[31..0] << shamt),
- RISCV_SRLIW => EXTS(rs1_val[31..0] >> shamt),
- RISCV_SRAIW => EXTS(shift_right_arith32(rs1_val[31..0], shamt))
+ let result : bits(32) = match op {
+ RISCV_SLLIW => rs1_val[31..0] << shamt,
+ RISCV_SRLIW => rs1_val[31..0] >> shamt,
+ RISCV_SRAIW => shift_right_arith32(rs1_val[31..0], shamt)
};
- X(rd) = result;
+ X(rd) = EXTS(result);
true
}
@@ -470,7 +524,9 @@ mapping shiftiwop_mnemonic : sopw <-> string = {
}
mapping clause assembly = SHIFTIWOP(shamt, rs1, rd, op)
+ if sizeof(xlen) == 64
<-> shiftiwop_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ hex_bits_5(shamt)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = FENCE : (bits(4), bits(4))
@@ -649,18 +705,16 @@ mapping clause encdec = SFENCE_VMA(rs1, rs2)
<-> 0b0001001 @ rs2 @ rs1 @ 0b000 @ 0b00000 @ 0b1110011
function clause execute SFENCE_VMA(rs1, rs2) = {
- /* TODO: handle PMP/TLB synchronization when executed in M-mode. */
- if cur_privilege == User
- then { handle_illegal(); false }
- else match (architecture(mstatus.SXL()), mstatus.TVM()) {
- (Some(RV64), true) => { handle_illegal(); false },
- (Some(RV64), false) => {
- let addr : option(vaddr39) = if rs1 == 0 then None() else Some(X(rs1)[38 .. 0]);
- let asid : option(asid64) = if rs2 == 0 then None() else Some(X(rs2)[15 .. 0]);
- flushTLB(asid, addr);
- true
- },
- (_, _) => internal_error("unimplemented sfence architecture")
+ let addr : option(xlenbits) = if rs1 == 0 then None() else Some(X(rs1));
+ let asid : option(xlenbits) = if rs2 == 0 then None() else Some(X(rs2));
+ match cur_privilege {
+ User => { handle_illegal(); false },
+ Supervisor => match (architecture(get_mstatus_SXL(mstatus)), mstatus.TVM()) {
+ (Some(_), true) => { handle_illegal(); false },
+ (Some(_), false) => { flush_TLB(asid, addr); true },
+ (_, _) => internal_error("unimplemented sfence architecture")
+ },
+ Machine => { flush_TLB(asid, addr); true }
}
}
diff --git a/model/riscv_insts_cext.sail b/model/riscv_insts_cext.sail
index 9feced0..70d4978 100644
--- a/model/riscv_insts_cext.sail
+++ b/model/riscv_insts_cext.sail
@@ -56,7 +56,9 @@ mapping clause assembly = C_LW(uimm, rsc, rdc)
union clause ast = C_LD : (bits(5), cregbits, cregbits)
mapping clause encdec_compressed = C_LD(ui76 @ ui53, rs1, rd)
+ if sizeof(xlen) == 64
<-> 0b011 @ ui53 : bits(3) @ rs1 : cregbits @ ui76 : bits(2) @ rd : cregbits @ 0b00
+ if sizeof(xlen) == 64
function clause execute (C_LD(uimm, rsc, rdc)) = {
let imm : bits(12) = EXTZ(uimm @ 0b000);
@@ -66,7 +68,9 @@ function clause execute (C_LD(uimm, rsc, rdc)) = {
}
mapping clause assembly = C_LD(uimm, rsc, rdc)
+ if sizeof(xlen) == 64
<-> "c.ld" ^ spc() ^ creg_name(rdc) ^ sep() ^ creg_name(rsc) ^ sep() ^ hex_bits_8(uimm @ 0b000)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_SW : (bits(5), cregbits, cregbits)
@@ -88,7 +92,9 @@ mapping clause assembly = C_SW(uimm, rsc1, rsc2)
union clause ast = C_SD : (bits(5), cregbits, cregbits)
mapping clause encdec_compressed = C_SD(ui76 @ ui53, rs1, rs2)
+ if sizeof(xlen) == 64
<-> 0b111 @ ui53 : bits(3) @ rs1 : bits(3) @ ui76 : bits(2) @ rs2 : bits(3) @ 0b00
+ if sizeof(xlen) == 64
function clause execute (C_SD(uimm, rsc1, rsc2)) = {
let imm : bits(12) = EXTZ(uimm @ 0b000);
@@ -98,7 +104,9 @@ function clause execute (C_SD(uimm, rsc1, rsc2)) = {
}
mapping clause assembly = C_SD(uimm, rsc1, rsc2)
+ if sizeof(xlen) == 64
<-> "c.sd" ^ spc() ^ creg_name(rsc1) ^ sep() ^ creg_name(rsc2) ^ sep() ^ hex_bits_8(uimm @ 0b000)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_ADDI : (bits(6), regbits)
@@ -120,19 +128,28 @@ mapping clause assembly = C_ADDI(nzi, rsd)
/* ****************************************************************** */
union clause ast = C_JAL : (bits(11))
-union clause ast = C_ADDIW : (bits(6), regbits)
-/* FIXME: decoding differs for RVC32/RVC64. Below, we are assuming
- * RV64, and C_JAL is RV32 only. */
-
-mapping clause encdec_compressed = C_ADDIW(imm5 @ imm40, rsd)
- if rsd != zreg
- <-> 0b001 @ imm5 : bits(1) @ rsd : regbits @ imm40 : bits(5) @ 0b01
- if rsd != zreg
+mapping clause encdec_compressed = C_JAL(i11 @ i10 @ i98 @ i7 @ i6 @ i5 @ i4 @ i31)
+ if sizeof(xlen) == 32
+ <-> 0b001 @ i11 : bits(1) @ i4 : bits(1) @ i98 : bits(2) @ i10 : bits(1) @ i6 : bits(1) @ i7 : bits(1) @ i31 : bits(3) @ i5 : bits(1) @ 0b01
+ if sizeof(xlen) == 32
function clause execute (C_JAL(imm)) =
execute(RISCV_JAL(EXTS(imm @ 0b0), ra))
+mapping clause assembly = C_JAL(imm)
+ if sizeof(xlen) == 32
+ <-> "c.jal" ^ spc() ^ hex_bits_12(imm @ 0b0)
+ if sizeof(xlen) == 32
+
+/* ****************************************************************** */
+union clause ast = C_ADDIW : (bits(6), regbits)
+
+mapping clause encdec_compressed = C_ADDIW(imm5 @ imm40, rsd)
+ if rsd != zreg & sizeof(xlen) == 64
+ <-> 0b001 @ imm5 : bits(1) @ rsd : regbits @ imm40 : bits(5) @ 0b01
+ if rsd != zreg & sizeof(xlen) == 64
+
function clause execute (C_ADDIW(imm, rsd)) = {
let imm : bits(32) = EXTS(imm);
let rs_val = X(rsd);
@@ -141,11 +158,10 @@ function clause execute (C_ADDIW(imm, rsd)) = {
true
}
-mapping clause assembly = C_JAL(imm)
- <-> "c.jal" ^ spc() ^ hex_bits_12(imm @ 0b0)
-
mapping clause assembly = C_ADDIW(imm, rsd)
+ if sizeof(xlen) == 64
<-> "c.addiw" ^ spc() ^ reg_name(rsd) ^ sep() ^ hex_bits_6(imm)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_LI : (bits(6), regbits)
@@ -316,7 +332,9 @@ union clause ast = C_SUBW : (cregbits, cregbits)
/* TODO: invalid on RV32 */
mapping clause encdec_compressed = C_SUBW(rsd, rs2)
+ if sizeof(xlen) == 64
<-> 0b100 @ 0b1 @ 0b11 @ rsd : cregbits @ 0b00 @ rs2 : cregbits @ 0b01
+ if sizeof(xlen) == 64
function clause execute (C_SUBW(rsd, rs2)) = {
let rsd = creg2reg_bits(rsd);
@@ -325,14 +343,18 @@ function clause execute (C_SUBW(rsd, rs2)) = {
}
mapping clause assembly = C_SUBW(rsd, rs2)
+ if sizeof(xlen) == 64
<-> "c.subw" ^ spc() ^ creg_name(rsd) ^ sep() ^ creg_name(rs2)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_ADDW : (cregbits, cregbits)
/* TODO: invalid on RV32 */
mapping clause encdec_compressed = C_ADDW(rsd, rs2)
+ if sizeof(xlen) == 64
<-> 0b100 @ 0b1 @ 0b11 @ rsd : cregbits @ 0b01 @ rs2 : cregbits @ 0b01
+ if sizeof(xlen) == 64
function clause execute (C_ADDW(rsd, rs2)) = {
let rsd = creg2reg_bits(rsd);
@@ -341,7 +363,9 @@ function clause execute (C_ADDW(rsd, rs2)) = {
}
mapping clause assembly = C_ADDW(rsd, rs2)
+ if sizeof(xlen) == 64
<-> "c.addw" ^ spc() ^ creg_name(rsd) ^ sep() ^ creg_name(rs2)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_J : (bits(11))
@@ -412,9 +436,9 @@ mapping clause assembly = C_LWSP(uimm, rd)
union clause ast = C_LDSP : (bits(6), regbits)
mapping clause encdec_compressed = C_LDSP(ui86 @ ui5 @ ui43, rd)
- if rd != zreg
+ if rd != zreg & sizeof(xlen) == 64
<-> 0b011 @ ui5 : bits(1) @ rd : regbits @ ui43 : bits(2) @ ui86 : bits(3) @ 0b10
- if rd != zreg
+ if rd != zreg & sizeof(xlen) == 64
function clause execute (C_LDSP(uimm, rd)) = {
let imm : bits(12) = EXTZ(uimm @ 0b000);
@@ -422,9 +446,9 @@ function clause execute (C_LDSP(uimm, rd)) = {
}
mapping clause assembly = C_LDSP(uimm, rd)
- if rd != zreg
+ if rd != zreg & sizeof(xlen) == 64
<-> "c.ldsp" ^ spc() ^ reg_name(rd) ^ sep() ^ hex_bits_6(uimm)
- if rd != zreg
+ if rd != zreg & sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_SWSP : (bits(6), regbits)
@@ -444,7 +468,9 @@ mapping clause assembly = C_SWSP(uimm, rd)
union clause ast = C_SDSP : (bits(6), regbits)
mapping clause encdec_compressed = C_SDSP(ui86 @ ui53, rs2)
+ if sizeof(xlen) == 64
<-> 0b111 @ ui53 : bits(3) @ ui86 : bits(3) @ rs2 : regbits @ 0b10
+ if sizeof(xlen) == 64
function clause execute (C_SDSP(uimm, rs2)) = {
let imm : bits(12) = EXTZ(uimm @ 0b000);
@@ -452,7 +478,9 @@ function clause execute (C_SDSP(uimm, rs2)) = {
}
mapping clause assembly = C_SDSP(uimm, rs2)
+ if sizeof(xlen) == 64
<-> "c.sdsp" ^ spc() ^ reg_name(rs2) ^ sep() ^ hex_bits_6(uimm)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = C_JR : (regbits)
diff --git a/model/riscv_insts_mext.sail b/model/riscv_insts_mext.sail
index 0908a7b..cab8d9c 100644
--- a/model/riscv_insts_mext.sail
+++ b/model/riscv_insts_mext.sail
@@ -22,8 +22,10 @@ function clause execute (MUL(rs2, rs1, rd, high, signed1, signed2)) = {
let rs2_val = X(rs2);
let rs1_int : int = if signed1 then signed(rs1_val) else unsigned(rs1_val);
let rs2_int : int = if signed2 then signed(rs2_val) else unsigned(rs2_val);
- let result128 = to_bits(128, rs1_int * rs2_int);
- let result = if high then result128[127..64] else result128[63..0];
+ let result_wide = to_bits(2 * sizeof(xlen), rs1_int * rs2_int);
+ let result = if high
+ then result_wide[(2 * sizeof(xlen) - 1) .. sizeof(xlen)]
+ else result_wide[(sizeof(xlen) - 1) .. 0];
X(rd) = result;
true
} else {
@@ -57,7 +59,7 @@ function clause execute (DIV(rs2, rs1, rd, s)) = {
let q : int = if rs2_int == 0 then -1 else quot_round_zero(rs1_int, rs2_int);
/* check for signed overflow */
let q': int = if s & q > xlen_max_signed then xlen_min_signed else q;
- X(rd) = to_bits(xlen, q');
+ X(rd) = to_bits(sizeof(xlen), q');
true
} else {
handle_illegal();
@@ -87,7 +89,7 @@ function clause execute (REM(rs2, rs1, rd, s)) = {
let rs2_int : int = if s then signed(rs2_val) else unsigned(rs2_val);
let r : int = if rs2_int == 0 then rs1_int else rem_round_zero(rs1_int, rs2_int);
/* signed overflow case returns zero naturally as required due to -1 divisor */
- X(rd) = to_bits(xlen, r);
+ X(rd) = to_bits(sizeof(xlen), r);
true
} else {
handle_illegal();
@@ -101,7 +103,10 @@ mapping clause assembly = REM(rs2, rs1, rd, s)
/* ****************************************************************** */
union clause ast = MULW : (regbits, regbits, regbits)
-mapping clause encdec = MULW(rs2, rs1, rd) <-> 0b0000001 @ rs2 @ rs1 @ 0b000 @ rd @ 0b0111011
+mapping clause encdec = MULW(rs2, rs1, rd)
+ if sizeof(xlen) == 64
+ <-> 0b0000001 @ rs2 @ rs1 @ 0b000 @ rd @ 0b0111011
+ if sizeof(xlen) == 64
function clause execute (MULW(rs2, rs1, rd)) = {
if haveMulDiv() then {
@@ -121,13 +126,17 @@ function clause execute (MULW(rs2, rs1, rd)) = {
}
mapping clause assembly = MULW(rs2, rs1, rd)
+ if sizeof(xlen) == 64
<-> "mulw" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = DIVW : (regbits, regbits, regbits, bool)
mapping clause encdec = DIVW(rs2, rs1, rd, s)
+ if sizeof(xlen) == 64
<-> 0b0000001 @ rs2 @ rs1 @ 0b10 @ bool_not_bits(s) @ rd @ 0b0111011
+ if sizeof(xlen) == 64
function clause execute (DIVW(rs2, rs1, rd, s)) = {
if haveMulDiv() then {
@@ -147,13 +156,17 @@ function clause execute (DIVW(rs2, rs1, rd, s)) = {
}
mapping clause assembly = DIVW(rs2, rs1, rd, s)
+ if sizeof(xlen) == 64
<-> "div" ^ maybe_not_u(s) ^ "w" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2)
+ if sizeof(xlen) == 64
/* ****************************************************************** */
union clause ast = REMW : (regbits, regbits, regbits, bool)
mapping clause encdec = REMW(rs2, rs1, rd, s)
+ if sizeof(xlen) == 64
<-> 0b0000001 @ rs2 @ rs1 @ 0b11 @ bool_not_bits(s) @ rd @ 0b0111011
+ if sizeof(xlen) == 64
function clause execute (REMW(rs2, rs1, rd, s)) = {
if haveMulDiv() then {
@@ -172,4 +185,6 @@ function clause execute (REMW(rs2, rs1, rd, s)) = {
}
mapping clause assembly = REMW(rs2, rs1, rd, s)
+ if sizeof(xlen) == 64
<-> "rem" ^ maybe_not_u(s) ^ "w" ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ reg_name(rs2)
+ if sizeof(xlen) == 64
diff --git a/model/riscv_insts_zicsr.sail b/model/riscv_insts_zicsr.sail
index aac2266..749f20c 100644
--- a/model/riscv_insts_zicsr.sail
+++ b/model/riscv_insts_zicsr.sail
@@ -15,56 +15,65 @@ mapping clause encdec = CSR(csr, rs1, rd, is_imm, op)
function readCSR csr : csreg -> xlenbits = {
let res : xlenbits =
- match csr {
+ match (csr, sizeof(xlen)) {
/* machine mode */
- 0xF11 => mvendorid,
- 0xF12 => marchid,
- 0xF13 => mimpid,
- 0xF14 => mhartid,
- 0x300 => mstatus.bits(),
- 0x301 => misa.bits(),
- 0x302 => medeleg.bits(),
- 0x303 => mideleg.bits(),
- 0x304 => mie.bits(),
- 0x305 => mtvec.bits(),
- 0x306 => EXTZ(mcounteren.bits()),
- 0x340 => mscratch,
- 0x341 => mepc & pc_alignment_mask(),
- 0x342 => mcause.bits(),
- 0x343 => mtval,
- 0x344 => mip.bits(),
-
- 0x3A0 => pmpcfg0,
- 0x3B0 => pmpaddr0,
-
- /* supervisor mode */
- 0x100 => lower_mstatus(mstatus).bits(),
- 0x102 => sedeleg.bits(),
- 0x103 => sideleg.bits(),
- 0x104 => lower_mie(mie, mideleg).bits(),
- 0x105 => stvec.bits(),
- 0x106 => EXTZ(scounteren.bits()),
- 0x140 => sscratch,
- 0x141 => sepc & pc_alignment_mask(),
- 0x142 => scause.bits(),
- 0x143 => stval,
- 0x144 => lower_mip(mip, mideleg).bits(),
- 0x180 => satp,
-
- /* others */
- 0xC00 => mcycle,
- 0xC01 => mtime,
- 0xC02 => minstret,
+ (0xF11, _) => EXTZ(mvendorid),
+ (0xF12, _) => marchid,
+ (0xF13, _) => mimpid,
+ (0xF14, _) => mhartid,
+ (0x300, _) => mstatus.bits(),
+ (0x301, _) => misa.bits(),
+ (0x302, _) => medeleg.bits(),
+ (0x303, _) => mideleg.bits(),
+ (0x304, _) => mie.bits(),
+ (0x305, _) => mtvec.bits(),
+ (0x306, _) => EXTZ(mcounteren.bits()),
+ (0x340, _) => mscratch,
+ (0x341, _) => mepc & pc_alignment_mask(),
+ (0x342, _) => mcause.bits(),
+ (0x343, _) => mtval,
+ (0x344, _) => mip.bits(),
+
+ (0x3A0, _) => pmpcfg0,
+ (0x3B0, _) => pmpaddr0,
+
+ /* machine mode counters */
+ (0xB00, _) => mcycle[(sizeof(xlen) - 1) .. 0],
+ (0xB02, _) => minstret[(sizeof(xlen) - 1) .. 0],
+ (0xB80, 32) => mcycle[63 .. 32],
+ (0xB82, 32) => minstret[63 .. 32],
/* trigger/debug */
- 0x7a0 => ~(tselect), /* this indicates we don't have any trigger support */
-
- _ => /* check extensions */
- match read_UExt_CSR(csr) {
- Some(res) => res,
- None() => { print_bits("unhandled read to CSR ", csr);
- 0x0000_0000_0000_0000 }
- }
+ (0x7a0, _) => ~(tselect), /* this indicates we don't have any trigger support */
+
+ /* supervisor mode */
+ (0x100, _) => lower_mstatus(mstatus).bits(),
+ (0x102, _) => sedeleg.bits(),
+ (0x103, _) => sideleg.bits(),
+ (0x104, _) => lower_mie(mie, mideleg).bits(),
+ (0x105, _) => stvec.bits(),
+ (0x106, _) => EXTZ(scounteren.bits()),
+ (0x140, _) => sscratch,
+ (0x141, _) => sepc & pc_alignment_mask(),
+ (0x142, _) => scause.bits(),
+ (0x143, _) => stval,
+ (0x144, _) => lower_mip(mip, mideleg).bits(),
+ (0x180, _) => satp,
+
+ /* user mode counters */
+ (0xC00, _) => mcycle[(sizeof(xlen) - 1) .. 0],
+ (0xC01, _) => mtime[(sizeof(xlen) - 1) .. 0],
+ (0xC02, _) => minstret[(sizeof(xlen) - 1) .. 0],
+ (0xC80, 32) => mcycle[63 .. 32],
+ (0xC81, 32) => mtime[63 .. 32],
+ (0xC82, 32) => minstret[63 .. 32],
+
+ _ => /* check extensions */
+ match read_UExt_CSR(csr) {
+ Some(res) => res,
+ None() => { print_bits("unhandled read to CSR ", csr);
+ EXTZ(0x0) }
+ }
};
print_reg("CSR " ^ csr ^ " -> " ^ BitStr(res));
res
@@ -72,52 +81,53 @@ function readCSR csr : csreg -> xlenbits = {
function writeCSR (csr : csreg, value : xlenbits) -> unit = {
let res : option(xlenbits) =
- match csr {
+ match (csr, sizeof(xlen)) {
/* machine mode */
- 0x300 => { mstatus = legalize_mstatus(mstatus, value); Some(mstatus.bits()) },
- 0x301 => { misa = legalize_misa(misa, value); Some(misa.bits()) },
- 0x302 => { medeleg = legalize_medeleg(medeleg, value); Some(medeleg.bits()) },
- 0x303 => { mideleg = legalize_mideleg(mideleg, value); Some(mideleg.bits()) },
- 0x304 => { mie = legalize_mie(mie, value); Some(mie.bits()) },
- 0x305 => { mtvec = legalize_tvec(mtvec, value); Some(mtvec.bits()) },
- 0x306 => { mcounteren = legalize_mcounteren(mcounteren, value); Some(EXTZ(mcounteren.bits())) },
- 0x340 => { mscratch = value; Some(mscratch) },
- 0x341 => { mepc = legalize_xepc(value); Some(mepc) },
- 0x342 => { mcause->bits() = value; Some(mcause.bits()) },
- 0x343 => { mtval = value; Some(mtval) },
- 0x344 => { mip = legalize_mip(mip, value); Some(mip.bits()) },
-
- 0x3A0 => { pmpcfg0 = value; Some(pmpcfg0) }, /* FIXME: legalize */
- 0x3B0 => { pmpaddr0 = value; Some(pmpaddr0) }, /* FIXME: legalize */
-
- /* supervisor mode */
- 0x100 => { mstatus = legalize_sstatus(mstatus, value); Some(mstatus.bits()) },
- 0x102 => { sedeleg = legalize_sedeleg(sedeleg, value); Some(sedeleg.bits()) },
- 0x103 => { sideleg->bits() = value; Some(sideleg.bits()) }, /* TODO: does this need legalization? */
- 0x104 => { mie = legalize_sie(mie, mideleg, value); Some(mie.bits()) },
- 0x105 => { stvec = legalize_tvec(stvec, value); Some(stvec.bits()) },
- 0x106 => { scounteren = legalize_scounteren(scounteren, value); Some(EXTZ(scounteren.bits())) },
- 0x140 => { sscratch = value; Some(sscratch) },
- 0x141 => { sepc = legalize_xepc(value); Some(sepc) },
- 0x142 => { scause->bits() = value; Some(scause.bits()) },
- 0x143 => { stval = value; Some(stval) },
- 0x144 => { mip = legalize_sip(mip, mideleg, value); Some(mip.bits()) },
- 0x180 => { satp = legalize_satp(cur_Architecture(), satp, value); Some(satp) },
+ (0x300, _) => { mstatus = legalize_mstatus(mstatus, value); Some(mstatus.bits()) },
+ (0x301, _) => { misa = legalize_misa(misa, value); Some(misa.bits()) },
+ (0x302, _) => { medeleg = legalize_medeleg(medeleg, value); Some(medeleg.bits()) },
+ (0x303, _) => { mideleg = legalize_mideleg(mideleg, value); Some(mideleg.bits()) },
+ (0x304, _) => { mie = legalize_mie(mie, value); Some(mie.bits()) },
+ (0x305, _) => { mtvec = legalize_tvec(mtvec, value); Some(mtvec.bits()) },
+ (0x306, _) => { mcounteren = legalize_mcounteren(mcounteren, value); Some(EXTZ(mcounteren.bits())) },
+ (0x340, _) => { mscratch = value; Some(mscratch) },
+ (0x341, _) => { mepc = legalize_xepc(value); Some(mepc) },
+ (0x342, _) => { mcause->bits() = value; Some(mcause.bits()) },
+ (0x343, _) => { mtval = value; Some(mtval) },
+ (0x344, _) => { mip = legalize_mip(mip, value); Some(mip.bits()) },
+
+ (0x3A0, _) => { pmpcfg0 = value; Some(pmpcfg0) }, /* FIXME: legalize */
+ (0x3B0, _) => { pmpaddr0 = value; Some(pmpaddr0) }, /* FIXME: legalize */
+
+ /* machine mode counters */
+ (0xB00, _) => { mcycle[(sizeof(xlen) - 1) .. 0] = value; Some(value) },
+ (0xB02, _) => { minstret[(sizeof(xlen) - 1) .. 0] = value; minstret_written = true; Some(value) },
+ (0xB80, 32) => { mcycle[63 .. 32] = value; Some(value) },
+ (0xB82, 32) => { minstret[63 .. 32] = value; minstret_written = true; Some(value) },
/* trigger/debug */
- 0x7a0 => { tselect = value; Some(tselect) },
+ (0x7a0, _) => { tselect = value; Some(tselect) },
- /* counters */
- 0xC00 => { mcycle = value; Some(mcycle) },
- /* FIXME: it is not clear whether writable mtime is platform-dependent. */
- 0xC02 => { minstret = value; minstret_written = true; Some(minstret) },
-
- _ => None()
+ /* supervisor mode */
+ (0x100, _) => { mstatus = legalize_sstatus(mstatus, value); Some(mstatus.bits()) },
+ (0x102, _) => { sedeleg = legalize_sedeleg(sedeleg, value); Some(sedeleg.bits()) },
+ (0x103, _) => { sideleg->bits() = value; Some(sideleg.bits()) }, /* TODO: does this need legalization? */
+ (0x104, _) => { mie = legalize_sie(mie, mideleg, value); Some(mie.bits()) },
+ (0x105, _) => { stvec = legalize_tvec(stvec, value); Some(stvec.bits()) },
+ (0x106, _) => { scounteren = legalize_scounteren(scounteren, value); Some(EXTZ(scounteren.bits())) },
+ (0x140, _) => { sscratch = value; Some(sscratch) },
+ (0x141, _) => { sepc = legalize_xepc(value); Some(sepc) },
+ (0x142, _) => { scause->bits() = value; Some(scause.bits()) },
+ (0x143, _) => { stval = value; Some(stval) },
+ (0x144, _) => { mip = legalize_sip(mip, mideleg, value); Some(mip.bits()) },
+ (0x180, _) => { satp = legalize_satp(cur_Architecture(), satp, value); Some(satp) },
+
+ _ => None()
};
match res {
Some(v) => print_reg("CSR " ^ csr ^ " <- " ^ BitStr(v) ^ " (input: " ^ BitStr(value) ^ ")"),
None() => { /* check extensions */
- if write_UExt_CSR(csr, value)
+ if write_UExt_CSR(csr, value)
then ()
else print_bits("unhandled write to CSR ", csr)
}
@@ -162,6 +172,3 @@ mapping clause assembly = CSR(csr, rs1, rd, true, op)
<-> csr_mnemonic(op) ^ "i" ^ spc() ^ reg_name(rd) ^ sep() ^ hex_bits_5(rs1) ^ sep() ^ csr_name_map(csr)
mapping clause assembly = CSR(csr, rs1, rd, false, op)
<-> csr_mnemonic(op) ^ spc() ^ reg_name(rd) ^ sep() ^ reg_name(rs1) ^ sep() ^ csr_name_map(csr)
-
-
-
diff --git a/model/riscv_jalr_rmem.sail b/model/riscv_jalr_rmem.sail
index daf4bb0..cd8174e 100644
--- a/model/riscv_jalr_rmem.sail
+++ b/model/riscv_jalr_rmem.sail
@@ -5,6 +5,6 @@ function clause execute (RISCV_JALR(imm, rs1, rd)) = {
/* write rd before anything else to prevent unintended strength */
X(rd) = nextPC; /* compatible with JALR, C.JR and C.JALR */
let newPC : xlenbits = X(rs1) + EXTS(imm);
- nextPC = newPC[63..1] @ 0b0;
+ nextPC = newPC[(sizeof(xlen) - 1) .. 1] @ 0b0;
true
}
diff --git a/model/riscv_jalr_seq.sail b/model/riscv_jalr_seq.sail
index fcf9526..25b9dbb 100644
--- a/model/riscv_jalr_seq.sail
+++ b/model/riscv_jalr_seq.sail
@@ -7,7 +7,7 @@ function clause execute (RISCV_JALR(imm, rs1, rd)) = {
some manner, but for now, we just keep a reordered definition to improve simulator
performance.
*/
- let newPC : xlenbits = (X(rs1) + EXTS(imm))[63..1] @ 0b0;
+ let newPC : xlenbits = (X(rs1) + EXTS(imm))[(sizeof(xlen) - 1) .. 1] @ 0b0;
if newPC[1] & (~ (haveRVC())) then {
handle_mem_exception(newPC, E_Fetch_Addr_Align);
false;
diff --git a/model/riscv_mem.sail b/model/riscv_mem.sail
index 9ffb713..7e31659 100644
--- a/model/riscv_mem.sail
+++ b/model/riscv_mem.sail
@@ -45,7 +45,7 @@ function rvfi_read (addr, width, result) = {
MemValue(v) =>
if width <= 8
then {
- rvfi_exec->rvfi_mem_wdata() = zero_extend(v,64);
+ rvfi_exec->rvfi_mem_wdata() = sail_zero_extend(v,64);
rvfi_exec->rvfi_mem_wmask() = to_bits(8,width)
} else (),
MemException(_) => ()
@@ -67,7 +67,11 @@ function mem_read (addr, width, aq, rl, res) = {
let result : MemoryOpResult(bits(8 * 'n)) =
if (aq | res) & (~ (is_aligned_addr(addr, width)))
then MemException(E_Load_Addr_Align)
- else checked_mem_read(Data, addr, width, aq, rl, res);
+ else match (aq, rl, res) {
+ (false, true, false) => throw(Error_not_implemented("load.rl")),
+ (false, true, true) => throw(Error_not_implemented("lr.rl")),
+ (_, _, _) => checked_mem_read(Data, addr, width, aq, rl, res)
+ };
rvfi_read(addr, width, result);
result
}
@@ -120,7 +124,7 @@ val rvfi_write : forall 'n, 'n > 0. (xlenbits, atom('n), bits(8 * 'n)) -> unit e
function rvfi_write (addr, width, value) = {
rvfi_exec->rvfi_mem_addr() = addr;
if width <= 8 then {
- rvfi_exec->rvfi_mem_wdata() = zero_extend(value,64);
+ rvfi_exec->rvfi_mem_wdata() = sail_zero_extend(value,64);
rvfi_exec->rvfi_mem_wmask() = to_bits(8,width);
}
}
@@ -136,5 +140,9 @@ function mem_write_value (addr, width, value, aq, rl, con) = {
rvfi_write(addr, width, value);
if (rl | con) & (~ (is_aligned_addr(addr, width)))
then MemException(E_SAMO_Addr_Align)
- else checked_mem_write(addr, width, value, aq, rl, con)
+ else match (aq, rl, con) {
+ (true, false, false) => throw(Error_not_implemented("store.aq")),
+ (true, false, true) => throw(Error_not_implemented("sc.aq")),
+ (_, _, _) => checked_mem_write(addr, width, value, aq, rl, con)
+ }
}
diff --git a/model/riscv_next_regs.sail b/model/riscv_next_regs.sail
index a8cc38c..5a3fb58 100644
--- a/model/riscv_next_regs.sail
+++ b/model/riscv_next_regs.sail
@@ -1,7 +1,7 @@
/* Architectural state for the 'N' user-level interrupts standard extension. */
/* ustatus reveals a subset of mstatus */
-bitfield Ustatus : bits(64) = {
+bitfield Ustatus : xlenbits = {
UPIE : 4,
UIE : 0
}
@@ -28,7 +28,7 @@ function legalize_ustatus(m : Mstatus, v : xlenbits) -> Mstatus = {
m
}
-bitfield Uinterrupts : bits(64) = {
+bitfield Uinterrupts : xlenbits = {
UEI : 8, /* external interrupt */
UTI : 4, /* timer interrupt */
USI : 0 /* software interrupt */
diff --git a/model/riscv_platform.sail b/model/riscv_platform.sail
index 0ac77da..437c41d 100644
--- a/model/riscv_platform.sail
+++ b/model/riscv_platform.sail
@@ -64,17 +64,26 @@ function phys_mem_segments() =
/* Physical memory map predicates */
function within_phys_mem forall 'n. (addr : xlenbits, width : atom('n)) -> bool = {
- let ram_base = plat_ram_base ();
- let rom_base = plat_rom_base ();
- let ram_size = plat_ram_size ();
- let rom_size = plat_rom_size ();
+ /* To avoid overflow issues when physical memory extends to the end
+ * of the addressable range, we need to perform address bound checks
+ * with a wider bitwidth.
+ *
+ * But since this is a hot function, we use only 64-bit width even for
+ * 64-bit mode to reduce impact on emulator performance.
+ */
+
+ let ext_addr : bits(64) = EXTZ(addr);
+ let ram_base : bits(64) = EXTZ(plat_ram_base ());
+ let rom_base : bits(64) = EXTZ(plat_rom_base ());
+ let ram_size : bits(64) = EXTZ(plat_ram_size ());
+ let rom_size : bits(64) = EXTZ(plat_rom_size ());
/* todo: iterate over segment list */
- if ( ram_base <=_u addr
- & (addr + sizeof('n)) <=_u (ram_base + ram_size))
+ if ( ram_base <=_u ext_addr
+ & (ext_addr + sizeof('n)) <=_u (ram_base + ram_size))
then true
- else if ( rom_base <=_u addr
- & (addr + sizeof('n)) <=_u (rom_base + rom_size))
+ else if ( rom_base <=_u ext_addr
+ & (ext_addr + sizeof('n)) <=_u (rom_base + rom_size))
then true
else {
print_platform("within_phys_mem: " ^ BitStr(addr) ^ " not within phys-mem:");
@@ -91,17 +100,17 @@ function within_clint forall 'n. (addr : xlenbits, width : atom('n)) -> bool =
& (addr + sizeof('n)) <=_u (plat_clint_base() + plat_clint_size())
function within_htif_writable forall 'n. (addr : xlenbits, width : atom('n)) -> bool =
- plat_htif_tohost() == addr
+ plat_htif_tohost() == addr | (plat_htif_tohost() + 4 == addr & width == 4)
function within_htif_readable forall 'n. (addr : xlenbits, width : atom('n)) -> bool =
- plat_htif_tohost() == addr
+ plat_htif_tohost() == addr | (plat_htif_tohost() + 4 == addr & width == 4)
/* CLINT (Core Local Interruptor), based on Spike. */
val plat_insns_per_tick = {ocaml: "Platform.insns_per_tick", interpreter: "Platform.insns_per_tick", c: "plat_insns_per_tick", lem: "plat_insns_per_tick"} : unit -> int
// assumes a single hart, since this typically is a vector of per-hart registers.
-register mtimecmp : xlenbits // memory-mapped internal clint register.
+register mtimecmp : bits(64) // memory-mapped internal clint register.
/* CLINT memory-mapped IO */
@@ -117,9 +126,11 @@ register mtimecmp : xlenbits // memory-mapped internal clint register.
* bffc mtime hi
*/
-let MSIP_BASE : xlenbits = 0x0000000000000000
-let MTIMECMP_BASE : xlenbits = 0x0000000000004000
-let MTIME_BASE : xlenbits = 0x000000000000bff8
+let MSIP_BASE : xlenbits = EXTZ(0x00000)
+let MTIMECMP_BASE : xlenbits = EXTZ(0x04000)
+let MTIMECMP_BASE_HI : xlenbits = EXTZ(0x04004)
+let MTIME_BASE : xlenbits = EXTZ(0x0bff8)
+let MTIME_BASE_HI : xlenbits = EXTZ(0x0bffc)
val clint_load : forall 'n, 'n > 0. (xlenbits, int('n)) -> MemoryOpResult(bits(8 * 'n)) effect {rreg}
function clint_load(addr, width) = {
@@ -128,17 +139,40 @@ function clint_load(addr, width) = {
if addr == MSIP_BASE & ('n == 8 | 'n == 4)
then {
print_platform("clint[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mip.MSI()));
- MemValue(zero_extend(mip.MSI(), sizeof(8 * 'n)))
+ MemValue(sail_zero_extend(mip.MSI(), sizeof(8 * 'n)))
+ }
+ else if addr == MTIMECMP_BASE & ('n == 4)
+ then {
+ print_platform("clint<4>[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtimecmp[31..0]));
+ /* FIXME: Redundant zero_extend currently required by Lem backend */
+ MemValue(sail_zero_extend(mtimecmp[31..0], 32))
}
else if addr == MTIMECMP_BASE & ('n == 8)
then {
- print_platform("clint[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtimecmp));
- MemValue(zero_extend(mtimecmp, 64)) /* FIXME: Redundant zero_extend currently required by Lem backend */
+ print_platform("clint<8>[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtimecmp));
+ /* FIXME: Redundant zero_extend currently required by Lem backend */
+ MemValue(sail_zero_extend(mtimecmp, 64))
+ }
+ else if addr == MTIMECMP_BASE_HI & ('n == 4)
+ then {
+ print_platform("clint-hi<4>[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtimecmp[63..32]));
+ /* FIXME: Redundant zero_extend currently required by Lem backend */
+ MemValue(sail_zero_extend(mtimecmp[63..32], 32))
+ }
+ else if addr == MTIME_BASE & ('n == 4)
+ then {
+ print_platform("clint[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtime));
+ MemValue(sail_zero_extend(mtime[31..0], 32))
}
else if addr == MTIME_BASE & ('n == 8)
then {
print_platform("clint[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtime));
- MemValue(zero_extend(mtime, 64))
+ MemValue(sail_zero_extend(mtime, 64))
+ }
+ else if addr == MTIME_BASE_HI & ('n == 4)
+ then {
+ print_platform("clint[" ^ BitStr(addr) ^ "] -> " ^ BitStr(mtime));
+ MemValue(sail_zero_extend(mtime[63..32], 32))
}
else {
print_platform("clint[" ^ BitStr(addr) ^ "] -> <not-mapped>");
@@ -165,8 +199,18 @@ function clint_store(addr, width, data) = {
clint_dispatch();
MemValue(true)
} else if addr == MTIMECMP_BASE & 'n == 8 then {
- print_platform("clint[" ^ BitStr(addr) ^ "] <- " ^ BitStr(data) ^ " (mtimecmp)");
- mtimecmp = zero_extend(data, 64); /* FIXME: Redundant zero_extend currently required by Lem backend */
+ print_platform("clint<8>[" ^ BitStr(addr) ^ "] <- " ^ BitStr(data) ^ " (mtimecmp)");
+ mtimecmp = sail_zero_extend(data, 64); /* FIXME: Redundant zero_extend currently required by Lem backend */
+ clint_dispatch();
+ MemValue(true)
+ } else if addr == MTIMECMP_BASE & 'n == 4 then {
+ print_platform("clint<4>[" ^ BitStr(addr) ^ "] <- " ^ BitStr(data) ^ " (mtimecmp)");
+ mtimecmp = vector_update_subrange(mtimecmp, 31, 0, sail_zero_extend(data, 32)); /* FIXME: Redundant zero_extend currently required by Lem backend */
+ clint_dispatch();
+ MemValue(true)
+ } else if addr == MTIMECMP_BASE_HI & 'n == 4 then {
+ print_platform("clint<4>[" ^ BitStr(addr) ^ "] <- " ^ BitStr(data) ^ " (mtimecmp)");
+ mtimecmp = vector_update_subrange(mtimecmp, 63, 32, sail_zero_extend(data, 32)); /* FIXME: Redundant zero_extend currently required by Lem backend */
clint_dispatch();
MemValue(true)
} else {
@@ -195,9 +239,9 @@ bitfield htif_cmd : bits(64) = {
payload : 47 .. 0
}
-register htif_tohost : xlenbits
+register htif_tohost : bits(64)
register htif_done : bool
-register htif_exit_code : xlenbits
+register htif_exit_code : bits(64)
/* Since the htif tohost port is only available at a single address,
@@ -209,27 +253,37 @@ val htif_load : forall 'n, 'n > 0. (xlenbits, int('n)) -> MemoryOpResult(bits(8
function htif_load(addr, width) = {
print_platform("htif[" ^ BitStr(addr) ^ "] -> " ^ BitStr(htif_tohost));
/* FIXME: For now, only allow the expected access widths. */
- if width == 8
- then MemValue(zero_extend(htif_tohost, 64)) /* FIXME: Redundant zero_extend currently required by Lem backend */
- else MemException(E_Load_Access_Fault)
+ if width == 8 & (addr == plat_htif_tohost())
+ then MemValue(sail_zero_extend(htif_tohost, 64)) /* FIXME: Redundant zero_extend currently required by Lem backend */
+ else if width == 4 & addr == plat_htif_tohost()
+ then MemValue(sail_zero_extend(htif_tohost[31..0], 32)) /* FIXME: Redundant zero_extend currently required by Lem backend */
+ else if width == 4 & addr == plat_htif_tohost() + 4
+ then MemValue(sail_zero_extend(htif_tohost[63..32], 32)) /* FIXME: Redundant zero_extend currently required by Lem backend */
+ else MemException(E_Load_Access_Fault)
}
-/* The wreg effect is an artifact of using 'register' to implement device state. */
-val htif_store: forall 'n, 0 < 'n <= 8. (xlenbits, int('n), bits(8 * 'n)) -> MemoryOpResult(bool) effect {wreg}
+/* The rreg,wreg effects are an artifact of using 'register' to implement device state. */
+val htif_store: forall 'n, 0 < 'n <= 8. (xlenbits, int('n), bits(8 * 'n)) -> MemoryOpResult(bool) effect {rreg,wreg}
function htif_store(addr, width, data) = {
print_platform("htif[" ^ BitStr(addr) ^ "] <- " ^ BitStr(data));
/* Store the written value so that we can ack it later. */
- let cbits : xlenbits = EXTZ(data);
- htif_tohost = cbits;
+ if width == 8
+ then { htif_tohost = EXTZ(data) }
+ else if width == 4 & addr == plat_htif_tohost()
+ then { htif_tohost = vector_update_subrange(htif_tohost, 31, 0, data) }
+ else if width == 4 & addr == plat_htif_tohost() + 4
+ then { htif_tohost = vector_update_subrange(htif_tohost, 63, 32, data) }
+ else { htif_tohost = EXTZ(data) };
+
/* Process the cmd immediately; this is needed for terminal output. */
- let cmd = Mk_htif_cmd(cbits);
+ let cmd = Mk_htif_cmd(htif_tohost);
match cmd.device() {
0x00 => { /* syscall-proxy */
print_platform("htif-syscall-proxy cmd: " ^ BitStr(cmd.payload()));
if cmd.payload()[0] == 0b1
then {
htif_done = true;
- htif_exit_code = (zero_extend(cmd.payload(), xlen) >> 0b01) : xlenbits
+ htif_exit_code = (sail_zero_extend(cmd.payload(), 64) >> 0b01)
}
else ()
},
diff --git a/model/riscv_step.sail b/model/riscv_step.sail
index 78369a8..ca2ca76 100644
--- a/model/riscv_step.sail
+++ b/model/riscv_step.sail
@@ -128,3 +128,10 @@ function loop () = {
}
}
}
+
+/* initialize model state */
+function init_model () -> unit = {
+ init_platform (); /* devices */
+ init_sys (); /* processor */
+ init_vmem () /* virtual memory */
+}
diff --git a/model/riscv_sys_control.sail b/model/riscv_sys_control.sail
index df84733..2f02839 100644
--- a/model/riscv_sys_control.sail
+++ b/model/riscv_sys_control.sail
@@ -29,8 +29,17 @@ function is_CSR_defined (csr : bits(12), p : Privilege) -> bool =
0x344 => p == Machine, // mip
0x3A0 => p == Machine, // pmpcfg0
- 0x3B0 => false, // (Disabled for Spike compatibility)
-// 0x3B0 => p == Machine, // pmpaddr0
+ 0x3B0 => p == Machine, // pmpaddr0
+
+ /* counters */
+ 0xB00 => p == Machine, // mcycle
+ 0xB02 => p == Machine, // minstret
+
+ 0xB80 => p == Machine & (sizeof(xlen) == 32), // mcycleh
+ 0xB82 => p == Machine & (sizeof(xlen) == 32), // minstreth
+
+ /* disabled trigger/debug module */
+ 0x7a0 => p == Machine,
/* supervisor mode: trap setup */
0x100 => haveSupMode() & (p == Machine | p == Supervisor), // sstatus
@@ -50,8 +59,14 @@ function is_CSR_defined (csr : bits(12), p : Privilege) -> bool =
/* supervisor mode: address translation */
0x180 => haveSupMode() & (p == Machine | p == Supervisor), // satp
- /* disabled trigger/debug module */
- 0x7a0 => p == Machine,
+ /* user mode: counters */
+ 0xC00 => p == User, // cycle
+ 0xC01 => p == User, // time
+ 0xC02 => p == User, // instret
+
+ 0xC80 => p == User & (sizeof(xlen) == 32), // cycleh
+ 0xC81 => p == User & (sizeof(xlen) == 32), // timeh
+ 0xC82 => p == User & (sizeof(xlen) == 32), // instreth
/* check extensions */
_ => is_UExt_CSR_defined(csr, p) // 'N' extension
@@ -71,9 +86,9 @@ function check_Counteren(csr : csreg, p : Privilege) -> bool =
(0xC01, Supervisor) => mcounteren.TM() == true,
(0xC02, Supervisor) => mcounteren.IR() == true,
- (0xC00, User) => scounteren.CY() == true,
- (0xC01, User) => scounteren.TM() == true,
- (0xC02, User) => scounteren.IR() == true,
+ (0xC00, User) => mcounteren.CY() == true & ((~ (haveSupMode())) | scounteren.CY() == true),
+ (0xC01, User) => mcounteren.TM() == true & ((~ (haveSupMode())) | scounteren.TM() == true),
+ (0xC02, User) => mcounteren.IR() == true & ((~ (haveSupMode())) | scounteren.IR() == true),
(_, _) => /* no HPM counters for now */
if 0xC03 <=_u csr & csr <=_u 0xC1F
@@ -405,7 +420,7 @@ function init_sys() -> unit = {
mhartid = EXTZ(0b0);
- misa->MXL() = arch_to_bits(RV64);
+ misa->MXL() = arch_to_bits(if sizeof(xlen) == 32 then RV32 else RV64);
misa->A() = true; /* atomics */
misa->C() = true; /* RVC */
misa->I() = true; /* base integer ISA */
@@ -413,9 +428,8 @@ function init_sys() -> unit = {
misa->U() = true; /* user-mode */
misa->S() = true; /* supervisor-mode */
- /* 64-bit only mode with no extensions */
- mstatus->SXL() = misa.MXL();
- mstatus->UXL() = misa.MXL();
+ mstatus = set_mstatus_SXL(mstatus, misa.MXL());
+ mstatus = set_mstatus_UXL(mstatus, misa.MXL());
mstatus->SD() = false;
mip->bits() = EXTZ(0b0);
diff --git a/model/riscv_sys_regs.sail b/model/riscv_sys_regs.sail
index e39331f..439d12d 100644
--- a/model/riscv_sys_regs.sail
+++ b/model/riscv_sys_regs.sail
@@ -38,8 +38,8 @@ register cur_inst : xlenbits
/* M-mode registers */
-bitfield Misa : bits(64) = {
- MXL : 63 .. 62,
+bitfield Misa : xlenbits = {
+ MXL : xlen - 1 .. xlen - 2,
Z : 25,
Y : 24,
@@ -88,11 +88,13 @@ function haveSupMode() -> bool = misa.S() == true
function haveUsrMode() -> bool = misa.U() == true
function haveNExt() -> bool = misa.N() == true
-bitfield Mstatus : bits(64) = {
- SD : 63,
+bitfield Mstatus : xlenbits = {
+ SD : xlen - 1,
- SXL : 35 .. 34,
- UXL : 33 .. 32,
+ // The SXL and UXL fields don't exist on RV32, so they are modelled
+ // via explicit getters and setters; see below.
+ // SXL : 35 .. 34,
+ // UXL : 33 .. 32,
TSR : 22,
TW : 21,
@@ -117,6 +119,36 @@ bitfield Mstatus : bits(64) = {
}
register mstatus : Mstatus
+function get_mstatus_SXL(m : Mstatus) -> arch_xlen = {
+ if sizeof(xlen) == 32
+ then arch_to_bits(RV32)
+ else m.bits()[35 .. 34]
+}
+
+function set_mstatus_SXL(m : Mstatus, a : arch_xlen) -> Mstatus = {
+ if sizeof(xlen) == 32
+ then m
+ else {
+ let m = vector_update_subrange(m.bits(), 35, 34, a);
+ Mk_Mstatus(m)
+ }
+}
+
+function get_mstatus_UXL(m : Mstatus) -> arch_xlen = {
+ if sizeof(xlen) == 32
+ then arch_to_bits(RV32)
+ else m.bits()[33 .. 32]
+}
+
+function set_mstatus_UXL(m : Mstatus, a : arch_xlen) -> Mstatus = {
+ if sizeof(xlen) == 32
+ then m
+ else {
+ let m = vector_update_subrange(m.bits(), 33, 32, a);
+ Mk_Mstatus(m)
+ }
+}
+
function legalize_mstatus(o : Mstatus, v : xlenbits) -> Mstatus = {
let m : Mstatus = Mk_Mstatus(v);
@@ -131,9 +163,9 @@ function legalize_mstatus(o : Mstatus, v : xlenbits) -> Mstatus = {
let m = update_SD(m, extStatus_of_bits(m.FS()) == Dirty
| extStatus_of_bits(m.XS()) == Dirty);
- /* For now, we don't allow SXL and UXL to be changed, for Spike compatibility. */
- let m = update_SXL(m, o.SXL());
- let m = update_UXL(m, o.UXL());
+ /* We don't support dynamic changes to SXL and UXL. */
+ let m = set_mstatus_SXL(m, get_mstatus_SXL(o));
+ let m = set_mstatus_UXL(m, get_mstatus_UXL(o));
/* Hardwired to zero in the absence of 'N'. */
let m = update_UPIE(m, false);
@@ -147,8 +179,8 @@ function cur_Architecture() -> Architecture = {
let a : arch_xlen =
match (cur_privilege) {
Machine => misa.MXL(),
- Supervisor => mstatus.SXL(),
- User => mstatus.UXL()
+ Supervisor => get_mstatus_SXL(mstatus),
+ User => get_mstatus_UXL(mstatus)
};
match architecture(a) {
Some(a) => a,
@@ -162,7 +194,7 @@ function in32BitMode() -> bool = {
/* interrupt processing state */
-bitfield Minterrupts : bits(64) = {
+bitfield Minterrupts : xlenbits = {
MEI : 11, /* external interrupts */
SEI : 9,
UEI : 8,
@@ -223,7 +255,7 @@ function legalize_mideleg(o : Minterrupts, v : xlenbits) -> Minterrupts = {
/* exception processing state */
-bitfield Medeleg : bits(64) = {
+bitfield Medeleg : xlenbits = {
SAMO_Page_Fault : 15,
Load_Page_Fault : 13,
Fetch_Page_Fault : 12,
@@ -250,9 +282,9 @@ function legalize_medeleg(o : Medeleg, v : xlenbits) -> Medeleg = {
/* registers for trap handling */
-bitfield Mtvec : bits(64) = {
- Base : 63 .. 2,
- Mode : 1 .. 0
+bitfield Mtvec : xlenbits = {
+ Base : xlen - 1 .. 2,
+ Mode : 1 .. 0
}
register mtvec : Mtvec /* Trap Vector */
@@ -265,9 +297,9 @@ function legalize_tvec(o : Mtvec, v : xlenbits) -> Mtvec = {
}
}
-bitfield Mcause : bits(64) = {
- IsInterrupt : 63,
- Cause : 62 .. 0
+bitfield Mcause : xlenbits = {
+ IsInterrupt : xlen - 1,
+ Cause : xlen - 2 .. 0
}
register mcause : Mcause
@@ -329,8 +361,8 @@ function legalize_scounteren(c : Counteren, v : xlenbits) -> Counteren = {
c
}
-register mcycle : xlenbits
-register mtime : xlenbits
+register mcycle : bits(64)
+register mtime : bits(64)
/* minstret
*
@@ -343,7 +375,7 @@ register mtime : xlenbits
* written to, we track writes to it in a separate model-internal
* register.
*/
-register minstret : xlenbits
+register minstret : bits(64)
register minstret_written : bool
function retire_instruction() -> unit = {
@@ -353,7 +385,7 @@ function retire_instruction() -> unit = {
}
/* informational registers */
-register mvendorid : xlenbits
+register mvendorid : bits(32)
register mimpid : xlenbits
register marchid : xlenbits
/* TODO: this should be readonly, and always 0 for now */
@@ -367,9 +399,11 @@ register pmpcfg0 : xlenbits
/* S-mode registers */
/* sstatus reveals a subset of mstatus */
-bitfield Sstatus : bits(64) = {
- SD : 63,
- UXL : 33 .. 32,
+bitfield Sstatus : xlenbits = {
+ SD : xlen - 1,
+ // The UXL field does not exist on RV32, so we define an explicit
+ // getter and setter below.
+ // UXL : 30 .. 29,
MXR : 19,
SUM : 18,
XS : 16 .. 15,
@@ -380,12 +414,23 @@ bitfield Sstatus : bits(64) = {
SIE : 1,
UIE : 0
}
+/* sstatus is a view of mstatus, so there is no register defined. */
+
+function get_sstatus_UXL(s : Sstatus) -> arch_xlen = {
+ let m = Mk_Mstatus(s.bits());
+ get_mstatus_UXL(m)
+}
+
+function set_sstatus_UXL(s : Sstatus, a : arch_xlen) -> Sstatus = {
+ let m = Mk_Mstatus(s.bits());
+ let m = set_mstatus_UXL(m, a);
+ Mk_Sstatus(m.bits())
+}
-/* This is a view, so there is no register defined. */
function lower_mstatus(m : Mstatus) -> Sstatus = {
let s = Mk_Sstatus(EXTZ(0b0));
let s = update_SD(s, m.SD());
- let s = update_UXL(s, m.UXL());
+ let s = set_sstatus_UXL(s, get_mstatus_UXL(m));
let s = update_MXR(s, m.MXR());
let s = update_SUM(s, m.SUM());
let s = update_XS(s, m.XS());
@@ -420,7 +465,7 @@ function legalize_sstatus(m : Mstatus, v : xlenbits) -> Mstatus = {
lift_sstatus(m, Mk_Sstatus(v))
}
-bitfield Sedeleg : bits(64) = {
+bitfield Sedeleg : xlenbits = {
UEnvCall : 8,
SAMO_Access_Fault : 7,
SAMO_Addr_Align : 6,
@@ -437,7 +482,7 @@ function legalize_sedeleg(s : Sedeleg, v : xlenbits) -> Sedeleg = {
Mk_Sedeleg(EXTZ(v[8..0]))
}
-bitfield Sinterrupts : bits(64) = {
+bitfield Sinterrupts : xlenbits = {
SEI : 9, /* external interrupts */
UEI : 8,
@@ -508,30 +553,43 @@ function legalize_sie(m : Minterrupts, d : Minterrupts, v : xlenbits) -> Minterr
register sideleg : Sinterrupts
-/* s-mode address translation and protection (satp) */
+/* other non-VM related supervisor state */
+register stvec : Mtvec
+register sscratch : xlenbits
+register sepc : xlenbits
+register scause : Mcause
+register stval : xlenbits
+
+/*
+ * S-mode address translation and protection (satp) layout.
+ * The actual satp register is defined in an architecture-specific file.
+ */
+
bitfield Satp64 : bits(64) = {
Mode : 63 .. 60,
Asid : 59 .. 44,
PPN : 43 .. 0
}
-register satp : xlenbits
-function legalize_satp(a : Architecture, o : xlenbits, v : xlenbits) -> xlenbits = {
+function legalize_satp64(a : Architecture, o : bits(64), v : bits(64)) -> bits(64) = {
let s = Mk_Satp64(v);
- match satpMode_of_bits(a, s.Mode()) {
+ match satp64Mode_of_bits(a, s.Mode()) {
None() => o,
Some(Sv32) => o, /* Sv32 is unsupported for now */
Some(_) => s.bits()
}
}
-/* other supervisor state */
-register stvec : Mtvec
-register sscratch : xlenbits
-register sepc : xlenbits
-register scause : Mcause
-register stval : xlenbits
+bitfield Satp32 : bits(32) = {
+ Mode : 31,
+ Asid : 30 .. 22,
+ PPN : 21 .. 0
+}
+
+function legalize_satp32(a : Architecture, o : bits(32), v : bits(32)) -> bits(32) = {
+ /* all 32-bit satp modes are valid */
+ v
+}
/* disabled trigger/debug module */
register tselect : xlenbits
-
diff --git a/model/riscv_termination.sail b/model/riscv_termination_common.sail
index 6da4896..e38cd19 100644
--- a/model/riscv_termination.sail
+++ b/model/riscv_termination_common.sail
@@ -1,5 +1,4 @@
termination_measure n_leading_spaces s = string_length(s)
-termination_measure walk39(_,_,_,_,_,_,level,_) = level
val compressed_measure : ast -> int
function compressed_measure(instr) =
match instr {
diff --git a/model/riscv_termination_rv32.sail b/model/riscv_termination_rv32.sail
new file mode 100644
index 0000000..7cf8cb8
--- /dev/null
+++ b/model/riscv_termination_rv32.sail
@@ -0,0 +1 @@
+termination_measure walk32(_,_,_,_,_,_,level,_) = level
diff --git a/model/riscv_termination_rv64.sail b/model/riscv_termination_rv64.sail
new file mode 100644
index 0000000..18005b8
--- /dev/null
+++ b/model/riscv_termination_rv64.sail
@@ -0,0 +1,2 @@
+termination_measure walk39(_,_,_,_,_,_,level,_) = level
+termination_measure walk48(_,_,_,_,_,_,level,_) = level
diff --git a/model/riscv_types.sail b/model/riscv_types.sail
index 4d012e0..634cd83 100644
--- a/model/riscv_types.sail
+++ b/model/riscv_types.sail
@@ -1,11 +1,13 @@
/* Basic type and function definitions used pervasively in the model. */
-let xlen = 64
-type xlenbits = bits(64)
+/* this value is only defined for the runtime platform for ELF loading
+ * checks, and not used in the model.
+ */
+let xlen_val = sizeof(xlen)
-let xlen_max_unsigned = 2 ^ xlen - 1
-let xlen_max_signed = 2 ^ (xlen - 1) - 1
-let xlen_min_signed = 0 - 2 ^ (xlen - 1)
+let xlen_max_unsigned = 2 ^ sizeof(xlen) - 1
+let xlen_max_signed = 2 ^ (sizeof(xlen) - 1) - 1
+let xlen_min_signed = 0 - 2 ^ (sizeof(xlen) - 1)
type half = bits(16)
type word = bits(32)
@@ -80,7 +82,7 @@ val rX : forall 'n, 0 <= 'n < 32. regno('n) -> xlenbits effect {rreg}
/*function rX 0 = 0x0000000000000000
and rX (r if r > 0) = Xs[r]*/
function rX r = match r {
- 0 => 0x0000000000000000,
+ 0 => EXTZ(0x0),
1 => x1,
2 => x2,
3 => x3,
@@ -438,13 +440,14 @@ function extStatus_of_bits(e) =
/* supervisor-level address translation modes */
type satp_mode = bits(4)
-enum SATPMode = {Sbare, Sv32, Sv39}
+enum SATPMode = {Sbare, Sv32, Sv39, Sv48}
-function satpMode_of_bits(a : Architecture, m : satp_mode) -> option(SATPMode) =
+function satp64Mode_of_bits(a : Architecture, m : satp_mode) -> option(SATPMode) =
match (a, m) {
(_, 0x0) => Some(Sbare),
(RV32, 0x1) => Some(Sv32),
(RV64, 0x8) => Some(Sv39),
+ (RV64, 0x9) => Some(Sv48),
(_, _) => None()
}
diff --git a/model/riscv_vmem.sail b/model/riscv_vmem.sail
deleted file mode 100644
index ef56108..0000000
--- a/model/riscv_vmem.sail
+++ /dev/null
@@ -1,406 +0,0 @@
-/* Supervisor-mode address translation and page-table walks. */
-
-/* PageSize */
-
-let PAGESIZE_BITS = 12
-
-/* PTE attributes, permission checks and updates */
-
-type pteAttribs = bits(8)
-
-bitfield PTE_Bits : pteAttribs = {
- D : 7,
- A : 6,
- G : 5,
- U : 4,
- X : 3,
- W : 2,
- R : 1,
- V : 0
-}
-
-function isPTEPtr(p : pteAttribs) -> bool = {
- let a = Mk_PTE_Bits(p);
- a.R() == false & a.W() == false & a.X() == false
-}
-
-function isInvalidPTE(p : pteAttribs) -> bool = {
- let a = Mk_PTE_Bits(p);
- a.V() == false | (a.W() == true & a.R() == false)
-}
-
-function checkPTEPermission(ac : AccessType, priv : Privilege, mxr : bool, do_sum : bool, p : PTE_Bits) -> bool = {
- match (ac, priv) {
- (Read, User) => p.U() == true & (p.R() == true | (p.X() == true & mxr)),
- (Write, User) => p.U() == true & p.W() == true,
- (ReadWrite, User) => p.U() == true & p.W() == true & (p.R() == true | (p.X() == true & mxr)),
- (Execute, User) => p.U() == true & p.X() == true,
-
- (Read, Supervisor) => (p.U() == false | do_sum) & (p.R() == true | (p.X() == true & mxr)),
- (Write, Supervisor) => (p.U() == false | do_sum) & p.W() == true,
- (ReadWrite, Supervisor) => (p.U() == false | do_sum) & p.W() == true & (p.R() == true | (p.X() == true & mxr)),
- (Execute, Supervisor) => p.U() == false & p.X() == true,
-
- (_, Machine) => internal_error("m-mode mem perm check")
- }
-}
-
-function update_PTE_Bits(p : PTE_Bits, a : AccessType) -> option(PTE_Bits) = {
- let update_d = (a == Write | a == ReadWrite) & p.D() == false; // dirty-bit
- let update_a = p.A() == false; // accessed-bit
- if update_d | update_a then {
- let np = update_A(p, true);
- let np = if update_d then update_D(np, true) else np;
- Some(np)
- } else None()
-}
-
-/* failure modes for address-translation/page-table-walks */
-enum PTW_Error = {
- PTW_Access, /* physical memory access error for a PTE */
- PTW_Invalid_PTE,
- PTW_No_Permission,
- PTW_Misaligned, /* misaligned superpage */
- PTW_PTE_Update /* PTE update needed but not enabled */
-}
-val cast ptw_error_to_str : PTW_Error -> string
-function ptw_error_to_str(e) =
- match (e) {
- PTW_Access => "mem-access-error",
- PTW_Invalid_PTE => "invalid-pte",
- PTW_No_Permission => "no-permission",
- PTW_Misaligned => "misaligned-superpage",
- PTW_PTE_Update => "pte-update-needed"
- }
-
-/* conversion of these translation/PTW failures into architectural exceptions */
-function translationException(a : AccessType, f : PTW_Error) -> ExceptionType = {
- let e : ExceptionType =
- match (a, f) {
- (ReadWrite, PTW_Access) => E_SAMO_Access_Fault,
- (ReadWrite, _) => E_SAMO_Page_Fault,
- (Read, PTW_Access) => E_Load_Access_Fault,
- (Read, _) => E_Load_Page_Fault,
- (Write, PTW_Access) => E_SAMO_Access_Fault,
- (Write, _) => E_SAMO_Page_Fault,
- (Fetch, PTW_Access) => E_Fetch_Access_Fault,
- (Fetch, _) => E_Fetch_Page_Fault
- } in {
-/* print("translationException(" ^ a ^ ", " ^ f ^ ") -> " ^ e); */
- e
- }
-}
-/* address translation: Sv39 */
-
-let SV39_LEVEL_BITS = 9
-let SV39_LEVELS = 3
-let PTE39_LOG_SIZE = 3
-let PTE39_SIZE = 8
-
-type vaddr39 = bits(39)
-type paddr39 = bits(56)
-type pte39 = xlenbits
-
-bitfield SV39_Vaddr : vaddr39 = {
- VPNi : 38 .. 12,
- PgOfs : 11 .. 0
-}
-
-bitfield SV39_Paddr : paddr39 = {
- PPNi : 55 .. 12,
- PgOfs : 11 .. 0
-}
-
-bitfield SV39_PTE : pte39 = {
- PPNi : 53 .. 10,
- RSW : 9 .. 8,
- BITS : 7 .. 0
-}
-
-/* ASID */
-
-type asid64 = bits(16)
-
-function curAsid64() -> asid64 = {
- let satp64 = Mk_Satp64(satp);
- satp64.Asid()
-}
-
-/* Current page table base from satp */
-function curPTB39() -> paddr39 = {
- let satp64 = Mk_Satp64(satp);
- EXTZ(shiftl(satp64.PPN(), PAGESIZE_BITS))
-}
-
-/* Page-table walk. */
-
-union PTW_Result = {
- PTW_Success: (paddr39, SV39_PTE, paddr39, nat, bool),
- PTW_Failure: PTW_Error
-}
-
-val walk39 : (vaddr39, AccessType, Privilege, bool, bool, paddr39, nat, bool) -> PTW_Result effect {rmem, escape}
-function walk39(vaddr, ac, priv, mxr, do_sum, ptb, level, global) -> PTW_Result = {
- let va = Mk_SV39_Vaddr(vaddr);
- let pt_ofs : paddr39 = shiftl(EXTZ(shiftr(va.VPNi(), (level * SV39_LEVEL_BITS))[(SV39_LEVEL_BITS - 1) .. 0]),
- PTE39_LOG_SIZE);
- let pte_addr = ptb + pt_ofs;
- /* FIXME: we assume here that walks only access physical-memory-backed addresses, and not MMIO regions. */
- match (phys_mem_read(Data, EXTZ(pte_addr), 8, false, false, false)) {
- MemException(_) => {
-/* print("walk39(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
- ^ " pt_base=" ^ BitStr(ptb)
- ^ " pt_ofs=" ^ BitStr(pt_ofs)
- ^ " pte_addr=" ^ BitStr(pte_addr)
- ^ ": invalid pte address"); */
- PTW_Failure(PTW_Access)
- },
- MemValue(v) => {
- let pte = Mk_SV39_PTE(v);
- let pbits = pte.BITS();
- let pattr = Mk_PTE_Bits(pbits);
- let is_global = global | (pattr.G() == true);
-/* print("walk39(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
- ^ " pt_base=" ^ BitStr(ptb)
- ^ " pt_ofs=" ^ BitStr(pt_ofs)
- ^ " pte_addr=" ^ BitStr(pte_addr)
- ^ " pte=" ^ BitStr(v)); */
- if isInvalidPTE(pbits) then {
-/* print("walk39: invalid pte"); */
- PTW_Failure(PTW_Invalid_PTE)
- } else {
- if isPTEPtr(pbits) then {
- if level == 0 then {
- /* last-level PTE contains a pointer instead of a leaf */
-/* print("walk39: last-level pte contains a ptr"); */
- PTW_Failure(PTW_Invalid_PTE)
- } else {
- /* walk down the pointer to the next level */
- walk39(vaddr, ac, priv, mxr, do_sum, EXTZ(shiftl(pte.PPNi(), PAGESIZE_BITS)), level - 1, is_global)
- }
- } else { /* leaf PTE */
- if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pattr)) then {
-/* print("walk39: pte permission check failure"); */
- PTW_Failure(PTW_No_Permission)
- } else {
- if level > 0 then { /* superpage */
- /* fixme hack: to get a mask of appropriate size */
- let mask = shiftl(pte.PPNi() ^ pte.PPNi() ^ EXTZ(0b1), level * SV39_LEVEL_BITS) - 1;
- if (pte.PPNi() & mask) != EXTZ(0b0) then {
- /* misaligned superpage mapping */
-/* print("walk39: misaligned superpage mapping"); */
- PTW_Failure(PTW_Misaligned)
- } else {
- /* add the appropriate bits of the VPN to the superpage PPN */
- let ppn = pte.PPNi() | (EXTZ(va.VPNi()) & mask);
-/* let res = append(ppn, va.PgOfs());
- print("walk39: using superpage: pte.ppn=" ^ BitStr(pte.PPNi())
- ^ " ppn=" ^ BitStr(ppn) ^ " res=" ^ BitStr(res)); */
- PTW_Success(append(ppn, va.PgOfs()), pte, pte_addr, level, is_global)
- }
- } else {
- /* normal leaf PTE */
-/* let res = append(pte.PPNi(), va.PgOfs());
- print("walk39: pte.ppn=" ^ BitStr(pte.PPNi()) ^ " ppn=" ^ BitStr(pte.PPNi()) ^ " res=" ^ BitStr(res)); */
- PTW_Success(append(pte.PPNi(), va.PgOfs()), pte, pte_addr, level, is_global)
- }
- }
- }
- }
- }
- }
-}
-
-/* idealized TLB to model fence.vm and also speed up simulation. */
-
-struct TLB39_Entry = {
- asid : asid64,
- global : bool,
- vAddr : vaddr39, /* VPN */
- pAddr : paddr39, /* PPN */
- vMatchMask : vaddr39, /* matching mask for superpages */
- vAddrMask : vaddr39, /* selection mask for superpages */
- pte : SV39_PTE, /* permissions */
- pteAddr : paddr39, /* for dirty writeback */
- age : xlenbits
-}
-
-/* the rreg effect is an artifact of using the cycle counter to provide the age */
-val make_TLB39_Entry : (asid64, bool, vaddr39, paddr39, SV39_PTE, nat, paddr39) -> TLB39_Entry effect {rreg}
-
-function make_TLB39_Entry(asid, global, vAddr, pAddr, pte, level, pteAddr) = {
- let shift : nat = PAGESIZE_BITS + (level * SV39_LEVEL_BITS);
- /* fixme hack: use a better idiom for masks */
- let vAddrMask : vaddr39 = shiftl(vAddr ^ vAddr ^ EXTZ(0b1), shift) - 1;
- let vMatchMask : vaddr39 = ~ (vAddrMask);
- struct {
- asid = asid,
- global = global,
- pte = pte,
- pteAddr = pteAddr,
- vAddrMask = vAddrMask,
- vMatchMask = vMatchMask,
- vAddr = vAddr & vMatchMask,
- pAddr = shiftl(shiftr(pAddr, shift), shift),
- age = mcycle
- }
-}
-
-/* TODO: make this a vector or array of entries */
-register tlb39 : option(TLB39_Entry)
-
-val lookupTLB39 : (asid64, vaddr39) -> option((int, TLB39_Entry)) effect {rreg}
-function lookupTLB39(asid, vaddr) = {
- match tlb39 {
- None() => None(),
- Some(e) => if (e.global | (e.asid == asid))
- & (e.vAddr == (e.vMatchMask & vaddr))
- then Some((0, e))
- else None()
- }
-}
-
-val addToTLB39 : (asid64, vaddr39, paddr39, SV39_PTE, paddr39, nat, bool) -> unit effect {wreg, rreg}
-function addToTLB39(asid, vAddr, pAddr, pte, pteAddr, level, global) = {
- let ent = make_TLB39_Entry(asid, global, vAddr, pAddr, pte, level, pteAddr);
- tlb39 = Some(ent)
-}
-
-function writeTLB39(idx : int, ent : TLB39_Entry) -> unit =
- tlb39 = Some(ent)
-
-val flushTLB : (option(asid64), option(vaddr39)) -> unit effect {rreg, wreg}
-function flushTLB(asid, addr) = {
- let ent : option(TLB39_Entry) =
- match (tlb39, asid, addr) {
- (None(), _, _) => None(),
- (Some(e), None(), None()) => None(),
- (Some(e), None(), Some(a)) => if e.vAddr == (e.vMatchMask & a)
- then None() else Some(e),
- (Some(e), Some(i), None()) => if (e.asid == i) & (~ (e.global))
- then None() else Some(e),
- (Some(e), Some(i), Some(a)) => if (e.asid == i) & (e.vAddr == (a & e.vMatchMask))
- & (~ (e.global))
- then None() else Some(e)
- };
- tlb39 = ent
-}
-
-union TR39_Result = {
- TR39_Address : paddr39,
- TR39_Failure : PTW_Error
-}
-
-val translate39 : (vaddr39, AccessType, Privilege, bool, bool, nat) -> TR39_Result effect {rreg, wreg, wmv, escape, rmem}
-function translate39(vAddr, ac, priv, mxr, do_sum, level) = {
- let asid = curAsid64();
- match lookupTLB39(asid, vAddr) {
- Some(idx, ent) => {
- let pteBits = Mk_PTE_Bits(ent.pte.BITS());
- if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pteBits))
- then TR39_Failure(PTW_No_Permission)
- else {
- match update_PTE_Bits(pteBits, ac) {
- None() => TR39_Address(ent.pAddr | EXTZ(vAddr & ent.vAddrMask)),
- Some(pbits) => {
- if ~ (plat_enable_dirty_update ())
- then {
- /* pte needs dirty/accessed update but that is not enabled */
- TR39_Failure(PTW_PTE_Update)
- } else {
- /* update PTE entry and TLB */
- n_ent : TLB39_Entry = ent;
- n_ent.pte = update_BITS(ent.pte, pbits.bits());
- writeTLB39(idx, n_ent);
- /* update page table */
- match checked_mem_write(EXTZ(ent.pteAddr), 8, ent.pte.bits(), false, false, false) {
- MemValue(_) => (),
- MemException(e) => internal_error("invalid physical address in TLB")
- };
- TR39_Address(ent.pAddr | EXTZ(vAddr & ent.vAddrMask))
- }
- }
- }
- }
- },
- None() => {
- match walk39(vAddr, ac, priv, mxr, do_sum, curPTB39(), level, false) {
- PTW_Failure(f) => TR39_Failure(f),
- PTW_Success(pAddr, pte, pteAddr, level, global) => {
- match update_PTE_Bits(Mk_PTE_Bits(pte.BITS()), ac) {
- None() => {
- addToTLB39(asid, vAddr, pAddr, pte, pteAddr, level, global);
- TR39_Address(pAddr)
- },
- Some(pbits) =>
- if ~ (plat_enable_dirty_update ())
- then {
- /* pte needs dirty/accessed update but that is not enabled */
- TR39_Failure(PTW_PTE_Update)
- } else {
- w_pte : SV39_PTE = update_BITS(pte, pbits.bits());
- match checked_mem_write(EXTZ(pteAddr), 8, w_pte.bits(), false, false, false) {
- MemValue(_) => {
- addToTLB39(asid, vAddr, pAddr, w_pte, pteAddr, level, global);
- TR39_Address(pAddr)
- },
- MemException(e) => {
- /* pte is not in valid memory */
- TR39_Failure(PTW_Access)
- }
- }
- }
- }
- }
- }
- }
- }
-}
-
-/* Address translation mode */
-
-val translationMode : (Privilege) -> SATPMode effect {rreg, escape}
-function translationMode(priv) = {
- if priv == Machine then Sbare
- else {
- let arch = architecture(mstatus.SXL());
- match arch {
- Some(RV64) => {
- let mbits : satp_mode = Mk_Satp64(satp).Mode();
- match satpMode_of_bits(RV64, mbits) {
- Some(m) => m,
- None() => internal_error("invalid RV64 translation mode in satp")
- }
- },
- _ => internal_error("unsupported address translation arch")
- }
- }
-}
-
-union TR_Result = {
- TR_Address : xlenbits,
- TR_Failure : ExceptionType
-}
-
-/* Top-level address translation dispatcher */
-
-val translateAddr : (xlenbits, AccessType, ReadType) -> TR_Result effect {escape, rmem, rreg, wmv, wreg}
-function translateAddr(vAddr, ac, rt) = {
- let effPriv : Privilege = match rt {
- Instruction => cur_privilege,
- Data => if mstatus.MPRV() == true
- then privLevel_of_bits(mstatus.MPP())
- else cur_privilege
- };
- let mxr : bool = mstatus.MXR() == true;
- let do_sum : bool = mstatus.SUM() == true;
- let mode : SATPMode = translationMode(effPriv);
- match mode {
- Sbare => TR_Address(vAddr),
- SV39 => match translate39(vAddr[38 .. 0], ac, effPriv, mxr, do_sum, SV39_LEVELS - 1) {
- TR39_Address(pa) => TR_Address(EXTZ(pa)),
- TR39_Failure(f) => TR_Failure(translationException(ac, f))
- },
- _ => internal_error("unsupported address translation scheme")
- }
-}
diff --git a/model/riscv_vmem_common.sail b/model/riscv_vmem_common.sail
new file mode 100644
index 0000000..c153579
--- /dev/null
+++ b/model/riscv_vmem_common.sail
@@ -0,0 +1,239 @@
+/* Shared definitions for supervisor-mode page-table-entries and permission checks.
+ *
+ * These definitions are independent of xlen and do not involve
+ * accessing physical memory.
+ */
+
+/* PageSize */
+
+let PAGESIZE_BITS = 12
+
+/* PTE attributes, permission checks and updates */
+
+type pteAttribs = bits(8)
+
+bitfield PTE_Bits : pteAttribs = {
+ D : 7,
+ A : 6,
+ G : 5,
+ U : 4,
+ X : 3,
+ W : 2,
+ R : 1,
+ V : 0
+}
+
+function isPTEPtr(p : pteAttribs) -> bool = {
+ let a = Mk_PTE_Bits(p);
+ a.R() == false & a.W() == false & a.X() == false
+}
+
+function isInvalidPTE(p : pteAttribs) -> bool = {
+ let a = Mk_PTE_Bits(p);
+ a.V() == false | (a.W() == true & a.R() == false)
+}
+
+function checkPTEPermission(ac : AccessType, priv : Privilege, mxr : bool, do_sum : bool, p : PTE_Bits) -> bool = {
+ match (ac, priv) {
+ (Read, User) => p.U() == true & (p.R() == true | (p.X() == true & mxr)),
+ (Write, User) => p.U() == true & p.W() == true,
+ (ReadWrite, User) => p.U() == true & p.W() == true & (p.R() == true | (p.X() == true & mxr)),
+ (Execute, User) => p.U() == true & p.X() == true,
+
+ (Read, Supervisor) => (p.U() == false | do_sum) & (p.R() == true | (p.X() == true & mxr)),
+ (Write, Supervisor) => (p.U() == false | do_sum) & p.W() == true,
+ (ReadWrite, Supervisor) => (p.U() == false | do_sum) & p.W() == true & (p.R() == true | (p.X() == true & mxr)),
+ (Execute, Supervisor) => p.U() == false & p.X() == true,
+
+ (_, Machine) => internal_error("m-mode mem perm check")
+ }
+}
+
+function update_PTE_Bits(p : PTE_Bits, a : AccessType) -> option(PTE_Bits) = {
+ let update_d = (a == Write | a == ReadWrite) & p.D() == false; // dirty-bit
+ let update_a = p.A() == false; // accessed-bit
+ if update_d | update_a then {
+ let np = update_A(p, true);
+ let np = if update_d then update_D(np, true) else np;
+ Some(np)
+ } else None()
+}
+
+/* failure modes for address-translation/page-table-walks */
+enum PTW_Error = {
+ PTW_Access, /* physical memory access error for a PTE */
+ PTW_Invalid_PTE,
+ PTW_No_Permission,
+ PTW_Misaligned, /* misaligned superpage */
+ PTW_PTE_Update /* PTE update needed but not enabled */
+}
+val cast ptw_error_to_str : PTW_Error -> string
+function ptw_error_to_str(e) =
+ match (e) {
+ PTW_Access => "mem-access-error",
+ PTW_Invalid_PTE => "invalid-pte",
+ PTW_No_Permission => "no-permission",
+ PTW_Misaligned => "misaligned-superpage",
+ PTW_PTE_Update => "pte-update-needed"
+ }
+
+/* conversion of these translation/PTW failures into architectural exceptions */
+function translationException(a : AccessType, f : PTW_Error) -> ExceptionType = {
+ let e : ExceptionType =
+ match (a, f) {
+ (ReadWrite, PTW_Access) => E_SAMO_Access_Fault,
+ (ReadWrite, _) => E_SAMO_Page_Fault,
+ (Read, PTW_Access) => E_Load_Access_Fault,
+ (Read, _) => E_Load_Page_Fault,
+ (Write, PTW_Access) => E_SAMO_Access_Fault,
+ (Write, _) => E_SAMO_Page_Fault,
+ (Fetch, PTW_Access) => E_Fetch_Access_Fault,
+ (Fetch, _) => E_Fetch_Page_Fault
+ } in {
+/* print("translationException(" ^ a ^ ", " ^ f ^ ") -> " ^ e); */
+ e
+ }
+}
+
+/*
+ * Definitions for RV32, which has a single address translation mode: Sv32.
+ */
+
+type vaddr32 = bits(32)
+type paddr32 = bits(34)
+type pte32 = bits(32)
+
+/* asid */
+type asid32 = bits(9)
+
+function curAsid32(satp : bits(32)) -> asid32 = {
+ let s = Mk_Satp32(satp);
+ s.Asid()
+}
+
+/* page table base from satp */
+function curPTB32(satp : bits(32)) -> paddr32 = {
+ let s : Satp32 = Mk_Satp32(satp);
+ shiftl(EXTZ(s.PPN()), PAGESIZE_BITS)
+}
+
+/* Sv32 parameters and bitfield layouts */
+
+let SV32_LEVEL_BITS = 10
+let SV32_LEVELS = 2
+let PTE32_LOG_SIZE = 2
+let PTE32_SIZE = 4
+
+bitfield SV32_Vaddr : vaddr32 = {
+ VPNi : 31 .. 12,
+ PgOfs : 11 .. 0
+}
+
+bitfield SV32_Paddr : paddr32 = {
+ PPNi : 33 .. 12,
+ PgOfs : 11 .. 0
+}
+
+bitfield SV32_PTE : pte32 = {
+ PPNi : 31 .. 10,
+ RSW : 9 .. 8,
+ BITS : 7 .. 0
+}
+
+/*
+ * Definitions for RV64, which has two defined address translation modes: Sv39 and Sv48.
+ */
+
+/* Sv48 and Sv64 are reserved but not defined. The size of the VPN
+ * increases by 9 bits through Sv39, Sv48 and Sv57, but not for Sv64.
+ * Also, the 45-bit size of the VPN for Sv57 exceeds the 44-bit size
+ * of the PPN in satp64. Due to these corner cases, it is unlikely
+ * that definitions can be shared across all four schemes, so separate
+ * definitions might eventually be needed for each translation mode.
+ *
+ * But to keep things simple for now, since Sv39 and Sv48 have the
+ * same PPN size, we share some definitions.
+ */
+
+type paddr64 = bits(56)
+type pte64 = bits(64)
+
+/* asid */
+
+type asid64 = bits(16)
+
+function curAsid64(satp : bits(64)) -> asid64 = {
+ let s = Mk_Satp64(satp);
+ s.Asid()
+}
+
+/* page table base from satp */
+function curPTB64(satp : bits(64)) -> paddr64 = {
+ let s = Mk_Satp64(satp);
+ shiftl(EXTZ(s.PPN()), PAGESIZE_BITS)
+}
+
+/* Sv39 parameters and bitfield layouts */
+
+let SV39_LEVEL_BITS = 9
+let SV39_LEVELS = 3
+let PTE39_LOG_SIZE = 3
+let PTE39_SIZE = 8
+
+type vaddr39 = bits(39)
+
+bitfield SV39_Vaddr : vaddr39 = {
+ VPNi : 38 .. 12,
+ PgOfs : 11 .. 0
+}
+
+bitfield SV39_Paddr : paddr64 = {
+ PPNi : 55 .. 12,
+ PgOfs : 11 .. 0
+}
+
+bitfield SV39_PTE : pte64 = {
+ PPNi : 53 .. 10,
+ RSW : 9 .. 8,
+ BITS : 7 .. 0
+}
+
+/* Sv48 parameters and bitfield layouts */
+
+let SV48_LEVEL_BITS = 9
+let SV48_LEVELS = 4
+let PTE48_LOG_SIZE = 3
+let PTE48_SIZE = 8
+
+type vaddr48 = bits(48)
+type pte48 = bits(64)
+
+bitfield SV48_Vaddr : vaddr48 = {
+ VPNi : 38 .. 12,
+ PgOfs : 11 .. 0
+}
+
+bitfield SV48_Paddr : paddr64 = {
+ PPNi : 55 .. 12,
+ PgOfs : 11 .. 0
+}
+
+bitfield SV48_PTE : pte48 = {
+ PPNi : 53 .. 10,
+ RSW : 9 .. 8,
+ BITS : 7 .. 0
+}
+
+/* Result of a page-table walk. */
+
+union PTW_Result('paddr : Type, 'pte : Type) = {
+ PTW_Success: ('paddr, 'pte, 'paddr, nat, bool),
+ PTW_Failure: PTW_Error
+}
+
+/* Result of address translation */
+
+union TR_Result('paddr : Type, 'failure : Type) = {
+ TR_Address : 'paddr,
+ TR_Failure : 'failure
+}
diff --git a/model/riscv_vmem_rv32.sail b/model/riscv_vmem_rv32.sail
new file mode 100644
index 0000000..ff5443f
--- /dev/null
+++ b/model/riscv_vmem_rv32.sail
@@ -0,0 +1,66 @@
+/* RV32 Supervisor-mode address translation and page-table walks. */
+
+/* Define the architectural satp and its legalizer. */
+
+register satp : xlenbits
+
+function legalize_satp(a : Architecture, o : xlenbits, v : xlenbits) -> xlenbits =
+ legalize_satp32(a, o, v)
+
+/* Compute the address translation mode. */
+
+val translationMode : (Privilege) -> SATPMode effect {rreg, escape}
+function translationMode(priv) = {
+ if priv == Machine then Sbare
+ else {
+ let arch = architecture(get_mstatus_SXL(mstatus));
+ match arch {
+ Some(RV32) => {
+ let s = Mk_Satp32(satp[31..0]);
+ if s.Mode() == false then Sbare else Sv32
+ },
+ _ => internal_error("unsupported address translation arch")
+ }
+ }
+}
+
+/* Top-level address translation dispatcher */
+
+val translateAddr : (xlenbits, AccessType, ReadType) -> TR_Result(xlenbits, ExceptionType) effect {escape, rmem, rreg, wmv, wreg}
+function translateAddr(vAddr, ac, rt) = {
+ let effPriv : Privilege = match rt {
+ Instruction => cur_privilege,
+ Data => if mstatus.MPRV() == true
+ then privLevel_of_bits(mstatus.MPP())
+ else cur_privilege
+ };
+ let mxr : bool = mstatus.MXR() == true;
+ let do_sum : bool = mstatus.SUM() == true;
+ let mode : SATPMode = translationMode(effPriv);
+
+ let asid = curAsid32(satp);
+ let ptb = curPTB32(satp);
+
+ match mode {
+ Sbare => TR_Address(vAddr),
+ Sv32 => match translate32(asid, ptb, vAddr, ac, effPriv, mxr, do_sum, SV32_LEVELS - 1) {
+ TR_Address(pa) => TR_Address(to_phys_addr(pa)),
+ TR_Failure(f) => TR_Failure(translationException(ac, f))
+ },
+ _ => internal_error("unsupported address translation scheme")
+ }
+}
+
+val flush_TLB : (option(xlenbits), option(xlenbits)) -> unit effect {rreg, wreg}
+function flush_TLB(asid_xlen, addr_xlen) -> unit = {
+ let asid : option(asid32) =
+ match (asid_xlen) {
+ None() => None(),
+ Some(a) => Some(a[8 .. 0])
+ };
+ flush_TLB32(asid, addr_xlen)
+}
+
+function init_vmem () -> unit = {
+ init_vmem_sv32()
+}
diff --git a/model/riscv_vmem_rv64.sail b/model/riscv_vmem_rv64.sail
new file mode 100644
index 0000000..58d187e
--- /dev/null
+++ b/model/riscv_vmem_rv64.sail
@@ -0,0 +1,85 @@
+/* RV64 Supervisor-mode address translation and page-table walks. */
+
+/* Define the architectural satp and its legalizer. */
+
+register satp : xlenbits
+
+function legalize_satp(a : Architecture, o : xlenbits, v : xlenbits) -> xlenbits =
+ legalize_satp64(a, o, v)
+
+/* Compute the address translation mode. */
+
+val translationMode : (Privilege) -> SATPMode effect {rreg, escape}
+function translationMode(priv) = {
+ if priv == Machine then Sbare
+ else {
+ let arch = architecture(get_mstatus_SXL(mstatus));
+ match arch {
+ Some(RV64) => {
+ let mbits : satp_mode = Mk_Satp64(satp).Mode();
+ match satp64Mode_of_bits(RV64, mbits) {
+ Some(m) => m,
+ None() => internal_error("invalid RV64 translation mode in satp")
+ }
+ },
+ Some(RV32) => {
+ let s = Mk_Satp32(satp[31..0]);
+ if s.Mode() == false then Sbare else Sv32
+ },
+ _ => internal_error("unsupported address translation arch")
+ }
+ }
+}
+
+/* Top-level address translation dispatcher */
+
+val translateAddr : (xlenbits, AccessType, ReadType) -> TR_Result(xlenbits, ExceptionType) effect {escape, rmem, rreg, wmv, wreg}
+function translateAddr(vAddr, ac, rt) = {
+ let effPriv : Privilege = match rt {
+ Instruction => cur_privilege,
+ Data => if mstatus.MPRV() == true
+ then privLevel_of_bits(mstatus.MPP())
+ else cur_privilege
+ };
+ let mxr : bool = mstatus.MXR() == true;
+ let do_sum : bool = mstatus.SUM() == true;
+ let mode : SATPMode = translationMode(effPriv);
+
+ let asid = curAsid64(satp);
+ let ptb = curPTB64(satp);
+
+ match mode {
+ Sbare => TR_Address(vAddr),
+ Sv39 => match translate39(asid, ptb, vAddr[38 .. 0], ac, effPriv, mxr, do_sum, SV39_LEVELS - 1) {
+ TR_Address(pa) => TR_Address(EXTZ(pa)),
+ TR_Failure(f) => TR_Failure(translationException(ac, f))
+ },
+ Sv48 => match translate48(asid, ptb, vAddr[47 .. 0], ac, effPriv, mxr, do_sum, SV48_LEVELS - 1) {
+ TR_Address(pa) => TR_Address(EXTZ(pa)),
+ TR_Failure(f) => TR_Failure(translationException(ac, f))
+ },
+ _ => internal_error("unsupported address translation scheme")
+ }
+}
+
+val flush_TLB : (option(xlenbits), option(xlenbits)) -> unit effect {rreg, wreg}
+function flush_TLB(asid_xlen, addr_xlen) -> unit = {
+ /* Flush both Sv39 and Sv48 TLBs. */
+ let (addr39, addr48) : (option(vaddr39), option(vaddr48)) =
+ match addr_xlen {
+ None() => (None(), None()),
+ Some(a) => (Some(a[38 .. 0]), Some(a[47 .. 0]))
+ };
+ let asid : option(asid64) =
+ match asid_xlen {
+ None() => None(),
+ Some(a) => Some(a[15 .. 0])
+ };
+ flush_TLB39(asid, addr39);
+ flush_TLB48(asid, addr48)
+}
+
+function init_vmem() -> unit = {
+ init_vmem_sv39();
+ init_vmem_sv48()
+}
diff --git a/model/riscv_vmem_sv32.sail b/model/riscv_vmem_sv32.sail
new file mode 100644
index 0000000..437851c
--- /dev/null
+++ b/model/riscv_vmem_sv32.sail
@@ -0,0 +1,185 @@
+/* Sv32 address translation for RV32. */
+
+/* FIXME: paddr32 is 34-bits, but phys_mem accesses in riscv_mem take 32-bit (xlenbits) addresses.
+ * Define a converter for now.
+ */
+
+function to_phys_addr(a : paddr32) -> xlenbits = a[31..0]
+
+val walk32 : (vaddr32, AccessType, Privilege, bool, bool, paddr32, nat, bool) -> PTW_Result(paddr32, SV32_PTE) effect {rmem, escape}
+function walk32(vaddr, ac, priv, mxr, do_sum, ptb, level, global) = {
+ let va = Mk_SV32_Vaddr(vaddr);
+ let pt_ofs : paddr32 = shiftl(EXTZ(shiftr(va.VPNi(), (level * SV32_LEVEL_BITS))[(SV32_LEVEL_BITS - 1) .. 0]),
+ PTE32_LOG_SIZE);
+ let pte_addr = ptb + pt_ofs;
+ /* FIXME: we assume here that walks only access physical-memory-backed addresses, and not MMIO regions. */
+ match (phys_mem_read(Data, to_phys_addr(pte_addr), 4, false, false, false)) {
+ MemException(_) => {
+/* print("walk32(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
+ ^ " pt_base=" ^ BitStr(to_phys_addr(ptb))
+ ^ " pt_ofs=" ^ BitStr(to_phys_addr(pt_ofs))
+ ^ " pte_addr=" ^ BitStr(to_phys_addr(pte_addr))
+ ^ ": invalid pte address"); */
+ PTW_Failure(PTW_Access)
+ },
+ MemValue(v) => {
+ let pte = Mk_SV32_PTE(v);
+ let pbits = pte.BITS();
+ let pattr = Mk_PTE_Bits(pbits);
+ let is_global = global | (pattr.G() == true);
+/* print("walk32(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
+ ^ " pt_base=" ^ BitStr(to_phys_addr(ptb))
+ ^ " pt_ofs=" ^ BitStr(to_phys_addr(pt_ofs))
+ ^ " pte_addr=" ^ BitStr(to_phys_addr(pte_addr))
+ ^ " pte=" ^ BitStr(v)); */
+ if isInvalidPTE(pbits) then {
+/* print("walk32: invalid pte"); */
+ PTW_Failure(PTW_Invalid_PTE)
+ } else {
+ if isPTEPtr(pbits) then {
+ if level == 0 then {
+ /* last-level PTE contains a pointer instead of a leaf */
+/* print("walk32: last-level pte contains a ptr"); */
+ PTW_Failure(PTW_Invalid_PTE)
+ } else {
+ /* walk down the pointer to the next level */
+ walk32(vaddr, ac, priv, mxr, do_sum, shiftl(EXTZ(pte.PPNi()), PAGESIZE_BITS), level - 1, is_global)
+ }
+ } else { /* leaf PTE */
+ if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pattr)) then {
+/* print("walk32: pte permission check failure"); */
+ PTW_Failure(PTW_No_Permission)
+ } else {
+ if level > 0 then { /* superpage */
+ /* fixme hack: to get a mask of appropriate size */
+ let mask = shiftl(pte.PPNi() ^ pte.PPNi() ^ EXTZ(0b1), level * SV32_LEVEL_BITS) - 1;
+ if (pte.PPNi() & mask) != EXTZ(0b0) then {
+ /* misaligned superpage mapping */
+/* print("walk32: misaligned superpage mapping"); */
+ PTW_Failure(PTW_Misaligned)
+ } else {
+ /* add the appropriate bits of the VPN to the superpage PPN */
+ let ppn = pte.PPNi() | (EXTZ(va.VPNi()) & mask);
+/* let res = append(ppn, va.PgOfs());
+ print("walk32: using superpage: pte.ppn=" ^ BitStr(pte.PPNi())
+ ^ " ppn=" ^ BitStr(ppn) ^ " res=" ^ BitStr(res)); */
+ PTW_Success(append(ppn, va.PgOfs()), pte, pte_addr, level, is_global)
+ }
+ } else {
+ /* normal leaf PTE */
+/* let res = append(pte.PPNi(), va.PgOfs());
+ print("walk32: pte.ppn=" ^ BitStr(pte.PPNi()) ^ " ppn=" ^ BitStr(pte.PPNi()) ^ " res=" ^ BitStr(res)); */
+ PTW_Success(append(pte.PPNi(), va.PgOfs()), pte, pte_addr, level, is_global)
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/* TLB management: single entry for now */
+
+// ideally we would use the below form:
+// type TLB32_Entry = TLB_Entry(sizeof(asid32), sizeof(vaddr32), sizeof(paddr32), sizeof(pte32))
+type TLB32_Entry = TLB_Entry(9, 32, 34, 32)
+register tlb32 : option(TLB32_Entry)
+
+val lookup_TLB32 : (asid32, vaddr32) -> option((nat, TLB32_Entry)) effect {rreg}
+function lookup_TLB32(asid, vaddr) =
+ match tlb32 {
+ None() => None(),
+ Some(e) => if match_TLB_Entry(e, asid, vaddr) then Some((0, e)) else None()
+ }
+
+val add_to_TLB32 : (asid32, vaddr32, paddr32, SV32_PTE, paddr32, nat, bool) -> unit effect {wreg, rreg}
+function add_to_TLB32(asid, vAddr, pAddr, pte, pteAddr, level, global) = {
+ let ent : TLB32_Entry = make_TLB_Entry(asid, global, vAddr, pAddr, pte.bits(), level, pteAddr, SV32_LEVEL_BITS);
+ tlb32 = Some(ent)
+}
+
+function write_TLB32(idx : nat, ent : TLB32_Entry) -> unit =
+ tlb32 = Some(ent)
+
+val flush_TLB32 : (option(asid32), option(vaddr32)) -> unit effect {rreg, wreg}
+function flush_TLB32(asid, addr) =
+ match (tlb32) {
+ None() => (),
+ Some(e) => if flush_TLB_Entry(e, asid, addr)
+ then tlb32 = None()
+ else ()
+ }
+
+/* address translation */
+
+val translate32 : (asid32, paddr32, vaddr32, AccessType, Privilege, bool, bool, nat) -> TR_Result(paddr32, PTW_Error) effect {rreg, wreg, wmv, escape, rmem}
+function translate32(asid, ptb, vAddr, ac, priv, mxr, do_sum, level) = {
+ match lookup_TLB32(asid, vAddr) {
+ Some(idx, ent) => {
+/* print("translate32: TLB32 hit for " ^ BitStr(vAddr)); */
+ let pte = Mk_SV32_PTE(ent.pte);
+ let pteBits = Mk_PTE_Bits(pte.BITS());
+ if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pteBits))
+ then TR_Failure(PTW_No_Permission)
+ else {
+ match update_PTE_Bits(pteBits, ac) {
+ None() => TR_Address(ent.pAddr | EXTZ(vAddr & ent.vAddrMask)),
+ Some(pbits) => {
+ if ~ (plat_enable_dirty_update ())
+ then {
+ /* pte needs dirty/accessed update but that is not enabled */
+ TR_Failure(PTW_PTE_Update)
+ } else {
+ /* update PTE entry and TLB */
+ n_pte = update_BITS(pte, pbits.bits());
+ n_ent : TLB32_Entry = ent;
+ n_ent.pte = n_pte.bits();
+ write_TLB32(idx, n_ent);
+ /* update page table */
+ match checked_mem_write(to_phys_addr(EXTZ(ent.pteAddr)), 4, n_pte.bits(), false, false, false) {
+ MemValue(_) => (),
+ MemException(e) => internal_error("invalid physical address in TLB")
+ };
+ TR_Address(ent.pAddr | EXTZ(vAddr & ent.vAddrMask))
+ }
+ }
+ }
+ }
+ },
+ None() => {
+ match walk32(vAddr, ac, priv, mxr, do_sum, ptb, level, false) {
+ PTW_Failure(f) => TR_Failure(f),
+ PTW_Success(pAddr, pte, pteAddr, level, global) => {
+ match update_PTE_Bits(Mk_PTE_Bits(pte.BITS()), ac) {
+ None() => {
+ add_to_TLB32(asid, vAddr, pAddr, pte, pteAddr, level, global);
+ TR_Address(pAddr)
+ },
+ Some(pbits) =>
+ if ~ (plat_enable_dirty_update ())
+ then {
+ /* pte needs dirty/accessed update but that is not enabled */
+ TR_Failure(PTW_PTE_Update)
+ } else {
+ w_pte : SV32_PTE = update_BITS(pte, pbits.bits());
+ match checked_mem_write(to_phys_addr(pteAddr), 4, w_pte.bits(), false, false, false) {
+ MemValue(_) => {
+ add_to_TLB32(asid, vAddr, pAddr, w_pte, pteAddr, level, global);
+ TR_Address(pAddr)
+ },
+ MemException(e) => {
+ /* pte is not in valid memory */
+ TR_Failure(PTW_Access)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+function init_vmem_sv32() -> unit = {
+ tlb32 = None()
+}
diff --git a/model/riscv_vmem_sv39.sail b/model/riscv_vmem_sv39.sail
new file mode 100644
index 0000000..b349783
--- /dev/null
+++ b/model/riscv_vmem_sv39.sail
@@ -0,0 +1,179 @@
+/* Sv39 address translation for RV64. */
+
+val walk39 : (vaddr39, AccessType, Privilege, bool, bool, paddr64, nat, bool) -> PTW_Result(paddr64, SV39_PTE) effect {rmem, escape}
+function walk39(vaddr, ac, priv, mxr, do_sum, ptb, level, global) = {
+ let va = Mk_SV39_Vaddr(vaddr);
+ let pt_ofs : paddr64 = shiftl(EXTZ(shiftr(va.VPNi(), (level * SV39_LEVEL_BITS))[(SV39_LEVEL_BITS - 1) .. 0]),
+ PTE39_LOG_SIZE);
+ let pte_addr = ptb + pt_ofs;
+ /* FIXME: we assume here that walks only access physical-memory-backed addresses, and not MMIO regions. */
+ match (phys_mem_read(Data, EXTZ(pte_addr), 8, false, false, false)) {
+ MemException(_) => {
+/* print("walk39(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
+ ^ " pt_base=" ^ BitStr(ptb)
+ ^ " pt_ofs=" ^ BitStr(pt_ofs)
+ ^ " pte_addr=" ^ BitStr(pte_addr)
+ ^ ": invalid pte address"); */
+ PTW_Failure(PTW_Access)
+ },
+ MemValue(v) => {
+ let pte = Mk_SV39_PTE(v);
+ let pbits = pte.BITS();
+ let pattr = Mk_PTE_Bits(pbits);
+ let is_global = global | (pattr.G() == true);
+/* print("walk39(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
+ ^ " pt_base=" ^ BitStr(ptb)
+ ^ " pt_ofs=" ^ BitStr(pt_ofs)
+ ^ " pte_addr=" ^ BitStr(pte_addr)
+ ^ " pte=" ^ BitStr(v)); */
+ if isInvalidPTE(pbits) then {
+/* print("walk39: invalid pte"); */
+ PTW_Failure(PTW_Invalid_PTE)
+ } else {
+ if isPTEPtr(pbits) then {
+ if level == 0 then {
+ /* last-level PTE contains a pointer instead of a leaf */
+/* print("walk39: last-level pte contains a ptr"); */
+ PTW_Failure(PTW_Invalid_PTE)
+ } else {
+ /* walk down the pointer to the next level */
+ walk39(vaddr, ac, priv, mxr, do_sum, shiftl(EXTZ(pte.PPNi()), PAGESIZE_BITS), level - 1, is_global)
+ }
+ } else { /* leaf PTE */
+ if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pattr)) then {
+/* print("walk39: pte permission check failure"); */
+ PTW_Failure(PTW_No_Permission)
+ } else {
+ if level > 0 then { /* superpage */
+ /* fixme hack: to get a mask of appropriate size */
+ let mask = shiftl(pte.PPNi() ^ pte.PPNi() ^ EXTZ(0b1), level * SV39_LEVEL_BITS) - 1;
+ if (pte.PPNi() & mask) != EXTZ(0b0) then {
+ /* misaligned superpage mapping */
+/* print("walk39: misaligned superpage mapping"); */
+ PTW_Failure(PTW_Misaligned)
+ } else {
+ /* add the appropriate bits of the VPN to the superpage PPN */
+ let ppn = pte.PPNi() | (EXTZ(va.VPNi()) & mask);
+/* let res = append(ppn, va.PgOfs());
+ print("walk39: using superpage: pte.ppn=" ^ BitStr(pte.PPNi())
+ ^ " ppn=" ^ BitStr(ppn) ^ " res=" ^ BitStr(res)); */
+ PTW_Success(append(ppn, va.PgOfs()), pte, pte_addr, level, is_global)
+ }
+ } else {
+ /* normal leaf PTE */
+/* let res = append(pte.PPNi(), va.PgOfs());
+ print("walk39: pte.ppn=" ^ BitStr(pte.PPNi()) ^ " ppn=" ^ BitStr(pte.PPNi()) ^ " res=" ^ BitStr(res)); */
+ PTW_Success(append(pte.PPNi(), va.PgOfs()), pte, pte_addr, level, is_global)
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/* TLB management: single entry for now */
+
+// ideally we would use the below form:
+// type TLB39_Entry = TLB_Entry(sizeof(asid64), sizeof(vaddr39), sizeof(paddr64), sizeof(pte64))
+type TLB39_Entry = TLB_Entry(16, 39, 56, 64)
+register tlb39 : option(TLB39_Entry)
+
+val lookup_TLB39 : (asid64, vaddr39) -> option((nat, TLB39_Entry)) effect {rreg}
+function lookup_TLB39(asid, vaddr) =
+ match tlb39 {
+ None() => None(),
+ Some(e) => if match_TLB_Entry(e, asid, vaddr) then Some((0, e)) else None()
+ }
+
+val add_to_TLB39 : (asid64, vaddr39, paddr64, SV39_PTE, paddr64, nat, bool) -> unit effect {wreg, rreg}
+function add_to_TLB39(asid, vAddr, pAddr, pte, pteAddr, level, global) = {
+ let ent : TLB39_Entry = make_TLB_Entry(asid, global, vAddr, pAddr, pte.bits(), level, pteAddr, SV39_LEVEL_BITS);
+ tlb39 = Some(ent)
+}
+
+function write_TLB39(idx : nat, ent : TLB39_Entry) -> unit =
+ tlb39 = Some(ent)
+
+val flush_TLB39 : (option(asid64), option(vaddr39)) -> unit effect {rreg, wreg}
+function flush_TLB39(asid, addr) =
+ match (tlb39) {
+ None() => (),
+ Some(e) => if flush_TLB_Entry(e, asid, addr)
+ then tlb39 = None()
+ else ()
+ }
+
+/* address translation */
+
+val translate39 : (asid64, paddr64, vaddr39, AccessType, Privilege, bool, bool, nat) -> TR_Result(paddr64, PTW_Error) effect {rreg, wreg, wmv, escape, rmem}
+function translate39(asid, ptb, vAddr, ac, priv, mxr, do_sum, level) = {
+ match lookup_TLB39(asid, vAddr) {
+ Some(idx, ent) => {
+/* print("translate39: TLB39 hit for " ^ BitStr(vAddr)); */
+ let pte = Mk_SV39_PTE(ent.pte);
+ let pteBits = Mk_PTE_Bits(pte.BITS());
+ if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pteBits))
+ then TR_Failure(PTW_No_Permission)
+ else {
+ match update_PTE_Bits(pteBits, ac) {
+ None() => TR_Address(ent.pAddr | EXTZ(vAddr & ent.vAddrMask)),
+ Some(pbits) => {
+ if ~ (plat_enable_dirty_update ())
+ then {
+ /* pte needs dirty/accessed update but that is not enabled */
+ TR_Failure(PTW_PTE_Update)
+ } else {
+ /* update PTE entry and TLB */
+ n_pte = update_BITS(pte, pbits.bits());
+ n_ent : TLB39_Entry = ent;
+ n_ent.pte = n_pte.bits();
+ write_TLB39(idx, n_ent);
+ /* update page table */
+ match checked_mem_write(EXTZ(ent.pteAddr), 8, n_pte.bits(), false, false, false) {
+ MemValue(_) => (),
+ MemException(e) => internal_error("invalid physical address in TLB")
+ };
+ TR_Address(ent.pAddr | EXTZ(vAddr & ent.vAddrMask))
+ }
+ }
+ }
+ }
+ },
+ None() => {
+ match walk39(vAddr, ac, priv, mxr, do_sum, ptb, level, false) {
+ PTW_Failure(f) => TR_Failure(f),
+ PTW_Success(pAddr, pte, pteAddr, level, global) => {
+ match update_PTE_Bits(Mk_PTE_Bits(pte.BITS()), ac) {
+ None() => {
+ add_to_TLB39(asid, vAddr, pAddr, pte, pteAddr, level, global);
+ TR_Address(pAddr)
+ },
+ Some(pbits) =>
+ if ~ (plat_enable_dirty_update ())
+ then {
+ /* pte needs dirty/accessed update but that is not enabled */
+ TR_Failure(PTW_PTE_Update)
+ } else {
+ w_pte : SV39_PTE = update_BITS(pte, pbits.bits());
+ match checked_mem_write(EXTZ(pteAddr), 8, w_pte.bits(), false, false, false) {
+ MemValue(_) => {
+ add_to_TLB39(asid, vAddr, pAddr, w_pte, pteAddr, level, global);
+ TR_Address(pAddr)
+ },
+ MemException(e) => {
+ /* pte is not in valid memory */
+ TR_Failure(PTW_Access)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+function init_vmem_sv39() -> unit = {
+ tlb39 = None()
+}
diff --git a/model/riscv_vmem_sv48.sail b/model/riscv_vmem_sv48.sail
new file mode 100644
index 0000000..b3bd47e
--- /dev/null
+++ b/model/riscv_vmem_sv48.sail
@@ -0,0 +1,144 @@
+/* Sv48 address translation for RV64. */
+
+val walk48 : (vaddr48, AccessType, Privilege, bool, bool, paddr64, nat, bool) -> PTW_Result(paddr64, SV48_PTE) effect {rmem, escape}
+function walk48(vaddr, ac, priv, mxr, do_sum, ptb, level, global) = {
+ let va = Mk_SV48_Vaddr(vaddr);
+ let pt_ofs : paddr64 = shiftl(EXTZ(shiftr(va.VPNi(), (level * SV48_LEVEL_BITS))[(SV48_LEVEL_BITS - 1) .. 0]),
+ PTE48_LOG_SIZE);
+ let pte_addr = ptb + pt_ofs;
+ /* FIXME: we assume here that walks only access physical-memory-backed addresses, and not MMIO regions. */
+ match (phys_mem_read(Data, EXTZ(pte_addr), 8, false, false, false)) {
+ MemException(_) => {
+/* print("walk48(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
+ ^ " pt_base=" ^ BitStr(ptb)
+ ^ " pt_ofs=" ^ BitStr(pt_ofs)
+ ^ " pte_addr=" ^ BitStr(pte_addr)
+ ^ ": invalid pte address"); */
+ PTW_Failure(PTW_Access)
+ },
+ MemValue(v) => {
+ let pte = Mk_SV48_PTE(v);
+ let pbits = pte.BITS();
+ let pattr = Mk_PTE_Bits(pbits);
+ let is_global = global | (pattr.G() == true);
+/* print("walk48(vaddr=" ^ BitStr(vaddr) ^ " level=" ^ string_of_int(level)
+ ^ " pt_base=" ^ BitStr(ptb)
+ ^ " pt_ofs=" ^ BitStr(pt_ofs)
+ ^ " pte_addr=" ^ BitStr(pte_addr)
+ ^ " pte=" ^ BitStr(v)); */
+ if isInvalidPTE(pbits) then {
+/* print("walk48: invalid pte"); */
+ PTW_Failure(PTW_Invalid_PTE)
+ } else {
+ if isPTEPtr(pbits) then {
+ if level == 0 then {
+ /* last-level PTE contains a pointer instead of a leaf */
+/* print("walk48: last-level pte contains a ptr"); */
+ PTW_Failure(PTW_Invalid_PTE)
+ } else {
+ /* walk down the pointer to the next level */
+ walk48(vaddr, ac, priv, mxr, do_sum, shiftl(EXTZ(pte.PPNi()), PAGESIZE_BITS), level - 1, is_global)
+ }
+ } else { /* leaf PTE */
+ if ~ (checkPTEPermission(ac, priv, mxr, do_sum, pattr)) then {
+/* print("walk48: pte permission check failure"); */
+ PTW_Failure(PTW_No_Permission)
+ } else {
+ if level > 0 then { /* superpage */
+ /* fixme hack: to get a mask of appropriate size */
+ let mask = shiftl(pte.PPNi() ^ pte.PPNi() ^ EXTZ(0b1), level * SV48_LEVEL_BITS) - 1;
+ if (pte.PPNi() & mask) != EXTZ(0b0) then {
+ /* misaligned superpage mapping */
+/* print("walk48: misaligned superpage mapping"); */
+ PTW_Failure(PTW_Misaligned)
+ } else {
+ /* add the appropriate bits of the VPN to the superpage PPN */
+ let ppn = pte.PPNi() | (EXTZ(va.VPNi()) & mask);
+/* let res = append(ppn, va.PgOfs());
+ print("walk48: using superpage: pte.ppn=" ^ BitStr(pte.PPNi())
+ ^ " ppn=" ^ BitStr(ppn) ^ " res=" ^ BitStr(res)); */
+ PTW_Success(append(ppn, va.PgOfs()), pte, pte_addr, level, is_global)
+ }
+ } else {
+ /* normal leaf PTE */
+/* let res = append(pte.PPNi(), va.PgOfs());
+ print("walk48: pte.ppn=" ^ BitStr(pte.PPNi()) ^ " ppn=" ^ BitStr(pte.PPNi()) ^ " res=" ^ BitStr(res)); */
+ PTW_Success(append(pte.PPNi(), va.PgOfs()), pte, pte_addr, level, is_global)
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/* TLB management: single entry for now */
+
+// ideally we would use the below form:
+// type TLB48_Entry = TLB_Entry(sizeof(asid64), sizeof(vaddr48), sizeof(paddr64), sizeof(pte64))
+type TLB48_Entry = TLB_Entry(16, 48, 56, 64)
+register tlb48 : option(TLB48_Entry)
+
+val lookup_TLB48 : (asid64, vaddr48) -> option((nat, TLB48_Entry)) effect {rreg}
+function lookup_TLB48(asid, vaddr) =
+ match tlb48 {
+ None() => None(),
+ Some(e) => if match_TLB_Entry(e, asid, vaddr) then Some((0, e)) else None()
+ }
+
+val add_to_TLB48 : (asid64, vaddr48, paddr64, SV48_PTE, paddr64, nat, bool) -> unit effect {wreg, rreg}
+function add_to_TLB48(asid, vAddr, pAddr, pte, pteAddr, level, global) = {
+ let ent : TLB48_Entry = make_TLB_Entry(asid, global, vAddr, pAddr, pte.bits(), level, pteAddr, SV48_LEVEL_BITS);
+ tlb48 = Some(ent)
+}
+
+function write_TLB48(idx : nat, ent : TLB48_Entry) -> unit =
+ tlb48 = Some(ent)
+
+val flush_TLB48 : (option(asid64), option(vaddr48)) -> unit effect {rreg, wreg}
+function flush_TLB48(asid, addr) =
+ match (tlb48) {
+ None() => (),
+ Some(e) => if flush_TLB_Entry(e, asid, addr)
+ then tlb48 = None()
+ else ()
+ }
+
+/* address translation */
+
+val translate48 : (asid64, paddr64, vaddr48, AccessType, Privilege, bool, bool, nat) -> TR_Result(paddr64, PTW_Error) effect {rreg, wreg, wmv, escape, rmem}
+function translate48(asid, ptb, vAddr, ac, priv, mxr, do_sum, level) = {
+ match walk48(vAddr, ac, priv, mxr, do_sum, ptb, level, false) {
+ PTW_Failure(f) => TR_Failure(f),
+ PTW_Success(pAddr, pte, pteAddr, level, global) => {
+ match update_PTE_Bits(Mk_PTE_Bits(pte.BITS()), ac) {
+ None() => {
+ add_to_TLB48(asid, vAddr, pAddr, pte, pteAddr, level, global);
+ TR_Address(pAddr)
+ },
+ Some(pbits) =>
+ if ~ (plat_enable_dirty_update ())
+ then {
+ /* pte needs dirty/accessed update but that is not enabled */
+ TR_Failure(PTW_PTE_Update)
+ } else {
+ w_pte : SV48_PTE = update_BITS(pte, pbits.bits());
+ match checked_mem_write(EXTZ(pteAddr), 8, w_pte.bits(), false, false, false) {
+ MemValue(_) => {
+ add_to_TLB48(asid, vAddr, pAddr, w_pte, pteAddr, level, global);
+ TR_Address(pAddr)
+ },
+ MemException(e) => {
+ /* pte is not in valid memory */
+ TR_Failure(PTW_Access)
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+function init_vmem_sv48() -> unit = {
+ tlb48 = None()
+}
diff --git a/model/riscv_vmem_tlb.sail b/model/riscv_vmem_tlb.sail
new file mode 100644
index 0000000..5d9831c
--- /dev/null
+++ b/model/riscv_vmem_tlb.sail
@@ -0,0 +1,54 @@
+/* idealized generic TLB entry to model fence.vm and also speed up simulation. */
+
+struct TLB_Entry('asidlen: Int, 'valen: Int, 'palen: Int, 'ptelen: Int) = {
+ asid : bits('asidlen),
+ global : bool,
+ vAddr : bits('valen), /* VPN */
+ pAddr : bits('palen), /* PPN */
+ vMatchMask : bits('valen), /* matching mask for superpages */
+ vAddrMask : bits('valen), /* selection mask for superpages */
+ pte : bits('ptelen), /* PTE */
+ pteAddr : bits('palen), /* for dirty writeback */
+ age : bits(64)
+}
+
+
+val make_TLB_Entry : forall 'asidlen 'valen 'palen 'ptelen, 'valen > 0.
+ (bits('asidlen), bool, bits('valen), bits('palen), bits('ptelen), nat, bits('palen), nat)
+ -> TLB_Entry('asidlen, 'valen, 'palen, 'ptelen) effect {rreg}
+function make_TLB_Entry(asid, global, vAddr, pAddr, pte, level, pteAddr, levelBitSize) = {
+ let shift : nat = PAGESIZE_BITS + (level * levelBitSize);
+ /* fixme hack: use a better idiom for masks */
+ let vAddrMask : bits('valen) = shiftl(vAddr ^ vAddr ^ EXTZ(0b1), shift) - 1;
+ let vMatchMask : bits('valen) = ~ (vAddrMask);
+ struct {
+ asid = asid,
+ global = global,
+ pte = pte,
+ pteAddr = pteAddr,
+ vAddrMask = vAddrMask,
+ vMatchMask = vMatchMask,
+ vAddr = vAddr & vMatchMask,
+ pAddr = shiftl(shiftr(pAddr, shift), shift),
+ age = mcycle
+ }
+}
+
+val match_TLB_Entry : forall 'asidlen 'valen 'palen 'ptelen.
+ (TLB_Entry('asidlen, 'valen, 'palen, 'ptelen), bits('asidlen), bits('valen))
+ -> bool
+function match_TLB_Entry(ent, asid, vaddr) =
+ (ent.global | (ent.asid == asid)) & (ent.vAddr == (ent.vMatchMask & vaddr))
+
+val flush_TLB_Entry : forall 'asidlen 'valen 'palen 'ptelen.
+ (TLB_Entry('asidlen, 'valen, 'palen, 'ptelen), option(bits('asidlen)), option(bits('valen)))
+ -> bool
+function flush_TLB_Entry(e, asid, addr) = {
+ match(asid, addr) {
+ ( None(), None()) => true,
+ ( None(), Some(a)) => e.vAddr == (e.vMatchMask & a),
+ (Some(i), None()) => (e.asid == i) & (~ (e.global)),
+ (Some(i), Some(a)) => ( (e.asid == i) & (e.vAddr == (a & e.vMatchMask))
+ & (~ (e.global)))
+ }
+}
diff --git a/model/riscv_xlen32.sail b/model/riscv_xlen32.sail
new file mode 100644
index 0000000..3722e85
--- /dev/null
+++ b/model/riscv_xlen32.sail
@@ -0,0 +1,5 @@
+/* Define the XLEN value for the architecture. */
+
+type xlen : Int = 32
+type xlen_bytes : Int = 4
+type xlenbits = bits(xlen)
diff --git a/model/riscv_xlen64.sail b/model/riscv_xlen64.sail
new file mode 100644
index 0000000..7abf5dd
--- /dev/null
+++ b/model/riscv_xlen64.sail
@@ -0,0 +1,5 @@
+/* Define the XLEN value for the architecture. */
+
+type xlen : Int = 64
+type xlen_bytes : Int = 8
+type xlenbits = bits(xlen)
diff --git a/model/rvfi_dii.sail b/model/rvfi_dii.sail
index 9680ab4..b0e3a06 100644
--- a/model/rvfi_dii.sail
+++ b/model/rvfi_dii.sail
@@ -63,7 +63,7 @@ register rvfi_exec : RVFI_DII_Execution_Packet
val rvfi_zero_exec_packet : unit -> unit effect {wreg}
function rvfi_zero_exec_packet () =
- rvfi_exec = Mk_RVFI_DII_Execution_Packet(zero_extend(0b0,704))
+ rvfi_exec = Mk_RVFI_DII_Execution_Packet(sail_zero_extend(0b0,704))
val rvfi_halt_exec_packet : unit -> unit effect {wreg}
diff --git a/ocaml_emulator/platform.ml b/ocaml_emulator/platform.ml
index 6ee2d2b..0cf4861 100644
--- a/ocaml_emulator/platform.ml
+++ b/ocaml_emulator/platform.ml
@@ -1,53 +1,3 @@
-(**************************************************************************)
-(* Sail *)
-(* *)
-(* Copyright (c) 2013-2017 *)
-(* Kathyrn Gray *)
-(* Shaked Flur *)
-(* Stephen Kell *)
-(* Gabriel Kerneis *)
-(* Robert Norton-Wright *)
-(* Christopher Pulte *)
-(* Peter Sewell *)
-(* Alasdair Armstrong *)
-(* Brian Campbell *)
-(* Thomas Bauereiss *)
-(* Anthony Fox *)
-(* Jon French *)
-(* Dominic Mulligan *)
-(* Stephen Kell *)
-(* Mark Wassell *)
-(* *)
-(* All rights reserved. *)
-(* *)
-(* This software was developed by the University of Cambridge Computer *)
-(* Laboratory as part of the Rigorous Engineering of Mainstream Systems *)
-(* (REMS) project, funded by EPSRC grant EP/K008528/1. *)
-(* *)
-(* Redistribution and use in source and binary forms, with or without *)
-(* modification, are permitted provided that the following conditions *)
-(* are met: *)
-(* 1. Redistributions of source code must retain the above copyright *)
-(* notice, this list of conditions and the following disclaimer. *)
-(* 2. Redistributions in binary form must reproduce the above copyright *)
-(* notice, this list of conditions and the following disclaimer in *)
-(* the documentation and/or other materials provided with the *)
-(* distribution. *)
-(* *)
-(* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' *)
-(* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *)
-(* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *)
-(* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR *)
-(* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *)
-(* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *)
-(* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF *)
-(* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND *)
-(* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, *)
-(* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT *)
-(* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *)
-(* SUCH DAMAGE. *)
-(**************************************************************************)
-
open Sail_lib;;
module P = Platform_impl;;
module Elf = Elf_loader;;
@@ -58,6 +8,8 @@ let config_enable_dirty_update = ref false
let config_enable_misaligned_access = ref false
let config_mtval_has_illegal_inst_bits = ref false
+let platform_arch = ref P.RV64
+
(* logging *)
let config_print_instr = ref true
@@ -86,17 +38,22 @@ let print_platform s =
else ()
(* Mapping to Sail externs *)
+let cur_arch_bitwidth () =
+ match !platform_arch with
+ | P.RV64 -> Big_int.of_int 64
+ | P.RV32 -> Big_int.of_int 32
-let bits_of_int i =
- get_slice_int (Big_int.of_int 64, Big_int.of_int i, Big_int.zero)
+let arch_bits_of_int i =
+ get_slice_int (cur_arch_bitwidth (), Big_int.of_int i, Big_int.zero)
-let bits_of_int64 i =
- get_slice_int (Big_int.of_int 64, Big_int.of_int64 i, Big_int.zero)
+let arch_bits_of_int64 i =
+ get_slice_int (cur_arch_bitwidth (), Big_int.of_int64 i, Big_int.zero)
let rom_size_ref = ref 0
-let make_rom start_pc =
- let reset_vec = List.concat (List.map P.uint32_to_bytes (P.reset_vec_int start_pc)) in
- let dtb = P.make_dtb (P.make_dts ()) in
+let make_rom arch start_pc =
+ let reset_vec =
+ List.concat (List.map P.uint32_to_bytes (P.reset_vec_int arch start_pc)) in
+ let dtb = P.make_dtb (P.make_dts arch) in
let rom = reset_vec @ dtb in
( rom_size_ref := List.length rom;
(*
@@ -112,17 +69,17 @@ let enable_dirty_update () = !config_enable_dirty_update
let enable_misaligned_access () = !config_enable_misaligned_access
let mtval_has_illegal_inst_bits () = !config_mtval_has_illegal_inst_bits
-let rom_base () = bits_of_int64 P.rom_base
-let rom_size () = bits_of_int !rom_size_ref
+let rom_base () = arch_bits_of_int64 P.rom_base
+let rom_size () = arch_bits_of_int !rom_size_ref
-let dram_base () = bits_of_int64 P.dram_base
-let dram_size () = bits_of_int64 !P.dram_size_ref
+let dram_base () = arch_bits_of_int64 P.dram_base
+let dram_size () = arch_bits_of_int64 !P.dram_size_ref
let htif_tohost () =
- bits_of_int64 (Big_int.to_int64 (Elf.elf_tohost ()))
+ arch_bits_of_int64 (Big_int.to_int64 (Elf.elf_tohost ()))
-let clint_base () = bits_of_int64 P.clint_base
-let clint_size () = bits_of_int64 P.clint_size
+let clint_base () = arch_bits_of_int64 P.clint_base
+let clint_size () = arch_bits_of_int64 P.clint_size
let insns_per_tick () = Big_int.of_int P.insns_per_tick
@@ -152,17 +109,23 @@ let term_write char_bits =
let term_read () =
let c = P.term_read () in
- bits_of_int (int_of_char c)
+ arch_bits_of_int (int_of_char c)
+
+(* physical memory *)
+
+let get_mem_bytes addr len =
+ read_mem_bytes addr len
(* returns starting value for PC, i.e. start of reset vector *)
-let init elf_file =
+let init arch elf_file =
+ platform_arch := arch;
Elf.load_elf elf_file;
print_platform (Printf.sprintf "\nRegistered htif_tohost at 0x%Lx.\n" (Big_int.to_int64 (Elf.elf_tohost ())));
print_platform (Printf.sprintf "Registered clint at 0x%Lx (size 0x%Lx).\n%!" P.clint_base P.clint_size);
let start_pc = Elf.Big_int.to_int64 (Elf.elf_entry ()) in
- let rom = make_rom start_pc in
+ let rom = make_rom arch start_pc in
let rom_base = Big_int.of_int64 P.rom_base in
let rec write_rom ofs = function
| [] -> ()
@@ -170,5 +133,5 @@ let init elf_file =
(wram addr h);
write_rom (ofs + 1) tl
in ( write_rom 0 rom;
- get_slice_int (Big_int.of_int 64, rom_base, Big_int.zero)
+ get_slice_int (cur_arch_bitwidth (), rom_base, Big_int.zero)
)
diff --git a/ocaml_emulator/platform_impl.ml b/ocaml_emulator/platform_impl.ml
index 3eb8217..39de437 100644
--- a/ocaml_emulator/platform_impl.ml
+++ b/ocaml_emulator/platform_impl.ml
@@ -1,4 +1,12 @@
-(* FIXME: copyright header *)
+(* architecture *)
+
+type arch =
+ | RV32
+ | RV64
+
+let str_of_arch = function
+ | RV32 -> "RV32"
+ | RV64 -> "RV64"
(* int->byte converters in little-endian order *)
@@ -26,12 +34,14 @@ let uint64_to_bytes u = let open Int64 in
let reset_vec_size = 8l;;
-let reset_vec_int start_pc = [
+let reset_vec_int arch start_pc = [
0x297l; (* auipc t0, 0x0 *)
(let open Int32 in
add 0x28593l (shift_left (mul reset_vec_size 4l) 20)); (* addi a1, t0, ofs(dtb) *)
0xf1402573l; (* csrr a0, mhartid *)
- 0x0182b283l; (* ld t0, 24(t0) *)
+ (match arch with
+ | RV32 -> 0x0182a283l (* lw t0, 24(t0) *)
+ | RV64 -> 0x0182b283l); (* ld t0, 24(t0) *)
0x28067l; (* jr t0 *)
0x0l;
(let open Int64 in to_int32 (logand start_pc 0xffffffffL));
@@ -45,7 +55,7 @@ let clint_base = 0x02000000L;; (* Spike::CLINT_BASE *)
let clint_size = 0x000c0000L;; (* Spike::CLINT_SIZE *)
let rom_base = 0x00001000L;; (* Spike::DEFAULT_RSTVEC *)
-let dram_size_ref = ref (Int64.(shift_left 2048L 20))
+let dram_size_ref = ref (Int64.(shift_left 64L 20))
type mem_region = {
addr : Int64.t;
@@ -53,7 +63,7 @@ type mem_region = {
}
(* dts from spike *)
-let spike_dts isa_spec cpu_hz insns_per_rtc_tick mems =
+let spike_dts isa_spec mmu_spec cpu_hz insns_per_rtc_tick mems =
"/dts-v1/;\n"
^ "\n"
^ "/ {\n"
@@ -71,7 +81,7 @@ let spike_dts isa_spec cpu_hz insns_per_rtc_tick mems =
^ " status = \"okay\";\n"
^ " compatible = \"riscv\";\n"
^ " riscv,isa = \"" ^ isa_spec ^ "\";\n"
- ^ " mmu-type = \"riscv,sv39\";\n"
+ ^ " mmu-type = \"riscv," ^ mmu_spec ^ "\";\n"
^ " clock-frequency = <" ^ string_of_int cpu_hz ^ ">;\n"
^ " CPU0_intc: interrupt-controller {\n"
^ " #interrupt-cells = <1>;\n"
@@ -110,7 +120,11 @@ let insns_per_tick = 100;;
let make_mems () = [{ addr = dram_base;
size = !dram_size_ref }];;
-let make_dts () = spike_dts "rv64imac" cpu_hz insns_per_tick (make_mems ());;
+let make_dts arch =
+ let isa, mmu = match arch with
+ | RV64 -> "rv64imac", "sv39"
+ | RV32 -> "rv32imac", "sv32" in
+ spike_dts isa mmu cpu_hz insns_per_tick (make_mems ());;
let bytes_to_string bytes =
String.init (List.length bytes) (fun i -> Char.chr (List.nth bytes i))
@@ -177,8 +191,8 @@ let rec term_read () =
let show_bytes s =
output_string stdout s
-let dump_dts () = show_bytes (make_dts ())
-let dump_dtb () = show_bytes (bytes_to_string (make_dtb (make_dts ())))
+let dump_dts arch = show_bytes (make_dts arch)
+let dump_dtb arch = show_bytes (bytes_to_string (make_dtb (make_dts arch)))
(*
let save_string_to_file s fname =
diff --git a/ocaml_emulator/riscv_ocaml_sim.ml b/ocaml_emulator/riscv_ocaml_sim.ml
index 1c9ba20..9046a2f 100644
--- a/ocaml_emulator/riscv_ocaml_sim.ml
+++ b/ocaml_emulator/riscv_ocaml_sim.ml
@@ -1,58 +1,8 @@
-(**************************************************************************)
-(* Sail *)
-(* *)
-(* Copyright (c) 2013-2017 *)
-(* Kathyrn Gray *)
-(* Shaked Flur *)
-(* Stephen Kell *)
-(* Gabriel Kerneis *)
-(* Robert Norton-Wright *)
-(* Christopher Pulte *)
-(* Peter Sewell *)
-(* Alasdair Armstrong *)
-(* Brian Campbell *)
-(* Thomas Bauereiss *)
-(* Anthony Fox *)
-(* Jon French *)
-(* Dominic Mulligan *)
-(* Stephen Kell *)
-(* Mark Wassell *)
-(* *)
-(* All rights reserved. *)
-(* *)
-(* This software was developed by the University of Cambridge Computer *)
-(* Laboratory as part of the Rigorous Engineering of Mainstream Systems *)
-(* (REMS) project, funded by EPSRC grant EP/K008528/1. *)
-(* *)
-(* Redistribution and use in source and binary forms, with or without *)
-(* modification, are permitted provided that the following conditions *)
-(* are met: *)
-(* 1. Redistributions of source code must retain the above copyright *)
-(* notice, this list of conditions and the following disclaimer. *)
-(* 2. Redistributions in binary form must reproduce the above copyright *)
-(* notice, this list of conditions and the following disclaimer in *)
-(* the documentation and/or other materials provided with the *)
-(* distribution. *)
-(* *)
-(* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' *)
-(* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *)
-(* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *)
-(* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR *)
-(* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *)
-(* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *)
-(* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF *)
-(* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND *)
-(* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, *)
-(* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT *)
-(* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *)
-(* SUCH DAMAGE. *)
-(**************************************************************************)
-
-open Elf_loader
open Sail_lib
open Riscv
module PI = Platform_impl
module P = Platform
+module Elf = Elf_loader
(* OCaml driver for generated RISC-V model. *)
@@ -60,6 +10,20 @@ let opt_file_arguments = ref ([] : string list)
let opt_dump_dts = ref false
let opt_dump_dtb = ref false
+let opt_signature_file = ref (None : string option)
+let opt_isa = ref (None : string option)
+
+let report_arch () =
+ Printf.printf "RV%d\n" (Big_int.to_int Riscv.zxlen_val);
+ exit 0
+
+let set_signature_file s =
+ opt_signature_file := Some s;
+ (* turn off logging *)
+ P.config_print_instr := false;
+ P.config_print_reg := false;
+ P.config_print_mem_access := false;
+ P.config_print_platform := false
let options = Arg.align ([("-dump-dts",
Arg.Set opt_dump_dts,
@@ -79,6 +43,15 @@ let options = Arg.align ([("-dump-dts",
("-ram-size",
Arg.Int PI.set_dram_size,
" size of physical ram memory to use (in MB)");
+ ("-report-arch",
+ Arg.Unit report_arch,
+ " report model architecture (RV32 or RV64)");
+ ("-test-signature",
+ Arg.String set_signature_file,
+ " file for signature output (requires ELF signature symbols)");
+ ("-isa",
+ Arg.String (fun s -> opt_isa := Some s),
+ " requested isa");
("-with-dtc",
Arg.String PI.set_dtc,
" full path to dtc to use")
@@ -86,21 +59,85 @@ let options = Arg.align ([("-dump-dts",
let usage_msg = "RISC-V platform options:"
+(* ELF architecture checks *)
+
+let get_arch () =
+ match Big_int.to_int Riscv.zxlen_val with
+ | 64 -> PI.RV64
+ | 32 -> PI.RV32
+ | n -> failwith (Printf.sprintf "Unknown model architecture RV%d" n)
+
+let str_of_elf = function
+ | Elf.ELF_Class_64 -> "ELF64"
+ | Elf.ELF_Class_32 -> "ELF32"
+
let elf_arg =
Arg.parse options (fun s -> opt_file_arguments := !opt_file_arguments @ [s])
usage_msg;
- if !opt_dump_dts then (PI.dump_dts (); exit 0);
- if !opt_dump_dtb then (PI.dump_dtb (); exit 0);
+ if !opt_dump_dts then (PI.dump_dts (get_arch ()); exit 0);
+ if !opt_dump_dtb then (PI.dump_dtb (get_arch ()); exit 0);
( match !opt_file_arguments with
| f :: _ -> prerr_endline ("Sail/RISC-V: running ELF file " ^ f); f
| _ -> (prerr_endline "Please provide an ELF file."; exit 0)
)
+let check_elf () =
+ match (get_arch (), Elf.elf_class ()) with
+ | (PI.RV64, Elf.ELF_Class_64) ->
+ P.print_platform "RV64 model loaded ELF64.\n"
+ | (PI.RV32, Elf.ELF_Class_32) ->
+ P.print_platform "RV32 model loaded ELF32.\n"
+ | (a, e) ->
+ (let msg = Printf.sprintf "\n%s model cannot execute %s.\n" (PI.str_of_arch a) (str_of_elf e) in
+ Printf.eprintf "%s" msg;
+ exit 1)
+
+(* post execution handlers *)
+
+let write_bytes fl bytes =
+ let i = ref 0 in
+ while !i < Bytes.length bytes do
+ let s = Printf.sprintf "%02x%02x%02x%02x\n"
+ (int_of_char (Bytes.get bytes (!i+3)))
+ (int_of_char (Bytes.get bytes (!i+2)))
+ (int_of_char (Bytes.get bytes (!i+1)))
+ (int_of_char (Bytes.get bytes (!i+0))) in
+ output_string fl s;
+ i := !i + 4
+ done
+
+let write_signature f sig_start sig_end =
+ let b = Big_int.to_int sig_start in
+ let len = Big_int.to_int sig_end - b in
+ let sig_bytes = P.get_mem_bytes sig_start len in
+ let sig_file = open_out f in
+ write_bytes sig_file sig_bytes;
+ close_out sig_file
+
+let dump_signature () =
+ match !opt_signature_file with
+ | None -> ()
+ | Some f ->
+ match (Elf.elf_symbol "begin_signature",
+ Elf.elf_symbol "end_signature") with
+ | Some b, Some e -> write_signature f b e
+ | None, _ -> Printf.eprintf "no begin_signature symbol in ELF"
+ | _, None -> Printf.eprintf "no end_signature symbol in ELF"
+
+let show_times init_s init_e run_e insts =
+ let init_time = init_e.Unix.tms_utime -. init_s.Unix.tms_utime in
+ let exec_time = run_e.Unix.tms_utime -. init_e.Unix.tms_utime in
+ Printf.eprintf "\nInitialization: %g secs\n" init_time;
+ Printf.eprintf "Execution: %g secs\n" exec_time;
+ Printf.eprintf "Instructions retired: %Ld\n" insts;
+ Printf.eprintf "Perf: %g ips\n" ((Int64.to_float insts) /. exec_time)
+
+(* model execution *)
+
let run pc =
sail_call
(fun r ->
- try ( zinit_platform (); (* devices *)
- zinit_sys (); (* processor *)
+ try ( zinit_model ();
zPC := pc;
zloop ()
)
@@ -111,21 +148,15 @@ let run pc =
prerr_endline "Error: internal error"
)
-let show_times init_s init_e run_e insts =
- let init_time = init_e.Unix.tms_utime -. init_s.Unix.tms_utime in
- let exec_time = run_e.Unix.tms_utime -. init_e.Unix.tms_utime in
- Printf.eprintf "\nInitialization: %g secs\n" init_time;
- Printf.eprintf "Execution: %g secs\n" exec_time;
- Printf.eprintf "Instructions retired: %Ld\n" insts;
- Printf.eprintf "Perf: %g ips\n" ((Int64.to_float insts) /. exec_time)
-
let () =
Random.self_init ();
let init_start = Unix.times () in
- let pc = Platform.init elf_arg in
+ let pc = Platform.init (get_arch ()) elf_arg in
+ let _ = check_elf () in
let init_end = Unix.times () in
let _ = run pc in
let run_end = Unix.times () in
let insts = Big_int.to_int64 (uint (!Riscv.zminstret)) in
+ dump_signature ();
show_times init_start init_end run_end insts
diff --git a/ocaml_emulator/tracecmp.ml b/ocaml_emulator/tracecmp.ml
index 64a918d..e56ef94 100644
--- a/ocaml_emulator/tracecmp.ml
+++ b/ocaml_emulator/tracecmp.ml
@@ -1,5 +1,9 @@
(* Simple trace comparison checker *)
+type arch =
+ | RV32
+ | RV64
+
type csr_read = {
csrr : string;
rdval : int64
@@ -7,8 +11,7 @@ type csr_read = {
type csr_write = {
csrw : string;
- wrval : int64;
- inval : int64
+ wrval : int64
}
type reg_write = {
@@ -16,6 +19,12 @@ type reg_write = {
rval : int64
}
+type mem_op = {
+ vaddr : int64;
+ paddr : int64;
+ mval : int64
+}
+
type inst = {
count : int;
priv : char;
@@ -42,10 +51,20 @@ type line =
| L_reg_write of reg_write
| L_csr_read of csr_read
| L_csr_write of csr_write
+ | L_mem_read of mem_op
+ | L_mem_write of mem_op
| L_tick of tick
| L_htif of htif
| L_ld_res of ld_res
+(* architectural support *)
+let sail_arch = ref RV64
+
+let arch_val v =
+ match !sail_arch with
+ | RV64 -> v
+ | RV32 -> Int64.logand v 0xFFFFFFFFL (* only lowest 32-bits *)
+
let inst_count = ref 0
(* csr reads
@@ -53,7 +72,8 @@ let inst_count = ref 0
*)
let parse_csr_read l =
- try Scanf.sscanf l " CSR %s -> 0x%Lx" (fun csrr rdval -> L_csr_read { csrr; rdval })
+ try Scanf.sscanf l " CSR %s -> 0x%Lx"
+ (fun csrr rdval -> L_csr_read { csrr; rdval = arch_val rdval })
with
| Scanf.Scan_failure _ -> L_none
| End_of_file -> L_none
@@ -66,14 +86,48 @@ let sprint_csr_read r =
*)
let parse_csr_write l =
- try Scanf.sscanf l " CSR %s <- 0x%Lx (input: 0x%Lx)"
- (fun csrw wrval inval -> L_csr_write { csrw; wrval; inval })
+ try Scanf.sscanf l " CSR %s <- 0x%Lx "
+ (fun csrw wrval -> L_csr_write { csrw; wrval = arch_val wrval })
with
| Scanf.Scan_failure _ -> L_none
| End_of_file -> L_none
let sprint_csr_write r =
- Printf.sprintf "CSR %s <- 0x%Lx (input: 0x%Lx)" r.csrw r.wrval r.inval
+ Printf.sprintf "CSR %s <- 0x%Lx " r.csrw r.wrval
+
+(* mem reads
+ mem[V:0x0000000080001000, P:0x0000000080001000] -> 0x0000000000000000
+ *)
+
+(* exclusion list, to avoid comparing reads to mmio htif port by spike *)
+let mem_addr_excludes = [ 0x80001000L ]
+let parse_mem_read l =
+ try Scanf.sscanf l " mem[V:0x%Lx, P:0x%Lx] -> 0x%Lx"
+ (fun va pa v ->
+ if List.mem va mem_addr_excludes || List.mem pa mem_addr_excludes
+ then L_none
+ else L_mem_read { vaddr = arch_val va; paddr = arch_val pa; mval = arch_val v })
+ with
+ | Scanf.Scan_failure _ -> L_none
+ | End_of_file -> L_none
+
+let sprint_mem_read r =
+ Printf.sprintf "mem[V:0x%Lx, P:0x%Lx] -> 0x%Lx" r.vaddr r.paddr r.mval
+
+(* mem writes
+ mem[V:0x0000000080001000, P:0x0000000080001000] <- 0x0000000000000000
+ *)
+
+let parse_mem_write l =
+ try Scanf.sscanf l " mem[V:0x%Lx, P:0x%Lx] <- 0x%Lx"
+ (fun va pa v ->
+ L_mem_write { vaddr = arch_val va; paddr = arch_val pa; mval = arch_val v })
+ with
+ | Scanf.Scan_failure _ -> L_none
+ | End_of_file -> L_none
+
+let sprint_mem_write r =
+ Printf.sprintf "mem[V:0x%Lx, P:0x%Lx] -> 0x%Lx" r.vaddr r.paddr r.mval
(* reg writes
x16 <- 0x0000000000000000
@@ -81,7 +135,7 @@ let sprint_csr_write r =
let parse_reg_write l =
try Scanf.sscanf l " x%u <- 0x%Lx"
- (fun reg rval -> L_reg_write { reg; rval })
+ (fun reg rval -> L_reg_write { reg; rval = arch_val rval })
with
| Scanf.Scan_failure _ -> L_none
| End_of_file -> L_none
@@ -115,7 +169,7 @@ let parse_spike_inst l =
try Scanf.sscanf l " [%u] core 0 [%c]: 0x%Lx (0x%lx) %s"
(fun count priv pc inst _ ->
inst_count := count;
- L_inst { count; priv; pc; inst })
+ L_inst { count; priv; pc = arch_val pc; inst })
with
| Scanf.Scan_failure _ -> L_none
| End_of_file -> L_none
@@ -209,6 +263,8 @@ let sprint_line = function
| L_reg_write r -> Printf.sprintf "<%d> %s" !inst_count (sprint_reg_write r)
| L_csr_read r -> Printf.sprintf "<%d> %s" !inst_count (sprint_csr_read r)
| L_csr_write r -> Printf.sprintf "<%d> %s" !inst_count (sprint_csr_write r)
+ | L_mem_read m -> Printf.sprintf "<%d> %s" !inst_count (sprint_mem_read m)
+ | L_mem_write m -> Printf.sprintf "<%d> %s" !inst_count (sprint_mem_write m)
| L_tick t -> Printf.sprintf "<%d> %s" !inst_count (sprint_tick t)
| L_htif t -> Printf.sprintf "<%d> %s" !inst_count (sprint_htif t)
| L_ld_res r -> Printf.sprintf "<%d> %s" !inst_count (sprint_ldres r)
@@ -281,6 +337,9 @@ let options =
Arg.align ([( "-z",
Arg.Set uncompress,
" uncompress trace files");
+ ( "-rv32",
+ Arg.Unit (fun f -> sail_arch := RV32),
+ " sail architecture");
( "-k",
Arg.String (fun f -> spike_log := Some f),
" spike trace log");
diff --git a/os-boot/README.md b/os-boot/README.md
new file mode 100644
index 0000000..7077b4a
--- /dev/null
+++ b/os-boot/README.md
@@ -0,0 +1,90 @@
+Booting OS images
+=================
+
+The Sail model implements a very simple platform based on the one
+implemented by the Spike reference simulator. It implements a console
+output port similar to Spike's HTIF (host-target interface) mechanism,
+and an interrupt controller based on Spike's CLINT (core-local
+interrupt controller). Console input is not currently supported.
+
+Booting Linux with the C backend
+--------------------------------
+
+The C model needs an ELF-version of the BBL (Berkeley-Boot-Loader)
+that contains the Linux kernel as an embedded payload. It also needs
+a DTB (device-tree blob) file describing the platform (say in the file
+`spike.dtb`). Once those are available (see below for suggestions),
+the model should be run as:
+
+```
+$ ./c_emulator/riscv_sim_<arch> -t console.log -b spike.dtb bbl > execution-trace.log 2>&1 &
+$ tail -f console.log
+```
+The `console.log` file contains the console boot messages. For maximum
+performance and benchmarking a model without any execution tracing is
+available on the optimize branch (`git checkout optimize`) of this
+repository. This currently requires the latest Sail built from source.
+
+Booting Linux with the OCaml backend
+------------------------------------
+
+The OCaml model only needs the ELF-version of the BBL, since it can generate its
+own DTB.
+```
+$ ./ocaml_emulator/riscv_ocaml_sim_<arch> bbl > execution-trace.log 2> console.log
+```
+
+Caveats for OS boot
+-------------------
+
+- Some OS toolchains generate obsolete LR/SC instructions with now
+ illegal combinations of `.aq` and `.rl` flags. You can work-around
+ this by changing `riscv_mem.sail` to accept these flags.
+
+- One needs to manually ensure that the DTB used for the C model
+ accurately describes the physical memory map implemented in the C
+ platform. This will not be needed once the C model can generate its
+ own DTB.
+
+Sample OS images
+----------------
+
+This directory contains some sample OS images and support files built
+for the basic platform implemented by the model. They were built with
+toolchains that emitted illegal instructions, and require the model to
+be patched to boot them:
+
+```
+patch -p1 < os-boot/os-boot-patch.diff
+```
+
+The device-tree for the 64-bit Sail model is described in `rv64-64mb.dts`. This file
+can be generated using:
+```
+./ocaml_emulator/riscv_ocaml_sim_RV64 -dump-dts > os-boot/rv64-64mb.dts
+```
+
+The device-tree binary for OS boots can be compiled from that source file:
+```
+dtc < os-boot/rv64-64mb.dts > os-boot/rv64-64mb.dtb
+```
+
+The 64-bit Linux image can then be booted as:
+```
+./c_emulator/riscv_sim_RV64 -b os-boot/rv64-64mb.dtb -t /tmp/console.log os-boot/linux-rv64-64mb.bbl > >(gzip -c - > /tmp/exec-trace.log.gz) 2>&1
+tail -f /tmp/console.log
+```
+
+The 64-bit FreeBSD image requires hardware PTE update support (`-d`):
+```
+./c_emulator/riscv_sim_RV64 -d -b os-boot/rv64-64mb.dtb -t /tmp/console.log os-boot/freebsd-rv64.bbl > >(gzip -c - > /tmp/exec-trace.log.gz) 2>&1
+```
+
+The 64-bit seL4 image runs its test-suite and requires more memory (`-z`):
+```
+dtc < os-boot/rv64-2gb.dts > os-boot/rv64-2gb.dtb
+./c_emulator/riscv_sim_RV64 -z 2048 -b os-boot/rv64-2gb.dtb -t /tmp/console.log os-boot/sel4-rv64.bbl > >(gzip -c - > /tmp/exec-trace.log.gz) 2>&1
+```
+
+Note that the consistency of the `-z` argument and the contents of the
+DTB have to be ensured manually for now.
diff --git a/os-boot/freebsd-rv64.bbl b/os-boot/freebsd-rv64.bbl
new file mode 100644
index 0000000..fc261c9
--- /dev/null
+++ b/os-boot/freebsd-rv64.bbl
Binary files differ
diff --git a/os-boot/linux-rv64-64mb.bbl b/os-boot/linux-rv64-64mb.bbl
new file mode 100644
index 0000000..fe01cda
--- /dev/null
+++ b/os-boot/linux-rv64-64mb.bbl
Binary files differ
diff --git a/os-boot/os-boot-patch.diff b/os-boot/os-boot-patch.diff
new file mode 100644
index 0000000..03d0c30
--- /dev/null
+++ b/os-boot/os-boot-patch.diff
@@ -0,0 +1,42 @@
+diff --git a/model/prelude_mem.sail b/model/prelude_mem.sail
+index 8e483f8..8c68192 100644
+--- a/model/prelude_mem.sail
++++ b/model/prelude_mem.sail
+@@ -29,8 +29,8 @@ function __RISCV_write (addr, width, data, aq, rl, con) =
+ (false, true, true) => __WriteRAM_conditional_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (true, true, false) => __WriteRAM_strong_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+ (true, true, true) => __WriteRAM_conditional_strong_release(sizeof(xlen), width, EXTZ(0x0), addr, data),
+- (true, false, false) => false,
+- (true, false, true) => false
++ (true, false, false) => __WriteRAM(sizeof(xlen), width, EXTZ(0x0), addr, data),//false
++ (true, false, true) => __WriteRAM(sizeof(xlen), width, EXTZ(0x0), addr, data) //false
+ }
+
+ val __TraceMemoryWrite : forall 'n 'm.
+diff --git a/model/riscv_mem.sail b/model/riscv_mem.sail
+index 3549e80..1d77e6b 100644
+--- a/model/riscv_mem.sail
++++ b/model/riscv_mem.sail
+@@ -88,9 +88,9 @@ function mem_write_ea (addr, width, aq, rl, con) = {
+ (false, true, false) => MemValue(MEMea_release(addr, width)),
+ (false, false, true) => MemValue(MEMea_conditional(addr, width)),
+ (false, true , true) => MemValue(MEMea_conditional_release(addr, width)),
+- (true, false, false) => throw(Error_not_implemented("store.aq")),
++ (true, false, false) => MemValue(MEMea(addr, width)),//throw(Error_not_implemented("store.aq")),
+ (true, true, false) => MemValue(MEMea_strong_release(addr, width)),
+- (true, false, true) => throw(Error_not_implemented("sc.aq")),
++ (true, false, true) => MemValue(MEMea(addr, width)),//throw(Error_not_implemented("sc.aq")),
+ (true, true , true) => MemValue(MEMea_conditional_strong_release(addr, width))
+ }
+ }
+@@ -133,8 +133,8 @@ function mem_write_value (addr, width, value, aq, rl, con) = {
+ if (rl | con) & (~ (is_aligned_addr(addr, width)))
+ then MemException(E_SAMO_Addr_Align)
+ else match (aq, rl, con) {
+- (true, false, false) => throw(Error_not_implemented("store.aq")),
+- (true, false, true) => throw(Error_not_implemented("sc.aq")),
++ (true, false, false) => checked_mem_write(addr, width, value, aq, rl, con),//throw(Error_not_implemented("store.aq")),
++ (true, false, true) => checked_mem_write(addr, width, value, aq, rl, con),//throw(Error_not_implemented("sc.aq")),
+ (_, _, _) => checked_mem_write(addr, width, value, aq, rl, con)
+ }
+ }
diff --git a/os-boot/rv64-2gb.dts b/os-boot/rv64-2gb.dts
new file mode 100644
index 0000000..4cbb2d4
--- /dev/null
+++ b/os-boot/rv64-2gb.dts
@@ -0,0 +1,45 @@
+/dts-v1/;
+
+/ {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ compatible = "ucbbar,spike-bare-dev";
+ model = "ucbbar,spike-bare";
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ timebase-frequency = <10000000>;
+ CPU0: cpu@0 {
+ device_type = "cpu";
+ reg = <0>;
+ status = "okay";
+ compatible = "riscv";
+ riscv,isa = "rv64imac";
+ mmu-type = "riscv,sv39";
+ clock-frequency = <1000000000>;
+ CPU0_intc: interrupt-controller {
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ compatible = "riscv,cpu-intc";
+ };
+ };
+ };
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x0 0x80000000 0x0 0x80000000>;
+ };
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ compatible = "ucbbar,spike-bare-soc", "simple-bus";
+ ranges;
+ clint@2000000 {
+ compatible = "riscv,clint0";
+ interrupts-extended = <&CPU0_intc 3 &CPU0_intc 7 >;
+ reg = <0x0 0x2000000 0x0 0xc0000>;
+ };
+ };
+ htif {
+ compatible = "ucb,htif0";
+ };
+};
diff --git a/os-boot/rv64-64mb.dts b/os-boot/rv64-64mb.dts
new file mode 100644
index 0000000..84969e4
--- /dev/null
+++ b/os-boot/rv64-64mb.dts
@@ -0,0 +1,45 @@
+/dts-v1/;
+
+/ {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ compatible = "ucbbar,spike-bare-dev";
+ model = "ucbbar,spike-bare";
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ timebase-frequency = <10000000>;
+ CPU0: cpu@0 {
+ device_type = "cpu";
+ reg = <0>;
+ status = "okay";
+ compatible = "riscv";
+ riscv,isa = "rv64imac";
+ mmu-type = "riscv,sv39";
+ clock-frequency = <1000000000>;
+ CPU0_intc: interrupt-controller {
+ #interrupt-cells = <1>;
+ interrupt-controller;
+ compatible = "riscv,cpu-intc";
+ };
+ };
+ };
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x0 0x80000000 0x0 0x4000000>;
+ };
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ compatible = "ucbbar,spike-bare-soc", "simple-bus";
+ ranges;
+ clint@2000000 {
+ compatible = "riscv,clint0";
+ interrupts-extended = <&CPU0_intc 3 &CPU0_intc 7 >;
+ reg = <0x0 0x2000000 0x0 0xc0000>;
+ };
+ };
+ htif {
+ compatible = "ucb,htif0";
+ };
+};
diff --git a/os-boot/sel4-rv64.bbl b/os-boot/sel4-rv64.bbl
new file mode 100644
index 0000000..04735f1
--- /dev/null
+++ b/os-boot/sel4-rv64.bbl
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-breakpoint.dump b/test/riscv-tests/rv32mi-p-breakpoint.dump
new file mode 100644
index 0000000..cab05cc
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-breakpoint.dump
@@ -0,0 +1,207 @@
+
+rv32mi-p-breakpoint: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 210f0f13 addi t5,t5,528 # 80000230 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 00200193 li gp,2
+8000010c: 7a001073 csrw tselect,zero
+80000110: 7a0025f3 csrr a1,tselect
+80000114: 10b01863 bne zero,a1,80000224 <pass>
+80000118: 7a102573 csrr a0,tdata1
+8000011c: 01c55513 srli a0,a0,0x1c
+80000120: 00200593 li a1,2
+80000124: 10b51063 bne a0,a1,80000224 <pass>
+80000128: 00000617 auipc a2,0x0
+8000012c: 02060613 addi a2,a2,32 # 80000148 <reset_vector+0xfc>
+80000130: 7a261073 csrw tdata2,a2
+80000134: 04400513 li a0,68
+80000138: 7a151073 csrw tdata1,a0
+8000013c: 7a1025f3 csrr a1,tdata1
+80000140: 7ff5f593 andi a1,a1,2047
+80000144: 00b51863 bne a0,a1,80000154 <reset_vector+0x108>
+80000148: 0c000463 beqz zero,80000210 <fail>
+8000014c: 00300193 li gp,3
+80000150: 00062503 lw a0,0(a2)
+80000154: 00400193 li gp,4
+80000158: 04100513 li a0,65
+8000015c: 7a151073 csrw tdata1,a0
+80000160: 7a1025f3 csrr a1,tdata1
+80000164: 7ff5f593 andi a1,a1,2047
+80000168: 02b51063 bne a0,a1,80000188 <reset_vector+0x13c>
+8000016c: 00002617 auipc a2,0x2
+80000170: e9460613 addi a2,a2,-364 # 80002000 <begin_signature>
+80000174: 7a261073 csrw tdata2,a2
+80000178: 00062603 lw a2,0(a2)
+8000017c: 08060a63 beqz a2,80000210 <fail>
+80000180: 00500193 li gp,5
+80000184: 00062023 sw zero,0(a2)
+80000188: 00600193 li gp,6
+8000018c: 04200513 li a0,66
+80000190: 7a151073 csrw tdata1,a0
+80000194: 7a1025f3 csrr a1,tdata1
+80000198: 7ff5f593 andi a1,a1,2047
+8000019c: 06b51863 bne a0,a1,8000020c <reset_vector+0x1c0>
+800001a0: 00c62023 sw a2,0(a2)
+800001a4: 00700193 li gp,7
+800001a8: 00062603 lw a2,0(a2)
+800001ac: 06061263 bnez a2,80000210 <fail>
+800001b0: 00100513 li a0,1
+800001b4: 7a051073 csrw tselect,a0
+800001b8: 7a0025f3 csrr a1,tselect
+800001bc: 06b51463 bne a0,a1,80000224 <pass>
+800001c0: 7a102573 csrr a0,tdata1
+800001c4: 01c55513 srli a0,a0,0x1c
+800001c8: 00200593 li a1,2
+800001cc: 04b51c63 bne a0,a1,80000224 <pass>
+800001d0: 04100513 li a0,65
+800001d4: 7a151073 csrw tdata1,a0
+800001d8: 00002697 auipc a3,0x2
+800001dc: e2c68693 addi a3,a3,-468 # 80002004 <data2>
+800001e0: 7a269073 csrw tdata2,a3
+800001e4: 00800193 li gp,8
+800001e8: 0006a683 lw a3,0(a3)
+800001ec: 02068263 beqz a3,80000210 <fail>
+800001f0: 00a00193 li gp,10
+800001f4: 00002617 auipc a2,0x2
+800001f8: e0c60613 addi a2,a2,-500 # 80002000 <begin_signature>
+800001fc: 00c62023 sw a2,0(a2)
+80000200: 00b00193 li gp,11
+80000204: 00062603 lw a2,0(a2)
+80000208: 00061463 bnez a2,80000210 <fail>
+8000020c: 00301c63 bne zero,gp,80000224 <pass>
+
+80000210 <fail>:
+80000210: 0ff0000f fence
+80000214: 00018063 beqz gp,80000214 <fail+0x4>
+80000218: 00119193 slli gp,gp,0x1
+8000021c: 0011e193 ori gp,gp,1
+80000220: 00000073 ecall
+
+80000224 <pass>:
+80000224: 0ff0000f fence
+80000228: 00100193 li gp,1
+8000022c: 00000073 ecall
+
+80000230 <mtvec_handler>:
+80000230: 0011f293 andi t0,gp,1
+80000234: fc029ee3 bnez t0,80000210 <fail>
+80000238: 00300293 li t0,3
+8000023c: 34202373 csrr t1,mcause
+80000240: fc6298e3 bne t0,t1,80000210 <fail>
+80000244: 341022f3 csrr t0,mepc
+80000248: 00428293 addi t0,t0,4
+8000024c: 34129073 csrw mepc,t0
+80000250: 30200073 mret
+80000254: c0001073 unimp
+80000258: 0000 unimp
+8000025a: 0000 unimp
+8000025c: 0000 unimp
+8000025e: 0000 unimp
+80000260: 0000 unimp
+80000262: 0000 unimp
+80000264: 0000 unimp
+80000266: 0000 unimp
+80000268: 0000 unimp
+8000026a: 0000 unimp
+8000026c: 0000 unimp
+8000026e: 0000 unimp
+80000270: 0000 unimp
+80000272: 0000 unimp
+80000274: 0000 unimp
+80000276: 0000 unimp
+80000278: 0000 unimp
+8000027a: 0000 unimp
+8000027c: 0000 unimp
+8000027e: 0000 unimp
+80000280: 0000 unimp
+80000282: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 0000 unimp
+80002002: 0000 unimp
+
+80002004 <data2>:
+80002004: 0000 unimp
+80002006: 0000 unimp
+80002008: 0000 unimp
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-breakpoint.elf b/test/riscv-tests/rv32mi-p-breakpoint.elf
new file mode 100644
index 0000000..b054737
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-breakpoint.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-csr.dump b/test/riscv-tests/rv32mi-p-csr.dump
new file mode 100644
index 0000000..fad851e
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-csr.dump
@@ -0,0 +1,241 @@
+
+rv32mi-p-csr: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 248f0f13 addi t5,t5,584 # 80000268 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 3401d073 csrwi mscratch,3
+
+8000010c <test_2>:
+8000010c: 34002573 csrr a0,mscratch
+80000110: 00300e93 li t4,3
+80000114: 00200193 li gp,2
+80000118: 13d51863 bne a0,t4,80000248 <fail>
+
+8000011c <test_3>:
+8000011c: 3400f5f3 csrrci a1,mscratch,1
+80000120: 00300e93 li t4,3
+80000124: 00300193 li gp,3
+80000128: 13d59063 bne a1,t4,80000248 <fail>
+
+8000012c <test_4>:
+8000012c: 34026673 csrrsi a2,mscratch,4
+80000130: 00200e93 li t4,2
+80000134: 00400193 li gp,4
+80000138: 11d61863 bne a2,t4,80000248 <fail>
+
+8000013c <test_5>:
+8000013c: 340156f3 csrrwi a3,mscratch,2
+80000140: 00600e93 li t4,6
+80000144: 00500193 li gp,5
+80000148: 11d69063 bne a3,t4,80000248 <fail>
+
+8000014c <test_6>:
+8000014c: 0bad2537 lui a0,0xbad2
+80000150: dea50513 addi a0,a0,-534 # bad1dea <_start-0x7452e216>
+80000154: 340515f3 csrrw a1,mscratch,a0
+80000158: 00200e93 li t4,2
+8000015c: 00600193 li gp,6
+80000160: 0fd59463 bne a1,t4,80000248 <fail>
+
+80000164 <test_7>:
+80000164: 00002537 lui a0,0x2
+80000168: dea50513 addi a0,a0,-534 # 1dea <_start-0x7fffe216>
+8000016c: 34053573 csrrc a0,mscratch,a0
+80000170: 0bad2eb7 lui t4,0xbad2
+80000174: deae8e93 addi t4,t4,-534 # bad1dea <_start-0x7452e216>
+80000178: 00700193 li gp,7
+8000017c: 0dd51663 bne a0,t4,80000248 <fail>
+
+80000180 <test_8>:
+80000180: 0000c537 lui a0,0xc
+80000184: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111>
+80000188: 34052573 csrrs a0,mscratch,a0
+8000018c: 0bad0eb7 lui t4,0xbad0
+80000190: 00800193 li gp,8
+80000194: 0bd51a63 bne a0,t4,80000248 <fail>
+
+80000198 <test_9>:
+80000198: 34002573 csrr a0,mscratch
+8000019c: 0badceb7 lui t4,0xbadc
+800001a0: eefe8e93 addi t4,t4,-273 # badbeef <_start-0x74524111>
+800001a4: 00900193 li gp,9
+800001a8: 0bd51063 bne a0,t4,80000248 <fail>
+800001ac: 30102573 csrr a0,misa
+800001b0: 02057513 andi a0,a0,32
+800001b4: 02050863 beqz a0,800001e4 <test_10+0x14>
+800001b8: 000065b7 lui a1,0x6
+800001bc: 3005a073 csrs mstatus,a1
+800001c0: f0000053 fmv.w.x ft0,zero
+800001c4: 3005b073 csrc mstatus,a1
+800001c8: 00002597 auipc a1,0x2
+800001cc: e3858593 addi a1,a1,-456 # 80002000 <begin_signature>
+
+800001d0 <test_10>:
+800001d0: 0005a027 fsw ft0,0(a1)
+800001d4: 0005a503 lw a0,0(a1)
+800001d8: 00100e93 li t4,1
+800001dc: 00a00193 li gp,10
+800001e0: 07d51463 bne a0,t4,80000248 <fail>
+800001e4: 30102573 csrr a0,misa
+800001e8: 01455513 srli a0,a0,0x14
+800001ec: 00157513 andi a0,a0,1
+800001f0: 04050463 beqz a0,80000238 <finish>
+800001f4: 000022b7 lui t0,0x2
+800001f8: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800>
+800001fc: 3002b073 csrc mstatus,t0
+80000200: 00000297 auipc t0,0x0
+80000204: 01028293 addi t0,t0,16 # 80000210 <test_11>
+80000208: 34129073 csrw mepc,t0
+8000020c: 30200073 mret
+
+80000210 <test_11>:
+80000210: 0ff00513 li a0,255
+80000214: c0001573 csrrw a0,cycle,zero
+80000218: 0ff00e93 li t4,255
+8000021c: 00b00193 li gp,11
+80000220: 03d51463 bne a0,t4,80000248 <fail>
+
+80000224 <test_12>:
+80000224: 0ff00513 li a0,255
+80000228: 30002573 csrr a0,mstatus
+8000022c: 0ff00e93 li t4,255
+80000230: 00c00193 li gp,12
+80000234: 01d51a63 bne a0,t4,80000248 <fail>
+
+80000238 <finish>:
+80000238: 0ff0000f fence
+8000023c: 00100193 li gp,1
+80000240: 00000073 ecall
+80000244: 00301c63 bne zero,gp,8000025c <pass>
+
+80000248 <fail>:
+80000248: 0ff0000f fence
+8000024c: 00018063 beqz gp,8000024c <fail+0x4>
+80000250: 00119193 slli gp,gp,0x1
+80000254: 0011e193 ori gp,gp,1
+80000258: 00000073 ecall
+
+8000025c <pass>:
+8000025c: 0ff0000f fence
+80000260: 00100193 li gp,1
+80000264: 00000073 ecall
+
+80000268 <mtvec_handler>:
+80000268: 00900293 li t0,9
+8000026c: 0051e663 bltu gp,t0,80000278 <mtvec_handler+0x10>
+80000270: 00b00293 li t0,11
+80000274: 0032fe63 bleu gp,t0,80000290 <privileged>
+80000278: 342022f3 csrr t0,mcause
+8000027c: 00800313 li t1,8
+80000280: fc6294e3 bne t0,t1,80000248 <fail>
+80000284: 0ff0000f fence
+80000288: 00100193 li gp,1
+8000028c: 00000073 ecall
+
+80000290 <privileged>:
+80000290: 342022f3 csrr t0,mcause
+80000294: 00200313 li t1,2
+80000298: fa6298e3 bne t0,t1,80000248 <fail>
+8000029c: 341022f3 csrr t0,mepc
+800002a0: 00428293 addi t0,t0,4
+800002a4: 34129073 csrw mepc,t0
+800002a8: 30200073 mret
+800002ac: c0001073 unimp
+800002b0: 0000 unimp
+800002b2: 0000 unimp
+800002b4: 0000 unimp
+800002b6: 0000 unimp
+800002b8: 0000 unimp
+800002ba: 0000 unimp
+800002bc: 0000 unimp
+800002be: 0000 unimp
+800002c0: 0000 unimp
+800002c2: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 0001 nop
+80002002: 0000 unimp
+80002004: 0000 unimp
+80002006: 0000 unimp
+80002008: 0000 unimp
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-csr.elf b/test/riscv-tests/rv32mi-p-csr.elf
new file mode 100644
index 0000000..bdd015b
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-csr.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-illegal.dump b/test/riscv-tests/rv32mi-p-illegal.dump
new file mode 100644
index 0000000..91d8671
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-illegal.dump
@@ -0,0 +1,382 @@
+
+rv32mi-p-illegal: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 2e0f0f13 addi t5,t5,736 # 80000300 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 00200193 li gp,2
+
+8000010c <bad2>:
+8000010c: 0000 unimp
+8000010e: 0000 unimp
+80000110: 0f40006f j 80000204 <fail>
+80000114: 000022b7 lui t0,0x2
+80000118: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800>
+8000011c: 3002b073 csrc mstatus,t0
+80000120: 00001337 lui t1,0x1
+80000124: 80030313 addi t1,t1,-2048 # 800 <_start-0x7ffff800>
+80000128: 30032073 csrs mstatus,t1
+8000012c: 300023f3 csrr t2,mstatus
+80000130: 0053f3b3 and t2,t2,t0
+80000134: 0e731263 bne t1,t2,80000218 <pass>
+
+80000138 <test_vectored_interrupts>:
+80000138: 34415073 csrwi mip,2
+8000013c: 30415073 csrwi mie,2
+80000140: 00000297 auipc t0,0x0
+80000144: 1c128293 addi t0,t0,449 # 80000301 <mtvec_handler+0x1>
+80000148: 30529473 csrrw s0,mtvec,t0
+8000014c: 305022f3 csrr t0,mtvec
+80000150: 0012f293 andi t0,t0,1
+80000154: 00028663 beqz t0,80000160 <msip>
+80000158: 30046073 csrsi mstatus,8
+8000015c: 0000006f j 8000015c <test_vectored_interrupts+0x24>
+
+80000160 <msip>:
+80000160: 30541073 csrw mtvec,s0
+80000164: 30315073 csrwi mideleg,2
+80000168: 00000297 auipc t0,0x0
+8000016c: 02828293 addi t0,t0,40 # 80000190 <msip+0x30>
+80000170: 34129073 csrw mepc,t0
+80000174: 000022b7 lui t0,0x2
+80000178: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800>
+8000017c: 3002b073 csrc mstatus,t0
+80000180: 00001337 lui t1,0x1
+80000184: 80030313 addi t1,t1,-2048 # 800 <_start-0x7ffff800>
+80000188: 30032073 csrs mstatus,t1
+8000018c: 30200073 mret
+80000190: 10500073 wfi
+
+80000194 <bad3>:
+80000194: 0000 unimp
+80000196: 0000 unimp
+80000198: 06c0006f j 80000204 <fail>
+
+8000019c <bad4>:
+8000019c: 10500073 wfi
+800001a0: 0640006f j 80000204 <fail>
+800001a4: 12000073 sfence.vma
+800001a8: 180022f3 csrr t0,satp
+
+800001ac <bad5>:
+800001ac: 0000 unimp
+800001ae: 0000 unimp
+800001b0: 0540006f j 80000204 <fail>
+
+800001b4 <bad6>:
+800001b4: 12000073 sfence.vma
+800001b8: 04c0006f j 80000204 <fail>
+
+800001bc <bad7>:
+800001bc: 180022f3 csrr t0,satp
+800001c0: 0440006f j 80000204 <fail>
+800001c4: 00000297 auipc t0,0x0
+800001c8: 02028293 addi t0,t0,32 # 800001e4 <bad8>
+800001cc: 14129073 csrw sepc,t0
+800001d0: 10000293 li t0,256
+800001d4: 1002a073 csrs sstatus,t0
+800001d8: 02000293 li t0,32
+800001dc: 1002b073 csrc sstatus,t0
+800001e0: 10200073 sret
+
+800001e4 <bad8>:
+800001e4: 0000 unimp
+800001e6: 0000 unimp
+800001e8: 01c0006f j 80000204 <fail>
+800001ec: 00000297 auipc t0,0x0
+800001f0: 01028293 addi t0,t0,16 # 800001fc <bad9+0x4>
+800001f4: 14129073 csrw sepc,t0
+
+800001f8 <bad9>:
+800001f8: 10200073 sret
+800001fc: 0080006f j 80000204 <fail>
+80000200: 00301c63 bne zero,gp,80000218 <pass>
+
+80000204 <fail>:
+80000204: 0ff0000f fence
+80000208: 00018063 beqz gp,80000208 <fail+0x4>
+8000020c: 00119193 slli gp,gp,0x1
+80000210: 0011e193 ori gp,gp,1
+80000214: 00000073 ecall
+
+80000218 <pass>:
+80000218: 0ff0000f fence
+8000021c: 00100193 li gp,1
+80000220: 00000073 ecall
+80000224: 00000013 nop
+80000228: 00000013 nop
+8000022c: 00000013 nop
+80000230: 00000013 nop
+80000234: 00000013 nop
+80000238: 00000013 nop
+8000023c: 00000013 nop
+80000240: 00000013 nop
+80000244: 00000013 nop
+80000248: 00000013 nop
+8000024c: 00000013 nop
+80000250: 00000013 nop
+80000254: 00000013 nop
+80000258: 00000013 nop
+8000025c: 00000013 nop
+80000260: 00000013 nop
+80000264: 00000013 nop
+80000268: 00000013 nop
+8000026c: 00000013 nop
+80000270: 00000013 nop
+80000274: 00000013 nop
+80000278: 00000013 nop
+8000027c: 00000013 nop
+80000280: 00000013 nop
+80000284: 00000013 nop
+80000288: 00000013 nop
+8000028c: 00000013 nop
+80000290: 00000013 nop
+80000294: 00000013 nop
+80000298: 00000013 nop
+8000029c: 00000013 nop
+800002a0: 00000013 nop
+800002a4: 00000013 nop
+800002a8: 00000013 nop
+800002ac: 00000013 nop
+800002b0: 00000013 nop
+800002b4: 00000013 nop
+800002b8: 00000013 nop
+800002bc: 00000013 nop
+800002c0: 00000013 nop
+800002c4: 00000013 nop
+800002c8: 00000013 nop
+800002cc: 00000013 nop
+800002d0: 00000013 nop
+800002d4: 00000013 nop
+800002d8: 00000013 nop
+800002dc: 00000013 nop
+800002e0: 00000013 nop
+800002e4: 00000013 nop
+800002e8: 00000013 nop
+800002ec: 00000013 nop
+800002f0: 00000013 nop
+800002f4: 00000013 nop
+800002f8: 00000013 nop
+800002fc: 00000013 nop
+
+80000300 <mtvec_handler>:
+80000300: 0400006f j 80000340 <synchronous_exception>
+80000304: e5dff06f j 80000160 <msip>
+80000308: efdff06f j 80000204 <fail>
+8000030c: ef9ff06f j 80000204 <fail>
+80000310: ef5ff06f j 80000204 <fail>
+80000314: ef1ff06f j 80000204 <fail>
+80000318: eedff06f j 80000204 <fail>
+8000031c: ee9ff06f j 80000204 <fail>
+80000320: ee5ff06f j 80000204 <fail>
+80000324: ee1ff06f j 80000204 <fail>
+80000328: eddff06f j 80000204 <fail>
+8000032c: ed9ff06f j 80000204 <fail>
+80000330: ed5ff06f j 80000204 <fail>
+80000334: ed1ff06f j 80000204 <fail>
+80000338: ecdff06f j 80000204 <fail>
+8000033c: ec9ff06f j 80000204 <fail>
+
+80000340 <synchronous_exception>:
+80000340: 00200313 li t1,2
+80000344: 342022f3 csrr t0,mcause
+80000348: ea629ee3 bne t0,t1,80000204 <fail>
+8000034c: 341022f3 csrr t0,mepc
+80000350: 343023f3 csrr t2,mtval
+80000354: 00038e63 beqz t2,80000370 <synchronous_exception+0x30>
+80000358: 0002d303 lhu t1,0(t0)
+8000035c: 0063c3b3 xor t2,t2,t1
+80000360: 0022d303 lhu t1,2(t0)
+80000364: 01031313 slli t1,t1,0x10
+80000368: 0063c3b3 xor t2,t2,t1
+8000036c: e8039ce3 bnez t2,80000204 <fail>
+80000370: 00000317 auipc t1,0x0
+80000374: d9c30313 addi t1,t1,-612 # 8000010c <bad2>
+80000378: 04628e63 beq t0,t1,800003d4 <synchronous_exception+0x94>
+8000037c: 00000317 auipc t1,0x0
+80000380: e1830313 addi t1,t1,-488 # 80000194 <bad3>
+80000384: 04628e63 beq t0,t1,800003e0 <synchronous_exception+0xa0>
+80000388: 00000317 auipc t1,0x0
+8000038c: e1430313 addi t1,t1,-492 # 8000019c <bad4>
+80000390: 04628263 beq t0,t1,800003d4 <synchronous_exception+0x94>
+80000394: 00000317 auipc t1,0x0
+80000398: e1830313 addi t1,t1,-488 # 800001ac <bad5>
+8000039c: 04628863 beq t0,t1,800003ec <synchronous_exception+0xac>
+800003a0: 00000317 auipc t1,0x0
+800003a4: e1430313 addi t1,t1,-492 # 800001b4 <bad6>
+800003a8: 02628663 beq t0,t1,800003d4 <synchronous_exception+0x94>
+800003ac: 00000317 auipc t1,0x0
+800003b0: e1030313 addi t1,t1,-496 # 800001bc <bad7>
+800003b4: 02628063 beq t0,t1,800003d4 <synchronous_exception+0x94>
+800003b8: 00000317 auipc t1,0x0
+800003bc: e2c30313 addi t1,t1,-468 # 800001e4 <bad8>
+800003c0: 02628c63 beq t0,t1,800003f8 <synchronous_exception+0xb8>
+800003c4: 00000317 auipc t1,0x0
+800003c8: e3430313 addi t1,t1,-460 # 800001f8 <bad9>
+800003cc: 02628c63 beq t0,t1,80000404 <synchronous_exception+0xc4>
+800003d0: e35ff06f j 80000204 <fail>
+800003d4: 00828293 addi t0,t0,8
+800003d8: 34129073 csrw mepc,t0
+800003dc: 30200073 mret
+800003e0: 00200337 lui t1,0x200
+800003e4: 30032073 csrs mstatus,t1
+800003e8: fedff06f j 800003d4 <synchronous_exception+0x94>
+800003ec: 00100337 lui t1,0x100
+800003f0: 30032073 csrs mstatus,t1
+800003f4: fe1ff06f j 800003d4 <synchronous_exception+0x94>
+800003f8: 00400337 lui t1,0x400
+800003fc: 30032073 csrs mstatus,t1
+80000400: fd5ff06f j 800003d4 <synchronous_exception+0x94>
+80000404: fd1ff06f j 800003d4 <synchronous_exception+0x94>
+80000408: c0001073 unimp
+8000040c: 0000 unimp
+8000040e: 0000 unimp
+80000410: 0000 unimp
+80000412: 0000 unimp
+80000414: 0000 unimp
+80000416: 0000 unimp
+80000418: 0000 unimp
+8000041a: 0000 unimp
+8000041c: 0000 unimp
+8000041e: 0000 unimp
+80000420: 0000 unimp
+80000422: 0000 unimp
+80000424: 0000 unimp
+80000426: 0000 unimp
+80000428: 0000 unimp
+8000042a: 0000 unimp
+8000042c: 0000 unimp
+8000042e: 0000 unimp
+80000430: 0000 unimp
+80000432: 0000 unimp
+80000434: 0000 unimp
+80000436: 0000 unimp
+80000438: 0000 unimp
+8000043a: 0000 unimp
+8000043c: 0000 unimp
+8000043e: 0000 unimp
+80000440: 0000 unimp
+80000442: 0000 unimp
+80000444: 0000 unimp
+80000446: 0000 unimp
+80000448: 0000 unimp
+8000044a: 0000 unimp
+8000044c: 0000 unimp
+8000044e: 0000 unimp
+80000450: 0000 unimp
+80000452: 0000 unimp
+80000454: 0000 unimp
+80000456: 0000 unimp
+80000458: 0000 unimp
+8000045a: 0000 unimp
+8000045c: 0000 unimp
+8000045e: 0000 unimp
+80000460: 0000 unimp
+80000462: 0000 unimp
+80000464: 0000 unimp
+80000466: 0000 unimp
+80000468: 0000 unimp
+8000046a: 0000 unimp
+8000046c: 0000 unimp
+8000046e: 0000 unimp
+80000470: 0000 unimp
+80000472: 0000 unimp
+80000474: 0000 unimp
+80000476: 0000 unimp
+80000478: 0000 unimp
+8000047a: 0000 unimp
+8000047c: 0000 unimp
+8000047e: 0000 unimp
+80000480: 0000 unimp
+80000482: 0000 unimp
+80000484: 0000 unimp
+80000486: 0000 unimp
+80000488: 0000 unimp
+8000048a: 0000 unimp
+8000048c: 0000 unimp
+8000048e: 0000 unimp
+80000490: 0000 unimp
+80000492: 0000 unimp
+80000494: 0000 unimp
+80000496: 0000 unimp
+80000498: 0000 unimp
+8000049a: 0000 unimp
+8000049c: 0000 unimp
+8000049e: 0000 unimp
+800004a0: 0000 unimp
+800004a2: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-illegal.elf b/test/riscv-tests/rv32mi-p-illegal.elf
new file mode 100644
index 0000000..c4175e8
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-illegal.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-ma_addr.dump b/test/riscv-tests/rv32mi-p-ma_addr.dump
new file mode 100644
index 0000000..ed02740
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-ma_addr.dump
@@ -0,0 +1,363 @@
+
+rv32mi-p-ma_addr: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 290f0f13 addi t5,t5,656 # 800002b0 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 00002417 auipc s0,0x2
+8000010c: ef840413 addi s0,s0,-264 # 80002000 <begin_signature>
+80000110: 00400493 li s1,4
+80000114: 00200193 li gp,2
+80000118: 00000397 auipc t2,0x0
+8000011c: 01c38393 addi t2,t2,28 # 80000134 <reset_vector+0xe8>
+80000120: 00140313 addi t1,s0,1
+80000124: 00141303 lh t1,1(s0)
+80000128: ffffc3b7 lui t2,0xffffc
+8000012c: bcc38393 addi t2,t2,-1076 # ffffbbcc <_end+0x7fff9abc>
+80000130: 14731e63 bne t1,t2,8000028c <fail>
+80000134: 00300193 li gp,3
+80000138: 00000397 auipc t2,0x0
+8000013c: 01c38393 addi t2,t2,28 # 80000154 <reset_vector+0x108>
+80000140: 00140313 addi t1,s0,1
+80000144: 00145303 lhu t1,1(s0)
+80000148: 0000c3b7 lui t2,0xc
+8000014c: bcc38393 addi t2,t2,-1076 # bbcc <_start-0x7fff4434>
+80000150: 12731e63 bne t1,t2,8000028c <fail>
+80000154: 00400193 li gp,4
+80000158: 00000397 auipc t2,0x0
+8000015c: 01c38393 addi t2,t2,28 # 80000174 <reset_vector+0x128>
+80000160: 00140313 addi t1,s0,1
+80000164: 00142303 lw t1,1(s0)
+80000168: 99aac3b7 lui t2,0x99aac
+8000016c: bcc38393 addi t2,t2,-1076 # 99aabbcc <_end+0x19aa9abc>
+80000170: 10731e63 bne t1,t2,8000028c <fail>
+80000174: 00500193 li gp,5
+80000178: 00000397 auipc t2,0x0
+8000017c: 01c38393 addi t2,t2,28 # 80000194 <reset_vector+0x148>
+80000180: 00240313 addi t1,s0,2
+80000184: 00242303 lw t1,2(s0)
+80000188: 8899b3b7 lui t2,0x8899b
+8000018c: abb38393 addi t2,t2,-1349 # 8899aabb <_end+0x89989ab>
+80000190: 0e731e63 bne t1,t2,8000028c <fail>
+80000194: 00600193 li gp,6
+80000198: 00000397 auipc t2,0x0
+8000019c: 01c38393 addi t2,t2,28 # 800001b4 <reset_vector+0x168>
+800001a0: 00340313 addi t1,s0,3
+800001a4: 00342303 lw t1,3(s0)
+800001a8: 7788a3b7 lui t2,0x7788a
+800001ac: 9aa38393 addi t2,t2,-1622 # 778899aa <_start-0x8776656>
+800001b0: 0c731e63 bne t1,t2,8000028c <fail>
+800001b4: 00600493 li s1,6
+800001b8: 01600193 li gp,22
+800001bc: 00000397 auipc t2,0x0
+800001c0: 03038393 addi t2,t2,48 # 800001ec <reset_vector+0x1a0>
+800001c4: 00140313 addi t1,s0,1
+800001c8: 000410a3 sh zero,1(s0)
+800001cc: 00040303 lb t1,0(s0)
+800001d0: 0a030e63 beqz t1,8000028c <fail>
+800001d4: 00340303 lb t1,3(s0)
+800001d8: 0a030a63 beqz t1,8000028c <fail>
+800001dc: 00140303 lb t1,1(s0)
+800001e0: 0a031663 bnez t1,8000028c <fail>
+800001e4: 00240303 lb t1,2(s0)
+800001e8: 0a031263 bnez t1,8000028c <fail>
+800001ec: 01700193 li gp,23
+800001f0: 00000397 auipc t2,0x0
+800001f4: 03038393 addi t2,t2,48 # 80000220 <reset_vector+0x1d4>
+800001f8: 00540313 addi t1,s0,5
+800001fc: 000422a3 sw zero,5(s0)
+80000200: 00440303 lb t1,4(s0)
+80000204: 08030463 beqz t1,8000028c <fail>
+80000208: 00940303 lb t1,9(s0)
+8000020c: 08030063 beqz t1,8000028c <fail>
+80000210: 00540303 lb t1,5(s0)
+80000214: 06031c63 bnez t1,8000028c <fail>
+80000218: 00840303 lb t1,8(s0)
+8000021c: 06031863 bnez t1,8000028c <fail>
+80000220: 01800193 li gp,24
+80000224: 00000397 auipc t2,0x0
+80000228: 03038393 addi t2,t2,48 # 80000254 <reset_vector+0x208>
+8000022c: 00a40313 addi t1,s0,10
+80000230: 00042523 sw zero,10(s0)
+80000234: 00940303 lb t1,9(s0)
+80000238: 04030a63 beqz t1,8000028c <fail>
+8000023c: 00e40303 lb t1,14(s0)
+80000240: 04030663 beqz t1,8000028c <fail>
+80000244: 00a40303 lb t1,10(s0)
+80000248: 04031263 bnez t1,8000028c <fail>
+8000024c: 00d40303 lb t1,13(s0)
+80000250: 02031e63 bnez t1,8000028c <fail>
+80000254: 01900193 li gp,25
+80000258: 00000397 auipc t2,0x0
+8000025c: 03038393 addi t2,t2,48 # 80000288 <reset_vector+0x23c>
+80000260: 00f40313 addi t1,s0,15
+80000264: 000427a3 sw zero,15(s0)
+80000268: 00e40303 lb t1,14(s0)
+8000026c: 02030063 beqz t1,8000028c <fail>
+80000270: 01340303 lb t1,19(s0)
+80000274: 00030c63 beqz t1,8000028c <fail>
+80000278: 00f40303 lb t1,15(s0)
+8000027c: 00031863 bnez t1,8000028c <fail>
+80000280: 01240303 lb t1,18(s0)
+80000284: 00031463 bnez t1,8000028c <fail>
+80000288: 00301c63 bne zero,gp,800002a0 <pass>
+
+8000028c <fail>:
+8000028c: 0ff0000f fence
+80000290: 00018063 beqz gp,80000290 <fail+0x4>
+80000294: 00119193 slli gp,gp,0x1
+80000298: 0011e193 ori gp,gp,1
+8000029c: 00000073 ecall
+
+800002a0 <pass>:
+800002a0: 0ff0000f fence
+800002a4: 00100193 li gp,1
+800002a8: 00000073 ecall
+800002ac: 00000013 nop
+
+800002b0 <mtvec_handler>:
+800002b0: 342022f3 csrr t0,mcause
+800002b4: fc929ce3 bne t0,s1,8000028c <fail>
+800002b8: 343022f3 csrr t0,mtval
+800002bc: fc6298e3 bne t0,t1,8000028c <fail>
+800002c0: 00028283 lb t0,0(t0)
+800002c4: fc0284e3 beqz t0,8000028c <fail>
+800002c8: 34139073 csrw mepc,t2
+800002cc: 30200073 mret
+800002d0: c0001073 unimp
+800002d4: 0000 unimp
+800002d6: 0000 unimp
+800002d8: 0000 unimp
+800002da: 0000 unimp
+800002dc: 0000 unimp
+800002de: 0000 unimp
+800002e0: 0000 unimp
+800002e2: 0000 unimp
+800002e4: 0000 unimp
+800002e6: 0000 unimp
+800002e8: 0000 unimp
+800002ea: 0000 unimp
+800002ec: 0000 unimp
+800002ee: 0000 unimp
+800002f0: 0000 unimp
+800002f2: 0000 unimp
+800002f4: 0000 unimp
+800002f6: 0000 unimp
+800002f8: 0000 unimp
+800002fa: 0000 unimp
+800002fc: 0000 unimp
+800002fe: 0000 unimp
+80000300: 0000 unimp
+80000302: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: ccdd beqz s1,800020be <begin_signature+0xbe>
+80002002: 8899aabb 0x8899aabb
+80002006: 44556677 0x44556677
+8000200a: ee112233 0xee112233
+8000200e: eeff 0xeeff
+80002010: 5050 lw a2,36(s0)
+80002012: 5050 lw a2,36(s0)
+80002014: 5050 lw a2,36(s0)
+80002016: 5050 lw a2,36(s0)
+80002018: 5050 lw a2,36(s0)
+8000201a: 5050 lw a2,36(s0)
+8000201c: 5050 lw a2,36(s0)
+8000201e: 5050 lw a2,36(s0)
+80002020: 5050 lw a2,36(s0)
+80002022: 5050 lw a2,36(s0)
+80002024: 5050 lw a2,36(s0)
+80002026: 5050 lw a2,36(s0)
+80002028: 5050 lw a2,36(s0)
+8000202a: 5050 lw a2,36(s0)
+8000202c: 5050 lw a2,36(s0)
+8000202e: 5050 lw a2,36(s0)
+80002030: 5050 lw a2,36(s0)
+80002032: 5050 lw a2,36(s0)
+80002034: 5050 lw a2,36(s0)
+80002036: 5050 lw a2,36(s0)
+80002038: 5050 lw a2,36(s0)
+8000203a: 5050 lw a2,36(s0)
+8000203c: 5050 lw a2,36(s0)
+8000203e: 5050 lw a2,36(s0)
+80002040: 5050 lw a2,36(s0)
+80002042: 5050 lw a2,36(s0)
+80002044: 5050 lw a2,36(s0)
+80002046: 5050 lw a2,36(s0)
+80002048: 5050 lw a2,36(s0)
+8000204a: 5050 lw a2,36(s0)
+8000204c: 5050 lw a2,36(s0)
+8000204e: 5050 lw a2,36(s0)
+80002050: 5050 lw a2,36(s0)
+80002052: 5050 lw a2,36(s0)
+80002054: 5050 lw a2,36(s0)
+80002056: 5050 lw a2,36(s0)
+80002058: 5050 lw a2,36(s0)
+8000205a: 5050 lw a2,36(s0)
+8000205c: 5050 lw a2,36(s0)
+8000205e: 5050 lw a2,36(s0)
+80002060: 5050 lw a2,36(s0)
+80002062: 5050 lw a2,36(s0)
+80002064: 5050 lw a2,36(s0)
+80002066: 5050 lw a2,36(s0)
+80002068: 5050 lw a2,36(s0)
+8000206a: 5050 lw a2,36(s0)
+8000206c: 5050 lw a2,36(s0)
+8000206e: 5050 lw a2,36(s0)
+80002070: 5050 lw a2,36(s0)
+80002072: 5050 lw a2,36(s0)
+80002074: 5050 lw a2,36(s0)
+80002076: 5050 lw a2,36(s0)
+80002078: 5050 lw a2,36(s0)
+8000207a: 5050 lw a2,36(s0)
+8000207c: 5050 lw a2,36(s0)
+8000207e: 5050 lw a2,36(s0)
+80002080: 5050 lw a2,36(s0)
+80002082: 5050 lw a2,36(s0)
+80002084: 5050 lw a2,36(s0)
+80002086: 5050 lw a2,36(s0)
+80002088: 5050 lw a2,36(s0)
+8000208a: 5050 lw a2,36(s0)
+8000208c: 5050 lw a2,36(s0)
+8000208e: 5050 lw a2,36(s0)
+80002090: 5050 lw a2,36(s0)
+80002092: 5050 lw a2,36(s0)
+80002094: 5050 lw a2,36(s0)
+80002096: 5050 lw a2,36(s0)
+80002098: 5050 lw a2,36(s0)
+8000209a: 5050 lw a2,36(s0)
+8000209c: 5050 lw a2,36(s0)
+8000209e: 5050 lw a2,36(s0)
+800020a0: 5050 lw a2,36(s0)
+800020a2: 5050 lw a2,36(s0)
+800020a4: 5050 lw a2,36(s0)
+800020a6: 5050 lw a2,36(s0)
+800020a8: 5050 lw a2,36(s0)
+800020aa: 5050 lw a2,36(s0)
+800020ac: 5050 lw a2,36(s0)
+800020ae: 5050 lw a2,36(s0)
+800020b0: 5050 lw a2,36(s0)
+800020b2: 5050 lw a2,36(s0)
+800020b4: 5050 lw a2,36(s0)
+800020b6: 5050 lw a2,36(s0)
+800020b8: 5050 lw a2,36(s0)
+800020ba: 5050 lw a2,36(s0)
+800020bc: 5050 lw a2,36(s0)
+800020be: 5050 lw a2,36(s0)
+800020c0: 5050 lw a2,36(s0)
+800020c2: 5050 lw a2,36(s0)
+800020c4: 5050 lw a2,36(s0)
+800020c6: 5050 lw a2,36(s0)
+800020c8: 5050 lw a2,36(s0)
+800020ca: 5050 lw a2,36(s0)
+800020cc: 5050 lw a2,36(s0)
+800020ce: 5050 lw a2,36(s0)
+800020d0: 5050 lw a2,36(s0)
+800020d2: 5050 lw a2,36(s0)
+800020d4: 5050 lw a2,36(s0)
+800020d6: 5050 lw a2,36(s0)
+800020d8: 5050 lw a2,36(s0)
+800020da: 5050 lw a2,36(s0)
+800020dc: 5050 lw a2,36(s0)
+800020de: 5050 lw a2,36(s0)
+800020e0: 5050 lw a2,36(s0)
+800020e2: 5050 lw a2,36(s0)
+800020e4: 5050 lw a2,36(s0)
+800020e6: 5050 lw a2,36(s0)
+800020e8: 5050 lw a2,36(s0)
+800020ea: 5050 lw a2,36(s0)
+800020ec: 5050 lw a2,36(s0)
+800020ee: 5050 lw a2,36(s0)
+800020f0: 5050 lw a2,36(s0)
+800020f2: 5050 lw a2,36(s0)
+800020f4: 5050 lw a2,36(s0)
+800020f6: 5050 lw a2,36(s0)
+800020f8: 5050 lw a2,36(s0)
+800020fa: 5050 lw a2,36(s0)
+800020fc: 5050 lw a2,36(s0)
+800020fe: 5050 lw a2,36(s0)
+80002100: 5050 lw a2,36(s0)
+80002102: 5050 lw a2,36(s0)
+80002104: 5050 lw a2,36(s0)
+80002106: 5050 lw a2,36(s0)
+80002108: 5050 lw a2,36(s0)
+8000210a: 5050 lw a2,36(s0)
+8000210c: 5050 lw a2,36(s0)
+8000210e: 0050 addi a2,sp,4
diff --git a/test/riscv-tests/rv32mi-p-ma_addr.elf b/test/riscv-tests/rv32mi-p-ma_addr.elf
new file mode 100644
index 0000000..954fccc
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-ma_addr.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-ma_fetch.dump b/test/riscv-tests/rv32mi-p-ma_fetch.dump
new file mode 100644
index 0000000..81d0f96
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-ma_fetch.dump
@@ -0,0 +1,219 @@
+
+rv32mi-p-ma_fetch: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 208f0f13 addi t5,t5,520 # 80000228 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 00200193 li gp,2
+8000010c: 00000313 li t1,0
+80000110: 00000297 auipc t0,0x0
+80000114: 00c28293 addi t0,t0,12 # 8000011c <reset_vector+0xd0>
+80000118: 00228367 jalr t1,2(t0)
+8000011c: a011 j 80000120 <reset_vector+0xd4>
+8000011e: a019 j 80000124 <reset_vector+0xd8>
+80000120: 0e80006f j 80000208 <fail>
+80000124: 00300193 li gp,3
+80000128: 00000297 auipc t0,0x0
+8000012c: 00c28293 addi t0,t0,12 # 80000134 <reset_vector+0xe8>
+80000130: 00128367 jalr t1,1(t0)
+80000134: 0080006f j 8000013c <reset_vector+0xf0>
+80000138: 0d00006f j 80000208 <fail>
+8000013c: 00400193 li gp,4
+80000140: 00000313 li t1,0
+80000144: 00000297 auipc t0,0x0
+80000148: 00c28293 addi t0,t0,12 # 80000150 <reset_vector+0x104>
+8000014c: 00328367 jalr t1,3(t0)
+80000150: a011 j 80000154 <reset_vector+0x108>
+80000152: a019 j 80000158 <reset_vector+0x10c>
+80000154: 0b40006f j 80000208 <fail>
+80000158: 00500193 li gp,5
+8000015c: 00000313 li t1,0
+80000160: 00000297 auipc t0,0x0
+80000164: 00c28293 addi t0,t0,12 # 8000016c <reset_vector+0x120>
+80000168: 0060036f jal t1,8000016e <reset_vector+0x122>
+8000016c: a011 j 80000170 <reset_vector+0x124>
+8000016e: a019 j 80000174 <reset_vector+0x128>
+80000170: 0980006f j 80000208 <fail>
+80000174: 00600193 li gp,6
+80000178: 00000313 li t1,0
+8000017c: 00000297 auipc t0,0x0
+80000180: 00c28293 addi t0,t0,12 # 80000188 <reset_vector+0x13c>
+80000184: 00000363 beqz zero,8000018a <reset_vector+0x13e>
+80000188: a011 j 8000018c <reset_vector+0x140>
+8000018a: a019 j 80000190 <reset_vector+0x144>
+8000018c: 07c0006f j 80000208 <fail>
+80000190: 00700193 li gp,7
+80000194: 00001563 bnez zero,8000019e <reset_vector+0x152>
+80000198: 00c0006f j 800001a4 <reset_vector+0x158>
+8000019c: a009 j 8000019e <reset_vector+0x152>
+8000019e: a009 j 800001a0 <reset_vector+0x154>
+800001a0: 0680006f j 80000208 <fail>
+800001a4: 00800193 li gp,8
+800001a8: 301023f3 csrr t2,misa
+800001ac: 0043f393 andi t2,t2,4
+800001b0: 04038863 beqz t2,80000200 <reset_vector+0x1b4>
+800001b4: 0001 nop
+800001b6: 30127073 csrci misa,4
+800001ba: 0001 nop
+800001bc: 301023f3 csrr t2,misa
+800001c0: 0043f393 andi t2,t2,4
+800001c4: 04038263 beqz t2,80000208 <fail>
+800001c8: 00000297 auipc t0,0x0
+800001cc: 03428293 addi t0,t0,52 # 800001fc <reset_vector+0x1b0>
+800001d0: ffe28293 addi t0,t0,-2
+800001d4: 34129073 csrw mepc,t0
+800001d8: 30127073 csrci misa,4
+800001dc: 301023f3 csrr t2,misa
+800001e0: 0043f393 andi t2,t2,4
+800001e4: 00039e63 bnez t2,80000200 <reset_vector+0x1b4>
+800001e8: 000023b7 lui t2,0x2
+800001ec: 80038393 addi t2,t2,-2048 # 1800 <_start-0x7fffe800>
+800001f0: 3003a073 csrs mstatus,t2
+800001f4: 30200073 mret
+800001f8: 00000263 beqz zero,800001fc <reset_vector+0x1b0>
+800001fc: 30126073 csrsi misa,4
+80000200: 01c0006f j 8000021c <pass>
+80000204: 00301c63 bne zero,gp,8000021c <pass>
+
+80000208 <fail>:
+80000208: 0ff0000f fence
+8000020c: 00018063 beqz gp,8000020c <fail+0x4>
+80000210: 00119193 slli gp,gp,0x1
+80000214: 0011e193 ori gp,gp,1
+80000218: 00000073 ecall
+
+8000021c <pass>:
+8000021c: 0ff0000f fence
+80000220: 00100193 li gp,1
+80000224: 00000073 ecall
+
+80000228 <mtvec_handler>:
+80000228: 00200513 li a0,2
+8000022c: 02a18063 beq gp,a0,8000024c <mtvec_handler+0x24>
+80000230: 00400513 li a0,4
+80000234: 00a18c63 beq gp,a0,8000024c <mtvec_handler+0x24>
+80000238: 00500513 li a0,5
+8000023c: 00a18863 beq gp,a0,8000024c <mtvec_handler+0x24>
+80000240: 00600513 li a0,6
+80000244: 00a18463 beq gp,a0,8000024c <mtvec_handler+0x24>
+80000248: fc1ff06f j 80000208 <fail>
+8000024c: fa031ee3 bnez t1,80000208 <fail>
+80000250: 00000593 li a1,0
+80000254: 34202573 csrr a0,mcause
+80000258: fab518e3 bne a0,a1,80000208 <fail>
+8000025c: 341025f3 csrr a1,mepc
+80000260: 00458593 addi a1,a1,4
+80000264: fab292e3 bne t0,a1,80000208 <fail>
+80000268: 34302573 csrr a0,mtval
+8000026c: 00050663 beqz a0,80000278 <mtvec_handler+0x50>
+80000270: ffe50513 addi a0,a0,-2
+80000274: f8551ae3 bne a0,t0,80000208 <fail>
+80000278: 00c58593 addi a1,a1,12
+8000027c: 34159073 csrw mepc,a1
+80000280: 30200073 mret
+80000284: c0001073 unimp
+80000288: 0000 unimp
+8000028a: 0000 unimp
+8000028c: 0000 unimp
+8000028e: 0000 unimp
+80000290: 0000 unimp
+80000292: 0000 unimp
+80000294: 0000 unimp
+80000296: 0000 unimp
+80000298: 0000 unimp
+8000029a: 0000 unimp
+8000029c: 0000 unimp
+8000029e: 0000 unimp
+800002a0: 0000 unimp
+800002a2: 0000 unimp
+800002a4: 0000 unimp
+800002a6: 0000 unimp
+800002a8: 0000 unimp
+800002aa: 0000 unimp
+800002ac: 0000 unimp
+800002ae: 0000 unimp
+800002b0: 0000 unimp
+800002b2: 0000 unimp
+800002b4: 0000 unimp
+800002b6: 0000 unimp
+800002b8: 0000 unimp
+800002ba: 0000 unimp
+800002bc: 0000 unimp
+800002be: 0000 unimp
+800002c0: 0000 unimp
+800002c2: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-ma_fetch.elf b/test/riscv-tests/rv32mi-p-ma_fetch.elf
new file mode 100644
index 0000000..523433e
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-ma_fetch.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-mcsr.dump b/test/riscv-tests/rv32mi-p-mcsr.dump
new file mode 100644
index 0000000..105796d
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-mcsr.dump
@@ -0,0 +1,126 @@
+
+rv32mi-p-mcsr: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <test_2>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+
+80000108 <test_2>:
+80000108: 30102573 csrr a0,misa
+8000010c: 01e55513 srli a0,a0,0x1e
+80000110: 00100e93 li t4,1
+80000114: 00200193 li gp,2
+80000118: 03d51863 bne a0,t4,80000148 <fail>
+
+8000011c <test_3>:
+8000011c: f1402573 csrr a0,mhartid
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 03d51063 bne a0,t4,80000148 <fail>
+8000012c: f1302573 csrr a0,mimpid
+80000130: f1202573 csrr a0,marchid
+80000134: f1102573 csrr a0,mvendorid
+80000138: 00000293 li t0,0
+8000013c: 3052a073 csrs mtvec,t0
+80000140: 3412a073 csrs mepc,t0
+80000144: 00301c63 bne zero,gp,8000015c <pass>
+
+80000148 <fail>:
+80000148: 0ff0000f fence
+8000014c: 00018063 beqz gp,8000014c <fail+0x4>
+80000150: 00119193 slli gp,gp,0x1
+80000154: 0011e193 ori gp,gp,1
+80000158: 00000073 ecall
+
+8000015c <pass>:
+8000015c: 0ff0000f fence
+80000160: 00100193 li gp,1
+80000164: 00000073 ecall
+80000168: c0001073 unimp
+8000016c: 0000 unimp
+8000016e: 0000 unimp
+80000170: 0000 unimp
+80000172: 0000 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-mcsr.elf b/test/riscv-tests/rv32mi-p-mcsr.elf
new file mode 100644
index 0000000..9c15c58
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-mcsr.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-sbreak.dump b/test/riscv-tests/rv32mi-p-sbreak.dump
new file mode 100644
index 0000000..f895195
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-sbreak.dump
@@ -0,0 +1,130 @@
+
+rv32mi-p-sbreak: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 118f0f13 addi t5,t5,280 # 80000138 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 00200193 li gp,2
+
+8000010c <do_break>:
+8000010c: 00100073 ebreak
+80000110: 0080006f j 80000118 <fail>
+80000114: 00301c63 bne zero,gp,8000012c <pass>
+
+80000118 <fail>:
+80000118: 0ff0000f fence
+8000011c: 00018063 beqz gp,8000011c <fail+0x4>
+80000120: 00119193 slli gp,gp,0x1
+80000124: 0011e193 ori gp,gp,1
+80000128: 00000073 ecall
+
+8000012c <pass>:
+8000012c: 0ff0000f fence
+80000130: 00100193 li gp,1
+80000134: 00000073 ecall
+
+80000138 <mtvec_handler>:
+80000138: 00300313 li t1,3
+8000013c: 342022f3 csrr t0,mcause
+80000140: fc629ce3 bne t0,t1,80000118 <fail>
+80000144: 00000317 auipc t1,0x0
+80000148: fc830313 addi t1,t1,-56 # 8000010c <do_break>
+8000014c: 341022f3 csrr t0,mepc
+80000150: fc6294e3 bne t0,t1,80000118 <fail>
+80000154: fd9ff06f j 8000012c <pass>
+80000158: c0001073 unimp
+8000015c: 0000 unimp
+8000015e: 0000 unimp
+80000160: 0000 unimp
+80000162: 0000 unimp
+80000164: 0000 unimp
+80000166: 0000 unimp
+80000168: 0000 unimp
+8000016a: 0000 unimp
+8000016c: 0000 unimp
+8000016e: 0000 unimp
+80000170: 0000 unimp
+80000172: 0000 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-sbreak.elf b/test/riscv-tests/rv32mi-p-sbreak.elf
new file mode 100644
index 0000000..867e1d7
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-sbreak.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-scall.dump b/test/riscv-tests/rv32mi-p-scall.dump
new file mode 100644
index 0000000..fea6323
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-scall.dump
@@ -0,0 +1,147 @@
+
+rv32mi-p-scall: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 158f0f13 addi t5,t5,344 # 80000178 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 00200193 li gp,2
+8000010c: 00800313 li t1,8
+80000110: 000022b7 lui t0,0x2
+80000114: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800>
+80000118: 3002b073 csrc mstatus,t0
+8000011c: 300023f3 csrr t2,mstatus
+80000120: 0072f2b3 and t0,t0,t2
+80000124: 00028463 beqz t0,8000012c <reset_vector+0xe0>
+80000128: 00b00313 li t1,11
+8000012c: 000022b7 lui t0,0x2
+80000130: 80028293 addi t0,t0,-2048 # 1800 <_start-0x7fffe800>
+80000134: 3002b073 csrc mstatus,t0
+80000138: 00000297 auipc t0,0x0
+8000013c: 01028293 addi t0,t0,16 # 80000148 <reset_vector+0xfc>
+80000140: 34129073 csrw mepc,t0
+80000144: 30200073 mret
+80000148: 00100193 li gp,1
+
+8000014c <do_scall>:
+8000014c: 00000073 ecall
+80000150: 0080006f j 80000158 <fail>
+80000154: 00301c63 bne zero,gp,8000016c <pass>
+
+80000158 <fail>:
+80000158: 0ff0000f fence
+8000015c: 00018063 beqz gp,8000015c <fail+0x4>
+80000160: 00119193 slli gp,gp,0x1
+80000164: 0011e193 ori gp,gp,1
+80000168: 00000073 ecall
+
+8000016c <pass>:
+8000016c: 0ff0000f fence
+80000170: 00100193 li gp,1
+80000174: 00000073 ecall
+
+80000178 <mtvec_handler>:
+80000178: 342022f3 csrr t0,mcause
+8000017c: fc629ee3 bne t0,t1,80000158 <fail>
+80000180: 00000397 auipc t2,0x0
+80000184: fcc38393 addi t2,t2,-52 # 8000014c <do_scall>
+80000188: 341022f3 csrr t0,mepc
+8000018c: fc7296e3 bne t0,t2,80000158 <fail>
+80000190: fddff06f j 8000016c <pass>
+80000194: c0001073 unimp
+80000198: 0000 unimp
+8000019a: 0000 unimp
+8000019c: 0000 unimp
+8000019e: 0000 unimp
+800001a0: 0000 unimp
+800001a2: 0000 unimp
+800001a4: 0000 unimp
+800001a6: 0000 unimp
+800001a8: 0000 unimp
+800001aa: 0000 unimp
+800001ac: 0000 unimp
+800001ae: 0000 unimp
+800001b0: 0000 unimp
+800001b2: 0000 unimp
+800001b4: 0000 unimp
+800001b6: 0000 unimp
+800001b8: 0000 unimp
+800001ba: 0000 unimp
+800001bc: 0000 unimp
+800001be: 0000 unimp
+800001c0: 0000 unimp
+800001c2: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-scall.elf b/test/riscv-tests/rv32mi-p-scall.elf
new file mode 100644
index 0000000..20c6331
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-scall.elf
Binary files differ
diff --git a/test/riscv-tests/rv32mi-p-shamt.dump b/test/riscv-tests/rv32mi-p-shamt.dump
new file mode 100644
index 0000000..00b0f9a
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-shamt.dump
@@ -0,0 +1,128 @@
+
+rv32mi-p-shamt: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 130f0f13 addi t5,t5,304 # 80000150 <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <test_2>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+
+80000108 <test_2>:
+80000108: 00100513 li a0,1
+8000010c: 01051513 slli a0,a0,0x10
+80000110: 00010eb7 lui t4,0x10
+80000114: 00200193 li gp,2
+80000118: 01d51c63 bne a0,t4,80000130 <fail>
+
+8000011c <test_3>:
+8000011c: 02051513 slli a0,a0,0x20
+80000120: 00100e93 li t4,1
+80000124: 00300193 li gp,3
+80000128: 01d01463 bne zero,t4,80000130 <fail>
+8000012c: 00301c63 bne zero,gp,80000144 <pass>
+
+80000130 <fail>:
+80000130: 0ff0000f fence
+80000134: 00018063 beqz gp,80000134 <fail+0x4>
+80000138: 00119193 slli gp,gp,0x1
+8000013c: 0011e193 ori gp,gp,1
+80000140: 00000073 ecall
+
+80000144 <pass>:
+80000144: 0ff0000f fence
+80000148: 00100193 li gp,1
+8000014c: 00000073 ecall
+
+80000150 <mtvec_handler>:
+80000150: 00200293 li t0,2
+80000154: fc519ee3 bne gp,t0,80000130 <fail>
+80000158: 342022f3 csrr t0,mcause
+8000015c: 00200313 li t1,2
+80000160: fc6298e3 bne t0,t1,80000130 <fail>
+80000164: fe1ff06f j 80000144 <pass>
+80000168: c0001073 unimp
+8000016c: 0000 unimp
+8000016e: 0000 unimp
+80000170: 0000 unimp
+80000172: 0000 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32mi-p-shamt.elf b/test/riscv-tests/rv32mi-p-shamt.elf
new file mode 100644
index 0000000..5f4964f
--- /dev/null
+++ b/test/riscv-tests/rv32mi-p-shamt.elf
Binary files differ
diff --git a/test/riscv-tests/rv32si-p-csr.dump b/test/riscv-tests/rv32si-p-csr.dump
new file mode 100644
index 0000000..c7eca72
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-csr.dump
@@ -0,0 +1,228 @@
+
+rv32si-p-csr: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 00000297 auipc t0,0x0
+800000c4: 14c28293 addi t0,t0,332 # 8000020c <stvec_handler>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00001537 lui a0,0x1
+800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 02200513 li a0,34
+800000f8: 30352073 csrs mideleg,a0
+800000fc: 00000297 auipc t0,0x0
+80000100: 01428293 addi t0,t0,20 # 80000110 <reset_vector+0xc4>
+80000104: 34129073 csrw mepc,t0
+80000108: f1402573 csrr a0,mhartid
+8000010c: 30200073 mret
+80000110: 1401d073 csrwi sscratch,3
+
+80000114 <test_2>:
+80000114: 14002573 csrr a0,sscratch
+80000118: 00300e93 li t4,3
+8000011c: 00200193 li gp,2
+80000120: 0dd51663 bne a0,t4,800001ec <fail>
+
+80000124 <test_3>:
+80000124: 1400f5f3 csrrci a1,sscratch,1
+80000128: 00300e93 li t4,3
+8000012c: 00300193 li gp,3
+80000130: 0bd59e63 bne a1,t4,800001ec <fail>
+
+80000134 <test_4>:
+80000134: 14026673 csrrsi a2,sscratch,4
+80000138: 00200e93 li t4,2
+8000013c: 00400193 li gp,4
+80000140: 0bd61663 bne a2,t4,800001ec <fail>
+
+80000144 <test_5>:
+80000144: 140156f3 csrrwi a3,sscratch,2
+80000148: 00600e93 li t4,6
+8000014c: 00500193 li gp,5
+80000150: 09d69e63 bne a3,t4,800001ec <fail>
+
+80000154 <test_6>:
+80000154: 0bad2537 lui a0,0xbad2
+80000158: dea50513 addi a0,a0,-534 # bad1dea <_start-0x7452e216>
+8000015c: 140515f3 csrrw a1,sscratch,a0
+80000160: 00200e93 li t4,2
+80000164: 00600193 li gp,6
+80000168: 09d59263 bne a1,t4,800001ec <fail>
+
+8000016c <test_7>:
+8000016c: 00002537 lui a0,0x2
+80000170: dea50513 addi a0,a0,-534 # 1dea <_start-0x7fffe216>
+80000174: 14053573 csrrc a0,sscratch,a0
+80000178: 0bad2eb7 lui t4,0xbad2
+8000017c: deae8e93 addi t4,t4,-534 # bad1dea <_start-0x7452e216>
+80000180: 00700193 li gp,7
+80000184: 07d51463 bne a0,t4,800001ec <fail>
+
+80000188 <test_8>:
+80000188: 0000c537 lui a0,0xc
+8000018c: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111>
+80000190: 14052573 csrrs a0,sscratch,a0
+80000194: 0bad0eb7 lui t4,0xbad0
+80000198: 00800193 li gp,8
+8000019c: 05d51863 bne a0,t4,800001ec <fail>
+
+800001a0 <test_9>:
+800001a0: 14002573 csrr a0,sscratch
+800001a4: 0badceb7 lui t4,0xbadc
+800001a8: eefe8e93 addi t4,t4,-273 # badbeef <_start-0x74524111>
+800001ac: 00900193 li gp,9
+800001b0: 03d51e63 bne a0,t4,800001ec <fail>
+800001b4: 10000293 li t0,256
+800001b8: 1002b073 csrc sstatus,t0
+800001bc: 00000297 auipc t0,0x0
+800001c0: 01028293 addi t0,t0,16 # 800001cc <test_12>
+800001c4: 14129073 csrw sepc,t0
+800001c8: 10200073 sret
+
+800001cc <test_12>:
+800001cc: 00000013 nop
+800001d0: 00000e93 li t4,0
+800001d4: 00c00193 li gp,12
+800001d8: 01d01a63 bne zero,t4,800001ec <fail>
+
+800001dc <finish>:
+800001dc: 0ff0000f fence
+800001e0: 00100193 li gp,1
+800001e4: 00000073 ecall
+800001e8: 00301c63 bne zero,gp,80000200 <pass>
+
+800001ec <fail>:
+800001ec: 0ff0000f fence
+800001f0: 00018063 beqz gp,800001f0 <fail+0x4>
+800001f4: 00119193 slli gp,gp,0x1
+800001f8: 0011e193 ori gp,gp,1
+800001fc: 00000073 ecall
+
+80000200 <pass>:
+80000200: 0ff0000f fence
+80000204: 00100193 li gp,1
+80000208: 00000073 ecall
+
+8000020c <stvec_handler>:
+8000020c: 00900293 li t0,9
+80000210: 0051e663 bltu gp,t0,8000021c <stvec_handler+0x10>
+80000214: 00b00293 li t0,11
+80000218: 0032fe63 bleu gp,t0,80000234 <privileged>
+8000021c: 142022f3 csrr t0,scause
+80000220: 00800313 li t1,8
+80000224: fc6294e3 bne t0,t1,800001ec <fail>
+80000228: 0ff0000f fence
+8000022c: 00100193 li gp,1
+80000230: 00000073 ecall
+
+80000234 <privileged>:
+80000234: 142022f3 csrr t0,scause
+80000238: 00200313 li t1,2
+8000023c: fa6298e3 bne t0,t1,800001ec <fail>
+80000240: 141022f3 csrr t0,sepc
+80000244: 00428293 addi t0,t0,4
+80000248: 14129073 csrw sepc,t0
+8000024c: 10200073 sret
+80000250: c0001073 unimp
+80000254: 0000 unimp
+80000256: 0000 unimp
+80000258: 0000 unimp
+8000025a: 0000 unimp
+8000025c: 0000 unimp
+8000025e: 0000 unimp
+80000260: 0000 unimp
+80000262: 0000 unimp
+80000264: 0000 unimp
+80000266: 0000 unimp
+80000268: 0000 unimp
+8000026a: 0000 unimp
+8000026c: 0000 unimp
+8000026e: 0000 unimp
+80000270: 0000 unimp
+80000272: 0000 unimp
+80000274: 0000 unimp
+80000276: 0000 unimp
+80000278: 0000 unimp
+8000027a: 0000 unimp
+8000027c: 0000 unimp
+8000027e: 0000 unimp
+80000280: 0000 unimp
+80000282: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 0001 nop
+80002002: 0000 unimp
+80002004: 0000 unimp
+80002006: 0000 unimp
+80002008: 0000 unimp
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32si-p-csr.elf b/test/riscv-tests/rv32si-p-csr.elf
new file mode 100644
index 0000000..a0f14b7
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-csr.elf
Binary files differ
diff --git a/test/riscv-tests/rv32si-p-dirty.dump b/test/riscv-tests/rv32si-p-dirty.dump
new file mode 100644
index 0000000..c38f7ae
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-dirty.dump
@@ -0,0 +1,203 @@
+
+rv32si-p-dirty: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 00000f17 auipc t5,0x0
+80000024: 1ccf0f13 addi t5,t5,460 # 800001ec <mtvec_handler>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00002537 lui a0,0x2
+800000ec: 80050513 addi a0,a0,-2048 # 1800 <_start-0x7fffe800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 00000297 auipc t0,0x0
+800000f8: 01428293 addi t0,t0,20 # 80000108 <reset_vector+0xbc>
+800000fc: 34129073 csrw mepc,t0
+80000100: f1402573 csrr a0,mhartid
+80000104: 30200073 mret
+80000108: 80000537 lui a0,0x80000
+8000010c: 00002597 auipc a1,0x2
+80000110: ef458593 addi a1,a1,-268 # 80002000 <begin_signature>
+80000114: 00c5d593 srli a1,a1,0xc
+80000118: 00a5e5b3 or a1,a1,a0
+8000011c: 18059073 csrw satp,a1
+80000120: 12000073 sfence.vma
+80000124: 000215b7 lui a1,0x21
+80000128: 80058593 addi a1,a1,-2048 # 20800 <_start-0x7ffdf800>
+8000012c: 3005a073 csrs mstatus,a1
+80000130: 00200193 li gp,2
+80000134: 00100393 li t2,1
+80000138: 80002517 auipc a0,0x80002
+8000013c: ec752823 sw t2,-304(a0) # 2008 <_start-0x7fffdff8>
+80000140: 00300193 li gp,3
+80000144: 000415b7 lui a1,0x41
+80000148: 80058593 addi a1,a1,-2048 # 40800 <_start-0x7ffbf800>
+8000014c: 3005a073 csrs mstatus,a1
+80000150: 80002297 auipc t0,0x80002
+80000154: eb82a283 lw t0,-328(t0) # 2008 <_start-0x7fffdff8>
+80000158: 10029063 bnez t0,80000258 <die>
+8000015c: 80002517 auipc a0,0x80002
+80000160: ea752623 sw t2,-340(a0) # 2008 <_start-0x7fffdff8>
+80000164: 80002297 auipc t0,0x80002
+80000168: ea42a283 lw t0,-348(t0) # 2008 <_start-0x7fffdff8>
+8000016c: 0e729663 bne t0,t2,80000258 <die>
+80000170: 000202b7 lui t0,0x20
+80000174: 3002b073 csrc mstatus,t0
+80000178: 00002297 auipc t0,0x2
+8000017c: e882a283 lw t0,-376(t0) # 80002000 <begin_signature>
+80000180: 0c000513 li a0,192
+80000184: 00a2f2b3 and t0,t0,a0
+80000188: 0ca29863 bne t0,a0,80000258 <die>
+8000018c: 000202b7 lui t0,0x20
+80000190: 3002a073 csrs mstatus,t0
+80000194: 00400193 li gp,4
+80000198: 80002517 auipc a0,0x80002
+8000019c: e6852503 lw a0,-408(a0) # 2000 <_start-0x7fffe000>
+800001a0: 40056513 ori a0,a0,1024
+800001a4: 80002297 auipc t0,0x80002
+800001a8: e4a2ae23 sw a0,-420(t0) # 2000 <_start-0x7fffe000>
+800001ac: 12000073 sfence.vma
+800001b0: 80002297 auipc t0,0x80002
+800001b4: e4a2a823 sw a0,-432(t0) # 2000 <_start-0x7fffe000>
+800001b8: 0a00006f j 80000258 <die>
+800001bc: 0ff0000f fence
+800001c0: 00100193 li gp,1
+800001c4: 00000073 ecall
+800001c8: 00301c63 bne zero,gp,800001e0 <pass>
+
+800001cc <fail>:
+800001cc: 0ff0000f fence
+800001d0: 00018063 beqz gp,800001d0 <fail+0x4>
+800001d4: 00119193 slli gp,gp,0x1
+800001d8: 0011e193 ori gp,gp,1
+800001dc: 00000073 ecall
+
+800001e0 <pass>:
+800001e0: 0ff0000f fence
+800001e4: 00100193 li gp,1
+800001e8: 00000073 ecall
+
+800001ec <mtvec_handler>:
+800001ec: 342022f3 csrr t0,mcause
+800001f0: ff128293 addi t0,t0,-15
+800001f4: 06029263 bnez t0,80000258 <die>
+800001f8: 00200313 li t1,2
+800001fc: 02619263 bne gp,t1,80000220 <skip+0x10>
+80000200: 00002297 auipc t0,0x2
+80000204: e002a283 lw t0,-512(t0) # 80002000 <begin_signature>
+80000208: 0802f313 andi t1,t0,128
+8000020c: 04031663 bnez t1,80000258 <die>
+
+80000210 <skip>:
+80000210: 341022f3 csrr t0,mepc
+80000214: 00428293 addi t0,t0,4
+80000218: 34129073 csrw mepc,t0
+8000021c: 30200073 mret
+80000220: 00300313 li t1,3
+80000224: 02619463 bne gp,t1,8000024c <skip+0x3c>
+80000228: 00002297 auipc t0,0x2
+8000022c: dd82a283 lw t0,-552(t0) # 80002000 <begin_signature>
+80000230: 0802f313 andi t1,t0,128
+80000234: 02031263 bnez t1,80000258 <die>
+80000238: 0802e293 ori t0,t0,128
+8000023c: 00002317 auipc t1,0x2
+80000240: dc532223 sw t0,-572(t1) # 80002000 <begin_signature>
+80000244: 12000073 sfence.vma
+80000248: 30200073 mret
+8000024c: 00400313 li t1,4
+80000250: 00619463 bne gp,t1,80000258 <die>
+80000254: f8dff06f j 800001e0 <pass>
+
+80000258 <die>:
+80000258: 0ff0000f fence
+8000025c: 00018063 beqz gp,8000025c <die+0x4>
+80000260: 00119193 slli gp,gp,0x1
+80000264: 0011e193 ori gp,gp,1
+80000268: 00000073 ecall
+8000026c: c0001073 unimp
+80000270: 0000 unimp
+80000272: 0000 unimp
+80000274: 0000 unimp
+80000276: 0000 unimp
+80000278: 0000 unimp
+8000027a: 0000 unimp
+8000027c: 0000 unimp
+8000027e: 0000 unimp
+80000280: 0000 unimp
+80000282: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 005f 2000 0000 0x2000005f
+80002006: 0000 unimp
+
+80002008 <dummy>:
+80002008: 0000 unimp
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32si-p-dirty.elf b/test/riscv-tests/rv32si-p-dirty.elf
new file mode 100644
index 0000000..693451c
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-dirty.elf
Binary files differ
diff --git a/test/riscv-tests/rv32si-p-ma_fetch.dump b/test/riscv-tests/rv32si-p-ma_fetch.dump
new file mode 100644
index 0000000..45e4c0f
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-ma_fetch.dump
@@ -0,0 +1,175 @@
+
+rv32si-p-ma_fetch: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 00000297 auipc t0,0x0
+800000c4: 11428293 addi t0,t0,276 # 800001d4 <stvec_handler>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00001537 lui a0,0x1
+800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 02200513 li a0,34
+800000f8: 30352073 csrs mideleg,a0
+800000fc: 00000297 auipc t0,0x0
+80000100: 01428293 addi t0,t0,20 # 80000110 <reset_vector+0xc4>
+80000104: 34129073 csrw mepc,t0
+80000108: f1402573 csrr a0,mhartid
+8000010c: 30200073 mret
+80000110: 00200193 li gp,2
+80000114: 00000313 li t1,0
+80000118: 00000297 auipc t0,0x0
+8000011c: 00c28293 addi t0,t0,12 # 80000124 <reset_vector+0xd8>
+80000120: 00228367 jalr t1,2(t0)
+80000124: a011 j 80000128 <reset_vector+0xdc>
+80000126: a019 j 8000012c <reset_vector+0xe0>
+80000128: 08c0006f j 800001b4 <fail>
+8000012c: 00300193 li gp,3
+80000130: 00000297 auipc t0,0x0
+80000134: 00c28293 addi t0,t0,12 # 8000013c <reset_vector+0xf0>
+80000138: 00128367 jalr t1,1(t0)
+8000013c: 0080006f j 80000144 <reset_vector+0xf8>
+80000140: 0740006f j 800001b4 <fail>
+80000144: 00400193 li gp,4
+80000148: 00000313 li t1,0
+8000014c: 00000297 auipc t0,0x0
+80000150: 00c28293 addi t0,t0,12 # 80000158 <reset_vector+0x10c>
+80000154: 00328367 jalr t1,3(t0)
+80000158: a011 j 8000015c <reset_vector+0x110>
+8000015a: a019 j 80000160 <reset_vector+0x114>
+8000015c: 0580006f j 800001b4 <fail>
+80000160: 00500193 li gp,5
+80000164: 00000313 li t1,0
+80000168: 00000297 auipc t0,0x0
+8000016c: 00c28293 addi t0,t0,12 # 80000174 <reset_vector+0x128>
+80000170: 0060036f jal t1,80000176 <reset_vector+0x12a>
+80000174: a011 j 80000178 <reset_vector+0x12c>
+80000176: a019 j 8000017c <reset_vector+0x130>
+80000178: 03c0006f j 800001b4 <fail>
+8000017c: 00600193 li gp,6
+80000180: 00000313 li t1,0
+80000184: 00000297 auipc t0,0x0
+80000188: 00c28293 addi t0,t0,12 # 80000190 <reset_vector+0x144>
+8000018c: 00000363 beqz zero,80000192 <reset_vector+0x146>
+80000190: a011 j 80000194 <reset_vector+0x148>
+80000192: a019 j 80000198 <reset_vector+0x14c>
+80000194: 0200006f j 800001b4 <fail>
+80000198: 00700193 li gp,7
+8000019c: 00001563 bnez zero,800001a6 <reset_vector+0x15a>
+800001a0: 00c0006f j 800001ac <reset_vector+0x160>
+800001a4: a009 j 800001a6 <reset_vector+0x15a>
+800001a6: a009 j 800001a8 <reset_vector+0x15c>
+800001a8: 00c0006f j 800001b4 <fail>
+800001ac: 01c0006f j 800001c8 <pass>
+800001b0: 00301c63 bne zero,gp,800001c8 <pass>
+
+800001b4 <fail>:
+800001b4: 0ff0000f fence
+800001b8: 00018063 beqz gp,800001b8 <fail+0x4>
+800001bc: 00119193 slli gp,gp,0x1
+800001c0: 0011e193 ori gp,gp,1
+800001c4: 00000073 ecall
+
+800001c8 <pass>:
+800001c8: 0ff0000f fence
+800001cc: 00100193 li gp,1
+800001d0: 00000073 ecall
+
+800001d4 <stvec_handler>:
+800001d4: 00200513 li a0,2
+800001d8: 02a18063 beq gp,a0,800001f8 <stvec_handler+0x24>
+800001dc: 00400513 li a0,4
+800001e0: 00a18c63 beq gp,a0,800001f8 <stvec_handler+0x24>
+800001e4: 00500513 li a0,5
+800001e8: 00a18863 beq gp,a0,800001f8 <stvec_handler+0x24>
+800001ec: 00600513 li a0,6
+800001f0: 00a18463 beq gp,a0,800001f8 <stvec_handler+0x24>
+800001f4: fc1ff06f j 800001b4 <fail>
+800001f8: fa031ee3 bnez t1,800001b4 <fail>
+800001fc: 00000593 li a1,0
+80000200: 14202573 csrr a0,scause
+80000204: fab518e3 bne a0,a1,800001b4 <fail>
+80000208: 141025f3 csrr a1,sepc
+8000020c: 00458593 addi a1,a1,4
+80000210: fab292e3 bne t0,a1,800001b4 <fail>
+80000214: 14302573 csrr a0,stval
+80000218: 00050663 beqz a0,80000224 <stvec_handler+0x50>
+8000021c: ffe50513 addi a0,a0,-2
+80000220: f8551ae3 bne a0,t0,800001b4 <fail>
+80000224: 00c58593 addi a1,a1,12
+80000228: 14159073 csrw sepc,a1
+8000022c: 10200073 sret
+80000230: c0001073 unimp
+80000234: 0000 unimp
+80000236: 0000 unimp
+80000238: 0000 unimp
+8000023a: 0000 unimp
+8000023c: 0000 unimp
+8000023e: 0000 unimp
+80000240: 0000 unimp
+80000242: 0000 unimp
diff --git a/test/riscv-tests/rv32si-p-ma_fetch.elf b/test/riscv-tests/rv32si-p-ma_fetch.elf
new file mode 100644
index 0000000..7a5fc3c
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-ma_fetch.elf
Binary files differ
diff --git a/test/riscv-tests/rv32si-p-sbreak.dump b/test/riscv-tests/rv32si-p-sbreak.dump
new file mode 100644
index 0000000..a7d6303
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-sbreak.dump
@@ -0,0 +1,128 @@
+
+rv32si-p-sbreak: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 00000297 auipc t0,0x0
+800000c4: 08028293 addi t0,t0,128 # 80000140 <stvec_handler>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00001537 lui a0,0x1
+800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 02200513 li a0,34
+800000f8: 30352073 csrs mideleg,a0
+800000fc: 00000297 auipc t0,0x0
+80000100: 01428293 addi t0,t0,20 # 80000110 <reset_vector+0xc4>
+80000104: 34129073 csrw mepc,t0
+80000108: f1402573 csrr a0,mhartid
+8000010c: 30200073 mret
+80000110: 00200193 li gp,2
+
+80000114 <do_break>:
+80000114: 00100073 ebreak
+80000118: 0080006f j 80000120 <fail>
+8000011c: 00301c63 bne zero,gp,80000134 <pass>
+
+80000120 <fail>:
+80000120: 0ff0000f fence
+80000124: 00018063 beqz gp,80000124 <fail+0x4>
+80000128: 00119193 slli gp,gp,0x1
+8000012c: 0011e193 ori gp,gp,1
+80000130: 00000073 ecall
+
+80000134 <pass>:
+80000134: 0ff0000f fence
+80000138: 00100193 li gp,1
+8000013c: 00000073 ecall
+
+80000140 <stvec_handler>:
+80000140: 00300313 li t1,3
+80000144: 142022f3 csrr t0,scause
+80000148: fc629ce3 bne t0,t1,80000120 <fail>
+8000014c: 00000317 auipc t1,0x0
+80000150: fc830313 addi t1,t1,-56 # 80000114 <do_break>
+80000154: 141022f3 csrr t0,sepc
+80000158: fc6294e3 bne t0,t1,80000120 <fail>
+8000015c: fd9ff06f j 80000134 <pass>
+80000160: c0001073 unimp
+80000164: 0000 unimp
+80000166: 0000 unimp
+80000168: 0000 unimp
+8000016a: 0000 unimp
+8000016c: 0000 unimp
+8000016e: 0000 unimp
+80000170: 0000 unimp
+80000172: 0000 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32si-p-sbreak.elf b/test/riscv-tests/rv32si-p-sbreak.elf
new file mode 100644
index 0000000..13af354
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-sbreak.elf
Binary files differ
diff --git a/test/riscv-tests/rv32si-p-scall.dump b/test/riscv-tests/rv32si-p-scall.dump
new file mode 100644
index 0000000..baa2dbc
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-scall.dump
@@ -0,0 +1,121 @@
+
+rv32si-p-scall: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 00000297 auipc t0,0x0
+800000c4: 0a028293 addi t0,t0,160 # 80000160 <stvec_handler>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00001537 lui a0,0x1
+800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 02200513 li a0,34
+800000f8: 30352073 csrs mideleg,a0
+800000fc: 00000297 auipc t0,0x0
+80000100: 01428293 addi t0,t0,20 # 80000110 <reset_vector+0xc4>
+80000104: 34129073 csrw mepc,t0
+80000108: f1402573 csrr a0,mhartid
+8000010c: 30200073 mret
+80000110: 00200193 li gp,2
+80000114: 00800313 li t1,8
+80000118: 10000293 li t0,256
+8000011c: 1002b073 csrc sstatus,t0
+80000120: 00000297 auipc t0,0x0
+80000124: 01028293 addi t0,t0,16 # 80000130 <reset_vector+0xe4>
+80000128: 14129073 csrw sepc,t0
+8000012c: 10200073 sret
+80000130: 00100193 li gp,1
+
+80000134 <do_scall>:
+80000134: 00000073 ecall
+80000138: 0080006f j 80000140 <fail>
+8000013c: 00301c63 bne zero,gp,80000154 <pass>
+
+80000140 <fail>:
+80000140: 0ff0000f fence
+80000144: 00018063 beqz gp,80000144 <fail+0x4>
+80000148: 00119193 slli gp,gp,0x1
+8000014c: 0011e193 ori gp,gp,1
+80000150: 00000073 ecall
+
+80000154 <pass>:
+80000154: 0ff0000f fence
+80000158: 00100193 li gp,1
+8000015c: 00000073 ecall
+
+80000160 <stvec_handler>:
+80000160: 142022f3 csrr t0,scause
+80000164: fc629ee3 bne t0,t1,80000140 <fail>
+80000168: 00000397 auipc t2,0x0
+8000016c: fcc38393 addi t2,t2,-52 # 80000134 <do_scall>
+80000170: 141022f3 csrr t0,sepc
+80000174: fc7296e3 bne t0,t2,80000140 <fail>
+80000178: fddff06f j 80000154 <pass>
+8000017c: c0001073 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32si-p-scall.elf b/test/riscv-tests/rv32si-p-scall.elf
new file mode 100644
index 0000000..a73522a
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-scall.elf
Binary files differ
diff --git a/test/riscv-tests/rv32si-p-wfi.dump b/test/riscv-tests/rv32si-p-wfi.dump
new file mode 100644
index 0000000..8ba0753
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-wfi.dump
@@ -0,0 +1,128 @@
+
+rv32si-p-wfi: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00001537 lui a0,0x1
+800000ec: 80050513 addi a0,a0,-2048 # 800 <_start-0x7ffff800>
+800000f0: 30052073 csrs mstatus,a0
+800000f4: 02200513 li a0,34
+800000f8: 30352073 csrs mideleg,a0
+800000fc: 00000297 auipc t0,0x0
+80000100: 01428293 addi t0,t0,20 # 80000110 <reset_vector+0xc4>
+80000104: 34129073 csrw mepc,t0
+80000108: f1402573 csrr a0,mhartid
+8000010c: 30200073 mret
+80000110: 10017073 csrci sstatus,2
+80000114: 10416073 csrsi sie,2
+80000118: 14416073 csrsi sip,2
+8000011c: 10500073 wfi
+80000120: 0ff0000f fence
+80000124: 00100193 li gp,1
+80000128: 00000073 ecall
+8000012c: 00301c63 bne zero,gp,80000144 <pass>
+
+80000130 <fail>:
+80000130: 0ff0000f fence
+80000134: 00018063 beqz gp,80000134 <fail+0x4>
+80000138: 00119193 slli gp,gp,0x1
+8000013c: 0011e193 ori gp,gp,1
+80000140: 00000073 ecall
+
+80000144 <pass>:
+80000144: 0ff0000f fence
+80000148: 00100193 li gp,1
+8000014c: 00000073 ecall
+80000150: c0001073 unimp
+80000154: 0000 unimp
+80000156: 0000 unimp
+80000158: 0000 unimp
+8000015a: 0000 unimp
+8000015c: 0000 unimp
+8000015e: 0000 unimp
+80000160: 0000 unimp
+80000162: 0000 unimp
+80000164: 0000 unimp
+80000166: 0000 unimp
+80000168: 0000 unimp
+8000016a: 0000 unimp
+8000016c: 0000 unimp
+8000016e: 0000 unimp
+80000170: 0000 unimp
+80000172: 0000 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32si-p-wfi.elf b/test/riscv-tests/rv32si-p-wfi.elf
new file mode 100644
index 0000000..b5471c1
--- /dev/null
+++ b/test/riscv-tests/rv32si-p-wfi.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amoadd_w.dump b/test/riscv-tests/rv32ua-p-amoadd_w.dump
new file mode 100644
index 0000000..0ae4d74
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoadd_w.dump
@@ -0,0 +1,124 @@
+
+rv32ua-p-amoadd_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: 00b6a72f amoadd.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 05d71263 bne a4,t4,80000160 <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000eb7 lui t4,0x80000
+80000128: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8>
+8000012c: 00300193 li gp,3
+80000130: 03d79863 bne a5,t4,80000160 <fail>
+
+80000134 <test_4>:
+80000134: 800005b7 lui a1,0x80000
+80000138: 00b6a72f amoadd.w a4,a1,(a3)
+8000013c: 80000eb7 lui t4,0x80000
+80000140: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8>
+80000144: 00400193 li gp,4
+80000148: 01d71c63 bne a4,t4,80000160 <fail>
+
+8000014c <test_5>:
+8000014c: 0006a783 lw a5,0(a3)
+80000150: 80000e93 li t4,-2048
+80000154: 00500193 li gp,5
+80000158: 01d79463 bne a5,t4,80000160 <fail>
+8000015c: 00301c63 bne zero,gp,80000174 <pass>
+
+80000160 <fail>:
+80000160: 0ff0000f fence
+80000164: 00018063 beqz gp,80000164 <fail+0x4>
+80000168: 00119193 slli gp,gp,0x1
+8000016c: 0011e193 ori gp,gp,1
+80000170: 00000073 ecall
+
+80000174 <pass>:
+80000174: 0ff0000f fence
+80000178: 00100193 li gp,1
+8000017c: 00000073 ecall
+80000180: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-p-amoadd_w.elf b/test/riscv-tests/rv32ua-p-amoadd_w.elf
new file mode 100644
index 0000000..7e01c35
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoadd_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amoand_w.dump b/test/riscv-tests/rv32ua-p-amoand_w.dump
new file mode 100644
index 0000000..d82a55c
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoand_w.dump
@@ -0,0 +1,126 @@
+
+rv32ua-p-amoand_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: 60b6a72f amoand.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 03d71e63 bne a4,t4,80000158 <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000eb7 lui t4,0x80000
+80000128: 00300193 li gp,3
+8000012c: 03d79663 bne a5,t4,80000158 <fail>
+
+80000130 <test_4>:
+80000130: 800005b7 lui a1,0x80000
+80000134: 60b6a72f amoand.w a4,a1,(a3)
+80000138: 80000eb7 lui t4,0x80000
+8000013c: 00400193 li gp,4
+80000140: 01d71c63 bne a4,t4,80000158 <fail>
+
+80000144 <test_5>:
+80000144: 0006a783 lw a5,0(a3)
+80000148: 80000eb7 lui t4,0x80000
+8000014c: 00500193 li gp,5
+80000150: 01d79463 bne a5,t4,80000158 <fail>
+80000154: 00301c63 bne zero,gp,8000016c <pass>
+
+80000158 <fail>:
+80000158: 0ff0000f fence
+8000015c: 00018063 beqz gp,8000015c <fail+0x4>
+80000160: 00119193 slli gp,gp,0x1
+80000164: 0011e193 ori gp,gp,1
+80000168: 00000073 ecall
+
+8000016c <pass>:
+8000016c: 0ff0000f fence
+80000170: 00100193 li gp,1
+80000174: 00000073 ecall
+80000178: c0001073 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amoand_w.elf b/test/riscv-tests/rv32ua-p-amoand_w.elf
new file mode 100644
index 0000000..0196fd6
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoand_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amomax_w.dump b/test/riscv-tests/rv32ua-p-amomax_w.dump
new file mode 100644
index 0000000..0ab8b2b
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amomax_w.dump
@@ -0,0 +1,125 @@
+
+rv32ua-p-amomax_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: a0b6a72f amomax.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 05d71063 bne a4,t4,8000015c <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000e93 li t4,-2048
+80000128: 00300193 li gp,3
+8000012c: 03d79863 bne a5,t4,8000015c <fail>
+
+80000130 <test_4>:
+80000130: 00100593 li a1,1
+80000134: 0006a023 sw zero,0(a3)
+80000138: a0b6a72f amomax.w a4,a1,(a3)
+8000013c: 00000e93 li t4,0
+80000140: 00400193 li gp,4
+80000144: 01d71c63 bne a4,t4,8000015c <fail>
+
+80000148 <test_5>:
+80000148: 0006a783 lw a5,0(a3)
+8000014c: 00100e93 li t4,1
+80000150: 00500193 li gp,5
+80000154: 01d79463 bne a5,t4,8000015c <fail>
+80000158: 00301c63 bne zero,gp,80000170 <pass>
+
+8000015c <fail>:
+8000015c: 0ff0000f fence
+80000160: 00018063 beqz gp,80000160 <fail+0x4>
+80000164: 00119193 slli gp,gp,0x1
+80000168: 0011e193 ori gp,gp,1
+8000016c: 00000073 ecall
+
+80000170 <pass>:
+80000170: 0ff0000f fence
+80000174: 00100193 li gp,1
+80000178: 00000073 ecall
+8000017c: c0001073 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amomax_w.elf b/test/riscv-tests/rv32ua-p-amomax_w.elf
new file mode 100644
index 0000000..b6e91a5
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amomax_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amomaxu_w.dump b/test/riscv-tests/rv32ua-p-amomaxu_w.dump
new file mode 100644
index 0000000..154c0a4
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amomaxu_w.dump
@@ -0,0 +1,125 @@
+
+rv32ua-p-amomaxu_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: e0b6a72f amomaxu.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 05d71063 bne a4,t4,8000015c <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000e93 li t4,-2048
+80000128: 00300193 li gp,3
+8000012c: 03d79863 bne a5,t4,8000015c <fail>
+
+80000130 <test_4>:
+80000130: fff00593 li a1,-1
+80000134: 0006a023 sw zero,0(a3)
+80000138: e0b6a72f amomaxu.w a4,a1,(a3)
+8000013c: 00000e93 li t4,0
+80000140: 00400193 li gp,4
+80000144: 01d71c63 bne a4,t4,8000015c <fail>
+
+80000148 <test_5>:
+80000148: 0006a783 lw a5,0(a3)
+8000014c: fff00e93 li t4,-1
+80000150: 00500193 li gp,5
+80000154: 01d79463 bne a5,t4,8000015c <fail>
+80000158: 00301c63 bne zero,gp,80000170 <pass>
+
+8000015c <fail>:
+8000015c: 0ff0000f fence
+80000160: 00018063 beqz gp,80000160 <fail+0x4>
+80000164: 00119193 slli gp,gp,0x1
+80000168: 0011e193 ori gp,gp,1
+8000016c: 00000073 ecall
+
+80000170 <pass>:
+80000170: 0ff0000f fence
+80000174: 00100193 li gp,1
+80000178: 00000073 ecall
+8000017c: c0001073 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amomaxu_w.elf b/test/riscv-tests/rv32ua-p-amomaxu_w.elf
new file mode 100644
index 0000000..81eeb29
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amomaxu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amomin_w.dump b/test/riscv-tests/rv32ua-p-amomin_w.dump
new file mode 100644
index 0000000..3b553f3
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amomin_w.dump
@@ -0,0 +1,125 @@
+
+rv32ua-p-amomin_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: 80b6a72f amomin.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 05d71063 bne a4,t4,8000015c <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000eb7 lui t4,0x80000
+80000128: 00300193 li gp,3
+8000012c: 03d79863 bne a5,t4,8000015c <fail>
+
+80000130 <test_4>:
+80000130: fff00593 li a1,-1
+80000134: 0006a023 sw zero,0(a3)
+80000138: 80b6a72f amomin.w a4,a1,(a3)
+8000013c: 00000e93 li t4,0
+80000140: 00400193 li gp,4
+80000144: 01d71c63 bne a4,t4,8000015c <fail>
+
+80000148 <test_5>:
+80000148: 0006a783 lw a5,0(a3)
+8000014c: fff00e93 li t4,-1
+80000150: 00500193 li gp,5
+80000154: 01d79463 bne a5,t4,8000015c <fail>
+80000158: 00301c63 bne zero,gp,80000170 <pass>
+
+8000015c <fail>:
+8000015c: 0ff0000f fence
+80000160: 00018063 beqz gp,80000160 <fail+0x4>
+80000164: 00119193 slli gp,gp,0x1
+80000168: 0011e193 ori gp,gp,1
+8000016c: 00000073 ecall
+
+80000170 <pass>:
+80000170: 0ff0000f fence
+80000174: 00100193 li gp,1
+80000178: 00000073 ecall
+8000017c: c0001073 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amomin_w.elf b/test/riscv-tests/rv32ua-p-amomin_w.elf
new file mode 100644
index 0000000..959194f
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amomin_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amominu_w.dump b/test/riscv-tests/rv32ua-p-amominu_w.dump
new file mode 100644
index 0000000..d07572d
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amominu_w.dump
@@ -0,0 +1,125 @@
+
+rv32ua-p-amominu_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: c0b6a72f amominu.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 05d71063 bne a4,t4,8000015c <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000eb7 lui t4,0x80000
+80000128: 00300193 li gp,3
+8000012c: 03d79863 bne a5,t4,8000015c <fail>
+
+80000130 <test_4>:
+80000130: fff00593 li a1,-1
+80000134: 0006a023 sw zero,0(a3)
+80000138: c0b6a72f amominu.w a4,a1,(a3)
+8000013c: 00000e93 li t4,0
+80000140: 00400193 li gp,4
+80000144: 01d71c63 bne a4,t4,8000015c <fail>
+
+80000148 <test_5>:
+80000148: 0006a783 lw a5,0(a3)
+8000014c: 00000e93 li t4,0
+80000150: 00500193 li gp,5
+80000154: 01d79463 bne a5,t4,8000015c <fail>
+80000158: 00301c63 bne zero,gp,80000170 <pass>
+
+8000015c <fail>:
+8000015c: 0ff0000f fence
+80000160: 00018063 beqz gp,80000160 <fail+0x4>
+80000164: 00119193 slli gp,gp,0x1
+80000168: 0011e193 ori gp,gp,1
+8000016c: 00000073 ecall
+
+80000170 <pass>:
+80000170: 0ff0000f fence
+80000174: 00100193 li gp,1
+80000178: 00000073 ecall
+8000017c: c0001073 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amominu_w.elf b/test/riscv-tests/rv32ua-p-amominu_w.elf
new file mode 100644
index 0000000..c818070
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amominu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amoor_w.dump b/test/riscv-tests/rv32ua-p-amoor_w.dump
new file mode 100644
index 0000000..0fd882b
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoor_w.dump
@@ -0,0 +1,126 @@
+
+rv32ua-p-amoor_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: 40b6a72f amoor.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 03d71e63 bne a4,t4,80000158 <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000e93 li t4,-2048
+80000128: 00300193 li gp,3
+8000012c: 03d79663 bne a5,t4,80000158 <fail>
+
+80000130 <test_4>:
+80000130: 00100593 li a1,1
+80000134: 40b6a72f amoor.w a4,a1,(a3)
+80000138: 80000e93 li t4,-2048
+8000013c: 00400193 li gp,4
+80000140: 01d71c63 bne a4,t4,80000158 <fail>
+
+80000144 <test_5>:
+80000144: 0006a783 lw a5,0(a3)
+80000148: 80100e93 li t4,-2047
+8000014c: 00500193 li gp,5
+80000150: 01d79463 bne a5,t4,80000158 <fail>
+80000154: 00301c63 bne zero,gp,8000016c <pass>
+
+80000158 <fail>:
+80000158: 0ff0000f fence
+8000015c: 00018063 beqz gp,8000015c <fail+0x4>
+80000160: 00119193 slli gp,gp,0x1
+80000164: 0011e193 ori gp,gp,1
+80000168: 00000073 ecall
+
+8000016c <pass>:
+8000016c: 0ff0000f fence
+80000170: 00100193 li gp,1
+80000174: 00000073 ecall
+80000178: c0001073 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amoor_w.elf b/test/riscv-tests/rv32ua-p-amoor_w.elf
new file mode 100644
index 0000000..b62c0e8
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amoswap_w.dump b/test/riscv-tests/rv32ua-p-amoswap_w.dump
new file mode 100644
index 0000000..0a9b354
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoswap_w.dump
@@ -0,0 +1,126 @@
+
+rv32ua-p-amoswap_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: 08b6a72f amoswap.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 03d71e63 bne a4,t4,80000158 <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000e93 li t4,-2048
+80000128: 00300193 li gp,3
+8000012c: 03d79663 bne a5,t4,80000158 <fail>
+
+80000130 <test_4>:
+80000130: 800005b7 lui a1,0x80000
+80000134: 08b6a72f amoswap.w a4,a1,(a3)
+80000138: 80000e93 li t4,-2048
+8000013c: 00400193 li gp,4
+80000140: 01d71c63 bne a4,t4,80000158 <fail>
+
+80000144 <test_5>:
+80000144: 0006a783 lw a5,0(a3)
+80000148: 80000eb7 lui t4,0x80000
+8000014c: 00500193 li gp,5
+80000150: 01d79463 bne a5,t4,80000158 <fail>
+80000154: 00301c63 bne zero,gp,8000016c <pass>
+
+80000158 <fail>:
+80000158: 0ff0000f fence
+8000015c: 00018063 beqz gp,8000015c <fail+0x4>
+80000160: 00119193 slli gp,gp,0x1
+80000164: 0011e193 ori gp,gp,1
+80000168: 00000073 ecall
+
+8000016c <pass>:
+8000016c: 0ff0000f fence
+80000170: 00100193 li gp,1
+80000174: 00000073 ecall
+80000178: c0001073 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amoswap_w.elf b/test/riscv-tests/rv32ua-p-amoswap_w.elf
new file mode 100644
index 0000000..3094b78
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoswap_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-amoxor_w.dump b/test/riscv-tests/rv32ua-p-amoxor_w.dump
new file mode 100644
index 0000000..a80465c
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoxor_w.dump
@@ -0,0 +1,154 @@
+
+rv32ua-p-amoxor_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 80000537 lui a0,0x80000
+80000100: 80000593 li a1,-2048
+80000104: 00002697 auipc a3,0x2
+80000108: efc68693 addi a3,a3,-260 # 80002000 <begin_signature>
+8000010c: 00a6a023 sw a0,0(a3)
+80000110: 20b6a72f amoxor.w a4,a1,(a3)
+80000114: 80000eb7 lui t4,0x80000
+80000118: 00200193 li gp,2
+8000011c: 05d71663 bne a4,t4,80000168 <fail>
+
+80000120 <test_3>:
+80000120: 0006a783 lw a5,0(a3)
+80000124: 80000eb7 lui t4,0x80000
+80000128: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8>
+8000012c: 00300193 li gp,3
+80000130: 03d79c63 bne a5,t4,80000168 <fail>
+
+80000134 <test_4>:
+80000134: c00005b7 lui a1,0xc0000
+80000138: 00158593 addi a1,a1,1 # c0000001 <_end+0x3fffdff9>
+8000013c: 20b6a72f amoxor.w a4,a1,(a3)
+80000140: 80000eb7 lui t4,0x80000
+80000144: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd7f8>
+80000148: 00400193 li gp,4
+8000014c: 01d71e63 bne a4,t4,80000168 <fail>
+
+80000150 <test_5>:
+80000150: 0006a783 lw a5,0(a3)
+80000154: c0000eb7 lui t4,0xc0000
+80000158: 801e8e93 addi t4,t4,-2047 # bffff801 <_end+0x3fffd7f9>
+8000015c: 00500193 li gp,5
+80000160: 01d79463 bne a5,t4,80000168 <fail>
+80000164: 00301c63 bne zero,gp,8000017c <pass>
+
+80000168 <fail>:
+80000168: 0ff0000f fence
+8000016c: 00018063 beqz gp,8000016c <fail+0x4>
+80000170: 00119193 slli gp,gp,0x1
+80000174: 0011e193 ori gp,gp,1
+80000178: 00000073 ecall
+
+8000017c <pass>:
+8000017c: 0ff0000f fence
+80000180: 00100193 li gp,1
+80000184: 00000073 ecall
+80000188: c0001073 unimp
+8000018c: 0000 unimp
+8000018e: 0000 unimp
+80000190: 0000 unimp
+80000192: 0000 unimp
+80000194: 0000 unimp
+80000196: 0000 unimp
+80000198: 0000 unimp
+8000019a: 0000 unimp
+8000019c: 0000 unimp
+8000019e: 0000 unimp
+800001a0: 0000 unimp
+800001a2: 0000 unimp
+800001a4: 0000 unimp
+800001a6: 0000 unimp
+800001a8: 0000 unimp
+800001aa: 0000 unimp
+800001ac: 0000 unimp
+800001ae: 0000 unimp
+800001b0: 0000 unimp
+800001b2: 0000 unimp
+800001b4: 0000 unimp
+800001b6: 0000 unimp
+800001b8: 0000 unimp
+800001ba: 0000 unimp
+800001bc: 0000 unimp
+800001be: 0000 unimp
+800001c0: 0000 unimp
+800001c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-amoxor_w.elf b/test/riscv-tests/rv32ua-p-amoxor_w.elf
new file mode 100644
index 0000000..a893682
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-amoxor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-p-lrsc.dump b/test/riscv-tests/rv32ua-p-lrsc.dump
new file mode 100644
index 0000000..1cc4576
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-lrsc.dump
@@ -0,0 +1,711 @@
+
+rv32ua-p-lrsc: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <reset_vector+0xb0>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+800000fc: 00002517 auipc a0,0x2
+80000100: f0450513 addi a0,a0,-252 # 80002000 <begin_signature>
+80000104: 00100593 li a1,1
+80000108: 00b5262f amoadd.w a2,a1,(a0)
+8000010c: 00100693 li a3,1
+80000110: fed67ee3 bleu a3,a2,8000010c <reset_vector+0xc0>
+80000114: 00052583 lw a1,0(a0)
+80000118: fed5eee3 bltu a1,a3,80000114 <reset_vector+0xc8>
+
+8000011c <test_2>:
+8000011c: 00002517 auipc a0,0x2
+80000120: eec50513 addi a0,a0,-276 # 80002008 <foo>
+80000124: deadc7b7 lui a5,0xdeadc
+80000128: eef78793 addi a5,a5,-273 # deadbeef <_end+0x5ead9adf>
+8000012c: 18f5272f sc.w a4,a5,(a0)
+80000130: 00100e93 li t4,1
+80000134: 00200193 li gp,2
+80000138: 0dd71663 bne a4,t4,80000204 <fail>
+
+8000013c <test_3>:
+8000013c: 00002717 auipc a4,0x2
+80000140: ecc72703 lw a4,-308(a4) # 80002008 <foo>
+80000144: 00000e93 li t4,0
+80000148: 00300193 li gp,3
+8000014c: 0bd71c63 bne a4,t4,80000204 <fail>
+
+80000150 <test_4>:
+80000150: 00002517 auipc a0,0x2
+80000154: eb850513 addi a0,a0,-328 # 80002008 <foo>
+80000158: 00002597 auipc a1,0x2
+8000015c: 2b458593 addi a1,a1,692 # 8000240c <fooTest3>
+80000160: 1005a5af lr.w a1,(a1)
+80000164: 18b5272f sc.w a4,a1,(a0)
+80000168: 00100e93 li t4,1
+8000016c: 00400193 li gp,4
+80000170: 09d71a63 bne a4,t4,80000204 <fail>
+80000174: 00002517 auipc a0,0x2
+80000178: e9450513 addi a0,a0,-364 # 80002008 <foo>
+8000017c: 40000593 li a1,1024
+80000180: 00160613 addi a2,a2,1
+80000184: 1005272f lr.w a4,(a0)
+80000188: 00c70733 add a4,a4,a2
+8000018c: 18e5272f sc.w a4,a4,(a0)
+80000190: fe071ae3 bnez a4,80000184 <test_4+0x34>
+80000194: fff58593 addi a1,a1,-1
+80000198: fe0596e3 bnez a1,80000184 <test_4+0x34>
+8000019c: 00002517 auipc a0,0x2
+800001a0: e6850513 addi a0,a0,-408 # 80002004 <barrier>
+800001a4: 00100593 li a1,1
+800001a8: 00b5202f amoadd.w zero,a1,(a0)
+800001ac: 00052583 lw a1,0(a0)
+800001b0: fed5cee3 blt a1,a3,800001ac <test_4+0x5c>
+800001b4: 0ff0000f fence
+
+800001b8 <test_5>:
+800001b8: 00002517 auipc a0,0x2
+800001bc: e5052503 lw a0,-432(a0) # 80002008 <foo>
+800001c0: 00969593 slli a1,a3,0x9
+800001c4: 40b50533 sub a0,a0,a1
+800001c8: fff68693 addi a3,a3,-1
+800001cc: fe06dce3 bgez a3,800001c4 <test_5+0xc>
+800001d0: 00000e93 li t4,0
+800001d4: 00500193 li gp,5
+800001d8: 03d51663 bne a0,t4,80000204 <fail>
+
+800001dc <test_6>:
+800001dc: 00002517 auipc a0,0x2
+800001e0: e2c50513 addi a0,a0,-468 # 80002008 <foo>
+800001e4: 100525af lr.w a1,(a0)
+800001e8: 180525af sc.w a1,zero,(a0)
+800001ec: fe059ce3 bnez a1,800001e4 <test_6+0x8>
+800001f0: 180525af sc.w a1,zero,(a0)
+800001f4: 00100e93 li t4,1
+800001f8: 00600193 li gp,6
+800001fc: 01d59463 bne a1,t4,80000204 <fail>
+80000200: 00301c63 bne zero,gp,80000218 <pass>
+
+80000204 <fail>:
+80000204: 0ff0000f fence
+80000208: 00018063 beqz gp,80000208 <fail+0x4>
+8000020c: 00119193 slli gp,gp,0x1
+80000210: 0011e193 ori gp,gp,1
+80000214: 00000073 ecall
+
+80000218 <pass>:
+80000218: 0ff0000f fence
+8000021c: 00100193 li gp,1
+80000220: 00000073 ecall
+80000224: c0001073 unimp
+80000228: 0000 unimp
+8000022a: 0000 unimp
+8000022c: 0000 unimp
+8000022e: 0000 unimp
+80000230: 0000 unimp
+80000232: 0000 unimp
+80000234: 0000 unimp
+80000236: 0000 unimp
+80000238: 0000 unimp
+8000023a: 0000 unimp
+8000023c: 0000 unimp
+8000023e: 0000 unimp
+80000240: 0000 unimp
+80000242: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 0000 unimp
+80002002: 0000 unimp
+
+80002004 <barrier>:
+80002004: 0000 unimp
+80002006: 0000 unimp
+
+80002008 <foo>:
+80002008: 0000 unimp
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
+80002010: 0000 unimp
+80002012: 0000 unimp
+80002014: 0000 unimp
+80002016: 0000 unimp
+80002018: 0000 unimp
+8000201a: 0000 unimp
+8000201c: 0000 unimp
+8000201e: 0000 unimp
+80002020: 0000 unimp
+80002022: 0000 unimp
+80002024: 0000 unimp
+80002026: 0000 unimp
+80002028: 0000 unimp
+8000202a: 0000 unimp
+8000202c: 0000 unimp
+8000202e: 0000 unimp
+80002030: 0000 unimp
+80002032: 0000 unimp
+80002034: 0000 unimp
+80002036: 0000 unimp
+80002038: 0000 unimp
+8000203a: 0000 unimp
+8000203c: 0000 unimp
+8000203e: 0000 unimp
+80002040: 0000 unimp
+80002042: 0000 unimp
+80002044: 0000 unimp
+80002046: 0000 unimp
+80002048: 0000 unimp
+8000204a: 0000 unimp
+8000204c: 0000 unimp
+8000204e: 0000 unimp
+80002050: 0000 unimp
+80002052: 0000 unimp
+80002054: 0000 unimp
+80002056: 0000 unimp
+80002058: 0000 unimp
+8000205a: 0000 unimp
+8000205c: 0000 unimp
+8000205e: 0000 unimp
+80002060: 0000 unimp
+80002062: 0000 unimp
+80002064: 0000 unimp
+80002066: 0000 unimp
+80002068: 0000 unimp
+8000206a: 0000 unimp
+8000206c: 0000 unimp
+8000206e: 0000 unimp
+80002070: 0000 unimp
+80002072: 0000 unimp
+80002074: 0000 unimp
+80002076: 0000 unimp
+80002078: 0000 unimp
+8000207a: 0000 unimp
+8000207c: 0000 unimp
+8000207e: 0000 unimp
+80002080: 0000 unimp
+80002082: 0000 unimp
+80002084: 0000 unimp
+80002086: 0000 unimp
+80002088: 0000 unimp
+8000208a: 0000 unimp
+8000208c: 0000 unimp
+8000208e: 0000 unimp
+80002090: 0000 unimp
+80002092: 0000 unimp
+80002094: 0000 unimp
+80002096: 0000 unimp
+80002098: 0000 unimp
+8000209a: 0000 unimp
+8000209c: 0000 unimp
+8000209e: 0000 unimp
+800020a0: 0000 unimp
+800020a2: 0000 unimp
+800020a4: 0000 unimp
+800020a6: 0000 unimp
+800020a8: 0000 unimp
+800020aa: 0000 unimp
+800020ac: 0000 unimp
+800020ae: 0000 unimp
+800020b0: 0000 unimp
+800020b2: 0000 unimp
+800020b4: 0000 unimp
+800020b6: 0000 unimp
+800020b8: 0000 unimp
+800020ba: 0000 unimp
+800020bc: 0000 unimp
+800020be: 0000 unimp
+800020c0: 0000 unimp
+800020c2: 0000 unimp
+800020c4: 0000 unimp
+800020c6: 0000 unimp
+800020c8: 0000 unimp
+800020ca: 0000 unimp
+800020cc: 0000 unimp
+800020ce: 0000 unimp
+800020d0: 0000 unimp
+800020d2: 0000 unimp
+800020d4: 0000 unimp
+800020d6: 0000 unimp
+800020d8: 0000 unimp
+800020da: 0000 unimp
+800020dc: 0000 unimp
+800020de: 0000 unimp
+800020e0: 0000 unimp
+800020e2: 0000 unimp
+800020e4: 0000 unimp
+800020e6: 0000 unimp
+800020e8: 0000 unimp
+800020ea: 0000 unimp
+800020ec: 0000 unimp
+800020ee: 0000 unimp
+800020f0: 0000 unimp
+800020f2: 0000 unimp
+800020f4: 0000 unimp
+800020f6: 0000 unimp
+800020f8: 0000 unimp
+800020fa: 0000 unimp
+800020fc: 0000 unimp
+800020fe: 0000 unimp
+80002100: 0000 unimp
+80002102: 0000 unimp
+80002104: 0000 unimp
+80002106: 0000 unimp
+80002108: 0000 unimp
+8000210a: 0000 unimp
+8000210c: 0000 unimp
+8000210e: 0000 unimp
+80002110: 0000 unimp
+80002112: 0000 unimp
+80002114: 0000 unimp
+80002116: 0000 unimp
+80002118: 0000 unimp
+8000211a: 0000 unimp
+8000211c: 0000 unimp
+8000211e: 0000 unimp
+80002120: 0000 unimp
+80002122: 0000 unimp
+80002124: 0000 unimp
+80002126: 0000 unimp
+80002128: 0000 unimp
+8000212a: 0000 unimp
+8000212c: 0000 unimp
+8000212e: 0000 unimp
+80002130: 0000 unimp
+80002132: 0000 unimp
+80002134: 0000 unimp
+80002136: 0000 unimp
+80002138: 0000 unimp
+8000213a: 0000 unimp
+8000213c: 0000 unimp
+8000213e: 0000 unimp
+80002140: 0000 unimp
+80002142: 0000 unimp
+80002144: 0000 unimp
+80002146: 0000 unimp
+80002148: 0000 unimp
+8000214a: 0000 unimp
+8000214c: 0000 unimp
+8000214e: 0000 unimp
+80002150: 0000 unimp
+80002152: 0000 unimp
+80002154: 0000 unimp
+80002156: 0000 unimp
+80002158: 0000 unimp
+8000215a: 0000 unimp
+8000215c: 0000 unimp
+8000215e: 0000 unimp
+80002160: 0000 unimp
+80002162: 0000 unimp
+80002164: 0000 unimp
+80002166: 0000 unimp
+80002168: 0000 unimp
+8000216a: 0000 unimp
+8000216c: 0000 unimp
+8000216e: 0000 unimp
+80002170: 0000 unimp
+80002172: 0000 unimp
+80002174: 0000 unimp
+80002176: 0000 unimp
+80002178: 0000 unimp
+8000217a: 0000 unimp
+8000217c: 0000 unimp
+8000217e: 0000 unimp
+80002180: 0000 unimp
+80002182: 0000 unimp
+80002184: 0000 unimp
+80002186: 0000 unimp
+80002188: 0000 unimp
+8000218a: 0000 unimp
+8000218c: 0000 unimp
+8000218e: 0000 unimp
+80002190: 0000 unimp
+80002192: 0000 unimp
+80002194: 0000 unimp
+80002196: 0000 unimp
+80002198: 0000 unimp
+8000219a: 0000 unimp
+8000219c: 0000 unimp
+8000219e: 0000 unimp
+800021a0: 0000 unimp
+800021a2: 0000 unimp
+800021a4: 0000 unimp
+800021a6: 0000 unimp
+800021a8: 0000 unimp
+800021aa: 0000 unimp
+800021ac: 0000 unimp
+800021ae: 0000 unimp
+800021b0: 0000 unimp
+800021b2: 0000 unimp
+800021b4: 0000 unimp
+800021b6: 0000 unimp
+800021b8: 0000 unimp
+800021ba: 0000 unimp
+800021bc: 0000 unimp
+800021be: 0000 unimp
+800021c0: 0000 unimp
+800021c2: 0000 unimp
+800021c4: 0000 unimp
+800021c6: 0000 unimp
+800021c8: 0000 unimp
+800021ca: 0000 unimp
+800021cc: 0000 unimp
+800021ce: 0000 unimp
+800021d0: 0000 unimp
+800021d2: 0000 unimp
+800021d4: 0000 unimp
+800021d6: 0000 unimp
+800021d8: 0000 unimp
+800021da: 0000 unimp
+800021dc: 0000 unimp
+800021de: 0000 unimp
+800021e0: 0000 unimp
+800021e2: 0000 unimp
+800021e4: 0000 unimp
+800021e6: 0000 unimp
+800021e8: 0000 unimp
+800021ea: 0000 unimp
+800021ec: 0000 unimp
+800021ee: 0000 unimp
+800021f0: 0000 unimp
+800021f2: 0000 unimp
+800021f4: 0000 unimp
+800021f6: 0000 unimp
+800021f8: 0000 unimp
+800021fa: 0000 unimp
+800021fc: 0000 unimp
+800021fe: 0000 unimp
+80002200: 0000 unimp
+80002202: 0000 unimp
+80002204: 0000 unimp
+80002206: 0000 unimp
+80002208: 0000 unimp
+8000220a: 0000 unimp
+8000220c: 0000 unimp
+8000220e: 0000 unimp
+80002210: 0000 unimp
+80002212: 0000 unimp
+80002214: 0000 unimp
+80002216: 0000 unimp
+80002218: 0000 unimp
+8000221a: 0000 unimp
+8000221c: 0000 unimp
+8000221e: 0000 unimp
+80002220: 0000 unimp
+80002222: 0000 unimp
+80002224: 0000 unimp
+80002226: 0000 unimp
+80002228: 0000 unimp
+8000222a: 0000 unimp
+8000222c: 0000 unimp
+8000222e: 0000 unimp
+80002230: 0000 unimp
+80002232: 0000 unimp
+80002234: 0000 unimp
+80002236: 0000 unimp
+80002238: 0000 unimp
+8000223a: 0000 unimp
+8000223c: 0000 unimp
+8000223e: 0000 unimp
+80002240: 0000 unimp
+80002242: 0000 unimp
+80002244: 0000 unimp
+80002246: 0000 unimp
+80002248: 0000 unimp
+8000224a: 0000 unimp
+8000224c: 0000 unimp
+8000224e: 0000 unimp
+80002250: 0000 unimp
+80002252: 0000 unimp
+80002254: 0000 unimp
+80002256: 0000 unimp
+80002258: 0000 unimp
+8000225a: 0000 unimp
+8000225c: 0000 unimp
+8000225e: 0000 unimp
+80002260: 0000 unimp
+80002262: 0000 unimp
+80002264: 0000 unimp
+80002266: 0000 unimp
+80002268: 0000 unimp
+8000226a: 0000 unimp
+8000226c: 0000 unimp
+8000226e: 0000 unimp
+80002270: 0000 unimp
+80002272: 0000 unimp
+80002274: 0000 unimp
+80002276: 0000 unimp
+80002278: 0000 unimp
+8000227a: 0000 unimp
+8000227c: 0000 unimp
+8000227e: 0000 unimp
+80002280: 0000 unimp
+80002282: 0000 unimp
+80002284: 0000 unimp
+80002286: 0000 unimp
+80002288: 0000 unimp
+8000228a: 0000 unimp
+8000228c: 0000 unimp
+8000228e: 0000 unimp
+80002290: 0000 unimp
+80002292: 0000 unimp
+80002294: 0000 unimp
+80002296: 0000 unimp
+80002298: 0000 unimp
+8000229a: 0000 unimp
+8000229c: 0000 unimp
+8000229e: 0000 unimp
+800022a0: 0000 unimp
+800022a2: 0000 unimp
+800022a4: 0000 unimp
+800022a6: 0000 unimp
+800022a8: 0000 unimp
+800022aa: 0000 unimp
+800022ac: 0000 unimp
+800022ae: 0000 unimp
+800022b0: 0000 unimp
+800022b2: 0000 unimp
+800022b4: 0000 unimp
+800022b6: 0000 unimp
+800022b8: 0000 unimp
+800022ba: 0000 unimp
+800022bc: 0000 unimp
+800022be: 0000 unimp
+800022c0: 0000 unimp
+800022c2: 0000 unimp
+800022c4: 0000 unimp
+800022c6: 0000 unimp
+800022c8: 0000 unimp
+800022ca: 0000 unimp
+800022cc: 0000 unimp
+800022ce: 0000 unimp
+800022d0: 0000 unimp
+800022d2: 0000 unimp
+800022d4: 0000 unimp
+800022d6: 0000 unimp
+800022d8: 0000 unimp
+800022da: 0000 unimp
+800022dc: 0000 unimp
+800022de: 0000 unimp
+800022e0: 0000 unimp
+800022e2: 0000 unimp
+800022e4: 0000 unimp
+800022e6: 0000 unimp
+800022e8: 0000 unimp
+800022ea: 0000 unimp
+800022ec: 0000 unimp
+800022ee: 0000 unimp
+800022f0: 0000 unimp
+800022f2: 0000 unimp
+800022f4: 0000 unimp
+800022f6: 0000 unimp
+800022f8: 0000 unimp
+800022fa: 0000 unimp
+800022fc: 0000 unimp
+800022fe: 0000 unimp
+80002300: 0000 unimp
+80002302: 0000 unimp
+80002304: 0000 unimp
+80002306: 0000 unimp
+80002308: 0000 unimp
+8000230a: 0000 unimp
+8000230c: 0000 unimp
+8000230e: 0000 unimp
+80002310: 0000 unimp
+80002312: 0000 unimp
+80002314: 0000 unimp
+80002316: 0000 unimp
+80002318: 0000 unimp
+8000231a: 0000 unimp
+8000231c: 0000 unimp
+8000231e: 0000 unimp
+80002320: 0000 unimp
+80002322: 0000 unimp
+80002324: 0000 unimp
+80002326: 0000 unimp
+80002328: 0000 unimp
+8000232a: 0000 unimp
+8000232c: 0000 unimp
+8000232e: 0000 unimp
+80002330: 0000 unimp
+80002332: 0000 unimp
+80002334: 0000 unimp
+80002336: 0000 unimp
+80002338: 0000 unimp
+8000233a: 0000 unimp
+8000233c: 0000 unimp
+8000233e: 0000 unimp
+80002340: 0000 unimp
+80002342: 0000 unimp
+80002344: 0000 unimp
+80002346: 0000 unimp
+80002348: 0000 unimp
+8000234a: 0000 unimp
+8000234c: 0000 unimp
+8000234e: 0000 unimp
+80002350: 0000 unimp
+80002352: 0000 unimp
+80002354: 0000 unimp
+80002356: 0000 unimp
+80002358: 0000 unimp
+8000235a: 0000 unimp
+8000235c: 0000 unimp
+8000235e: 0000 unimp
+80002360: 0000 unimp
+80002362: 0000 unimp
+80002364: 0000 unimp
+80002366: 0000 unimp
+80002368: 0000 unimp
+8000236a: 0000 unimp
+8000236c: 0000 unimp
+8000236e: 0000 unimp
+80002370: 0000 unimp
+80002372: 0000 unimp
+80002374: 0000 unimp
+80002376: 0000 unimp
+80002378: 0000 unimp
+8000237a: 0000 unimp
+8000237c: 0000 unimp
+8000237e: 0000 unimp
+80002380: 0000 unimp
+80002382: 0000 unimp
+80002384: 0000 unimp
+80002386: 0000 unimp
+80002388: 0000 unimp
+8000238a: 0000 unimp
+8000238c: 0000 unimp
+8000238e: 0000 unimp
+80002390: 0000 unimp
+80002392: 0000 unimp
+80002394: 0000 unimp
+80002396: 0000 unimp
+80002398: 0000 unimp
+8000239a: 0000 unimp
+8000239c: 0000 unimp
+8000239e: 0000 unimp
+800023a0: 0000 unimp
+800023a2: 0000 unimp
+800023a4: 0000 unimp
+800023a6: 0000 unimp
+800023a8: 0000 unimp
+800023aa: 0000 unimp
+800023ac: 0000 unimp
+800023ae: 0000 unimp
+800023b0: 0000 unimp
+800023b2: 0000 unimp
+800023b4: 0000 unimp
+800023b6: 0000 unimp
+800023b8: 0000 unimp
+800023ba: 0000 unimp
+800023bc: 0000 unimp
+800023be: 0000 unimp
+800023c0: 0000 unimp
+800023c2: 0000 unimp
+800023c4: 0000 unimp
+800023c6: 0000 unimp
+800023c8: 0000 unimp
+800023ca: 0000 unimp
+800023cc: 0000 unimp
+800023ce: 0000 unimp
+800023d0: 0000 unimp
+800023d2: 0000 unimp
+800023d4: 0000 unimp
+800023d6: 0000 unimp
+800023d8: 0000 unimp
+800023da: 0000 unimp
+800023dc: 0000 unimp
+800023de: 0000 unimp
+800023e0: 0000 unimp
+800023e2: 0000 unimp
+800023e4: 0000 unimp
+800023e6: 0000 unimp
+800023e8: 0000 unimp
+800023ea: 0000 unimp
+800023ec: 0000 unimp
+800023ee: 0000 unimp
+800023f0: 0000 unimp
+800023f2: 0000 unimp
+800023f4: 0000 unimp
+800023f6: 0000 unimp
+800023f8: 0000 unimp
+800023fa: 0000 unimp
+800023fc: 0000 unimp
+800023fe: 0000 unimp
+80002400: 0000 unimp
+80002402: 0000 unimp
+80002404: 0000 unimp
+80002406: 0000 unimp
+80002408: 0000 unimp
+8000240a: 0000 unimp
+
+8000240c <fooTest3>:
+8000240c: 0000 unimp
+8000240e: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-p-lrsc.elf b/test/riscv-tests/rv32ua-p-lrsc.elf
new file mode 100644
index 0000000..4f0e3ed
--- /dev/null
+++ b/test/riscv-tests/rv32ua-p-lrsc.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amoadd_w.dump b/test/riscv-tests/rv32ua-v-amoadd_w.dump
new file mode 100644
index 0000000..b1aa9d0
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoadd_w.dump
@@ -0,0 +1,941 @@
+
+rv32ua-v-amoadd_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79858593 addi a1,a1,1944 # 80002c60 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7b458593 addi a1,a1,1972 # 80002cec <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 76058593 addi a1,a1,1888 # 80002d04 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69458593 addi a1,a1,1684 # 80002ca4 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68458593 addi a1,a1,1668 # 80002dcc <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5ec58593 addi a1,a1,1516 # 80002da8 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e860613 addi a2,a2,1256 # 80002df8 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f860613 addi a2,a2,1016 # 80002d74 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37860613 addi a2,a2,888 # 80002d40 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01600793 li a5,22
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 074ab7b7 lui a5,0x74ab
+80002b9c: 00080637 lui a2,0x80
+80002ba0: aa678793 addi a5,a5,-1370 # 74aaaa6 <_start-0x78b5555a>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: 00b6a72f amoadd.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 05d71263 bne a4,t4,80002c44 <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000eb7 lui t4,0x80000
+80002c0c: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408>
+80002c10: 00300193 li gp,3
+80002c14: 03d79863 bne a5,t4,80002c44 <fail>
+
+80002c18 <test_4>:
+80002c18: 800005b7 lui a1,0x80000
+80002c1c: 00b6a72f amoadd.w a4,a1,(a3)
+80002c20: 80000eb7 lui t4,0x80000
+80002c24: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408>
+80002c28: 00400193 li gp,4
+80002c2c: 01d71c63 bne a4,t4,80002c44 <fail>
+
+80002c30 <test_5>:
+80002c30: 0006a783 lw a5,0(a3)
+80002c34: 80000e93 li t4,-2048
+80002c38: 00500193 li gp,5
+80002c3c: 01d79463 bne a5,t4,80002c44 <fail>
+80002c40: 00301a63 bne zero,gp,80002c54 <pass>
+
+80002c44 <fail>:
+80002c44: 00119513 slli a0,gp,0x1
+80002c48: 00050063 beqz a0,80002c48 <fail+0x4>
+80002c4c: 00156513 ori a0,a0,1
+80002c50: 00000073 ecall
+
+80002c54 <pass>:
+80002c54: 00100513 li a0,1
+80002c58: 00000073 ecall
+80002c5c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amoadd_w.elf b/test/riscv-tests/rv32ua-v-amoadd_w.elf
new file mode 100644
index 0000000..6b8ed69
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoadd_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amoand_w.dump b/test/riscv-tests/rv32ua-v-amoand_w.dump
new file mode 100644
index 0000000..c5d7a24
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoand_w.dump
@@ -0,0 +1,939 @@
+
+rv32ua-v-amoand_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79058593 addi a1,a1,1936 # 80002c58 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7ac58593 addi a1,a1,1964 # 80002ce4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75858593 addi a1,a1,1880 # 80002cfc <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 68c58593 addi a1,a1,1676 # 80002c9c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 67c58593 addi a1,a1,1660 # 80002dc4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e458593 addi a1,a1,1508 # 80002da0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e060613 addi a2,a2,1248 # 80002df0 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f060613 addi a2,a2,1008 # 80002d6c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37060613 addi a2,a2,880 # 80002d38 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 02200793 li a5,34
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0a54c7b7 lui a5,0xa54c
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 2ea78793 addi a5,a5,746 # a54c2ea <_start-0x75ab3d16>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: 60b6a72f amoand.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 03d71e63 bne a4,t4,80002c3c <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000eb7 lui t4,0x80000
+80002c0c: 00300193 li gp,3
+80002c10: 03d79663 bne a5,t4,80002c3c <fail>
+
+80002c14 <test_4>:
+80002c14: 800005b7 lui a1,0x80000
+80002c18: 60b6a72f amoand.w a4,a1,(a3)
+80002c1c: 80000eb7 lui t4,0x80000
+80002c20: 00400193 li gp,4
+80002c24: 01d71c63 bne a4,t4,80002c3c <fail>
+
+80002c28 <test_5>:
+80002c28: 0006a783 lw a5,0(a3)
+80002c2c: 80000eb7 lui t4,0x80000
+80002c30: 00500193 li gp,5
+80002c34: 01d79463 bne a5,t4,80002c3c <fail>
+80002c38: 00301a63 bne zero,gp,80002c4c <pass>
+
+80002c3c <fail>:
+80002c3c: 00119513 slli a0,gp,0x1
+80002c40: 00050063 beqz a0,80002c40 <fail+0x4>
+80002c44: 00156513 ori a0,a0,1
+80002c48: 00000073 ecall
+
+80002c4c <pass>:
+80002c4c: 00100513 li a0,1
+80002c50: 00000073 ecall
+80002c54: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amoand_w.elf b/test/riscv-tests/rv32ua-v-amoand_w.elf
new file mode 100644
index 0000000..65c734f
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoand_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amomax_w.dump b/test/riscv-tests/rv32ua-v-amomax_w.dump
new file mode 100644
index 0000000..101edff
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amomax_w.dump
@@ -0,0 +1,940 @@
+
+rv32ua-v-amomax_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79458593 addi a1,a1,1940 # 80002c5c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75c58593 addi a1,a1,1884 # 80002d00 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69058593 addi a1,a1,1680 # 80002ca0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68058593 addi a1,a1,1664 # 80002dc8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e858593 addi a1,a1,1512 # 80002da4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e460613 addi a2,a2,1252 # 80002df4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f460613 addi a2,a2,1012 # 80002d70 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37460613 addi a2,a2,884 # 80002d3c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03900793 li a5,57
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0a3d67b7 lui a5,0xa3d6
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 9e278793 addi a5,a5,-1566 # a3d59e2 <_start-0x75c2a61e>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: a0b6a72f amomax.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 05d71063 bne a4,t4,80002c40 <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000e93 li t4,-2048
+80002c0c: 00300193 li gp,3
+80002c10: 03d79863 bne a5,t4,80002c40 <fail>
+
+80002c14 <test_4>:
+80002c14: 00100593 li a1,1
+80002c18: 0006a023 sw zero,0(a3)
+80002c1c: a0b6a72f amomax.w a4,a1,(a3)
+80002c20: 00000e93 li t4,0
+80002c24: 00400193 li gp,4
+80002c28: 01d71c63 bne a4,t4,80002c40 <fail>
+
+80002c2c <test_5>:
+80002c2c: 0006a783 lw a5,0(a3)
+80002c30: 00100e93 li t4,1
+80002c34: 00500193 li gp,5
+80002c38: 01d79463 bne a5,t4,80002c40 <fail>
+80002c3c: 00301a63 bne zero,gp,80002c50 <pass>
+
+80002c40 <fail>:
+80002c40: 00119513 slli a0,gp,0x1
+80002c44: 00050063 beqz a0,80002c44 <fail+0x4>
+80002c48: 00156513 ori a0,a0,1
+80002c4c: 00000073 ecall
+
+80002c50 <pass>:
+80002c50: 00100513 li a0,1
+80002c54: 00000073 ecall
+80002c58: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amomax_w.elf b/test/riscv-tests/rv32ua-v-amomax_w.elf
new file mode 100644
index 0000000..ef5118e
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amomax_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amomaxu_w.dump b/test/riscv-tests/rv32ua-v-amomaxu_w.dump
new file mode 100644
index 0000000..3a91210
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amomaxu_w.dump
@@ -0,0 +1,940 @@
+
+rv32ua-v-amomaxu_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79458593 addi a1,a1,1940 # 80002c5c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75c58593 addi a1,a1,1884 # 80002d00 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69058593 addi a1,a1,1680 # 80002ca0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68058593 addi a1,a1,1664 # 80002dc8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e858593 addi a1,a1,1512 # 80002da4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e460613 addi a2,a2,1252 # 80002df4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f460613 addi a2,a2,1012 # 80002d70 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37460613 addi a2,a2,884 # 80002d3c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00400793 li a5,4
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0ff5b7b7 lui a5,0xff5b
+80002b9c: 00080637 lui a2,0x80
+80002ba0: d2678793 addi a5,a5,-730 # ff5ad26 <_start-0x700a52da>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: e0b6a72f amomaxu.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 05d71063 bne a4,t4,80002c40 <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000e93 li t4,-2048
+80002c0c: 00300193 li gp,3
+80002c10: 03d79863 bne a5,t4,80002c40 <fail>
+
+80002c14 <test_4>:
+80002c14: fff00593 li a1,-1
+80002c18: 0006a023 sw zero,0(a3)
+80002c1c: e0b6a72f amomaxu.w a4,a1,(a3)
+80002c20: 00000e93 li t4,0
+80002c24: 00400193 li gp,4
+80002c28: 01d71c63 bne a4,t4,80002c40 <fail>
+
+80002c2c <test_5>:
+80002c2c: 0006a783 lw a5,0(a3)
+80002c30: fff00e93 li t4,-1
+80002c34: 00500193 li gp,5
+80002c38: 01d79463 bne a5,t4,80002c40 <fail>
+80002c3c: 00301a63 bne zero,gp,80002c50 <pass>
+
+80002c40 <fail>:
+80002c40: 00119513 slli a0,gp,0x1
+80002c44: 00050063 beqz a0,80002c44 <fail+0x4>
+80002c48: 00156513 ori a0,a0,1
+80002c4c: 00000073 ecall
+
+80002c50 <pass>:
+80002c50: 00100513 li a0,1
+80002c54: 00000073 ecall
+80002c58: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amomaxu_w.elf b/test/riscv-tests/rv32ua-v-amomaxu_w.elf
new file mode 100644
index 0000000..7f5aecc
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amomaxu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amomin_w.dump b/test/riscv-tests/rv32ua-v-amomin_w.dump
new file mode 100644
index 0000000..19d2927
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amomin_w.dump
@@ -0,0 +1,940 @@
+
+rv32ua-v-amomin_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79458593 addi a1,a1,1940 # 80002c5c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75c58593 addi a1,a1,1884 # 80002d00 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69058593 addi a1,a1,1680 # 80002ca0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68058593 addi a1,a1,1664 # 80002dc8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e858593 addi a1,a1,1512 # 80002da4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e460613 addi a2,a2,1252 # 80002df4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f460613 addi a2,a2,1012 # 80002d70 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37460613 addi a2,a2,884 # 80002d3c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03e00793 li a5,62
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 004777b7 lui a5,0x477
+80002b9c: 00080637 lui a2,0x80
+80002ba0: fb678793 addi a5,a5,-74 # 476fb6 <_start-0x7fb8904a>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: 80b6a72f amomin.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 05d71063 bne a4,t4,80002c40 <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000eb7 lui t4,0x80000
+80002c0c: 00300193 li gp,3
+80002c10: 03d79863 bne a5,t4,80002c40 <fail>
+
+80002c14 <test_4>:
+80002c14: fff00593 li a1,-1
+80002c18: 0006a023 sw zero,0(a3)
+80002c1c: 80b6a72f amomin.w a4,a1,(a3)
+80002c20: 00000e93 li t4,0
+80002c24: 00400193 li gp,4
+80002c28: 01d71c63 bne a4,t4,80002c40 <fail>
+
+80002c2c <test_5>:
+80002c2c: 0006a783 lw a5,0(a3)
+80002c30: fff00e93 li t4,-1
+80002c34: 00500193 li gp,5
+80002c38: 01d79463 bne a5,t4,80002c40 <fail>
+80002c3c: 00301a63 bne zero,gp,80002c50 <pass>
+
+80002c40 <fail>:
+80002c40: 00119513 slli a0,gp,0x1
+80002c44: 00050063 beqz a0,80002c44 <fail+0x4>
+80002c48: 00156513 ori a0,a0,1
+80002c4c: 00000073 ecall
+
+80002c50 <pass>:
+80002c50: 00100513 li a0,1
+80002c54: 00000073 ecall
+80002c58: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amomin_w.elf b/test/riscv-tests/rv32ua-v-amomin_w.elf
new file mode 100644
index 0000000..c20cc10
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amomin_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amominu_w.dump b/test/riscv-tests/rv32ua-v-amominu_w.dump
new file mode 100644
index 0000000..fd6db12
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amominu_w.dump
@@ -0,0 +1,940 @@
+
+rv32ua-v-amominu_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79458593 addi a1,a1,1940 # 80002c5c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75c58593 addi a1,a1,1884 # 80002d00 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69058593 addi a1,a1,1680 # 80002ca0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68058593 addi a1,a1,1664 # 80002dc8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e858593 addi a1,a1,1512 # 80002da4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e460613 addi a2,a2,1252 # 80002df4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f460613 addi a2,a2,1012 # 80002d70 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37460613 addi a2,a2,884 # 80002d3c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00c00793 li a5,12
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 03fa07b7 lui a5,0x3fa0
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 22078793 addi a5,a5,544 # 3fa0220 <_start-0x7c05fde0>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: c0b6a72f amominu.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 05d71063 bne a4,t4,80002c40 <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000eb7 lui t4,0x80000
+80002c0c: 00300193 li gp,3
+80002c10: 03d79863 bne a5,t4,80002c40 <fail>
+
+80002c14 <test_4>:
+80002c14: fff00593 li a1,-1
+80002c18: 0006a023 sw zero,0(a3)
+80002c1c: c0b6a72f amominu.w a4,a1,(a3)
+80002c20: 00000e93 li t4,0
+80002c24: 00400193 li gp,4
+80002c28: 01d71c63 bne a4,t4,80002c40 <fail>
+
+80002c2c <test_5>:
+80002c2c: 0006a783 lw a5,0(a3)
+80002c30: 00000e93 li t4,0
+80002c34: 00500193 li gp,5
+80002c38: 01d79463 bne a5,t4,80002c40 <fail>
+80002c3c: 00301a63 bne zero,gp,80002c50 <pass>
+
+80002c40 <fail>:
+80002c40: 00119513 slli a0,gp,0x1
+80002c44: 00050063 beqz a0,80002c44 <fail+0x4>
+80002c48: 00156513 ori a0,a0,1
+80002c4c: 00000073 ecall
+
+80002c50 <pass>:
+80002c50: 00100513 li a0,1
+80002c54: 00000073 ecall
+80002c58: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amominu_w.elf b/test/riscv-tests/rv32ua-v-amominu_w.elf
new file mode 100644
index 0000000..c9cd3b1
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amominu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amoor_w.dump b/test/riscv-tests/rv32ua-v-amoor_w.dump
new file mode 100644
index 0000000..9fc9adb
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoor_w.dump
@@ -0,0 +1,939 @@
+
+rv32ua-v-amoor_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79058593 addi a1,a1,1936 # 80002c58 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7ac58593 addi a1,a1,1964 # 80002ce4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75858593 addi a1,a1,1880 # 80002cfc <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 68c58593 addi a1,a1,1676 # 80002c9c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 67c58593 addi a1,a1,1660 # 80002dc4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e458593 addi a1,a1,1508 # 80002da0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e060613 addi a2,a2,1248 # 80002df0 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f060613 addi a2,a2,1008 # 80002d6c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37060613 addi a2,a2,880 # 80002d38 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00e00793 li a5,14
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 05ac37b7 lui a5,0x5ac3
+80002b9c: 00080637 lui a2,0x80
+80002ba0: c2978793 addi a5,a5,-983 # 5ac2c29 <_start-0x7a53d3d7>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: 40b6a72f amoor.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 03d71e63 bne a4,t4,80002c3c <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000e93 li t4,-2048
+80002c0c: 00300193 li gp,3
+80002c10: 03d79663 bne a5,t4,80002c3c <fail>
+
+80002c14 <test_4>:
+80002c14: 00100593 li a1,1
+80002c18: 40b6a72f amoor.w a4,a1,(a3)
+80002c1c: 80000e93 li t4,-2048
+80002c20: 00400193 li gp,4
+80002c24: 01d71c63 bne a4,t4,80002c3c <fail>
+
+80002c28 <test_5>:
+80002c28: 0006a783 lw a5,0(a3)
+80002c2c: 80100e93 li t4,-2047
+80002c30: 00500193 li gp,5
+80002c34: 01d79463 bne a5,t4,80002c3c <fail>
+80002c38: 00301a63 bne zero,gp,80002c4c <pass>
+
+80002c3c <fail>:
+80002c3c: 00119513 slli a0,gp,0x1
+80002c40: 00050063 beqz a0,80002c40 <fail+0x4>
+80002c44: 00156513 ori a0,a0,1
+80002c48: 00000073 ecall
+
+80002c4c <pass>:
+80002c4c: 00100513 li a0,1
+80002c50: 00000073 ecall
+80002c54: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amoor_w.elf b/test/riscv-tests/rv32ua-v-amoor_w.elf
new file mode 100644
index 0000000..eaa507c
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amoswap_w.dump b/test/riscv-tests/rv32ua-v-amoswap_w.dump
new file mode 100644
index 0000000..9544c6d
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoswap_w.dump
@@ -0,0 +1,939 @@
+
+rv32ua-v-amoswap_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79058593 addi a1,a1,1936 # 80002c58 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7ac58593 addi a1,a1,1964 # 80002ce4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75858593 addi a1,a1,1880 # 80002cfc <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 68c58593 addi a1,a1,1676 # 80002c9c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 67c58593 addi a1,a1,1660 # 80002dc4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e458593 addi a1,a1,1508 # 80002da0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e060613 addi a2,a2,1248 # 80002df0 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f060613 addi a2,a2,1008 # 80002d6c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37060613 addi a2,a2,880 # 80002d38 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 02b00793 li a5,43
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 042307b7 lui a5,0x4230
+80002b9c: 00080637 lui a2,0x80
+80002ba0: bbf78793 addi a5,a5,-1089 # 422fbbf <_start-0x7bdd0441>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: 08b6a72f amoswap.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 03d71e63 bne a4,t4,80002c3c <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000e93 li t4,-2048
+80002c0c: 00300193 li gp,3
+80002c10: 03d79663 bne a5,t4,80002c3c <fail>
+
+80002c14 <test_4>:
+80002c14: 800005b7 lui a1,0x80000
+80002c18: 08b6a72f amoswap.w a4,a1,(a3)
+80002c1c: 80000e93 li t4,-2048
+80002c20: 00400193 li gp,4
+80002c24: 01d71c63 bne a4,t4,80002c3c <fail>
+
+80002c28 <test_5>:
+80002c28: 0006a783 lw a5,0(a3)
+80002c2c: 80000eb7 lui t4,0x80000
+80002c30: 00500193 li gp,5
+80002c34: 01d79463 bne a5,t4,80002c3c <fail>
+80002c38: 00301a63 bne zero,gp,80002c4c <pass>
+
+80002c3c <fail>:
+80002c3c: 00119513 slli a0,gp,0x1
+80002c40: 00050063 beqz a0,80002c40 <fail+0x4>
+80002c44: 00156513 ori a0,a0,1
+80002c48: 00000073 ecall
+
+80002c4c <pass>:
+80002c4c: 00100513 li a0,1
+80002c50: 00000073 ecall
+80002c54: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amoswap_w.elf b/test/riscv-tests/rv32ua-v-amoswap_w.elf
new file mode 100644
index 0000000..60bc0f9
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoswap_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-amoxor_w.dump b/test/riscv-tests/rv32ua-v-amoxor_w.dump
new file mode 100644
index 0000000..84c62a1
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoxor_w.dump
@@ -0,0 +1,943 @@
+
+rv32ua-v-amoxor_w: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 7a058593 addi a1,a1,1952 # 80002c68 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7bc58593 addi a1,a1,1980 # 80002cf4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 76858593 addi a1,a1,1896 # 80002d0c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69c58593 addi a1,a1,1692 # 80002cac <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68c58593 addi a1,a1,1676 # 80002dd4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5f458593 addi a1,a1,1524 # 80002db0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4f060613 addi a2,a2,1264 # 80002e00 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 40060613 addi a2,a2,1024 # 80002d7c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 38060613 addi a2,a2,896 # 80002d48 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03500793 li a5,53
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0146a7b7 lui a5,0x146a
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 03778793 addi a5,a5,55 # 146a037 <_start-0x7eb95fc9>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 80000537 lui a0,0x80000
+80002be4: 80000593 li a1,-2048
+80002be8: 00000697 auipc a3,0x0
+80002bec: 41868693 addi a3,a3,1048 # 80003000 <begin_signature>
+80002bf0: 00a6a023 sw a0,0(a3)
+80002bf4: 20b6a72f amoxor.w a4,a1,(a3)
+80002bf8: 80000eb7 lui t4,0x80000
+80002bfc: 00200193 li gp,2
+80002c00: 05d71663 bne a4,t4,80002c4c <fail>
+
+80002c04 <test_3>:
+80002c04: 0006a783 lw a5,0(a3)
+80002c08: 80000eb7 lui t4,0x80000
+80002c0c: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408>
+80002c10: 00300193 li gp,3
+80002c14: 03d79c63 bne a5,t4,80002c4c <fail>
+
+80002c18 <test_4>:
+80002c18: c00005b7 lui a1,0xc0000
+80002c1c: 00158593 addi a1,a1,1 # c0000001 <_end+0x3fff9c09>
+80002c20: 20b6a72f amoxor.w a4,a1,(a3)
+80002c24: 80000eb7 lui t4,0x80000
+80002c28: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408>
+80002c2c: 00400193 li gp,4
+80002c30: 01d71e63 bne a4,t4,80002c4c <fail>
+
+80002c34 <test_5>:
+80002c34: 0006a783 lw a5,0(a3)
+80002c38: c0000eb7 lui t4,0xc0000
+80002c3c: 801e8e93 addi t4,t4,-2047 # bffff801 <_end+0x3fff9409>
+80002c40: 00500193 li gp,5
+80002c44: 01d79463 bne a5,t4,80002c4c <fail>
+80002c48: 00301a63 bne zero,gp,80002c5c <pass>
+
+80002c4c <fail>:
+80002c4c: 00119513 slli a0,gp,0x1
+80002c50: 00050063 beqz a0,80002c50 <fail+0x4>
+80002c54: 00156513 ori a0,a0,1
+80002c58: 00000073 ecall
+
+80002c5c <pass>:
+80002c5c: 00100513 li a0,1
+80002c60: 00000073 ecall
+80002c64: c0001073 unimp
diff --git a/test/riscv-tests/rv32ua-v-amoxor_w.elf b/test/riscv-tests/rv32ua-v-amoxor_w.elf
new file mode 100644
index 0000000..a00a81c
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-amoxor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ua-v-lrsc.dump b/test/riscv-tests/rv32ua-v-lrsc.dump
new file mode 100644
index 0000000..857b65f
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-lrsc.dump
@@ -0,0 +1,1516 @@
+
+rv32ua-v-lrsc: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 83c58593 addi a1,a1,-1988 # 80002d04 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 85858593 addi a1,a1,-1960 # 80002d90 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 80458593 addi a1,a1,-2044 # 80002da8 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 73858593 addi a1,a1,1848 # 80002d48 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 72858593 addi a1,a1,1832 # 80002e70 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 69058593 addi a1,a1,1680 # 80002e4c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 58c60613 addi a2,a2,1420 # 80002e9c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 49c60613 addi a2,a2,1180 # 80002e18 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 41c60613 addi a2,a2,1052 # 80002de4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00500793 li a5,5
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 01a297b7 lui a5,0x1a29
+80002b9c: 00080637 lui a2,0x80
+80002ba0: cbe78793 addi a5,a5,-834 # 1a28cbe <_start-0x7e5d7342>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000517 auipc a0,0x0
+80002be4: 42050513 addi a0,a0,1056 # 80003000 <begin_signature>
+80002be8: 00100593 li a1,1
+80002bec: 00b5262f amoadd.w a2,a1,(a0)
+80002bf0: 00100693 li a3,1
+80002bf4: fed67ee3 bleu a3,a2,80002bf0 <userstart+0x10>
+80002bf8: 00052583 lw a1,0(a0)
+80002bfc: fed5eee3 bltu a1,a3,80002bf8 <userstart+0x18>
+
+80002c00 <test_2>:
+80002c00: 00000517 auipc a0,0x0
+80002c04: 40850513 addi a0,a0,1032 # 80003008 <foo>
+80002c08: deadc7b7 lui a5,0xdeadc
+80002c0c: eef78793 addi a5,a5,-273 # deadbeef <_end+0x5ead5af7>
+80002c10: 18f5272f sc.w a4,a5,(a0)
+80002c14: 00100e93 li t4,1
+80002c18: 00200193 li gp,2
+80002c1c: 0dd71663 bne a4,t4,80002ce8 <fail>
+
+80002c20 <test_3>:
+80002c20: 00000717 auipc a4,0x0
+80002c24: 3e872703 lw a4,1000(a4) # 80003008 <foo>
+80002c28: 00000e93 li t4,0
+80002c2c: 00300193 li gp,3
+80002c30: 0bd71c63 bne a4,t4,80002ce8 <fail>
+
+80002c34 <test_4>:
+80002c34: 00000517 auipc a0,0x0
+80002c38: 3d450513 addi a0,a0,980 # 80003008 <foo>
+80002c3c: 00000597 auipc a1,0x0
+80002c40: 7d058593 addi a1,a1,2000 # 8000340c <fooTest3>
+80002c44: 1005a5af lr.w a1,(a1)
+80002c48: 18b5272f sc.w a4,a1,(a0)
+80002c4c: 00100e93 li t4,1
+80002c50: 00400193 li gp,4
+80002c54: 09d71a63 bne a4,t4,80002ce8 <fail>
+80002c58: 00000517 auipc a0,0x0
+80002c5c: 3b050513 addi a0,a0,944 # 80003008 <foo>
+80002c60: 40000593 li a1,1024
+80002c64: 00160613 addi a2,a2,1
+80002c68: 1005272f lr.w a4,(a0)
+80002c6c: 00c70733 add a4,a4,a2
+80002c70: 18e5272f sc.w a4,a4,(a0)
+80002c74: fe071ae3 bnez a4,80002c68 <test_4+0x34>
+80002c78: fff58593 addi a1,a1,-1
+80002c7c: fe0596e3 bnez a1,80002c68 <test_4+0x34>
+80002c80: 00000517 auipc a0,0x0
+80002c84: 38450513 addi a0,a0,900 # 80003004 <barrier>
+80002c88: 00100593 li a1,1
+80002c8c: 00b5202f amoadd.w zero,a1,(a0)
+80002c90: 00052583 lw a1,0(a0)
+80002c94: fed5cee3 blt a1,a3,80002c90 <test_4+0x5c>
+80002c98: 0ff0000f fence
+
+80002c9c <test_5>:
+80002c9c: 00000517 auipc a0,0x0
+80002ca0: 36c52503 lw a0,876(a0) # 80003008 <foo>
+80002ca4: 00969593 slli a1,a3,0x9
+80002ca8: 40b50533 sub a0,a0,a1
+80002cac: fff68693 addi a3,a3,-1
+80002cb0: fe06dce3 bgez a3,80002ca8 <test_5+0xc>
+80002cb4: 00000e93 li t4,0
+80002cb8: 00500193 li gp,5
+80002cbc: 03d51663 bne a0,t4,80002ce8 <fail>
+
+80002cc0 <test_6>:
+80002cc0: 00000517 auipc a0,0x0
+80002cc4: 34850513 addi a0,a0,840 # 80003008 <foo>
+80002cc8: 100525af lr.w a1,(a0)
+80002ccc: 180525af sc.w a1,zero,(a0)
+80002cd0: fe059ce3 bnez a1,80002cc8 <test_6+0x8>
+80002cd4: 180525af sc.w a1,zero,(a0)
+80002cd8: 00100e93 li t4,1
+80002cdc: 00600193 li gp,6
+80002ce0: 01d59463 bne a1,t4,80002ce8 <fail>
+80002ce4: 00301a63 bne zero,gp,80002cf8 <pass>
+
+80002ce8 <fail>:
+80002ce8: 00119513 slli a0,gp,0x1
+80002cec: 00050063 beqz a0,80002cec <fail+0x4>
+80002cf0: 00156513 ori a0,a0,1
+80002cf4: 00000073 ecall
+
+80002cf8 <pass>:
+80002cf8: 00100513 li a0,1
+80002cfc: 00000073 ecall
+80002d00: c0001073 unimp
+
+Disassembly of section .data:
+
+80003000 <begin_signature>:
+80003000: 0000 unimp
+80003002: 0000 unimp
+
+80003004 <barrier>:
+80003004: 0000 unimp
+80003006: 0000 unimp
+
+80003008 <foo>:
+80003008: 0000 unimp
+8000300a: 0000 unimp
+8000300c: 0000 unimp
+8000300e: 0000 unimp
+80003010: 0000 unimp
+80003012: 0000 unimp
+80003014: 0000 unimp
+80003016: 0000 unimp
+80003018: 0000 unimp
+8000301a: 0000 unimp
+8000301c: 0000 unimp
+8000301e: 0000 unimp
+80003020: 0000 unimp
+80003022: 0000 unimp
+80003024: 0000 unimp
+80003026: 0000 unimp
+80003028: 0000 unimp
+8000302a: 0000 unimp
+8000302c: 0000 unimp
+8000302e: 0000 unimp
+80003030: 0000 unimp
+80003032: 0000 unimp
+80003034: 0000 unimp
+80003036: 0000 unimp
+80003038: 0000 unimp
+8000303a: 0000 unimp
+8000303c: 0000 unimp
+8000303e: 0000 unimp
+80003040: 0000 unimp
+80003042: 0000 unimp
+80003044: 0000 unimp
+80003046: 0000 unimp
+80003048: 0000 unimp
+8000304a: 0000 unimp
+8000304c: 0000 unimp
+8000304e: 0000 unimp
+80003050: 0000 unimp
+80003052: 0000 unimp
+80003054: 0000 unimp
+80003056: 0000 unimp
+80003058: 0000 unimp
+8000305a: 0000 unimp
+8000305c: 0000 unimp
+8000305e: 0000 unimp
+80003060: 0000 unimp
+80003062: 0000 unimp
+80003064: 0000 unimp
+80003066: 0000 unimp
+80003068: 0000 unimp
+8000306a: 0000 unimp
+8000306c: 0000 unimp
+8000306e: 0000 unimp
+80003070: 0000 unimp
+80003072: 0000 unimp
+80003074: 0000 unimp
+80003076: 0000 unimp
+80003078: 0000 unimp
+8000307a: 0000 unimp
+8000307c: 0000 unimp
+8000307e: 0000 unimp
+80003080: 0000 unimp
+80003082: 0000 unimp
+80003084: 0000 unimp
+80003086: 0000 unimp
+80003088: 0000 unimp
+8000308a: 0000 unimp
+8000308c: 0000 unimp
+8000308e: 0000 unimp
+80003090: 0000 unimp
+80003092: 0000 unimp
+80003094: 0000 unimp
+80003096: 0000 unimp
+80003098: 0000 unimp
+8000309a: 0000 unimp
+8000309c: 0000 unimp
+8000309e: 0000 unimp
+800030a0: 0000 unimp
+800030a2: 0000 unimp
+800030a4: 0000 unimp
+800030a6: 0000 unimp
+800030a8: 0000 unimp
+800030aa: 0000 unimp
+800030ac: 0000 unimp
+800030ae: 0000 unimp
+800030b0: 0000 unimp
+800030b2: 0000 unimp
+800030b4: 0000 unimp
+800030b6: 0000 unimp
+800030b8: 0000 unimp
+800030ba: 0000 unimp
+800030bc: 0000 unimp
+800030be: 0000 unimp
+800030c0: 0000 unimp
+800030c2: 0000 unimp
+800030c4: 0000 unimp
+800030c6: 0000 unimp
+800030c8: 0000 unimp
+800030ca: 0000 unimp
+800030cc: 0000 unimp
+800030ce: 0000 unimp
+800030d0: 0000 unimp
+800030d2: 0000 unimp
+800030d4: 0000 unimp
+800030d6: 0000 unimp
+800030d8: 0000 unimp
+800030da: 0000 unimp
+800030dc: 0000 unimp
+800030de: 0000 unimp
+800030e0: 0000 unimp
+800030e2: 0000 unimp
+800030e4: 0000 unimp
+800030e6: 0000 unimp
+800030e8: 0000 unimp
+800030ea: 0000 unimp
+800030ec: 0000 unimp
+800030ee: 0000 unimp
+800030f0: 0000 unimp
+800030f2: 0000 unimp
+800030f4: 0000 unimp
+800030f6: 0000 unimp
+800030f8: 0000 unimp
+800030fa: 0000 unimp
+800030fc: 0000 unimp
+800030fe: 0000 unimp
+80003100: 0000 unimp
+80003102: 0000 unimp
+80003104: 0000 unimp
+80003106: 0000 unimp
+80003108: 0000 unimp
+8000310a: 0000 unimp
+8000310c: 0000 unimp
+8000310e: 0000 unimp
+80003110: 0000 unimp
+80003112: 0000 unimp
+80003114: 0000 unimp
+80003116: 0000 unimp
+80003118: 0000 unimp
+8000311a: 0000 unimp
+8000311c: 0000 unimp
+8000311e: 0000 unimp
+80003120: 0000 unimp
+80003122: 0000 unimp
+80003124: 0000 unimp
+80003126: 0000 unimp
+80003128: 0000 unimp
+8000312a: 0000 unimp
+8000312c: 0000 unimp
+8000312e: 0000 unimp
+80003130: 0000 unimp
+80003132: 0000 unimp
+80003134: 0000 unimp
+80003136: 0000 unimp
+80003138: 0000 unimp
+8000313a: 0000 unimp
+8000313c: 0000 unimp
+8000313e: 0000 unimp
+80003140: 0000 unimp
+80003142: 0000 unimp
+80003144: 0000 unimp
+80003146: 0000 unimp
+80003148: 0000 unimp
+8000314a: 0000 unimp
+8000314c: 0000 unimp
+8000314e: 0000 unimp
+80003150: 0000 unimp
+80003152: 0000 unimp
+80003154: 0000 unimp
+80003156: 0000 unimp
+80003158: 0000 unimp
+8000315a: 0000 unimp
+8000315c: 0000 unimp
+8000315e: 0000 unimp
+80003160: 0000 unimp
+80003162: 0000 unimp
+80003164: 0000 unimp
+80003166: 0000 unimp
+80003168: 0000 unimp
+8000316a: 0000 unimp
+8000316c: 0000 unimp
+8000316e: 0000 unimp
+80003170: 0000 unimp
+80003172: 0000 unimp
+80003174: 0000 unimp
+80003176: 0000 unimp
+80003178: 0000 unimp
+8000317a: 0000 unimp
+8000317c: 0000 unimp
+8000317e: 0000 unimp
+80003180: 0000 unimp
+80003182: 0000 unimp
+80003184: 0000 unimp
+80003186: 0000 unimp
+80003188: 0000 unimp
+8000318a: 0000 unimp
+8000318c: 0000 unimp
+8000318e: 0000 unimp
+80003190: 0000 unimp
+80003192: 0000 unimp
+80003194: 0000 unimp
+80003196: 0000 unimp
+80003198: 0000 unimp
+8000319a: 0000 unimp
+8000319c: 0000 unimp
+8000319e: 0000 unimp
+800031a0: 0000 unimp
+800031a2: 0000 unimp
+800031a4: 0000 unimp
+800031a6: 0000 unimp
+800031a8: 0000 unimp
+800031aa: 0000 unimp
+800031ac: 0000 unimp
+800031ae: 0000 unimp
+800031b0: 0000 unimp
+800031b2: 0000 unimp
+800031b4: 0000 unimp
+800031b6: 0000 unimp
+800031b8: 0000 unimp
+800031ba: 0000 unimp
+800031bc: 0000 unimp
+800031be: 0000 unimp
+800031c0: 0000 unimp
+800031c2: 0000 unimp
+800031c4: 0000 unimp
+800031c6: 0000 unimp
+800031c8: 0000 unimp
+800031ca: 0000 unimp
+800031cc: 0000 unimp
+800031ce: 0000 unimp
+800031d0: 0000 unimp
+800031d2: 0000 unimp
+800031d4: 0000 unimp
+800031d6: 0000 unimp
+800031d8: 0000 unimp
+800031da: 0000 unimp
+800031dc: 0000 unimp
+800031de: 0000 unimp
+800031e0: 0000 unimp
+800031e2: 0000 unimp
+800031e4: 0000 unimp
+800031e6: 0000 unimp
+800031e8: 0000 unimp
+800031ea: 0000 unimp
+800031ec: 0000 unimp
+800031ee: 0000 unimp
+800031f0: 0000 unimp
+800031f2: 0000 unimp
+800031f4: 0000 unimp
+800031f6: 0000 unimp
+800031f8: 0000 unimp
+800031fa: 0000 unimp
+800031fc: 0000 unimp
+800031fe: 0000 unimp
+80003200: 0000 unimp
+80003202: 0000 unimp
+80003204: 0000 unimp
+80003206: 0000 unimp
+80003208: 0000 unimp
+8000320a: 0000 unimp
+8000320c: 0000 unimp
+8000320e: 0000 unimp
+80003210: 0000 unimp
+80003212: 0000 unimp
+80003214: 0000 unimp
+80003216: 0000 unimp
+80003218: 0000 unimp
+8000321a: 0000 unimp
+8000321c: 0000 unimp
+8000321e: 0000 unimp
+80003220: 0000 unimp
+80003222: 0000 unimp
+80003224: 0000 unimp
+80003226: 0000 unimp
+80003228: 0000 unimp
+8000322a: 0000 unimp
+8000322c: 0000 unimp
+8000322e: 0000 unimp
+80003230: 0000 unimp
+80003232: 0000 unimp
+80003234: 0000 unimp
+80003236: 0000 unimp
+80003238: 0000 unimp
+8000323a: 0000 unimp
+8000323c: 0000 unimp
+8000323e: 0000 unimp
+80003240: 0000 unimp
+80003242: 0000 unimp
+80003244: 0000 unimp
+80003246: 0000 unimp
+80003248: 0000 unimp
+8000324a: 0000 unimp
+8000324c: 0000 unimp
+8000324e: 0000 unimp
+80003250: 0000 unimp
+80003252: 0000 unimp
+80003254: 0000 unimp
+80003256: 0000 unimp
+80003258: 0000 unimp
+8000325a: 0000 unimp
+8000325c: 0000 unimp
+8000325e: 0000 unimp
+80003260: 0000 unimp
+80003262: 0000 unimp
+80003264: 0000 unimp
+80003266: 0000 unimp
+80003268: 0000 unimp
+8000326a: 0000 unimp
+8000326c: 0000 unimp
+8000326e: 0000 unimp
+80003270: 0000 unimp
+80003272: 0000 unimp
+80003274: 0000 unimp
+80003276: 0000 unimp
+80003278: 0000 unimp
+8000327a: 0000 unimp
+8000327c: 0000 unimp
+8000327e: 0000 unimp
+80003280: 0000 unimp
+80003282: 0000 unimp
+80003284: 0000 unimp
+80003286: 0000 unimp
+80003288: 0000 unimp
+8000328a: 0000 unimp
+8000328c: 0000 unimp
+8000328e: 0000 unimp
+80003290: 0000 unimp
+80003292: 0000 unimp
+80003294: 0000 unimp
+80003296: 0000 unimp
+80003298: 0000 unimp
+8000329a: 0000 unimp
+8000329c: 0000 unimp
+8000329e: 0000 unimp
+800032a0: 0000 unimp
+800032a2: 0000 unimp
+800032a4: 0000 unimp
+800032a6: 0000 unimp
+800032a8: 0000 unimp
+800032aa: 0000 unimp
+800032ac: 0000 unimp
+800032ae: 0000 unimp
+800032b0: 0000 unimp
+800032b2: 0000 unimp
+800032b4: 0000 unimp
+800032b6: 0000 unimp
+800032b8: 0000 unimp
+800032ba: 0000 unimp
+800032bc: 0000 unimp
+800032be: 0000 unimp
+800032c0: 0000 unimp
+800032c2: 0000 unimp
+800032c4: 0000 unimp
+800032c6: 0000 unimp
+800032c8: 0000 unimp
+800032ca: 0000 unimp
+800032cc: 0000 unimp
+800032ce: 0000 unimp
+800032d0: 0000 unimp
+800032d2: 0000 unimp
+800032d4: 0000 unimp
+800032d6: 0000 unimp
+800032d8: 0000 unimp
+800032da: 0000 unimp
+800032dc: 0000 unimp
+800032de: 0000 unimp
+800032e0: 0000 unimp
+800032e2: 0000 unimp
+800032e4: 0000 unimp
+800032e6: 0000 unimp
+800032e8: 0000 unimp
+800032ea: 0000 unimp
+800032ec: 0000 unimp
+800032ee: 0000 unimp
+800032f0: 0000 unimp
+800032f2: 0000 unimp
+800032f4: 0000 unimp
+800032f6: 0000 unimp
+800032f8: 0000 unimp
+800032fa: 0000 unimp
+800032fc: 0000 unimp
+800032fe: 0000 unimp
+80003300: 0000 unimp
+80003302: 0000 unimp
+80003304: 0000 unimp
+80003306: 0000 unimp
+80003308: 0000 unimp
+8000330a: 0000 unimp
+8000330c: 0000 unimp
+8000330e: 0000 unimp
+80003310: 0000 unimp
+80003312: 0000 unimp
+80003314: 0000 unimp
+80003316: 0000 unimp
+80003318: 0000 unimp
+8000331a: 0000 unimp
+8000331c: 0000 unimp
+8000331e: 0000 unimp
+80003320: 0000 unimp
+80003322: 0000 unimp
+80003324: 0000 unimp
+80003326: 0000 unimp
+80003328: 0000 unimp
+8000332a: 0000 unimp
+8000332c: 0000 unimp
+8000332e: 0000 unimp
+80003330: 0000 unimp
+80003332: 0000 unimp
+80003334: 0000 unimp
+80003336: 0000 unimp
+80003338: 0000 unimp
+8000333a: 0000 unimp
+8000333c: 0000 unimp
+8000333e: 0000 unimp
+80003340: 0000 unimp
+80003342: 0000 unimp
+80003344: 0000 unimp
+80003346: 0000 unimp
+80003348: 0000 unimp
+8000334a: 0000 unimp
+8000334c: 0000 unimp
+8000334e: 0000 unimp
+80003350: 0000 unimp
+80003352: 0000 unimp
+80003354: 0000 unimp
+80003356: 0000 unimp
+80003358: 0000 unimp
+8000335a: 0000 unimp
+8000335c: 0000 unimp
+8000335e: 0000 unimp
+80003360: 0000 unimp
+80003362: 0000 unimp
+80003364: 0000 unimp
+80003366: 0000 unimp
+80003368: 0000 unimp
+8000336a: 0000 unimp
+8000336c: 0000 unimp
+8000336e: 0000 unimp
+80003370: 0000 unimp
+80003372: 0000 unimp
+80003374: 0000 unimp
+80003376: 0000 unimp
+80003378: 0000 unimp
+8000337a: 0000 unimp
+8000337c: 0000 unimp
+8000337e: 0000 unimp
+80003380: 0000 unimp
+80003382: 0000 unimp
+80003384: 0000 unimp
+80003386: 0000 unimp
+80003388: 0000 unimp
+8000338a: 0000 unimp
+8000338c: 0000 unimp
+8000338e: 0000 unimp
+80003390: 0000 unimp
+80003392: 0000 unimp
+80003394: 0000 unimp
+80003396: 0000 unimp
+80003398: 0000 unimp
+8000339a: 0000 unimp
+8000339c: 0000 unimp
+8000339e: 0000 unimp
+800033a0: 0000 unimp
+800033a2: 0000 unimp
+800033a4: 0000 unimp
+800033a6: 0000 unimp
+800033a8: 0000 unimp
+800033aa: 0000 unimp
+800033ac: 0000 unimp
+800033ae: 0000 unimp
+800033b0: 0000 unimp
+800033b2: 0000 unimp
+800033b4: 0000 unimp
+800033b6: 0000 unimp
+800033b8: 0000 unimp
+800033ba: 0000 unimp
+800033bc: 0000 unimp
+800033be: 0000 unimp
+800033c0: 0000 unimp
+800033c2: 0000 unimp
+800033c4: 0000 unimp
+800033c6: 0000 unimp
+800033c8: 0000 unimp
+800033ca: 0000 unimp
+800033cc: 0000 unimp
+800033ce: 0000 unimp
+800033d0: 0000 unimp
+800033d2: 0000 unimp
+800033d4: 0000 unimp
+800033d6: 0000 unimp
+800033d8: 0000 unimp
+800033da: 0000 unimp
+800033dc: 0000 unimp
+800033de: 0000 unimp
+800033e0: 0000 unimp
+800033e2: 0000 unimp
+800033e4: 0000 unimp
+800033e6: 0000 unimp
+800033e8: 0000 unimp
+800033ea: 0000 unimp
+800033ec: 0000 unimp
+800033ee: 0000 unimp
+800033f0: 0000 unimp
+800033f2: 0000 unimp
+800033f4: 0000 unimp
+800033f6: 0000 unimp
+800033f8: 0000 unimp
+800033fa: 0000 unimp
+800033fc: 0000 unimp
+800033fe: 0000 unimp
+80003400: 0000 unimp
+80003402: 0000 unimp
+80003404: 0000 unimp
+80003406: 0000 unimp
+80003408: 0000 unimp
+8000340a: 0000 unimp
+
+8000340c <fooTest3>:
+8000340c: 0000 unimp
+8000340e: 0000 unimp
diff --git a/test/riscv-tests/rv32ua-v-lrsc.elf b/test/riscv-tests/rv32ua-v-lrsc.elf
new file mode 100644
index 0000000..c19ef2f
--- /dev/null
+++ b/test/riscv-tests/rv32ua-v-lrsc.elf
Binary files differ
diff --git a/test/riscv-tests/rv32uc-p-rvc.dump b/test/riscv-tests/rv32uc-p-rvc.dump
new file mode 100644
index 0000000..adfa4c2
--- /dev/null
+++ b/test/riscv-tests/rv32uc-p-rvc.dump
@@ -0,0 +1,4904 @@
+
+rv32uc-p-rvc: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00003f17 auipc t5,0x3
+80000044: fc3f2023 sw gp,-64(t5) # 80003000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <reset_vector+0xb0>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+800000fc: 00200193 li gp,2
+80000100: 29a00593 li a1,666
+
+80000104 <test_2>:
+80000104: 6fb0106f j 80001ffe <data+0x1ef6>
+
+80000108 <data>:
+80000108: 3210 fld fa2,32(a2)
+8000010a: 7654 flw fa3,44(a2)
+8000010c: ba98 fsd fa4,48(a3)
+8000010e: fedc fsw fa5,60(a3)
+80000110: 3210 fld fa2,32(a2)
+80000112: 7654 flw fa3,44(a2)
+80000114: ba98 fsd fa4,48(a3)
+80000116: fedc fsw fa5,60(a3)
+80000118: 00000013 nop
+8000011c: 00000013 nop
+80000120: 00000013 nop
+80000124: 00000013 nop
+80000128: 00000013 nop
+8000012c: 00000013 nop
+80000130: 00000013 nop
+80000134: 00000013 nop
+80000138: 00000013 nop
+8000013c: 00000013 nop
+80000140: 00000013 nop
+80000144: 00000013 nop
+80000148: 00000013 nop
+8000014c: 00000013 nop
+80000150: 00000013 nop
+80000154: 00000013 nop
+80000158: 00000013 nop
+8000015c: 00000013 nop
+80000160: 00000013 nop
+80000164: 00000013 nop
+80000168: 00000013 nop
+8000016c: 00000013 nop
+80000170: 00000013 nop
+80000174: 00000013 nop
+80000178: 00000013 nop
+8000017c: 00000013 nop
+80000180: 00000013 nop
+80000184: 00000013 nop
+80000188: 00000013 nop
+8000018c: 00000013 nop
+80000190: 00000013 nop
+80000194: 00000013 nop
+80000198: 00000013 nop
+8000019c: 00000013 nop
+800001a0: 00000013 nop
+800001a4: 00000013 nop
+800001a8: 00000013 nop
+800001ac: 00000013 nop
+800001b0: 00000013 nop
+800001b4: 00000013 nop
+800001b8: 00000013 nop
+800001bc: 00000013 nop
+800001c0: 00000013 nop
+800001c4: 00000013 nop
+800001c8: 00000013 nop
+800001cc: 00000013 nop
+800001d0: 00000013 nop
+800001d4: 00000013 nop
+800001d8: 00000013 nop
+800001dc: 00000013 nop
+800001e0: 00000013 nop
+800001e4: 00000013 nop
+800001e8: 00000013 nop
+800001ec: 00000013 nop
+800001f0: 00000013 nop
+800001f4: 00000013 nop
+800001f8: 00000013 nop
+800001fc: 00000013 nop
+80000200: 00000013 nop
+80000204: 00000013 nop
+80000208: 00000013 nop
+8000020c: 00000013 nop
+80000210: 00000013 nop
+80000214: 00000013 nop
+80000218: 00000013 nop
+8000021c: 00000013 nop
+80000220: 00000013 nop
+80000224: 00000013 nop
+80000228: 00000013 nop
+8000022c: 00000013 nop
+80000230: 00000013 nop
+80000234: 00000013 nop
+80000238: 00000013 nop
+8000023c: 00000013 nop
+80000240: 00000013 nop
+80000244: 00000013 nop
+80000248: 00000013 nop
+8000024c: 00000013 nop
+80000250: 00000013 nop
+80000254: 00000013 nop
+80000258: 00000013 nop
+8000025c: 00000013 nop
+80000260: 00000013 nop
+80000264: 00000013 nop
+80000268: 00000013 nop
+8000026c: 00000013 nop
+80000270: 00000013 nop
+80000274: 00000013 nop
+80000278: 00000013 nop
+8000027c: 00000013 nop
+80000280: 00000013 nop
+80000284: 00000013 nop
+80000288: 00000013 nop
+8000028c: 00000013 nop
+80000290: 00000013 nop
+80000294: 00000013 nop
+80000298: 00000013 nop
+8000029c: 00000013 nop
+800002a0: 00000013 nop
+800002a4: 00000013 nop
+800002a8: 00000013 nop
+800002ac: 00000013 nop
+800002b0: 00000013 nop
+800002b4: 00000013 nop
+800002b8: 00000013 nop
+800002bc: 00000013 nop
+800002c0: 00000013 nop
+800002c4: 00000013 nop
+800002c8: 00000013 nop
+800002cc: 00000013 nop
+800002d0: 00000013 nop
+800002d4: 00000013 nop
+800002d8: 00000013 nop
+800002dc: 00000013 nop
+800002e0: 00000013 nop
+800002e4: 00000013 nop
+800002e8: 00000013 nop
+800002ec: 00000013 nop
+800002f0: 00000013 nop
+800002f4: 00000013 nop
+800002f8: 00000013 nop
+800002fc: 00000013 nop
+80000300: 00000013 nop
+80000304: 00000013 nop
+80000308: 00000013 nop
+8000030c: 00000013 nop
+80000310: 00000013 nop
+80000314: 00000013 nop
+80000318: 00000013 nop
+8000031c: 00000013 nop
+80000320: 00000013 nop
+80000324: 00000013 nop
+80000328: 00000013 nop
+8000032c: 00000013 nop
+80000330: 00000013 nop
+80000334: 00000013 nop
+80000338: 00000013 nop
+8000033c: 00000013 nop
+80000340: 00000013 nop
+80000344: 00000013 nop
+80000348: 00000013 nop
+8000034c: 00000013 nop
+80000350: 00000013 nop
+80000354: 00000013 nop
+80000358: 00000013 nop
+8000035c: 00000013 nop
+80000360: 00000013 nop
+80000364: 00000013 nop
+80000368: 00000013 nop
+8000036c: 00000013 nop
+80000370: 00000013 nop
+80000374: 00000013 nop
+80000378: 00000013 nop
+8000037c: 00000013 nop
+80000380: 00000013 nop
+80000384: 00000013 nop
+80000388: 00000013 nop
+8000038c: 00000013 nop
+80000390: 00000013 nop
+80000394: 00000013 nop
+80000398: 00000013 nop
+8000039c: 00000013 nop
+800003a0: 00000013 nop
+800003a4: 00000013 nop
+800003a8: 00000013 nop
+800003ac: 00000013 nop
+800003b0: 00000013 nop
+800003b4: 00000013 nop
+800003b8: 00000013 nop
+800003bc: 00000013 nop
+800003c0: 00000013 nop
+800003c4: 00000013 nop
+800003c8: 00000013 nop
+800003cc: 00000013 nop
+800003d0: 00000013 nop
+800003d4: 00000013 nop
+800003d8: 00000013 nop
+800003dc: 00000013 nop
+800003e0: 00000013 nop
+800003e4: 00000013 nop
+800003e8: 00000013 nop
+800003ec: 00000013 nop
+800003f0: 00000013 nop
+800003f4: 00000013 nop
+800003f8: 00000013 nop
+800003fc: 00000013 nop
+80000400: 00000013 nop
+80000404: 00000013 nop
+80000408: 00000013 nop
+8000040c: 00000013 nop
+80000410: 00000013 nop
+80000414: 00000013 nop
+80000418: 00000013 nop
+8000041c: 00000013 nop
+80000420: 00000013 nop
+80000424: 00000013 nop
+80000428: 00000013 nop
+8000042c: 00000013 nop
+80000430: 00000013 nop
+80000434: 00000013 nop
+80000438: 00000013 nop
+8000043c: 00000013 nop
+80000440: 00000013 nop
+80000444: 00000013 nop
+80000448: 00000013 nop
+8000044c: 00000013 nop
+80000450: 00000013 nop
+80000454: 00000013 nop
+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: 00000013 nop
+800004c4: 00000013 nop
+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: 00000013 nop
+80000504: 00000013 nop
+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: 00000013 nop
+80000544: 00000013 nop
+80000548: 00000013 nop
+8000054c: 00000013 nop
+80000550: 00000013 nop
+80000554: 00000013 nop
+80000558: 00000013 nop
+8000055c: 00000013 nop
+80000560: 00000013 nop
+80000564: 00000013 nop
+80000568: 00000013 nop
+8000056c: 00000013 nop
+80000570: 00000013 nop
+80000574: 00000013 nop
+80000578: 00000013 nop
+8000057c: 00000013 nop
+80000580: 00000013 nop
+80000584: 00000013 nop
+80000588: 00000013 nop
+8000058c: 00000013 nop
+80000590: 00000013 nop
+80000594: 00000013 nop
+80000598: 00000013 nop
+8000059c: 00000013 nop
+800005a0: 00000013 nop
+800005a4: 00000013 nop
+800005a8: 00000013 nop
+800005ac: 00000013 nop
+800005b0: 00000013 nop
+800005b4: 00000013 nop
+800005b8: 00000013 nop
+800005bc: 00000013 nop
+800005c0: 00000013 nop
+800005c4: 00000013 nop
+800005c8: 00000013 nop
+800005cc: 00000013 nop
+800005d0: 00000013 nop
+800005d4: 00000013 nop
+800005d8: 00000013 nop
+800005dc: 00000013 nop
+800005e0: 00000013 nop
+800005e4: 00000013 nop
+800005e8: 00000013 nop
+800005ec: 00000013 nop
+800005f0: 00000013 nop
+800005f4: 00000013 nop
+800005f8: 00000013 nop
+800005fc: 00000013 nop
+80000600: 00000013 nop
+80000604: 00000013 nop
+80000608: 00000013 nop
+8000060c: 00000013 nop
+80000610: 00000013 nop
+80000614: 00000013 nop
+80000618: 00000013 nop
+8000061c: 00000013 nop
+80000620: 00000013 nop
+80000624: 00000013 nop
+80000628: 00000013 nop
+8000062c: 00000013 nop
+80000630: 00000013 nop
+80000634: 00000013 nop
+80000638: 00000013 nop
+8000063c: 00000013 nop
+80000640: 00000013 nop
+80000644: 00000013 nop
+80000648: 00000013 nop
+8000064c: 00000013 nop
+80000650: 00000013 nop
+80000654: 00000013 nop
+80000658: 00000013 nop
+8000065c: 00000013 nop
+80000660: 00000013 nop
+80000664: 00000013 nop
+80000668: 00000013 nop
+8000066c: 00000013 nop
+80000670: 00000013 nop
+80000674: 00000013 nop
+80000678: 00000013 nop
+8000067c: 00000013 nop
+80000680: 00000013 nop
+80000684: 00000013 nop
+80000688: 00000013 nop
+8000068c: 00000013 nop
+80000690: 00000013 nop
+80000694: 00000013 nop
+80000698: 00000013 nop
+8000069c: 00000013 nop
+800006a0: 00000013 nop
+800006a4: 00000013 nop
+800006a8: 00000013 nop
+800006ac: 00000013 nop
+800006b0: 00000013 nop
+800006b4: 00000013 nop
+800006b8: 00000013 nop
+800006bc: 00000013 nop
+800006c0: 00000013 nop
+800006c4: 00000013 nop
+800006c8: 00000013 nop
+800006cc: 00000013 nop
+800006d0: 00000013 nop
+800006d4: 00000013 nop
+800006d8: 00000013 nop
+800006dc: 00000013 nop
+800006e0: 00000013 nop
+800006e4: 00000013 nop
+800006e8: 00000013 nop
+800006ec: 00000013 nop
+800006f0: 00000013 nop
+800006f4: 00000013 nop
+800006f8: 00000013 nop
+800006fc: 00000013 nop
+80000700: 00000013 nop
+80000704: 00000013 nop
+80000708: 00000013 nop
+8000070c: 00000013 nop
+80000710: 00000013 nop
+80000714: 00000013 nop
+80000718: 00000013 nop
+8000071c: 00000013 nop
+80000720: 00000013 nop
+80000724: 00000013 nop
+80000728: 00000013 nop
+8000072c: 00000013 nop
+80000730: 00000013 nop
+80000734: 00000013 nop
+80000738: 00000013 nop
+8000073c: 00000013 nop
+80000740: 00000013 nop
+80000744: 00000013 nop
+80000748: 00000013 nop
+8000074c: 00000013 nop
+80000750: 00000013 nop
+80000754: 00000013 nop
+80000758: 00000013 nop
+8000075c: 00000013 nop
+80000760: 00000013 nop
+80000764: 00000013 nop
+80000768: 00000013 nop
+8000076c: 00000013 nop
+80000770: 00000013 nop
+80000774: 00000013 nop
+80000778: 00000013 nop
+8000077c: 00000013 nop
+80000780: 00000013 nop
+80000784: 00000013 nop
+80000788: 00000013 nop
+8000078c: 00000013 nop
+80000790: 00000013 nop
+80000794: 00000013 nop
+80000798: 00000013 nop
+8000079c: 00000013 nop
+800007a0: 00000013 nop
+800007a4: 00000013 nop
+800007a8: 00000013 nop
+800007ac: 00000013 nop
+800007b0: 00000013 nop
+800007b4: 00000013 nop
+800007b8: 00000013 nop
+800007bc: 00000013 nop
+800007c0: 00000013 nop
+800007c4: 00000013 nop
+800007c8: 00000013 nop
+800007cc: 00000013 nop
+800007d0: 00000013 nop
+800007d4: 00000013 nop
+800007d8: 00000013 nop
+800007dc: 00000013 nop
+800007e0: 00000013 nop
+800007e4: 00000013 nop
+800007e8: 00000013 nop
+800007ec: 00000013 nop
+800007f0: 00000013 nop
+800007f4: 00000013 nop
+800007f8: 00000013 nop
+800007fc: 00000013 nop
+80000800: 00000013 nop
+80000804: 00000013 nop
+80000808: 00000013 nop
+8000080c: 00000013 nop
+80000810: 00000013 nop
+80000814: 00000013 nop
+80000818: 00000013 nop
+8000081c: 00000013 nop
+80000820: 00000013 nop
+80000824: 00000013 nop
+80000828: 00000013 nop
+8000082c: 00000013 nop
+80000830: 00000013 nop
+80000834: 00000013 nop
+80000838: 00000013 nop
+8000083c: 00000013 nop
+80000840: 00000013 nop
+80000844: 00000013 nop
+80000848: 00000013 nop
+8000084c: 00000013 nop
+80000850: 00000013 nop
+80000854: 00000013 nop
+80000858: 00000013 nop
+8000085c: 00000013 nop
+80000860: 00000013 nop
+80000864: 00000013 nop
+80000868: 00000013 nop
+8000086c: 00000013 nop
+80000870: 00000013 nop
+80000874: 00000013 nop
+80000878: 00000013 nop
+8000087c: 00000013 nop
+80000880: 00000013 nop
+80000884: 00000013 nop
+80000888: 00000013 nop
+8000088c: 00000013 nop
+80000890: 00000013 nop
+80000894: 00000013 nop
+80000898: 00000013 nop
+8000089c: 00000013 nop
+800008a0: 00000013 nop
+800008a4: 00000013 nop
+800008a8: 00000013 nop
+800008ac: 00000013 nop
+800008b0: 00000013 nop
+800008b4: 00000013 nop
+800008b8: 00000013 nop
+800008bc: 00000013 nop
+800008c0: 00000013 nop
+800008c4: 00000013 nop
+800008c8: 00000013 nop
+800008cc: 00000013 nop
+800008d0: 00000013 nop
+800008d4: 00000013 nop
+800008d8: 00000013 nop
+800008dc: 00000013 nop
+800008e0: 00000013 nop
+800008e4: 00000013 nop
+800008e8: 00000013 nop
+800008ec: 00000013 nop
+800008f0: 00000013 nop
+800008f4: 00000013 nop
+800008f8: 00000013 nop
+800008fc: 00000013 nop
+80000900: 00000013 nop
+80000904: 00000013 nop
+80000908: 00000013 nop
+8000090c: 00000013 nop
+80000910: 00000013 nop
+80000914: 00000013 nop
+80000918: 00000013 nop
+8000091c: 00000013 nop
+80000920: 00000013 nop
+80000924: 00000013 nop
+80000928: 00000013 nop
+8000092c: 00000013 nop
+80000930: 00000013 nop
+80000934: 00000013 nop
+80000938: 00000013 nop
+8000093c: 00000013 nop
+80000940: 00000013 nop
+80000944: 00000013 nop
+80000948: 00000013 nop
+8000094c: 00000013 nop
+80000950: 00000013 nop
+80000954: 00000013 nop
+80000958: 00000013 nop
+8000095c: 00000013 nop
+80000960: 00000013 nop
+80000964: 00000013 nop
+80000968: 00000013 nop
+8000096c: 00000013 nop
+80000970: 00000013 nop
+80000974: 00000013 nop
+80000978: 00000013 nop
+8000097c: 00000013 nop
+80000980: 00000013 nop
+80000984: 00000013 nop
+80000988: 00000013 nop
+8000098c: 00000013 nop
+80000990: 00000013 nop
+80000994: 00000013 nop
+80000998: 00000013 nop
+8000099c: 00000013 nop
+800009a0: 00000013 nop
+800009a4: 00000013 nop
+800009a8: 00000013 nop
+800009ac: 00000013 nop
+800009b0: 00000013 nop
+800009b4: 00000013 nop
+800009b8: 00000013 nop
+800009bc: 00000013 nop
+800009c0: 00000013 nop
+800009c4: 00000013 nop
+800009c8: 00000013 nop
+800009cc: 00000013 nop
+800009d0: 00000013 nop
+800009d4: 00000013 nop
+800009d8: 00000013 nop
+800009dc: 00000013 nop
+800009e0: 00000013 nop
+800009e4: 00000013 nop
+800009e8: 00000013 nop
+800009ec: 00000013 nop
+800009f0: 00000013 nop
+800009f4: 00000013 nop
+800009f8: 00000013 nop
+800009fc: 00000013 nop
+80000a00: 00000013 nop
+80000a04: 00000013 nop
+80000a08: 00000013 nop
+80000a0c: 00000013 nop
+80000a10: 00000013 nop
+80000a14: 00000013 nop
+80000a18: 00000013 nop
+80000a1c: 00000013 nop
+80000a20: 00000013 nop
+80000a24: 00000013 nop
+80000a28: 00000013 nop
+80000a2c: 00000013 nop
+80000a30: 00000013 nop
+80000a34: 00000013 nop
+80000a38: 00000013 nop
+80000a3c: 00000013 nop
+80000a40: 00000013 nop
+80000a44: 00000013 nop
+80000a48: 00000013 nop
+80000a4c: 00000013 nop
+80000a50: 00000013 nop
+80000a54: 00000013 nop
+80000a58: 00000013 nop
+80000a5c: 00000013 nop
+80000a60: 00000013 nop
+80000a64: 00000013 nop
+80000a68: 00000013 nop
+80000a6c: 00000013 nop
+80000a70: 00000013 nop
+80000a74: 00000013 nop
+80000a78: 00000013 nop
+80000a7c: 00000013 nop
+80000a80: 00000013 nop
+80000a84: 00000013 nop
+80000a88: 00000013 nop
+80000a8c: 00000013 nop
+80000a90: 00000013 nop
+80000a94: 00000013 nop
+80000a98: 00000013 nop
+80000a9c: 00000013 nop
+80000aa0: 00000013 nop
+80000aa4: 00000013 nop
+80000aa8: 00000013 nop
+80000aac: 00000013 nop
+80000ab0: 00000013 nop
+80000ab4: 00000013 nop
+80000ab8: 00000013 nop
+80000abc: 00000013 nop
+80000ac0: 00000013 nop
+80000ac4: 00000013 nop
+80000ac8: 00000013 nop
+80000acc: 00000013 nop
+80000ad0: 00000013 nop
+80000ad4: 00000013 nop
+80000ad8: 00000013 nop
+80000adc: 00000013 nop
+80000ae0: 00000013 nop
+80000ae4: 00000013 nop
+80000ae8: 00000013 nop
+80000aec: 00000013 nop
+80000af0: 00000013 nop
+80000af4: 00000013 nop
+80000af8: 00000013 nop
+80000afc: 00000013 nop
+80000b00: 00000013 nop
+80000b04: 00000013 nop
+80000b08: 00000013 nop
+80000b0c: 00000013 nop
+80000b10: 00000013 nop
+80000b14: 00000013 nop
+80000b18: 00000013 nop
+80000b1c: 00000013 nop
+80000b20: 00000013 nop
+80000b24: 00000013 nop
+80000b28: 00000013 nop
+80000b2c: 00000013 nop
+80000b30: 00000013 nop
+80000b34: 00000013 nop
+80000b38: 00000013 nop
+80000b3c: 00000013 nop
+80000b40: 00000013 nop
+80000b44: 00000013 nop
+80000b48: 00000013 nop
+80000b4c: 00000013 nop
+80000b50: 00000013 nop
+80000b54: 00000013 nop
+80000b58: 00000013 nop
+80000b5c: 00000013 nop
+80000b60: 00000013 nop
+80000b64: 00000013 nop
+80000b68: 00000013 nop
+80000b6c: 00000013 nop
+80000b70: 00000013 nop
+80000b74: 00000013 nop
+80000b78: 00000013 nop
+80000b7c: 00000013 nop
+80000b80: 00000013 nop
+80000b84: 00000013 nop
+80000b88: 00000013 nop
+80000b8c: 00000013 nop
+80000b90: 00000013 nop
+80000b94: 00000013 nop
+80000b98: 00000013 nop
+80000b9c: 00000013 nop
+80000ba0: 00000013 nop
+80000ba4: 00000013 nop
+80000ba8: 00000013 nop
+80000bac: 00000013 nop
+80000bb0: 00000013 nop
+80000bb4: 00000013 nop
+80000bb8: 00000013 nop
+80000bbc: 00000013 nop
+80000bc0: 00000013 nop
+80000bc4: 00000013 nop
+80000bc8: 00000013 nop
+80000bcc: 00000013 nop
+80000bd0: 00000013 nop
+80000bd4: 00000013 nop
+80000bd8: 00000013 nop
+80000bdc: 00000013 nop
+80000be0: 00000013 nop
+80000be4: 00000013 nop
+80000be8: 00000013 nop
+80000bec: 00000013 nop
+80000bf0: 00000013 nop
+80000bf4: 00000013 nop
+80000bf8: 00000013 nop
+80000bfc: 00000013 nop
+80000c00: 00000013 nop
+80000c04: 00000013 nop
+80000c08: 00000013 nop
+80000c0c: 00000013 nop
+80000c10: 00000013 nop
+80000c14: 00000013 nop
+80000c18: 00000013 nop
+80000c1c: 00000013 nop
+80000c20: 00000013 nop
+80000c24: 00000013 nop
+80000c28: 00000013 nop
+80000c2c: 00000013 nop
+80000c30: 00000013 nop
+80000c34: 00000013 nop
+80000c38: 00000013 nop
+80000c3c: 00000013 nop
+80000c40: 00000013 nop
+80000c44: 00000013 nop
+80000c48: 00000013 nop
+80000c4c: 00000013 nop
+80000c50: 00000013 nop
+80000c54: 00000013 nop
+80000c58: 00000013 nop
+80000c5c: 00000013 nop
+80000c60: 00000013 nop
+80000c64: 00000013 nop
+80000c68: 00000013 nop
+80000c6c: 00000013 nop
+80000c70: 00000013 nop
+80000c74: 00000013 nop
+80000c78: 00000013 nop
+80000c7c: 00000013 nop
+80000c80: 00000013 nop
+80000c84: 00000013 nop
+80000c88: 00000013 nop
+80000c8c: 00000013 nop
+80000c90: 00000013 nop
+80000c94: 00000013 nop
+80000c98: 00000013 nop
+80000c9c: 00000013 nop
+80000ca0: 00000013 nop
+80000ca4: 00000013 nop
+80000ca8: 00000013 nop
+80000cac: 00000013 nop
+80000cb0: 00000013 nop
+80000cb4: 00000013 nop
+80000cb8: 00000013 nop
+80000cbc: 00000013 nop
+80000cc0: 00000013 nop
+80000cc4: 00000013 nop
+80000cc8: 00000013 nop
+80000ccc: 00000013 nop
+80000cd0: 00000013 nop
+80000cd4: 00000013 nop
+80000cd8: 00000013 nop
+80000cdc: 00000013 nop
+80000ce0: 00000013 nop
+80000ce4: 00000013 nop
+80000ce8: 00000013 nop
+80000cec: 00000013 nop
+80000cf0: 00000013 nop
+80000cf4: 00000013 nop
+80000cf8: 00000013 nop
+80000cfc: 00000013 nop
+80000d00: 00000013 nop
+80000d04: 00000013 nop
+80000d08: 00000013 nop
+80000d0c: 00000013 nop
+80000d10: 00000013 nop
+80000d14: 00000013 nop
+80000d18: 00000013 nop
+80000d1c: 00000013 nop
+80000d20: 00000013 nop
+80000d24: 00000013 nop
+80000d28: 00000013 nop
+80000d2c: 00000013 nop
+80000d30: 00000013 nop
+80000d34: 00000013 nop
+80000d38: 00000013 nop
+80000d3c: 00000013 nop
+80000d40: 00000013 nop
+80000d44: 00000013 nop
+80000d48: 00000013 nop
+80000d4c: 00000013 nop
+80000d50: 00000013 nop
+80000d54: 00000013 nop
+80000d58: 00000013 nop
+80000d5c: 00000013 nop
+80000d60: 00000013 nop
+80000d64: 00000013 nop
+80000d68: 00000013 nop
+80000d6c: 00000013 nop
+80000d70: 00000013 nop
+80000d74: 00000013 nop
+80000d78: 00000013 nop
+80000d7c: 00000013 nop
+80000d80: 00000013 nop
+80000d84: 00000013 nop
+80000d88: 00000013 nop
+80000d8c: 00000013 nop
+80000d90: 00000013 nop
+80000d94: 00000013 nop
+80000d98: 00000013 nop
+80000d9c: 00000013 nop
+80000da0: 00000013 nop
+80000da4: 00000013 nop
+80000da8: 00000013 nop
+80000dac: 00000013 nop
+80000db0: 00000013 nop
+80000db4: 00000013 nop
+80000db8: 00000013 nop
+80000dbc: 00000013 nop
+80000dc0: 00000013 nop
+80000dc4: 00000013 nop
+80000dc8: 00000013 nop
+80000dcc: 00000013 nop
+80000dd0: 00000013 nop
+80000dd4: 00000013 nop
+80000dd8: 00000013 nop
+80000ddc: 00000013 nop
+80000de0: 00000013 nop
+80000de4: 00000013 nop
+80000de8: 00000013 nop
+80000dec: 00000013 nop
+80000df0: 00000013 nop
+80000df4: 00000013 nop
+80000df8: 00000013 nop
+80000dfc: 00000013 nop
+80000e00: 00000013 nop
+80000e04: 00000013 nop
+80000e08: 00000013 nop
+80000e0c: 00000013 nop
+80000e10: 00000013 nop
+80000e14: 00000013 nop
+80000e18: 00000013 nop
+80000e1c: 00000013 nop
+80000e20: 00000013 nop
+80000e24: 00000013 nop
+80000e28: 00000013 nop
+80000e2c: 00000013 nop
+80000e30: 00000013 nop
+80000e34: 00000013 nop
+80000e38: 00000013 nop
+80000e3c: 00000013 nop
+80000e40: 00000013 nop
+80000e44: 00000013 nop
+80000e48: 00000013 nop
+80000e4c: 00000013 nop
+80000e50: 00000013 nop
+80000e54: 00000013 nop
+80000e58: 00000013 nop
+80000e5c: 00000013 nop
+80000e60: 00000013 nop
+80000e64: 00000013 nop
+80000e68: 00000013 nop
+80000e6c: 00000013 nop
+80000e70: 00000013 nop
+80000e74: 00000013 nop
+80000e78: 00000013 nop
+80000e7c: 00000013 nop
+80000e80: 00000013 nop
+80000e84: 00000013 nop
+80000e88: 00000013 nop
+80000e8c: 00000013 nop
+80000e90: 00000013 nop
+80000e94: 00000013 nop
+80000e98: 00000013 nop
+80000e9c: 00000013 nop
+80000ea0: 00000013 nop
+80000ea4: 00000013 nop
+80000ea8: 00000013 nop
+80000eac: 00000013 nop
+80000eb0: 00000013 nop
+80000eb4: 00000013 nop
+80000eb8: 00000013 nop
+80000ebc: 00000013 nop
+80000ec0: 00000013 nop
+80000ec4: 00000013 nop
+80000ec8: 00000013 nop
+80000ecc: 00000013 nop
+80000ed0: 00000013 nop
+80000ed4: 00000013 nop
+80000ed8: 00000013 nop
+80000edc: 00000013 nop
+80000ee0: 00000013 nop
+80000ee4: 00000013 nop
+80000ee8: 00000013 nop
+80000eec: 00000013 nop
+80000ef0: 00000013 nop
+80000ef4: 00000013 nop
+80000ef8: 00000013 nop
+80000efc: 00000013 nop
+80000f00: 00000013 nop
+80000f04: 00000013 nop
+80000f08: 00000013 nop
+80000f0c: 00000013 nop
+80000f10: 00000013 nop
+80000f14: 00000013 nop
+80000f18: 00000013 nop
+80000f1c: 00000013 nop
+80000f20: 00000013 nop
+80000f24: 00000013 nop
+80000f28: 00000013 nop
+80000f2c: 00000013 nop
+80000f30: 00000013 nop
+80000f34: 00000013 nop
+80000f38: 00000013 nop
+80000f3c: 00000013 nop
+80000f40: 00000013 nop
+80000f44: 00000013 nop
+80000f48: 00000013 nop
+80000f4c: 00000013 nop
+80000f50: 00000013 nop
+80000f54: 00000013 nop
+80000f58: 00000013 nop
+80000f5c: 00000013 nop
+80000f60: 00000013 nop
+80000f64: 00000013 nop
+80000f68: 00000013 nop
+80000f6c: 00000013 nop
+80000f70: 00000013 nop
+80000f74: 00000013 nop
+80000f78: 00000013 nop
+80000f7c: 00000013 nop
+80000f80: 00000013 nop
+80000f84: 00000013 nop
+80000f88: 00000013 nop
+80000f8c: 00000013 nop
+80000f90: 00000013 nop
+80000f94: 00000013 nop
+80000f98: 00000013 nop
+80000f9c: 00000013 nop
+80000fa0: 00000013 nop
+80000fa4: 00000013 nop
+80000fa8: 00000013 nop
+80000fac: 00000013 nop
+80000fb0: 00000013 nop
+80000fb4: 00000013 nop
+80000fb8: 00000013 nop
+80000fbc: 00000013 nop
+80000fc0: 00000013 nop
+80000fc4: 00000013 nop
+80000fc8: 00000013 nop
+80000fcc: 00000013 nop
+80000fd0: 00000013 nop
+80000fd4: 00000013 nop
+80000fd8: 00000013 nop
+80000fdc: 00000013 nop
+80000fe0: 00000013 nop
+80000fe4: 00000013 nop
+80000fe8: 00000013 nop
+80000fec: 00000013 nop
+80000ff0: 00000013 nop
+80000ff4: 00000013 nop
+80000ff8: 00000013 nop
+80000ffc: 00000013 nop
+80001000: 0000 unimp
+80001002: 0000 unimp
+80001004: 0000 unimp
+80001006: 0000 unimp
+80001008: 0000 unimp
+8000100a: 0000 unimp
+8000100c: 0000 unimp
+8000100e: 0000 unimp
+80001010: 0000 unimp
+80001012: 0000 unimp
+80001014: 0000 unimp
+80001016: 0000 unimp
+80001018: 0000 unimp
+8000101a: 0000 unimp
+8000101c: 0000 unimp
+8000101e: 0000 unimp
+80001020: 0000 unimp
+80001022: 0000 unimp
+80001024: 0000 unimp
+80001026: 0000 unimp
+80001028: 0000 unimp
+8000102a: 0000 unimp
+8000102c: 0000 unimp
+8000102e: 0000 unimp
+80001030: 0000 unimp
+80001032: 0000 unimp
+80001034: 0000 unimp
+80001036: 0000 unimp
+80001038: 0000 unimp
+8000103a: 0000 unimp
+8000103c: 0000 unimp
+8000103e: 0000 unimp
+80001040: 0000 unimp
+80001042: 0000 unimp
+80001044: 0000 unimp
+80001046: 0000 unimp
+80001048: 0000 unimp
+8000104a: 0000 unimp
+8000104c: 0000 unimp
+8000104e: 0000 unimp
+80001050: 0000 unimp
+80001052: 0000 unimp
+80001054: 0000 unimp
+80001056: 0000 unimp
+80001058: 0000 unimp
+8000105a: 0000 unimp
+8000105c: 0000 unimp
+8000105e: 0000 unimp
+80001060: 0000 unimp
+80001062: 0000 unimp
+80001064: 0000 unimp
+80001066: 0000 unimp
+80001068: 0000 unimp
+8000106a: 0000 unimp
+8000106c: 0000 unimp
+8000106e: 0000 unimp
+80001070: 0000 unimp
+80001072: 0000 unimp
+80001074: 0000 unimp
+80001076: 0000 unimp
+80001078: 0000 unimp
+8000107a: 0000 unimp
+8000107c: 0000 unimp
+8000107e: 0000 unimp
+80001080: 0000 unimp
+80001082: 0000 unimp
+80001084: 0000 unimp
+80001086: 0000 unimp
+80001088: 0000 unimp
+8000108a: 0000 unimp
+8000108c: 0000 unimp
+8000108e: 0000 unimp
+80001090: 0000 unimp
+80001092: 0000 unimp
+80001094: 0000 unimp
+80001096: 0000 unimp
+80001098: 0000 unimp
+8000109a: 0000 unimp
+8000109c: 0000 unimp
+8000109e: 0000 unimp
+800010a0: 0000 unimp
+800010a2: 0000 unimp
+800010a4: 0000 unimp
+800010a6: 0000 unimp
+800010a8: 0000 unimp
+800010aa: 0000 unimp
+800010ac: 0000 unimp
+800010ae: 0000 unimp
+800010b0: 0000 unimp
+800010b2: 0000 unimp
+800010b4: 0000 unimp
+800010b6: 0000 unimp
+800010b8: 0000 unimp
+800010ba: 0000 unimp
+800010bc: 0000 unimp
+800010be: 0000 unimp
+800010c0: 0000 unimp
+800010c2: 0000 unimp
+800010c4: 0000 unimp
+800010c6: 0000 unimp
+800010c8: 0000 unimp
+800010ca: 0000 unimp
+800010cc: 0000 unimp
+800010ce: 0000 unimp
+800010d0: 0000 unimp
+800010d2: 0000 unimp
+800010d4: 0000 unimp
+800010d6: 0000 unimp
+800010d8: 0000 unimp
+800010da: 0000 unimp
+800010dc: 0000 unimp
+800010de: 0000 unimp
+800010e0: 0000 unimp
+800010e2: 0000 unimp
+800010e4: 0000 unimp
+800010e6: 0000 unimp
+800010e8: 0000 unimp
+800010ea: 0000 unimp
+800010ec: 0000 unimp
+800010ee: 0000 unimp
+800010f0: 0000 unimp
+800010f2: 0000 unimp
+800010f4: 0000 unimp
+800010f6: 0000 unimp
+800010f8: 0000 unimp
+800010fa: 0000 unimp
+800010fc: 0000 unimp
+800010fe: 0000 unimp
+80001100: 0000 unimp
+80001102: 0000 unimp
+80001104: 0000 unimp
+80001106: 0000 unimp
+80001108: 0000 unimp
+8000110a: 0000 unimp
+8000110c: 0000 unimp
+8000110e: 0000 unimp
+80001110: 0000 unimp
+80001112: 0000 unimp
+80001114: 0000 unimp
+80001116: 0000 unimp
+80001118: 0000 unimp
+8000111a: 0000 unimp
+8000111c: 0000 unimp
+8000111e: 0000 unimp
+80001120: 0000 unimp
+80001122: 0000 unimp
+80001124: 0000 unimp
+80001126: 0000 unimp
+80001128: 0000 unimp
+8000112a: 0000 unimp
+8000112c: 0000 unimp
+8000112e: 0000 unimp
+80001130: 0000 unimp
+80001132: 0000 unimp
+80001134: 0000 unimp
+80001136: 0000 unimp
+80001138: 0000 unimp
+8000113a: 0000 unimp
+8000113c: 0000 unimp
+8000113e: 0000 unimp
+80001140: 0000 unimp
+80001142: 0000 unimp
+80001144: 0000 unimp
+80001146: 0000 unimp
+80001148: 0000 unimp
+8000114a: 0000 unimp
+8000114c: 0000 unimp
+8000114e: 0000 unimp
+80001150: 0000 unimp
+80001152: 0000 unimp
+80001154: 0000 unimp
+80001156: 0000 unimp
+80001158: 0000 unimp
+8000115a: 0000 unimp
+8000115c: 0000 unimp
+8000115e: 0000 unimp
+80001160: 0000 unimp
+80001162: 0000 unimp
+80001164: 0000 unimp
+80001166: 0000 unimp
+80001168: 0000 unimp
+8000116a: 0000 unimp
+8000116c: 0000 unimp
+8000116e: 0000 unimp
+80001170: 0000 unimp
+80001172: 0000 unimp
+80001174: 0000 unimp
+80001176: 0000 unimp
+80001178: 0000 unimp
+8000117a: 0000 unimp
+8000117c: 0000 unimp
+8000117e: 0000 unimp
+80001180: 0000 unimp
+80001182: 0000 unimp
+80001184: 0000 unimp
+80001186: 0000 unimp
+80001188: 0000 unimp
+8000118a: 0000 unimp
+8000118c: 0000 unimp
+8000118e: 0000 unimp
+80001190: 0000 unimp
+80001192: 0000 unimp
+80001194: 0000 unimp
+80001196: 0000 unimp
+80001198: 0000 unimp
+8000119a: 0000 unimp
+8000119c: 0000 unimp
+8000119e: 0000 unimp
+800011a0: 0000 unimp
+800011a2: 0000 unimp
+800011a4: 0000 unimp
+800011a6: 0000 unimp
+800011a8: 0000 unimp
+800011aa: 0000 unimp
+800011ac: 0000 unimp
+800011ae: 0000 unimp
+800011b0: 0000 unimp
+800011b2: 0000 unimp
+800011b4: 0000 unimp
+800011b6: 0000 unimp
+800011b8: 0000 unimp
+800011ba: 0000 unimp
+800011bc: 0000 unimp
+800011be: 0000 unimp
+800011c0: 0000 unimp
+800011c2: 0000 unimp
+800011c4: 0000 unimp
+800011c6: 0000 unimp
+800011c8: 0000 unimp
+800011ca: 0000 unimp
+800011cc: 0000 unimp
+800011ce: 0000 unimp
+800011d0: 0000 unimp
+800011d2: 0000 unimp
+800011d4: 0000 unimp
+800011d6: 0000 unimp
+800011d8: 0000 unimp
+800011da: 0000 unimp
+800011dc: 0000 unimp
+800011de: 0000 unimp
+800011e0: 0000 unimp
+800011e2: 0000 unimp
+800011e4: 0000 unimp
+800011e6: 0000 unimp
+800011e8: 0000 unimp
+800011ea: 0000 unimp
+800011ec: 0000 unimp
+800011ee: 0000 unimp
+800011f0: 0000 unimp
+800011f2: 0000 unimp
+800011f4: 0000 unimp
+800011f6: 0000 unimp
+800011f8: 0000 unimp
+800011fa: 0000 unimp
+800011fc: 0000 unimp
+800011fe: 0000 unimp
+80001200: 0000 unimp
+80001202: 0000 unimp
+80001204: 0000 unimp
+80001206: 0000 unimp
+80001208: 0000 unimp
+8000120a: 0000 unimp
+8000120c: 0000 unimp
+8000120e: 0000 unimp
+80001210: 0000 unimp
+80001212: 0000 unimp
+80001214: 0000 unimp
+80001216: 0000 unimp
+80001218: 0000 unimp
+8000121a: 0000 unimp
+8000121c: 0000 unimp
+8000121e: 0000 unimp
+80001220: 0000 unimp
+80001222: 0000 unimp
+80001224: 0000 unimp
+80001226: 0000 unimp
+80001228: 0000 unimp
+8000122a: 0000 unimp
+8000122c: 0000 unimp
+8000122e: 0000 unimp
+80001230: 0000 unimp
+80001232: 0000 unimp
+80001234: 0000 unimp
+80001236: 0000 unimp
+80001238: 0000 unimp
+8000123a: 0000 unimp
+8000123c: 0000 unimp
+8000123e: 0000 unimp
+80001240: 0000 unimp
+80001242: 0000 unimp
+80001244: 0000 unimp
+80001246: 0000 unimp
+80001248: 0000 unimp
+8000124a: 0000 unimp
+8000124c: 0000 unimp
+8000124e: 0000 unimp
+80001250: 0000 unimp
+80001252: 0000 unimp
+80001254: 0000 unimp
+80001256: 0000 unimp
+80001258: 0000 unimp
+8000125a: 0000 unimp
+8000125c: 0000 unimp
+8000125e: 0000 unimp
+80001260: 0000 unimp
+80001262: 0000 unimp
+80001264: 0000 unimp
+80001266: 0000 unimp
+80001268: 0000 unimp
+8000126a: 0000 unimp
+8000126c: 0000 unimp
+8000126e: 0000 unimp
+80001270: 0000 unimp
+80001272: 0000 unimp
+80001274: 0000 unimp
+80001276: 0000 unimp
+80001278: 0000 unimp
+8000127a: 0000 unimp
+8000127c: 0000 unimp
+8000127e: 0000 unimp
+80001280: 0000 unimp
+80001282: 0000 unimp
+80001284: 0000 unimp
+80001286: 0000 unimp
+80001288: 0000 unimp
+8000128a: 0000 unimp
+8000128c: 0000 unimp
+8000128e: 0000 unimp
+80001290: 0000 unimp
+80001292: 0000 unimp
+80001294: 0000 unimp
+80001296: 0000 unimp
+80001298: 0000 unimp
+8000129a: 0000 unimp
+8000129c: 0000 unimp
+8000129e: 0000 unimp
+800012a0: 0000 unimp
+800012a2: 0000 unimp
+800012a4: 0000 unimp
+800012a6: 0000 unimp
+800012a8: 0000 unimp
+800012aa: 0000 unimp
+800012ac: 0000 unimp
+800012ae: 0000 unimp
+800012b0: 0000 unimp
+800012b2: 0000 unimp
+800012b4: 0000 unimp
+800012b6: 0000 unimp
+800012b8: 0000 unimp
+800012ba: 0000 unimp
+800012bc: 0000 unimp
+800012be: 0000 unimp
+800012c0: 0000 unimp
+800012c2: 0000 unimp
+800012c4: 0000 unimp
+800012c6: 0000 unimp
+800012c8: 0000 unimp
+800012ca: 0000 unimp
+800012cc: 0000 unimp
+800012ce: 0000 unimp
+800012d0: 0000 unimp
+800012d2: 0000 unimp
+800012d4: 0000 unimp
+800012d6: 0000 unimp
+800012d8: 0000 unimp
+800012da: 0000 unimp
+800012dc: 0000 unimp
+800012de: 0000 unimp
+800012e0: 0000 unimp
+800012e2: 0000 unimp
+800012e4: 0000 unimp
+800012e6: 0000 unimp
+800012e8: 0000 unimp
+800012ea: 0000 unimp
+800012ec: 0000 unimp
+800012ee: 0000 unimp
+800012f0: 0000 unimp
+800012f2: 0000 unimp
+800012f4: 0000 unimp
+800012f6: 0000 unimp
+800012f8: 0000 unimp
+800012fa: 0000 unimp
+800012fc: 0000 unimp
+800012fe: 0000 unimp
+80001300: 0000 unimp
+80001302: 0000 unimp
+80001304: 0000 unimp
+80001306: 0000 unimp
+80001308: 0000 unimp
+8000130a: 0000 unimp
+8000130c: 0000 unimp
+8000130e: 0000 unimp
+80001310: 0000 unimp
+80001312: 0000 unimp
+80001314: 0000 unimp
+80001316: 0000 unimp
+80001318: 0000 unimp
+8000131a: 0000 unimp
+8000131c: 0000 unimp
+8000131e: 0000 unimp
+80001320: 0000 unimp
+80001322: 0000 unimp
+80001324: 0000 unimp
+80001326: 0000 unimp
+80001328: 0000 unimp
+8000132a: 0000 unimp
+8000132c: 0000 unimp
+8000132e: 0000 unimp
+80001330: 0000 unimp
+80001332: 0000 unimp
+80001334: 0000 unimp
+80001336: 0000 unimp
+80001338: 0000 unimp
+8000133a: 0000 unimp
+8000133c: 0000 unimp
+8000133e: 0000 unimp
+80001340: 0000 unimp
+80001342: 0000 unimp
+80001344: 0000 unimp
+80001346: 0000 unimp
+80001348: 0000 unimp
+8000134a: 0000 unimp
+8000134c: 0000 unimp
+8000134e: 0000 unimp
+80001350: 0000 unimp
+80001352: 0000 unimp
+80001354: 0000 unimp
+80001356: 0000 unimp
+80001358: 0000 unimp
+8000135a: 0000 unimp
+8000135c: 0000 unimp
+8000135e: 0000 unimp
+80001360: 0000 unimp
+80001362: 0000 unimp
+80001364: 0000 unimp
+80001366: 0000 unimp
+80001368: 0000 unimp
+8000136a: 0000 unimp
+8000136c: 0000 unimp
+8000136e: 0000 unimp
+80001370: 0000 unimp
+80001372: 0000 unimp
+80001374: 0000 unimp
+80001376: 0000 unimp
+80001378: 0000 unimp
+8000137a: 0000 unimp
+8000137c: 0000 unimp
+8000137e: 0000 unimp
+80001380: 0000 unimp
+80001382: 0000 unimp
+80001384: 0000 unimp
+80001386: 0000 unimp
+80001388: 0000 unimp
+8000138a: 0000 unimp
+8000138c: 0000 unimp
+8000138e: 0000 unimp
+80001390: 0000 unimp
+80001392: 0000 unimp
+80001394: 0000 unimp
+80001396: 0000 unimp
+80001398: 0000 unimp
+8000139a: 0000 unimp
+8000139c: 0000 unimp
+8000139e: 0000 unimp
+800013a0: 0000 unimp
+800013a2: 0000 unimp
+800013a4: 0000 unimp
+800013a6: 0000 unimp
+800013a8: 0000 unimp
+800013aa: 0000 unimp
+800013ac: 0000 unimp
+800013ae: 0000 unimp
+800013b0: 0000 unimp
+800013b2: 0000 unimp
+800013b4: 0000 unimp
+800013b6: 0000 unimp
+800013b8: 0000 unimp
+800013ba: 0000 unimp
+800013bc: 0000 unimp
+800013be: 0000 unimp
+800013c0: 0000 unimp
+800013c2: 0000 unimp
+800013c4: 0000 unimp
+800013c6: 0000 unimp
+800013c8: 0000 unimp
+800013ca: 0000 unimp
+800013cc: 0000 unimp
+800013ce: 0000 unimp
+800013d0: 0000 unimp
+800013d2: 0000 unimp
+800013d4: 0000 unimp
+800013d6: 0000 unimp
+800013d8: 0000 unimp
+800013da: 0000 unimp
+800013dc: 0000 unimp
+800013de: 0000 unimp
+800013e0: 0000 unimp
+800013e2: 0000 unimp
+800013e4: 0000 unimp
+800013e6: 0000 unimp
+800013e8: 0000 unimp
+800013ea: 0000 unimp
+800013ec: 0000 unimp
+800013ee: 0000 unimp
+800013f0: 0000 unimp
+800013f2: 0000 unimp
+800013f4: 0000 unimp
+800013f6: 0000 unimp
+800013f8: 0000 unimp
+800013fa: 0000 unimp
+800013fc: 0000 unimp
+800013fe: 0000 unimp
+80001400: 0000 unimp
+80001402: 0000 unimp
+80001404: 0000 unimp
+80001406: 0000 unimp
+80001408: 0000 unimp
+8000140a: 0000 unimp
+8000140c: 0000 unimp
+8000140e: 0000 unimp
+80001410: 0000 unimp
+80001412: 0000 unimp
+80001414: 0000 unimp
+80001416: 0000 unimp
+80001418: 0000 unimp
+8000141a: 0000 unimp
+8000141c: 0000 unimp
+8000141e: 0000 unimp
+80001420: 0000 unimp
+80001422: 0000 unimp
+80001424: 0000 unimp
+80001426: 0000 unimp
+80001428: 0000 unimp
+8000142a: 0000 unimp
+8000142c: 0000 unimp
+8000142e: 0000 unimp
+80001430: 0000 unimp
+80001432: 0000 unimp
+80001434: 0000 unimp
+80001436: 0000 unimp
+80001438: 0000 unimp
+8000143a: 0000 unimp
+8000143c: 0000 unimp
+8000143e: 0000 unimp
+80001440: 0000 unimp
+80001442: 0000 unimp
+80001444: 0000 unimp
+80001446: 0000 unimp
+80001448: 0000 unimp
+8000144a: 0000 unimp
+8000144c: 0000 unimp
+8000144e: 0000 unimp
+80001450: 0000 unimp
+80001452: 0000 unimp
+80001454: 0000 unimp
+80001456: 0000 unimp
+80001458: 0000 unimp
+8000145a: 0000 unimp
+8000145c: 0000 unimp
+8000145e: 0000 unimp
+80001460: 0000 unimp
+80001462: 0000 unimp
+80001464: 0000 unimp
+80001466: 0000 unimp
+80001468: 0000 unimp
+8000146a: 0000 unimp
+8000146c: 0000 unimp
+8000146e: 0000 unimp
+80001470: 0000 unimp
+80001472: 0000 unimp
+80001474: 0000 unimp
+80001476: 0000 unimp
+80001478: 0000 unimp
+8000147a: 0000 unimp
+8000147c: 0000 unimp
+8000147e: 0000 unimp
+80001480: 0000 unimp
+80001482: 0000 unimp
+80001484: 0000 unimp
+80001486: 0000 unimp
+80001488: 0000 unimp
+8000148a: 0000 unimp
+8000148c: 0000 unimp
+8000148e: 0000 unimp
+80001490: 0000 unimp
+80001492: 0000 unimp
+80001494: 0000 unimp
+80001496: 0000 unimp
+80001498: 0000 unimp
+8000149a: 0000 unimp
+8000149c: 0000 unimp
+8000149e: 0000 unimp
+800014a0: 0000 unimp
+800014a2: 0000 unimp
+800014a4: 0000 unimp
+800014a6: 0000 unimp
+800014a8: 0000 unimp
+800014aa: 0000 unimp
+800014ac: 0000 unimp
+800014ae: 0000 unimp
+800014b0: 0000 unimp
+800014b2: 0000 unimp
+800014b4: 0000 unimp
+800014b6: 0000 unimp
+800014b8: 0000 unimp
+800014ba: 0000 unimp
+800014bc: 0000 unimp
+800014be: 0000 unimp
+800014c0: 0000 unimp
+800014c2: 0000 unimp
+800014c4: 0000 unimp
+800014c6: 0000 unimp
+800014c8: 0000 unimp
+800014ca: 0000 unimp
+800014cc: 0000 unimp
+800014ce: 0000 unimp
+800014d0: 0000 unimp
+800014d2: 0000 unimp
+800014d4: 0000 unimp
+800014d6: 0000 unimp
+800014d8: 0000 unimp
+800014da: 0000 unimp
+800014dc: 0000 unimp
+800014de: 0000 unimp
+800014e0: 0000 unimp
+800014e2: 0000 unimp
+800014e4: 0000 unimp
+800014e6: 0000 unimp
+800014e8: 0000 unimp
+800014ea: 0000 unimp
+800014ec: 0000 unimp
+800014ee: 0000 unimp
+800014f0: 0000 unimp
+800014f2: 0000 unimp
+800014f4: 0000 unimp
+800014f6: 0000 unimp
+800014f8: 0000 unimp
+800014fa: 0000 unimp
+800014fc: 0000 unimp
+800014fe: 0000 unimp
+80001500: 0000 unimp
+80001502: 0000 unimp
+80001504: 0000 unimp
+80001506: 0000 unimp
+80001508: 0000 unimp
+8000150a: 0000 unimp
+8000150c: 0000 unimp
+8000150e: 0000 unimp
+80001510: 0000 unimp
+80001512: 0000 unimp
+80001514: 0000 unimp
+80001516: 0000 unimp
+80001518: 0000 unimp
+8000151a: 0000 unimp
+8000151c: 0000 unimp
+8000151e: 0000 unimp
+80001520: 0000 unimp
+80001522: 0000 unimp
+80001524: 0000 unimp
+80001526: 0000 unimp
+80001528: 0000 unimp
+8000152a: 0000 unimp
+8000152c: 0000 unimp
+8000152e: 0000 unimp
+80001530: 0000 unimp
+80001532: 0000 unimp
+80001534: 0000 unimp
+80001536: 0000 unimp
+80001538: 0000 unimp
+8000153a: 0000 unimp
+8000153c: 0000 unimp
+8000153e: 0000 unimp
+80001540: 0000 unimp
+80001542: 0000 unimp
+80001544: 0000 unimp
+80001546: 0000 unimp
+80001548: 0000 unimp
+8000154a: 0000 unimp
+8000154c: 0000 unimp
+8000154e: 0000 unimp
+80001550: 0000 unimp
+80001552: 0000 unimp
+80001554: 0000 unimp
+80001556: 0000 unimp
+80001558: 0000 unimp
+8000155a: 0000 unimp
+8000155c: 0000 unimp
+8000155e: 0000 unimp
+80001560: 0000 unimp
+80001562: 0000 unimp
+80001564: 0000 unimp
+80001566: 0000 unimp
+80001568: 0000 unimp
+8000156a: 0000 unimp
+8000156c: 0000 unimp
+8000156e: 0000 unimp
+80001570: 0000 unimp
+80001572: 0000 unimp
+80001574: 0000 unimp
+80001576: 0000 unimp
+80001578: 0000 unimp
+8000157a: 0000 unimp
+8000157c: 0000 unimp
+8000157e: 0000 unimp
+80001580: 0000 unimp
+80001582: 0000 unimp
+80001584: 0000 unimp
+80001586: 0000 unimp
+80001588: 0000 unimp
+8000158a: 0000 unimp
+8000158c: 0000 unimp
+8000158e: 0000 unimp
+80001590: 0000 unimp
+80001592: 0000 unimp
+80001594: 0000 unimp
+80001596: 0000 unimp
+80001598: 0000 unimp
+8000159a: 0000 unimp
+8000159c: 0000 unimp
+8000159e: 0000 unimp
+800015a0: 0000 unimp
+800015a2: 0000 unimp
+800015a4: 0000 unimp
+800015a6: 0000 unimp
+800015a8: 0000 unimp
+800015aa: 0000 unimp
+800015ac: 0000 unimp
+800015ae: 0000 unimp
+800015b0: 0000 unimp
+800015b2: 0000 unimp
+800015b4: 0000 unimp
+800015b6: 0000 unimp
+800015b8: 0000 unimp
+800015ba: 0000 unimp
+800015bc: 0000 unimp
+800015be: 0000 unimp
+800015c0: 0000 unimp
+800015c2: 0000 unimp
+800015c4: 0000 unimp
+800015c6: 0000 unimp
+800015c8: 0000 unimp
+800015ca: 0000 unimp
+800015cc: 0000 unimp
+800015ce: 0000 unimp
+800015d0: 0000 unimp
+800015d2: 0000 unimp
+800015d4: 0000 unimp
+800015d6: 0000 unimp
+800015d8: 0000 unimp
+800015da: 0000 unimp
+800015dc: 0000 unimp
+800015de: 0000 unimp
+800015e0: 0000 unimp
+800015e2: 0000 unimp
+800015e4: 0000 unimp
+800015e6: 0000 unimp
+800015e8: 0000 unimp
+800015ea: 0000 unimp
+800015ec: 0000 unimp
+800015ee: 0000 unimp
+800015f0: 0000 unimp
+800015f2: 0000 unimp
+800015f4: 0000 unimp
+800015f6: 0000 unimp
+800015f8: 0000 unimp
+800015fa: 0000 unimp
+800015fc: 0000 unimp
+800015fe: 0000 unimp
+80001600: 0000 unimp
+80001602: 0000 unimp
+80001604: 0000 unimp
+80001606: 0000 unimp
+80001608: 0000 unimp
+8000160a: 0000 unimp
+8000160c: 0000 unimp
+8000160e: 0000 unimp
+80001610: 0000 unimp
+80001612: 0000 unimp
+80001614: 0000 unimp
+80001616: 0000 unimp
+80001618: 0000 unimp
+8000161a: 0000 unimp
+8000161c: 0000 unimp
+8000161e: 0000 unimp
+80001620: 0000 unimp
+80001622: 0000 unimp
+80001624: 0000 unimp
+80001626: 0000 unimp
+80001628: 0000 unimp
+8000162a: 0000 unimp
+8000162c: 0000 unimp
+8000162e: 0000 unimp
+80001630: 0000 unimp
+80001632: 0000 unimp
+80001634: 0000 unimp
+80001636: 0000 unimp
+80001638: 0000 unimp
+8000163a: 0000 unimp
+8000163c: 0000 unimp
+8000163e: 0000 unimp
+80001640: 0000 unimp
+80001642: 0000 unimp
+80001644: 0000 unimp
+80001646: 0000 unimp
+80001648: 0000 unimp
+8000164a: 0000 unimp
+8000164c: 0000 unimp
+8000164e: 0000 unimp
+80001650: 0000 unimp
+80001652: 0000 unimp
+80001654: 0000 unimp
+80001656: 0000 unimp
+80001658: 0000 unimp
+8000165a: 0000 unimp
+8000165c: 0000 unimp
+8000165e: 0000 unimp
+80001660: 0000 unimp
+80001662: 0000 unimp
+80001664: 0000 unimp
+80001666: 0000 unimp
+80001668: 0000 unimp
+8000166a: 0000 unimp
+8000166c: 0000 unimp
+8000166e: 0000 unimp
+80001670: 0000 unimp
+80001672: 0000 unimp
+80001674: 0000 unimp
+80001676: 0000 unimp
+80001678: 0000 unimp
+8000167a: 0000 unimp
+8000167c: 0000 unimp
+8000167e: 0000 unimp
+80001680: 0000 unimp
+80001682: 0000 unimp
+80001684: 0000 unimp
+80001686: 0000 unimp
+80001688: 0000 unimp
+8000168a: 0000 unimp
+8000168c: 0000 unimp
+8000168e: 0000 unimp
+80001690: 0000 unimp
+80001692: 0000 unimp
+80001694: 0000 unimp
+80001696: 0000 unimp
+80001698: 0000 unimp
+8000169a: 0000 unimp
+8000169c: 0000 unimp
+8000169e: 0000 unimp
+800016a0: 0000 unimp
+800016a2: 0000 unimp
+800016a4: 0000 unimp
+800016a6: 0000 unimp
+800016a8: 0000 unimp
+800016aa: 0000 unimp
+800016ac: 0000 unimp
+800016ae: 0000 unimp
+800016b0: 0000 unimp
+800016b2: 0000 unimp
+800016b4: 0000 unimp
+800016b6: 0000 unimp
+800016b8: 0000 unimp
+800016ba: 0000 unimp
+800016bc: 0000 unimp
+800016be: 0000 unimp
+800016c0: 0000 unimp
+800016c2: 0000 unimp
+800016c4: 0000 unimp
+800016c6: 0000 unimp
+800016c8: 0000 unimp
+800016ca: 0000 unimp
+800016cc: 0000 unimp
+800016ce: 0000 unimp
+800016d0: 0000 unimp
+800016d2: 0000 unimp
+800016d4: 0000 unimp
+800016d6: 0000 unimp
+800016d8: 0000 unimp
+800016da: 0000 unimp
+800016dc: 0000 unimp
+800016de: 0000 unimp
+800016e0: 0000 unimp
+800016e2: 0000 unimp
+800016e4: 0000 unimp
+800016e6: 0000 unimp
+800016e8: 0000 unimp
+800016ea: 0000 unimp
+800016ec: 0000 unimp
+800016ee: 0000 unimp
+800016f0: 0000 unimp
+800016f2: 0000 unimp
+800016f4: 0000 unimp
+800016f6: 0000 unimp
+800016f8: 0000 unimp
+800016fa: 0000 unimp
+800016fc: 0000 unimp
+800016fe: 0000 unimp
+80001700: 0000 unimp
+80001702: 0000 unimp
+80001704: 0000 unimp
+80001706: 0000 unimp
+80001708: 0000 unimp
+8000170a: 0000 unimp
+8000170c: 0000 unimp
+8000170e: 0000 unimp
+80001710: 0000 unimp
+80001712: 0000 unimp
+80001714: 0000 unimp
+80001716: 0000 unimp
+80001718: 0000 unimp
+8000171a: 0000 unimp
+8000171c: 0000 unimp
+8000171e: 0000 unimp
+80001720: 0000 unimp
+80001722: 0000 unimp
+80001724: 0000 unimp
+80001726: 0000 unimp
+80001728: 0000 unimp
+8000172a: 0000 unimp
+8000172c: 0000 unimp
+8000172e: 0000 unimp
+80001730: 0000 unimp
+80001732: 0000 unimp
+80001734: 0000 unimp
+80001736: 0000 unimp
+80001738: 0000 unimp
+8000173a: 0000 unimp
+8000173c: 0000 unimp
+8000173e: 0000 unimp
+80001740: 0000 unimp
+80001742: 0000 unimp
+80001744: 0000 unimp
+80001746: 0000 unimp
+80001748: 0000 unimp
+8000174a: 0000 unimp
+8000174c: 0000 unimp
+8000174e: 0000 unimp
+80001750: 0000 unimp
+80001752: 0000 unimp
+80001754: 0000 unimp
+80001756: 0000 unimp
+80001758: 0000 unimp
+8000175a: 0000 unimp
+8000175c: 0000 unimp
+8000175e: 0000 unimp
+80001760: 0000 unimp
+80001762: 0000 unimp
+80001764: 0000 unimp
+80001766: 0000 unimp
+80001768: 0000 unimp
+8000176a: 0000 unimp
+8000176c: 0000 unimp
+8000176e: 0000 unimp
+80001770: 0000 unimp
+80001772: 0000 unimp
+80001774: 0000 unimp
+80001776: 0000 unimp
+80001778: 0000 unimp
+8000177a: 0000 unimp
+8000177c: 0000 unimp
+8000177e: 0000 unimp
+80001780: 0000 unimp
+80001782: 0000 unimp
+80001784: 0000 unimp
+80001786: 0000 unimp
+80001788: 0000 unimp
+8000178a: 0000 unimp
+8000178c: 0000 unimp
+8000178e: 0000 unimp
+80001790: 0000 unimp
+80001792: 0000 unimp
+80001794: 0000 unimp
+80001796: 0000 unimp
+80001798: 0000 unimp
+8000179a: 0000 unimp
+8000179c: 0000 unimp
+8000179e: 0000 unimp
+800017a0: 0000 unimp
+800017a2: 0000 unimp
+800017a4: 0000 unimp
+800017a6: 0000 unimp
+800017a8: 0000 unimp
+800017aa: 0000 unimp
+800017ac: 0000 unimp
+800017ae: 0000 unimp
+800017b0: 0000 unimp
+800017b2: 0000 unimp
+800017b4: 0000 unimp
+800017b6: 0000 unimp
+800017b8: 0000 unimp
+800017ba: 0000 unimp
+800017bc: 0000 unimp
+800017be: 0000 unimp
+800017c0: 0000 unimp
+800017c2: 0000 unimp
+800017c4: 0000 unimp
+800017c6: 0000 unimp
+800017c8: 0000 unimp
+800017ca: 0000 unimp
+800017cc: 0000 unimp
+800017ce: 0000 unimp
+800017d0: 0000 unimp
+800017d2: 0000 unimp
+800017d4: 0000 unimp
+800017d6: 0000 unimp
+800017d8: 0000 unimp
+800017da: 0000 unimp
+800017dc: 0000 unimp
+800017de: 0000 unimp
+800017e0: 0000 unimp
+800017e2: 0000 unimp
+800017e4: 0000 unimp
+800017e6: 0000 unimp
+800017e8: 0000 unimp
+800017ea: 0000 unimp
+800017ec: 0000 unimp
+800017ee: 0000 unimp
+800017f0: 0000 unimp
+800017f2: 0000 unimp
+800017f4: 0000 unimp
+800017f6: 0000 unimp
+800017f8: 0000 unimp
+800017fa: 0000 unimp
+800017fc: 0000 unimp
+800017fe: 0000 unimp
+80001800: 0000 unimp
+80001802: 0000 unimp
+80001804: 0000 unimp
+80001806: 0000 unimp
+80001808: 0000 unimp
+8000180a: 0000 unimp
+8000180c: 0000 unimp
+8000180e: 0000 unimp
+80001810: 0000 unimp
+80001812: 0000 unimp
+80001814: 0000 unimp
+80001816: 0000 unimp
+80001818: 0000 unimp
+8000181a: 0000 unimp
+8000181c: 0000 unimp
+8000181e: 0000 unimp
+80001820: 0000 unimp
+80001822: 0000 unimp
+80001824: 0000 unimp
+80001826: 0000 unimp
+80001828: 0000 unimp
+8000182a: 0000 unimp
+8000182c: 0000 unimp
+8000182e: 0000 unimp
+80001830: 0000 unimp
+80001832: 0000 unimp
+80001834: 0000 unimp
+80001836: 0000 unimp
+80001838: 0000 unimp
+8000183a: 0000 unimp
+8000183c: 0000 unimp
+8000183e: 0000 unimp
+80001840: 0000 unimp
+80001842: 0000 unimp
+80001844: 0000 unimp
+80001846: 0000 unimp
+80001848: 0000 unimp
+8000184a: 0000 unimp
+8000184c: 0000 unimp
+8000184e: 0000 unimp
+80001850: 0000 unimp
+80001852: 0000 unimp
+80001854: 0000 unimp
+80001856: 0000 unimp
+80001858: 0000 unimp
+8000185a: 0000 unimp
+8000185c: 0000 unimp
+8000185e: 0000 unimp
+80001860: 0000 unimp
+80001862: 0000 unimp
+80001864: 0000 unimp
+80001866: 0000 unimp
+80001868: 0000 unimp
+8000186a: 0000 unimp
+8000186c: 0000 unimp
+8000186e: 0000 unimp
+80001870: 0000 unimp
+80001872: 0000 unimp
+80001874: 0000 unimp
+80001876: 0000 unimp
+80001878: 0000 unimp
+8000187a: 0000 unimp
+8000187c: 0000 unimp
+8000187e: 0000 unimp
+80001880: 0000 unimp
+80001882: 0000 unimp
+80001884: 0000 unimp
+80001886: 0000 unimp
+80001888: 0000 unimp
+8000188a: 0000 unimp
+8000188c: 0000 unimp
+8000188e: 0000 unimp
+80001890: 0000 unimp
+80001892: 0000 unimp
+80001894: 0000 unimp
+80001896: 0000 unimp
+80001898: 0000 unimp
+8000189a: 0000 unimp
+8000189c: 0000 unimp
+8000189e: 0000 unimp
+800018a0: 0000 unimp
+800018a2: 0000 unimp
+800018a4: 0000 unimp
+800018a6: 0000 unimp
+800018a8: 0000 unimp
+800018aa: 0000 unimp
+800018ac: 0000 unimp
+800018ae: 0000 unimp
+800018b0: 0000 unimp
+800018b2: 0000 unimp
+800018b4: 0000 unimp
+800018b6: 0000 unimp
+800018b8: 0000 unimp
+800018ba: 0000 unimp
+800018bc: 0000 unimp
+800018be: 0000 unimp
+800018c0: 0000 unimp
+800018c2: 0000 unimp
+800018c4: 0000 unimp
+800018c6: 0000 unimp
+800018c8: 0000 unimp
+800018ca: 0000 unimp
+800018cc: 0000 unimp
+800018ce: 0000 unimp
+800018d0: 0000 unimp
+800018d2: 0000 unimp
+800018d4: 0000 unimp
+800018d6: 0000 unimp
+800018d8: 0000 unimp
+800018da: 0000 unimp
+800018dc: 0000 unimp
+800018de: 0000 unimp
+800018e0: 0000 unimp
+800018e2: 0000 unimp
+800018e4: 0000 unimp
+800018e6: 0000 unimp
+800018e8: 0000 unimp
+800018ea: 0000 unimp
+800018ec: 0000 unimp
+800018ee: 0000 unimp
+800018f0: 0000 unimp
+800018f2: 0000 unimp
+800018f4: 0000 unimp
+800018f6: 0000 unimp
+800018f8: 0000 unimp
+800018fa: 0000 unimp
+800018fc: 0000 unimp
+800018fe: 0000 unimp
+80001900: 0000 unimp
+80001902: 0000 unimp
+80001904: 0000 unimp
+80001906: 0000 unimp
+80001908: 0000 unimp
+8000190a: 0000 unimp
+8000190c: 0000 unimp
+8000190e: 0000 unimp
+80001910: 0000 unimp
+80001912: 0000 unimp
+80001914: 0000 unimp
+80001916: 0000 unimp
+80001918: 0000 unimp
+8000191a: 0000 unimp
+8000191c: 0000 unimp
+8000191e: 0000 unimp
+80001920: 0000 unimp
+80001922: 0000 unimp
+80001924: 0000 unimp
+80001926: 0000 unimp
+80001928: 0000 unimp
+8000192a: 0000 unimp
+8000192c: 0000 unimp
+8000192e: 0000 unimp
+80001930: 0000 unimp
+80001932: 0000 unimp
+80001934: 0000 unimp
+80001936: 0000 unimp
+80001938: 0000 unimp
+8000193a: 0000 unimp
+8000193c: 0000 unimp
+8000193e: 0000 unimp
+80001940: 0000 unimp
+80001942: 0000 unimp
+80001944: 0000 unimp
+80001946: 0000 unimp
+80001948: 0000 unimp
+8000194a: 0000 unimp
+8000194c: 0000 unimp
+8000194e: 0000 unimp
+80001950: 0000 unimp
+80001952: 0000 unimp
+80001954: 0000 unimp
+80001956: 0000 unimp
+80001958: 0000 unimp
+8000195a: 0000 unimp
+8000195c: 0000 unimp
+8000195e: 0000 unimp
+80001960: 0000 unimp
+80001962: 0000 unimp
+80001964: 0000 unimp
+80001966: 0000 unimp
+80001968: 0000 unimp
+8000196a: 0000 unimp
+8000196c: 0000 unimp
+8000196e: 0000 unimp
+80001970: 0000 unimp
+80001972: 0000 unimp
+80001974: 0000 unimp
+80001976: 0000 unimp
+80001978: 0000 unimp
+8000197a: 0000 unimp
+8000197c: 0000 unimp
+8000197e: 0000 unimp
+80001980: 0000 unimp
+80001982: 0000 unimp
+80001984: 0000 unimp
+80001986: 0000 unimp
+80001988: 0000 unimp
+8000198a: 0000 unimp
+8000198c: 0000 unimp
+8000198e: 0000 unimp
+80001990: 0000 unimp
+80001992: 0000 unimp
+80001994: 0000 unimp
+80001996: 0000 unimp
+80001998: 0000 unimp
+8000199a: 0000 unimp
+8000199c: 0000 unimp
+8000199e: 0000 unimp
+800019a0: 0000 unimp
+800019a2: 0000 unimp
+800019a4: 0000 unimp
+800019a6: 0000 unimp
+800019a8: 0000 unimp
+800019aa: 0000 unimp
+800019ac: 0000 unimp
+800019ae: 0000 unimp
+800019b0: 0000 unimp
+800019b2: 0000 unimp
+800019b4: 0000 unimp
+800019b6: 0000 unimp
+800019b8: 0000 unimp
+800019ba: 0000 unimp
+800019bc: 0000 unimp
+800019be: 0000 unimp
+800019c0: 0000 unimp
+800019c2: 0000 unimp
+800019c4: 0000 unimp
+800019c6: 0000 unimp
+800019c8: 0000 unimp
+800019ca: 0000 unimp
+800019cc: 0000 unimp
+800019ce: 0000 unimp
+800019d0: 0000 unimp
+800019d2: 0000 unimp
+800019d4: 0000 unimp
+800019d6: 0000 unimp
+800019d8: 0000 unimp
+800019da: 0000 unimp
+800019dc: 0000 unimp
+800019de: 0000 unimp
+800019e0: 0000 unimp
+800019e2: 0000 unimp
+800019e4: 0000 unimp
+800019e6: 0000 unimp
+800019e8: 0000 unimp
+800019ea: 0000 unimp
+800019ec: 0000 unimp
+800019ee: 0000 unimp
+800019f0: 0000 unimp
+800019f2: 0000 unimp
+800019f4: 0000 unimp
+800019f6: 0000 unimp
+800019f8: 0000 unimp
+800019fa: 0000 unimp
+800019fc: 0000 unimp
+800019fe: 0000 unimp
+80001a00: 0000 unimp
+80001a02: 0000 unimp
+80001a04: 0000 unimp
+80001a06: 0000 unimp
+80001a08: 0000 unimp
+80001a0a: 0000 unimp
+80001a0c: 0000 unimp
+80001a0e: 0000 unimp
+80001a10: 0000 unimp
+80001a12: 0000 unimp
+80001a14: 0000 unimp
+80001a16: 0000 unimp
+80001a18: 0000 unimp
+80001a1a: 0000 unimp
+80001a1c: 0000 unimp
+80001a1e: 0000 unimp
+80001a20: 0000 unimp
+80001a22: 0000 unimp
+80001a24: 0000 unimp
+80001a26: 0000 unimp
+80001a28: 0000 unimp
+80001a2a: 0000 unimp
+80001a2c: 0000 unimp
+80001a2e: 0000 unimp
+80001a30: 0000 unimp
+80001a32: 0000 unimp
+80001a34: 0000 unimp
+80001a36: 0000 unimp
+80001a38: 0000 unimp
+80001a3a: 0000 unimp
+80001a3c: 0000 unimp
+80001a3e: 0000 unimp
+80001a40: 0000 unimp
+80001a42: 0000 unimp
+80001a44: 0000 unimp
+80001a46: 0000 unimp
+80001a48: 0000 unimp
+80001a4a: 0000 unimp
+80001a4c: 0000 unimp
+80001a4e: 0000 unimp
+80001a50: 0000 unimp
+80001a52: 0000 unimp
+80001a54: 0000 unimp
+80001a56: 0000 unimp
+80001a58: 0000 unimp
+80001a5a: 0000 unimp
+80001a5c: 0000 unimp
+80001a5e: 0000 unimp
+80001a60: 0000 unimp
+80001a62: 0000 unimp
+80001a64: 0000 unimp
+80001a66: 0000 unimp
+80001a68: 0000 unimp
+80001a6a: 0000 unimp
+80001a6c: 0000 unimp
+80001a6e: 0000 unimp
+80001a70: 0000 unimp
+80001a72: 0000 unimp
+80001a74: 0000 unimp
+80001a76: 0000 unimp
+80001a78: 0000 unimp
+80001a7a: 0000 unimp
+80001a7c: 0000 unimp
+80001a7e: 0000 unimp
+80001a80: 0000 unimp
+80001a82: 0000 unimp
+80001a84: 0000 unimp
+80001a86: 0000 unimp
+80001a88: 0000 unimp
+80001a8a: 0000 unimp
+80001a8c: 0000 unimp
+80001a8e: 0000 unimp
+80001a90: 0000 unimp
+80001a92: 0000 unimp
+80001a94: 0000 unimp
+80001a96: 0000 unimp
+80001a98: 0000 unimp
+80001a9a: 0000 unimp
+80001a9c: 0000 unimp
+80001a9e: 0000 unimp
+80001aa0: 0000 unimp
+80001aa2: 0000 unimp
+80001aa4: 0000 unimp
+80001aa6: 0000 unimp
+80001aa8: 0000 unimp
+80001aaa: 0000 unimp
+80001aac: 0000 unimp
+80001aae: 0000 unimp
+80001ab0: 0000 unimp
+80001ab2: 0000 unimp
+80001ab4: 0000 unimp
+80001ab6: 0000 unimp
+80001ab8: 0000 unimp
+80001aba: 0000 unimp
+80001abc: 0000 unimp
+80001abe: 0000 unimp
+80001ac0: 0000 unimp
+80001ac2: 0000 unimp
+80001ac4: 0000 unimp
+80001ac6: 0000 unimp
+80001ac8: 0000 unimp
+80001aca: 0000 unimp
+80001acc: 0000 unimp
+80001ace: 0000 unimp
+80001ad0: 0000 unimp
+80001ad2: 0000 unimp
+80001ad4: 0000 unimp
+80001ad6: 0000 unimp
+80001ad8: 0000 unimp
+80001ada: 0000 unimp
+80001adc: 0000 unimp
+80001ade: 0000 unimp
+80001ae0: 0000 unimp
+80001ae2: 0000 unimp
+80001ae4: 0000 unimp
+80001ae6: 0000 unimp
+80001ae8: 0000 unimp
+80001aea: 0000 unimp
+80001aec: 0000 unimp
+80001aee: 0000 unimp
+80001af0: 0000 unimp
+80001af2: 0000 unimp
+80001af4: 0000 unimp
+80001af6: 0000 unimp
+80001af8: 0000 unimp
+80001afa: 0000 unimp
+80001afc: 0000 unimp
+80001afe: 0000 unimp
+80001b00: 0000 unimp
+80001b02: 0000 unimp
+80001b04: 0000 unimp
+80001b06: 0000 unimp
+80001b08: 0000 unimp
+80001b0a: 0000 unimp
+80001b0c: 0000 unimp
+80001b0e: 0000 unimp
+80001b10: 0000 unimp
+80001b12: 0000 unimp
+80001b14: 0000 unimp
+80001b16: 0000 unimp
+80001b18: 0000 unimp
+80001b1a: 0000 unimp
+80001b1c: 0000 unimp
+80001b1e: 0000 unimp
+80001b20: 0000 unimp
+80001b22: 0000 unimp
+80001b24: 0000 unimp
+80001b26: 0000 unimp
+80001b28: 0000 unimp
+80001b2a: 0000 unimp
+80001b2c: 0000 unimp
+80001b2e: 0000 unimp
+80001b30: 0000 unimp
+80001b32: 0000 unimp
+80001b34: 0000 unimp
+80001b36: 0000 unimp
+80001b38: 0000 unimp
+80001b3a: 0000 unimp
+80001b3c: 0000 unimp
+80001b3e: 0000 unimp
+80001b40: 0000 unimp
+80001b42: 0000 unimp
+80001b44: 0000 unimp
+80001b46: 0000 unimp
+80001b48: 0000 unimp
+80001b4a: 0000 unimp
+80001b4c: 0000 unimp
+80001b4e: 0000 unimp
+80001b50: 0000 unimp
+80001b52: 0000 unimp
+80001b54: 0000 unimp
+80001b56: 0000 unimp
+80001b58: 0000 unimp
+80001b5a: 0000 unimp
+80001b5c: 0000 unimp
+80001b5e: 0000 unimp
+80001b60: 0000 unimp
+80001b62: 0000 unimp
+80001b64: 0000 unimp
+80001b66: 0000 unimp
+80001b68: 0000 unimp
+80001b6a: 0000 unimp
+80001b6c: 0000 unimp
+80001b6e: 0000 unimp
+80001b70: 0000 unimp
+80001b72: 0000 unimp
+80001b74: 0000 unimp
+80001b76: 0000 unimp
+80001b78: 0000 unimp
+80001b7a: 0000 unimp
+80001b7c: 0000 unimp
+80001b7e: 0000 unimp
+80001b80: 0000 unimp
+80001b82: 0000 unimp
+80001b84: 0000 unimp
+80001b86: 0000 unimp
+80001b88: 0000 unimp
+80001b8a: 0000 unimp
+80001b8c: 0000 unimp
+80001b8e: 0000 unimp
+80001b90: 0000 unimp
+80001b92: 0000 unimp
+80001b94: 0000 unimp
+80001b96: 0000 unimp
+80001b98: 0000 unimp
+80001b9a: 0000 unimp
+80001b9c: 0000 unimp
+80001b9e: 0000 unimp
+80001ba0: 0000 unimp
+80001ba2: 0000 unimp
+80001ba4: 0000 unimp
+80001ba6: 0000 unimp
+80001ba8: 0000 unimp
+80001baa: 0000 unimp
+80001bac: 0000 unimp
+80001bae: 0000 unimp
+80001bb0: 0000 unimp
+80001bb2: 0000 unimp
+80001bb4: 0000 unimp
+80001bb6: 0000 unimp
+80001bb8: 0000 unimp
+80001bba: 0000 unimp
+80001bbc: 0000 unimp
+80001bbe: 0000 unimp
+80001bc0: 0000 unimp
+80001bc2: 0000 unimp
+80001bc4: 0000 unimp
+80001bc6: 0000 unimp
+80001bc8: 0000 unimp
+80001bca: 0000 unimp
+80001bcc: 0000 unimp
+80001bce: 0000 unimp
+80001bd0: 0000 unimp
+80001bd2: 0000 unimp
+80001bd4: 0000 unimp
+80001bd6: 0000 unimp
+80001bd8: 0000 unimp
+80001bda: 0000 unimp
+80001bdc: 0000 unimp
+80001bde: 0000 unimp
+80001be0: 0000 unimp
+80001be2: 0000 unimp
+80001be4: 0000 unimp
+80001be6: 0000 unimp
+80001be8: 0000 unimp
+80001bea: 0000 unimp
+80001bec: 0000 unimp
+80001bee: 0000 unimp
+80001bf0: 0000 unimp
+80001bf2: 0000 unimp
+80001bf4: 0000 unimp
+80001bf6: 0000 unimp
+80001bf8: 0000 unimp
+80001bfa: 0000 unimp
+80001bfc: 0000 unimp
+80001bfe: 0000 unimp
+80001c00: 0000 unimp
+80001c02: 0000 unimp
+80001c04: 0000 unimp
+80001c06: 0000 unimp
+80001c08: 0000 unimp
+80001c0a: 0000 unimp
+80001c0c: 0000 unimp
+80001c0e: 0000 unimp
+80001c10: 0000 unimp
+80001c12: 0000 unimp
+80001c14: 0000 unimp
+80001c16: 0000 unimp
+80001c18: 0000 unimp
+80001c1a: 0000 unimp
+80001c1c: 0000 unimp
+80001c1e: 0000 unimp
+80001c20: 0000 unimp
+80001c22: 0000 unimp
+80001c24: 0000 unimp
+80001c26: 0000 unimp
+80001c28: 0000 unimp
+80001c2a: 0000 unimp
+80001c2c: 0000 unimp
+80001c2e: 0000 unimp
+80001c30: 0000 unimp
+80001c32: 0000 unimp
+80001c34: 0000 unimp
+80001c36: 0000 unimp
+80001c38: 0000 unimp
+80001c3a: 0000 unimp
+80001c3c: 0000 unimp
+80001c3e: 0000 unimp
+80001c40: 0000 unimp
+80001c42: 0000 unimp
+80001c44: 0000 unimp
+80001c46: 0000 unimp
+80001c48: 0000 unimp
+80001c4a: 0000 unimp
+80001c4c: 0000 unimp
+80001c4e: 0000 unimp
+80001c50: 0000 unimp
+80001c52: 0000 unimp
+80001c54: 0000 unimp
+80001c56: 0000 unimp
+80001c58: 0000 unimp
+80001c5a: 0000 unimp
+80001c5c: 0000 unimp
+80001c5e: 0000 unimp
+80001c60: 0000 unimp
+80001c62: 0000 unimp
+80001c64: 0000 unimp
+80001c66: 0000 unimp
+80001c68: 0000 unimp
+80001c6a: 0000 unimp
+80001c6c: 0000 unimp
+80001c6e: 0000 unimp
+80001c70: 0000 unimp
+80001c72: 0000 unimp
+80001c74: 0000 unimp
+80001c76: 0000 unimp
+80001c78: 0000 unimp
+80001c7a: 0000 unimp
+80001c7c: 0000 unimp
+80001c7e: 0000 unimp
+80001c80: 0000 unimp
+80001c82: 0000 unimp
+80001c84: 0000 unimp
+80001c86: 0000 unimp
+80001c88: 0000 unimp
+80001c8a: 0000 unimp
+80001c8c: 0000 unimp
+80001c8e: 0000 unimp
+80001c90: 0000 unimp
+80001c92: 0000 unimp
+80001c94: 0000 unimp
+80001c96: 0000 unimp
+80001c98: 0000 unimp
+80001c9a: 0000 unimp
+80001c9c: 0000 unimp
+80001c9e: 0000 unimp
+80001ca0: 0000 unimp
+80001ca2: 0000 unimp
+80001ca4: 0000 unimp
+80001ca6: 0000 unimp
+80001ca8: 0000 unimp
+80001caa: 0000 unimp
+80001cac: 0000 unimp
+80001cae: 0000 unimp
+80001cb0: 0000 unimp
+80001cb2: 0000 unimp
+80001cb4: 0000 unimp
+80001cb6: 0000 unimp
+80001cb8: 0000 unimp
+80001cba: 0000 unimp
+80001cbc: 0000 unimp
+80001cbe: 0000 unimp
+80001cc0: 0000 unimp
+80001cc2: 0000 unimp
+80001cc4: 0000 unimp
+80001cc6: 0000 unimp
+80001cc8: 0000 unimp
+80001cca: 0000 unimp
+80001ccc: 0000 unimp
+80001cce: 0000 unimp
+80001cd0: 0000 unimp
+80001cd2: 0000 unimp
+80001cd4: 0000 unimp
+80001cd6: 0000 unimp
+80001cd8: 0000 unimp
+80001cda: 0000 unimp
+80001cdc: 0000 unimp
+80001cde: 0000 unimp
+80001ce0: 0000 unimp
+80001ce2: 0000 unimp
+80001ce4: 0000 unimp
+80001ce6: 0000 unimp
+80001ce8: 0000 unimp
+80001cea: 0000 unimp
+80001cec: 0000 unimp
+80001cee: 0000 unimp
+80001cf0: 0000 unimp
+80001cf2: 0000 unimp
+80001cf4: 0000 unimp
+80001cf6: 0000 unimp
+80001cf8: 0000 unimp
+80001cfa: 0000 unimp
+80001cfc: 0000 unimp
+80001cfe: 0000 unimp
+80001d00: 0000 unimp
+80001d02: 0000 unimp
+80001d04: 0000 unimp
+80001d06: 0000 unimp
+80001d08: 0000 unimp
+80001d0a: 0000 unimp
+80001d0c: 0000 unimp
+80001d0e: 0000 unimp
+80001d10: 0000 unimp
+80001d12: 0000 unimp
+80001d14: 0000 unimp
+80001d16: 0000 unimp
+80001d18: 0000 unimp
+80001d1a: 0000 unimp
+80001d1c: 0000 unimp
+80001d1e: 0000 unimp
+80001d20: 0000 unimp
+80001d22: 0000 unimp
+80001d24: 0000 unimp
+80001d26: 0000 unimp
+80001d28: 0000 unimp
+80001d2a: 0000 unimp
+80001d2c: 0000 unimp
+80001d2e: 0000 unimp
+80001d30: 0000 unimp
+80001d32: 0000 unimp
+80001d34: 0000 unimp
+80001d36: 0000 unimp
+80001d38: 0000 unimp
+80001d3a: 0000 unimp
+80001d3c: 0000 unimp
+80001d3e: 0000 unimp
+80001d40: 0000 unimp
+80001d42: 0000 unimp
+80001d44: 0000 unimp
+80001d46: 0000 unimp
+80001d48: 0000 unimp
+80001d4a: 0000 unimp
+80001d4c: 0000 unimp
+80001d4e: 0000 unimp
+80001d50: 0000 unimp
+80001d52: 0000 unimp
+80001d54: 0000 unimp
+80001d56: 0000 unimp
+80001d58: 0000 unimp
+80001d5a: 0000 unimp
+80001d5c: 0000 unimp
+80001d5e: 0000 unimp
+80001d60: 0000 unimp
+80001d62: 0000 unimp
+80001d64: 0000 unimp
+80001d66: 0000 unimp
+80001d68: 0000 unimp
+80001d6a: 0000 unimp
+80001d6c: 0000 unimp
+80001d6e: 0000 unimp
+80001d70: 0000 unimp
+80001d72: 0000 unimp
+80001d74: 0000 unimp
+80001d76: 0000 unimp
+80001d78: 0000 unimp
+80001d7a: 0000 unimp
+80001d7c: 0000 unimp
+80001d7e: 0000 unimp
+80001d80: 0000 unimp
+80001d82: 0000 unimp
+80001d84: 0000 unimp
+80001d86: 0000 unimp
+80001d88: 0000 unimp
+80001d8a: 0000 unimp
+80001d8c: 0000 unimp
+80001d8e: 0000 unimp
+80001d90: 0000 unimp
+80001d92: 0000 unimp
+80001d94: 0000 unimp
+80001d96: 0000 unimp
+80001d98: 0000 unimp
+80001d9a: 0000 unimp
+80001d9c: 0000 unimp
+80001d9e: 0000 unimp
+80001da0: 0000 unimp
+80001da2: 0000 unimp
+80001da4: 0000 unimp
+80001da6: 0000 unimp
+80001da8: 0000 unimp
+80001daa: 0000 unimp
+80001dac: 0000 unimp
+80001dae: 0000 unimp
+80001db0: 0000 unimp
+80001db2: 0000 unimp
+80001db4: 0000 unimp
+80001db6: 0000 unimp
+80001db8: 0000 unimp
+80001dba: 0000 unimp
+80001dbc: 0000 unimp
+80001dbe: 0000 unimp
+80001dc0: 0000 unimp
+80001dc2: 0000 unimp
+80001dc4: 0000 unimp
+80001dc6: 0000 unimp
+80001dc8: 0000 unimp
+80001dca: 0000 unimp
+80001dcc: 0000 unimp
+80001dce: 0000 unimp
+80001dd0: 0000 unimp
+80001dd2: 0000 unimp
+80001dd4: 0000 unimp
+80001dd6: 0000 unimp
+80001dd8: 0000 unimp
+80001dda: 0000 unimp
+80001ddc: 0000 unimp
+80001dde: 0000 unimp
+80001de0: 0000 unimp
+80001de2: 0000 unimp
+80001de4: 0000 unimp
+80001de6: 0000 unimp
+80001de8: 0000 unimp
+80001dea: 0000 unimp
+80001dec: 0000 unimp
+80001dee: 0000 unimp
+80001df0: 0000 unimp
+80001df2: 0000 unimp
+80001df4: 0000 unimp
+80001df6: 0000 unimp
+80001df8: 0000 unimp
+80001dfa: 0000 unimp
+80001dfc: 0000 unimp
+80001dfe: 0000 unimp
+80001e00: 0000 unimp
+80001e02: 0000 unimp
+80001e04: 0000 unimp
+80001e06: 0000 unimp
+80001e08: 0000 unimp
+80001e0a: 0000 unimp
+80001e0c: 0000 unimp
+80001e0e: 0000 unimp
+80001e10: 0000 unimp
+80001e12: 0000 unimp
+80001e14: 0000 unimp
+80001e16: 0000 unimp
+80001e18: 0000 unimp
+80001e1a: 0000 unimp
+80001e1c: 0000 unimp
+80001e1e: 0000 unimp
+80001e20: 0000 unimp
+80001e22: 0000 unimp
+80001e24: 0000 unimp
+80001e26: 0000 unimp
+80001e28: 0000 unimp
+80001e2a: 0000 unimp
+80001e2c: 0000 unimp
+80001e2e: 0000 unimp
+80001e30: 0000 unimp
+80001e32: 0000 unimp
+80001e34: 0000 unimp
+80001e36: 0000 unimp
+80001e38: 0000 unimp
+80001e3a: 0000 unimp
+80001e3c: 0000 unimp
+80001e3e: 0000 unimp
+80001e40: 0000 unimp
+80001e42: 0000 unimp
+80001e44: 0000 unimp
+80001e46: 0000 unimp
+80001e48: 0000 unimp
+80001e4a: 0000 unimp
+80001e4c: 0000 unimp
+80001e4e: 0000 unimp
+80001e50: 0000 unimp
+80001e52: 0000 unimp
+80001e54: 0000 unimp
+80001e56: 0000 unimp
+80001e58: 0000 unimp
+80001e5a: 0000 unimp
+80001e5c: 0000 unimp
+80001e5e: 0000 unimp
+80001e60: 0000 unimp
+80001e62: 0000 unimp
+80001e64: 0000 unimp
+80001e66: 0000 unimp
+80001e68: 0000 unimp
+80001e6a: 0000 unimp
+80001e6c: 0000 unimp
+80001e6e: 0000 unimp
+80001e70: 0000 unimp
+80001e72: 0000 unimp
+80001e74: 0000 unimp
+80001e76: 0000 unimp
+80001e78: 0000 unimp
+80001e7a: 0000 unimp
+80001e7c: 0000 unimp
+80001e7e: 0000 unimp
+80001e80: 0000 unimp
+80001e82: 0000 unimp
+80001e84: 0000 unimp
+80001e86: 0000 unimp
+80001e88: 0000 unimp
+80001e8a: 0000 unimp
+80001e8c: 0000 unimp
+80001e8e: 0000 unimp
+80001e90: 0000 unimp
+80001e92: 0000 unimp
+80001e94: 0000 unimp
+80001e96: 0000 unimp
+80001e98: 0000 unimp
+80001e9a: 0000 unimp
+80001e9c: 0000 unimp
+80001e9e: 0000 unimp
+80001ea0: 0000 unimp
+80001ea2: 0000 unimp
+80001ea4: 0000 unimp
+80001ea6: 0000 unimp
+80001ea8: 0000 unimp
+80001eaa: 0000 unimp
+80001eac: 0000 unimp
+80001eae: 0000 unimp
+80001eb0: 0000 unimp
+80001eb2: 0000 unimp
+80001eb4: 0000 unimp
+80001eb6: 0000 unimp
+80001eb8: 0000 unimp
+80001eba: 0000 unimp
+80001ebc: 0000 unimp
+80001ebe: 0000 unimp
+80001ec0: 0000 unimp
+80001ec2: 0000 unimp
+80001ec4: 0000 unimp
+80001ec6: 0000 unimp
+80001ec8: 0000 unimp
+80001eca: 0000 unimp
+80001ecc: 0000 unimp
+80001ece: 0000 unimp
+80001ed0: 0000 unimp
+80001ed2: 0000 unimp
+80001ed4: 0000 unimp
+80001ed6: 0000 unimp
+80001ed8: 0000 unimp
+80001eda: 0000 unimp
+80001edc: 0000 unimp
+80001ede: 0000 unimp
+80001ee0: 0000 unimp
+80001ee2: 0000 unimp
+80001ee4: 0000 unimp
+80001ee6: 0000 unimp
+80001ee8: 0000 unimp
+80001eea: 0000 unimp
+80001eec: 0000 unimp
+80001eee: 0000 unimp
+80001ef0: 0000 unimp
+80001ef2: 0000 unimp
+80001ef4: 0000 unimp
+80001ef6: 0000 unimp
+80001ef8: 0000 unimp
+80001efa: 0000 unimp
+80001efc: 0000 unimp
+80001efe: 0000 unimp
+80001f00: 0000 unimp
+80001f02: 0000 unimp
+80001f04: 0000 unimp
+80001f06: 0000 unimp
+80001f08: 0000 unimp
+80001f0a: 0000 unimp
+80001f0c: 0000 unimp
+80001f0e: 0000 unimp
+80001f10: 0000 unimp
+80001f12: 0000 unimp
+80001f14: 0000 unimp
+80001f16: 0000 unimp
+80001f18: 0000 unimp
+80001f1a: 0000 unimp
+80001f1c: 0000 unimp
+80001f1e: 0000 unimp
+80001f20: 0000 unimp
+80001f22: 0000 unimp
+80001f24: 0000 unimp
+80001f26: 0000 unimp
+80001f28: 0000 unimp
+80001f2a: 0000 unimp
+80001f2c: 0000 unimp
+80001f2e: 0000 unimp
+80001f30: 0000 unimp
+80001f32: 0000 unimp
+80001f34: 0000 unimp
+80001f36: 0000 unimp
+80001f38: 0000 unimp
+80001f3a: 0000 unimp
+80001f3c: 0000 unimp
+80001f3e: 0000 unimp
+80001f40: 0000 unimp
+80001f42: 0000 unimp
+80001f44: 0000 unimp
+80001f46: 0000 unimp
+80001f48: 0000 unimp
+80001f4a: 0000 unimp
+80001f4c: 0000 unimp
+80001f4e: 0000 unimp
+80001f50: 0000 unimp
+80001f52: 0000 unimp
+80001f54: 0000 unimp
+80001f56: 0000 unimp
+80001f58: 0000 unimp
+80001f5a: 0000 unimp
+80001f5c: 0000 unimp
+80001f5e: 0000 unimp
+80001f60: 0000 unimp
+80001f62: 0000 unimp
+80001f64: 0000 unimp
+80001f66: 0000 unimp
+80001f68: 0000 unimp
+80001f6a: 0000 unimp
+80001f6c: 0000 unimp
+80001f6e: 0000 unimp
+80001f70: 0000 unimp
+80001f72: 0000 unimp
+80001f74: 0000 unimp
+80001f76: 0000 unimp
+80001f78: 0000 unimp
+80001f7a: 0000 unimp
+80001f7c: 0000 unimp
+80001f7e: 0000 unimp
+80001f80: 0000 unimp
+80001f82: 0000 unimp
+80001f84: 0000 unimp
+80001f86: 0000 unimp
+80001f88: 0000 unimp
+80001f8a: 0000 unimp
+80001f8c: 0000 unimp
+80001f8e: 0000 unimp
+80001f90: 0000 unimp
+80001f92: 0000 unimp
+80001f94: 0000 unimp
+80001f96: 0000 unimp
+80001f98: 0000 unimp
+80001f9a: 0000 unimp
+80001f9c: 0000 unimp
+80001f9e: 0000 unimp
+80001fa0: 0000 unimp
+80001fa2: 0000 unimp
+80001fa4: 0000 unimp
+80001fa6: 0000 unimp
+80001fa8: 0000 unimp
+80001faa: 0000 unimp
+80001fac: 0000 unimp
+80001fae: 0000 unimp
+80001fb0: 0000 unimp
+80001fb2: 0000 unimp
+80001fb4: 0000 unimp
+80001fb6: 0000 unimp
+80001fb8: 0000 unimp
+80001fba: 0000 unimp
+80001fbc: 0000 unimp
+80001fbe: 0000 unimp
+80001fc0: 0000 unimp
+80001fc2: 0000 unimp
+80001fc4: 0000 unimp
+80001fc6: 0000 unimp
+80001fc8: 0000 unimp
+80001fca: 0000 unimp
+80001fcc: 0000 unimp
+80001fce: 0000 unimp
+80001fd0: 0000 unimp
+80001fd2: 0000 unimp
+80001fd4: 0000 unimp
+80001fd6: 0000 unimp
+80001fd8: 0000 unimp
+80001fda: 0000 unimp
+80001fdc: 0000 unimp
+80001fde: 0000 unimp
+80001fe0: 0000 unimp
+80001fe2: 0000 unimp
+80001fe4: 0000 unimp
+80001fe6: 0000 unimp
+80001fe8: 0000 unimp
+80001fea: 0000 unimp
+80001fec: 0000 unimp
+80001fee: 0000 unimp
+80001ff0: 0000 unimp
+80001ff2: 0000 unimp
+80001ff4: 0000 unimp
+80001ff6: 0000 unimp
+80001ff8: 0000 unimp
+80001ffa: 0000 unimp
+80001ffc: 0000 unimp
+80001ffe: 00158593 addi a1,a1,1
+80002002: 29b00e93 li t4,667
+80002006: 00200193 li gp,2
+8000200a: 23d59f63 bne a1,t4,80002248 <fail>
+8000200e: 00001137 lui sp,0x1
+80002012: 23410113 addi sp,sp,564 # 1234 <_start-0x7fffedcc>
+
+80002016 <test_3>:
+80002016: 1fe8 addi a0,sp,1020
+80002018: 00001eb7 lui t4,0x1
+8000201c: 630e8e93 addi t4,t4,1584 # 1630 <_start-0x7fffe9d0>
+80002020: 00300193 li gp,3
+80002024: 23d51263 bne a0,t4,80002248 <fail>
+
+80002028 <test_4>:
+80002028: 617d addi sp,sp,496
+8000202a: 0001 nop
+8000202c: 00001eb7 lui t4,0x1
+80002030: 424e8e93 addi t4,t4,1060 # 1424 <_start-0x7fffebdc>
+80002034: 00400193 li gp,4
+80002038: 21d11863 bne sp,t4,80002248 <fail>
+
+8000203c <test_5>:
+8000203c: 7101 addi sp,sp,-512
+8000203e: 0001 nop
+80002040: 00001eb7 lui t4,0x1
+80002044: 224e8e93 addi t4,t4,548 # 1224 <_start-0x7fffeddc>
+80002048: 00500193 li gp,5
+8000204c: 1fd11e63 bne sp,t4,80002248 <fail>
+80002050: ffffe597 auipc a1,0xffffe
+80002054: 0b858593 addi a1,a1,184 # 80000108 <data>
+
+80002058 <test_6>:
+80002058: 41c8 lw a0,4(a1)
+8000205a: 0505 addi a0,a0,1
+8000205c: c1c8 sw a0,4(a1)
+8000205e: 41d0 lw a2,4(a1)
+80002060: fedcceb7 lui t4,0xfedcc
+80002064: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc7a99>
+80002068: 00600193 li gp,6
+8000206c: 1dd61e63 bne a2,t4,80002248 <fail>
+
+80002070 <test_8>:
+80002070: 00106513 ori a0,zero,1
+80002074: 1541 addi a0,a0,-16
+80002076: 0001 nop
+80002078: ff100e93 li t4,-15
+8000207c: 00800193 li gp,8
+80002080: 1dd51463 bne a0,t4,80002248 <fail>
+
+80002084 <test_9>:
+80002084: 00106793 ori a5,zero,1
+80002088: 57c1 li a5,-16
+8000208a: 0001 nop
+8000208c: ff000e93 li t4,-16
+80002090: 00900193 li gp,9
+80002094: 1bd79a63 bne a5,t4,80002248 <fail>
+
+80002098 <test_11>:
+80002098: 7405 lui s0,0xfffe1
+8000209a: 8431 srai s0,s0,0xc
+8000209c: fe100e93 li t4,-31
+800020a0: 00b00193 li gp,11
+800020a4: 1bd41263 bne s0,t4,80002248 <fail>
+
+800020a8 <test_12>:
+800020a8: 7405 lui s0,0xfffe1
+800020aa: 8031 srli s0,s0,0xc
+800020ac: 00100eb7 lui t4,0x100
+800020b0: fe1e8e93 addi t4,t4,-31 # fffe1 <_start-0x7ff0001f>
+800020b4: 00c00193 li gp,12
+800020b8: 19d41863 bne s0,t4,80002248 <fail>
+
+800020bc <test_14>:
+800020bc: 5479 li s0,-2
+800020be: 983d andi s0,s0,-17
+800020c0: fee00e93 li t4,-18
+800020c4: 00e00193 li gp,14
+800020c8: 19d41063 bne s0,t4,80002248 <fail>
+
+800020cc <test_15>:
+800020cc: 44d1 li s1,20
+800020ce: 4519 li a0,6
+800020d0: 8c89 sub s1,s1,a0
+800020d2: 0001 nop
+800020d4: 00e00e93 li t4,14
+800020d8: 00f00193 li gp,15
+800020dc: 17d49663 bne s1,t4,80002248 <fail>
+
+800020e0 <test_16>:
+800020e0: 44d1 li s1,20
+800020e2: 4519 li a0,6
+800020e4: 8ca9 xor s1,s1,a0
+800020e6: 0001 nop
+800020e8: 01200e93 li t4,18
+800020ec: 01000193 li gp,16
+800020f0: 15d49c63 bne s1,t4,80002248 <fail>
+
+800020f4 <test_17>:
+800020f4: 44d1 li s1,20
+800020f6: 4519 li a0,6
+800020f8: 8cc9 or s1,s1,a0
+800020fa: 0001 nop
+800020fc: 01600e93 li t4,22
+80002100: 01100193 li gp,17
+80002104: 15d49263 bne s1,t4,80002248 <fail>
+
+80002108 <test_18>:
+80002108: 44d1 li s1,20
+8000210a: 4519 li a0,6
+8000210c: 8ce9 and s1,s1,a0
+8000210e: 0001 nop
+80002110: 00400e93 li t4,4
+80002114: 01200193 li gp,18
+80002118: 13d49863 bne s1,t4,80002248 <fail>
+
+8000211c <test_21>:
+8000211c: 00001437 lui s0,0x1
+80002120: 23440413 addi s0,s0,564 # 1234 <_start-0x7fffedcc>
+80002124: 0412 slli s0,s0,0x4
+80002126: 0001 nop
+80002128: 00012eb7 lui t4,0x12
+8000212c: 340e8e93 addi t4,t4,832 # 12340 <_start-0x7ffedcc0>
+80002130: 01500193 li gp,21
+80002134: 11d41a63 bne s0,t4,80002248 <fail>
+
+80002138 <test_30>:
+80002138: 4081 li ra,0
+8000213a: a011 j 8000213e <test_30+0x6>
+8000213c: a011 j 80002140 <test_30+0x8>
+8000213e: a011 j 80002142 <test_30+0xa>
+80002140: a221 j 80002248 <fail>
+80002142: 0001 nop
+80002144: 00000e93 li t4,0
+80002148: 01e00193 li gp,30
+8000214c: 0fd09e63 bne ra,t4,80002248 <fail>
+
+80002150 <test_31>:
+80002150: 4501 li a0,0
+80002152: c111 beqz a0,80002156 <test_31+0x6>
+80002154: a011 j 80002158 <test_31+0x8>
+80002156: a011 j 8000215a <test_31+0xa>
+80002158: a8c5 j 80002248 <fail>
+8000215a: 0001 nop
+8000215c: 00000e93 li t4,0
+80002160: 01f00193 li gp,31
+80002164: 0fd01263 bne zero,t4,80002248 <fail>
+
+80002168 <test_32>:
+80002168: 4505 li a0,1
+8000216a: e111 bnez a0,8000216e <test_32+0x6>
+8000216c: a011 j 80002170 <test_32+0x8>
+8000216e: a011 j 80002172 <test_32+0xa>
+80002170: a8e1 j 80002248 <fail>
+80002172: 0001 nop
+80002174: 00000e93 li t4,0
+80002178: 02000193 li gp,32
+8000217c: 0dd01663 bne zero,t4,80002248 <fail>
+
+80002180 <test_33>:
+80002180: 4505 li a0,1
+80002182: c111 beqz a0,80002186 <test_33+0x6>
+80002184: a011 j 80002188 <test_33+0x8>
+80002186: a0c9 j 80002248 <fail>
+80002188: 00000e93 li t4,0
+8000218c: 02100193 li gp,33
+80002190: 0bd01c63 bne zero,t4,80002248 <fail>
+
+80002194 <test_34>:
+80002194: 4501 li a0,0
+80002196: e111 bnez a0,8000219a <test_34+0x6>
+80002198: a011 j 8000219c <test_34+0x8>
+8000219a: a07d j 80002248 <fail>
+8000219c: 00000e93 li t4,0
+800021a0: 02200193 li gp,34
+800021a4: 0bd01263 bne zero,t4,80002248 <fail>
+
+800021a8 <test_35>:
+800021a8: 00000297 auipc t0,0x0
+800021ac: 00e28293 addi t0,t0,14 # 800021b6 <test_35+0xe>
+800021b0: 4081 li ra,0
+800021b2: 8282 jr t0
+800021b4: a011 j 800021b8 <test_35+0x10>
+800021b6: a011 j 800021ba <test_35+0x12>
+800021b8: a841 j 80002248 <fail>
+800021ba: 0001 nop
+800021bc: 00000e93 li t4,0
+800021c0: 02300193 li gp,35
+800021c4: 09d09263 bne ra,t4,80002248 <fail>
+
+800021c8 <test_36>:
+800021c8: 00000297 auipc t0,0x0
+800021cc: 00e28293 addi t0,t0,14 # 800021d6 <test_36+0xe>
+800021d0: 4081 li ra,0
+800021d2: 9282 jalr t0
+800021d4: a011 j 800021d8 <test_36+0x10>
+800021d6: a011 j 800021da <test_36+0x12>
+800021d8: a885 j 80002248 <fail>
+800021da: 405080b3 sub ra,ra,t0
+800021de: 0001 nop
+800021e0: ffe00e93 li t4,-2
+800021e4: 02400193 li gp,36
+800021e8: 07d09063 bne ra,t4,80002248 <fail>
+
+800021ec <test_37>:
+800021ec: 00000297 auipc t0,0x0
+800021f0: 00e28293 addi t0,t0,14 # 800021fa <test_37+0xe>
+800021f4: 4081 li ra,0
+800021f6: 2011 jal 800021fa <test_37+0xe>
+800021f8: a011 j 800021fc <test_37+0x10>
+800021fa: a011 j 800021fe <test_37+0x12>
+800021fc: a0b1 j 80002248 <fail>
+800021fe: 405080b3 sub ra,ra,t0
+80002202: 0001 nop
+80002204: ffe00e93 li t4,-2
+80002208: 02500193 li gp,37
+8000220c: 03d09e63 bne ra,t4,80002248 <fail>
+80002210: ffffe117 auipc sp,0xffffe
+80002214: ef810113 addi sp,sp,-264 # 80000108 <data>
+
+80002218 <test_40>:
+80002218: 4532 lw a0,12(sp)
+8000221a: 0505 addi a0,a0,1
+8000221c: c62a sw a0,12(sp)
+8000221e: 4632 lw a2,12(sp)
+80002220: fedcceb7 lui t4,0xfedcc
+80002224: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc7a99>
+80002228: 02800193 li gp,40
+8000222c: 01d61e63 bne a2,t4,80002248 <fail>
+
+80002230 <test_42>:
+80002230: 12300513 li a0,291
+80002234: 82aa mv t0,a0
+80002236: 92aa add t0,t0,a0
+80002238: 24600e93 li t4,582
+8000223c: 02a00193 li gp,42
+80002240: 01d29463 bne t0,t4,80002248 <fail>
+80002244: 00301c63 bne zero,gp,8000225c <pass>
+
+80002248 <fail>:
+80002248: 0ff0000f fence
+8000224c: 00018063 beqz gp,8000224c <fail+0x4>
+80002250: 00119193 slli gp,gp,0x1
+80002254: 0011e193 ori gp,gp,1
+80002258: 00000073 ecall
+
+8000225c <pass>:
+8000225c: 0ff0000f fence
+80002260: 00100193 li gp,1
+80002264: 00000073 ecall
+80002268: c0001073 unimp
+8000226c: 0000 unimp
+8000226e: 0000 unimp
+80002270: 0000 unimp
+80002272: 0000 unimp
+80002274: 0000 unimp
+80002276: 0000 unimp
+80002278: 0000 unimp
+8000227a: 0000 unimp
+8000227c: 0000 unimp
+8000227e: 0000 unimp
+80002280: 0000 unimp
+80002282: 0000 unimp
+80002284: 0000 unimp
+80002286: 0000 unimp
+80002288: 0000 unimp
+8000228a: 0000 unimp
+8000228c: 0000 unimp
+8000228e: 0000 unimp
+80002290: 0000 unimp
+80002292: 0000 unimp
+80002294: 0000 unimp
+80002296: 0000 unimp
+80002298: 0000 unimp
+8000229a: 0000 unimp
+8000229c: 0000 unimp
+8000229e: 0000 unimp
+800022a0: 0000 unimp
+800022a2: 0000 unimp
+800022a4: 0000 unimp
+800022a6: 0000 unimp
+800022a8: 0000 unimp
+800022aa: 0000 unimp
+800022ac: 0000 unimp
+800022ae: 0000 unimp
+800022b0: 0000 unimp
+800022b2: 0000 unimp
+800022b4: 0000 unimp
+800022b6: 0000 unimp
+800022b8: 0000 unimp
+800022ba: 0000 unimp
+800022bc: 0000 unimp
+800022be: 0000 unimp
+800022c0: 0000 unimp
+800022c2: 0000 unimp
+800022c4: 0000 unimp
+800022c6: 0000 unimp
+800022c8: 0000 unimp
+800022ca: 0000 unimp
+800022cc: 0000 unimp
+800022ce: 0000 unimp
+800022d0: 0000 unimp
+800022d2: 0000 unimp
+800022d4: 0000 unimp
+800022d6: 0000 unimp
+800022d8: 0000 unimp
+800022da: 0000 unimp
+800022dc: 0000 unimp
+800022de: 0000 unimp
+800022e0: 0000 unimp
+800022e2: 0000 unimp
+800022e4: 0000 unimp
+800022e6: 0000 unimp
+800022e8: 0000 unimp
+800022ea: 0000 unimp
+800022ec: 0000 unimp
+800022ee: 0000 unimp
+800022f0: 0000 unimp
+800022f2: 0000 unimp
+800022f4: 0000 unimp
+800022f6: 0000 unimp
+800022f8: 0000 unimp
+800022fa: 0000 unimp
+800022fc: 0000 unimp
+800022fe: 0000 unimp
+80002300: 0000 unimp
+80002302: 0000 unimp
+80002304: 0000 unimp
+80002306: 0000 unimp
+80002308: 0000 unimp
+8000230a: 0000 unimp
+8000230c: 0000 unimp
+8000230e: 0000 unimp
+80002310: 0000 unimp
+80002312: 0000 unimp
+80002314: 0000 unimp
+80002316: 0000 unimp
+80002318: 0000 unimp
+8000231a: 0000 unimp
+8000231c: 0000 unimp
+8000231e: 0000 unimp
+80002320: 0000 unimp
+80002322: 0000 unimp
+80002324: 0000 unimp
+80002326: 0000 unimp
+80002328: 0000 unimp
+8000232a: 0000 unimp
+8000232c: 0000 unimp
+8000232e: 0000 unimp
+80002330: 0000 unimp
+80002332: 0000 unimp
+80002334: 0000 unimp
+80002336: 0000 unimp
+80002338: 0000 unimp
+8000233a: 0000 unimp
+8000233c: 0000 unimp
+8000233e: 0000 unimp
+80002340: 0000 unimp
+80002342: 0000 unimp
+80002344: 0000 unimp
+80002346: 0000 unimp
+80002348: 0000 unimp
+8000234a: 0000 unimp
+8000234c: 0000 unimp
+8000234e: 0000 unimp
+80002350: 0000 unimp
+80002352: 0000 unimp
+80002354: 0000 unimp
+80002356: 0000 unimp
+80002358: 0000 unimp
+8000235a: 0000 unimp
+8000235c: 0000 unimp
+8000235e: 0000 unimp
+80002360: 0000 unimp
+80002362: 0000 unimp
+80002364: 0000 unimp
+80002366: 0000 unimp
+80002368: 0000 unimp
+8000236a: 0000 unimp
+8000236c: 0000 unimp
+8000236e: 0000 unimp
+80002370: 0000 unimp
+80002372: 0000 unimp
+80002374: 0000 unimp
+80002376: 0000 unimp
+80002378: 0000 unimp
+8000237a: 0000 unimp
+8000237c: 0000 unimp
+8000237e: 0000 unimp
+80002380: 0000 unimp
+80002382: 0000 unimp
+80002384: 0000 unimp
+80002386: 0000 unimp
+80002388: 0000 unimp
+8000238a: 0000 unimp
+8000238c: 0000 unimp
+8000238e: 0000 unimp
+80002390: 0000 unimp
+80002392: 0000 unimp
+80002394: 0000 unimp
+80002396: 0000 unimp
+80002398: 0000 unimp
+8000239a: 0000 unimp
+8000239c: 0000 unimp
+8000239e: 0000 unimp
+800023a0: 0000 unimp
+800023a2: 0000 unimp
+800023a4: 0000 unimp
+800023a6: 0000 unimp
+800023a8: 0000 unimp
+800023aa: 0000 unimp
+800023ac: 0000 unimp
+800023ae: 0000 unimp
+800023b0: 0000 unimp
+800023b2: 0000 unimp
+800023b4: 0000 unimp
+800023b6: 0000 unimp
+800023b8: 0000 unimp
+800023ba: 0000 unimp
+800023bc: 0000 unimp
+800023be: 0000 unimp
+800023c0: 0000 unimp
+800023c2: 0000 unimp
+800023c4: 0000 unimp
+800023c6: 0000 unimp
+800023c8: 0000 unimp
+800023ca: 0000 unimp
+800023cc: 0000 unimp
+800023ce: 0000 unimp
+800023d0: 0000 unimp
+800023d2: 0000 unimp
+800023d4: 0000 unimp
+800023d6: 0000 unimp
+800023d8: 0000 unimp
+800023da: 0000 unimp
+800023dc: 0000 unimp
+800023de: 0000 unimp
+800023e0: 0000 unimp
+800023e2: 0000 unimp
+800023e4: 0000 unimp
+800023e6: 0000 unimp
+800023e8: 0000 unimp
+800023ea: 0000 unimp
+800023ec: 0000 unimp
+800023ee: 0000 unimp
+800023f0: 0000 unimp
+800023f2: 0000 unimp
+800023f4: 0000 unimp
+800023f6: 0000 unimp
+800023f8: 0000 unimp
+800023fa: 0000 unimp
+800023fc: 0000 unimp
+800023fe: 0000 unimp
+80002400: 0000 unimp
+80002402: 0000 unimp
+80002404: 0000 unimp
+80002406: 0000 unimp
+80002408: 0000 unimp
+8000240a: 0000 unimp
+8000240c: 0000 unimp
+8000240e: 0000 unimp
+80002410: 0000 unimp
+80002412: 0000 unimp
+80002414: 0000 unimp
+80002416: 0000 unimp
+80002418: 0000 unimp
+8000241a: 0000 unimp
+8000241c: 0000 unimp
+8000241e: 0000 unimp
+80002420: 0000 unimp
+80002422: 0000 unimp
+80002424: 0000 unimp
+80002426: 0000 unimp
+80002428: 0000 unimp
+8000242a: 0000 unimp
+8000242c: 0000 unimp
+8000242e: 0000 unimp
+80002430: 0000 unimp
+80002432: 0000 unimp
+80002434: 0000 unimp
+80002436: 0000 unimp
+80002438: 0000 unimp
+8000243a: 0000 unimp
+8000243c: 0000 unimp
+8000243e: 0000 unimp
+80002440: 0000 unimp
+80002442: 0000 unimp
+80002444: 0000 unimp
+80002446: 0000 unimp
+80002448: 0000 unimp
+8000244a: 0000 unimp
+8000244c: 0000 unimp
+8000244e: 0000 unimp
+80002450: 0000 unimp
+80002452: 0000 unimp
+80002454: 0000 unimp
+80002456: 0000 unimp
+80002458: 0000 unimp
+8000245a: 0000 unimp
+8000245c: 0000 unimp
+8000245e: 0000 unimp
+80002460: 0000 unimp
+80002462: 0000 unimp
+80002464: 0000 unimp
+80002466: 0000 unimp
+80002468: 0000 unimp
+8000246a: 0000 unimp
+8000246c: 0000 unimp
+8000246e: 0000 unimp
+80002470: 0000 unimp
+80002472: 0000 unimp
+80002474: 0000 unimp
+80002476: 0000 unimp
+80002478: 0000 unimp
+8000247a: 0000 unimp
+8000247c: 0000 unimp
+8000247e: 0000 unimp
+80002480: 0000 unimp
+80002482: 0000 unimp
+80002484: 0000 unimp
+80002486: 0000 unimp
+80002488: 0000 unimp
+8000248a: 0000 unimp
+8000248c: 0000 unimp
+8000248e: 0000 unimp
+80002490: 0000 unimp
+80002492: 0000 unimp
+80002494: 0000 unimp
+80002496: 0000 unimp
+80002498: 0000 unimp
+8000249a: 0000 unimp
+8000249c: 0000 unimp
+8000249e: 0000 unimp
+800024a0: 0000 unimp
+800024a2: 0000 unimp
+800024a4: 0000 unimp
+800024a6: 0000 unimp
+800024a8: 0000 unimp
+800024aa: 0000 unimp
+800024ac: 0000 unimp
+800024ae: 0000 unimp
+800024b0: 0000 unimp
+800024b2: 0000 unimp
+800024b4: 0000 unimp
+800024b6: 0000 unimp
+800024b8: 0000 unimp
+800024ba: 0000 unimp
+800024bc: 0000 unimp
+800024be: 0000 unimp
+800024c0: 0000 unimp
+800024c2: 0000 unimp
+800024c4: 0000 unimp
+800024c6: 0000 unimp
+800024c8: 0000 unimp
+800024ca: 0000 unimp
+800024cc: 0000 unimp
+800024ce: 0000 unimp
+800024d0: 0000 unimp
+800024d2: 0000 unimp
+800024d4: 0000 unimp
+800024d6: 0000 unimp
+800024d8: 0000 unimp
+800024da: 0000 unimp
+800024dc: 0000 unimp
+800024de: 0000 unimp
+800024e0: 0000 unimp
+800024e2: 0000 unimp
+800024e4: 0000 unimp
+800024e6: 0000 unimp
+800024e8: 0000 unimp
+800024ea: 0000 unimp
+800024ec: 0000 unimp
+800024ee: 0000 unimp
+800024f0: 0000 unimp
+800024f2: 0000 unimp
+800024f4: 0000 unimp
+800024f6: 0000 unimp
+800024f8: 0000 unimp
+800024fa: 0000 unimp
+800024fc: 0000 unimp
+800024fe: 0000 unimp
+80002500: 0000 unimp
+80002502: 0000 unimp
+80002504: 0000 unimp
+80002506: 0000 unimp
+80002508: 0000 unimp
+8000250a: 0000 unimp
+8000250c: 0000 unimp
+8000250e: 0000 unimp
+80002510: 0000 unimp
+80002512: 0000 unimp
+80002514: 0000 unimp
+80002516: 0000 unimp
+80002518: 0000 unimp
+8000251a: 0000 unimp
+8000251c: 0000 unimp
+8000251e: 0000 unimp
+80002520: 0000 unimp
+80002522: 0000 unimp
+80002524: 0000 unimp
+80002526: 0000 unimp
+80002528: 0000 unimp
+8000252a: 0000 unimp
+8000252c: 0000 unimp
+8000252e: 0000 unimp
+80002530: 0000 unimp
+80002532: 0000 unimp
+80002534: 0000 unimp
+80002536: 0000 unimp
+80002538: 0000 unimp
+8000253a: 0000 unimp
+8000253c: 0000 unimp
+8000253e: 0000 unimp
+80002540: 0000 unimp
+80002542: 0000 unimp
+80002544: 0000 unimp
+80002546: 0000 unimp
+80002548: 0000 unimp
+8000254a: 0000 unimp
+8000254c: 0000 unimp
+8000254e: 0000 unimp
+80002550: 0000 unimp
+80002552: 0000 unimp
+80002554: 0000 unimp
+80002556: 0000 unimp
+80002558: 0000 unimp
+8000255a: 0000 unimp
+8000255c: 0000 unimp
+8000255e: 0000 unimp
+80002560: 0000 unimp
+80002562: 0000 unimp
+80002564: 0000 unimp
+80002566: 0000 unimp
+80002568: 0000 unimp
+8000256a: 0000 unimp
+8000256c: 0000 unimp
+8000256e: 0000 unimp
+80002570: 0000 unimp
+80002572: 0000 unimp
+80002574: 0000 unimp
+80002576: 0000 unimp
+80002578: 0000 unimp
+8000257a: 0000 unimp
+8000257c: 0000 unimp
+8000257e: 0000 unimp
+80002580: 0000 unimp
+80002582: 0000 unimp
+80002584: 0000 unimp
+80002586: 0000 unimp
+80002588: 0000 unimp
+8000258a: 0000 unimp
+8000258c: 0000 unimp
+8000258e: 0000 unimp
+80002590: 0000 unimp
+80002592: 0000 unimp
+80002594: 0000 unimp
+80002596: 0000 unimp
+80002598: 0000 unimp
+8000259a: 0000 unimp
+8000259c: 0000 unimp
+8000259e: 0000 unimp
+800025a0: 0000 unimp
+800025a2: 0000 unimp
+800025a4: 0000 unimp
+800025a6: 0000 unimp
+800025a8: 0000 unimp
+800025aa: 0000 unimp
+800025ac: 0000 unimp
+800025ae: 0000 unimp
+800025b0: 0000 unimp
+800025b2: 0000 unimp
+800025b4: 0000 unimp
+800025b6: 0000 unimp
+800025b8: 0000 unimp
+800025ba: 0000 unimp
+800025bc: 0000 unimp
+800025be: 0000 unimp
+800025c0: 0000 unimp
+800025c2: 0000 unimp
+800025c4: 0000 unimp
+800025c6: 0000 unimp
+800025c8: 0000 unimp
+800025ca: 0000 unimp
+800025cc: 0000 unimp
+800025ce: 0000 unimp
+800025d0: 0000 unimp
+800025d2: 0000 unimp
+800025d4: 0000 unimp
+800025d6: 0000 unimp
+800025d8: 0000 unimp
+800025da: 0000 unimp
+800025dc: 0000 unimp
+800025de: 0000 unimp
+800025e0: 0000 unimp
+800025e2: 0000 unimp
+800025e4: 0000 unimp
+800025e6: 0000 unimp
+800025e8: 0000 unimp
+800025ea: 0000 unimp
+800025ec: 0000 unimp
+800025ee: 0000 unimp
+800025f0: 0000 unimp
+800025f2: 0000 unimp
+800025f4: 0000 unimp
+800025f6: 0000 unimp
+800025f8: 0000 unimp
+800025fa: 0000 unimp
+800025fc: 0000 unimp
+800025fe: 0000 unimp
+80002600: 0000 unimp
+80002602: 0000 unimp
+80002604: 0000 unimp
+80002606: 0000 unimp
+80002608: 0000 unimp
+8000260a: 0000 unimp
+8000260c: 0000 unimp
+8000260e: 0000 unimp
+80002610: 0000 unimp
+80002612: 0000 unimp
+80002614: 0000 unimp
+80002616: 0000 unimp
+80002618: 0000 unimp
+8000261a: 0000 unimp
+8000261c: 0000 unimp
+8000261e: 0000 unimp
+80002620: 0000 unimp
+80002622: 0000 unimp
+80002624: 0000 unimp
+80002626: 0000 unimp
+80002628: 0000 unimp
+8000262a: 0000 unimp
+8000262c: 0000 unimp
+8000262e: 0000 unimp
+80002630: 0000 unimp
+80002632: 0000 unimp
+80002634: 0000 unimp
+80002636: 0000 unimp
+80002638: 0000 unimp
+8000263a: 0000 unimp
+8000263c: 0000 unimp
+8000263e: 0000 unimp
+80002640: 0000 unimp
+80002642: 0000 unimp
+80002644: 0000 unimp
+80002646: 0000 unimp
+80002648: 0000 unimp
+8000264a: 0000 unimp
+8000264c: 0000 unimp
+8000264e: 0000 unimp
+80002650: 0000 unimp
+80002652: 0000 unimp
+80002654: 0000 unimp
+80002656: 0000 unimp
+80002658: 0000 unimp
+8000265a: 0000 unimp
+8000265c: 0000 unimp
+8000265e: 0000 unimp
+80002660: 0000 unimp
+80002662: 0000 unimp
+80002664: 0000 unimp
+80002666: 0000 unimp
+80002668: 0000 unimp
+8000266a: 0000 unimp
+8000266c: 0000 unimp
+8000266e: 0000 unimp
+80002670: 0000 unimp
+80002672: 0000 unimp
+80002674: 0000 unimp
+80002676: 0000 unimp
+80002678: 0000 unimp
+8000267a: 0000 unimp
+8000267c: 0000 unimp
+8000267e: 0000 unimp
+80002680: 0000 unimp
+80002682: 0000 unimp
+80002684: 0000 unimp
+80002686: 0000 unimp
+80002688: 0000 unimp
+8000268a: 0000 unimp
+8000268c: 0000 unimp
+8000268e: 0000 unimp
+80002690: 0000 unimp
+80002692: 0000 unimp
+80002694: 0000 unimp
+80002696: 0000 unimp
+80002698: 0000 unimp
+8000269a: 0000 unimp
+8000269c: 0000 unimp
+8000269e: 0000 unimp
+800026a0: 0000 unimp
+800026a2: 0000 unimp
+800026a4: 0000 unimp
+800026a6: 0000 unimp
+800026a8: 0000 unimp
+800026aa: 0000 unimp
+800026ac: 0000 unimp
+800026ae: 0000 unimp
+800026b0: 0000 unimp
+800026b2: 0000 unimp
+800026b4: 0000 unimp
+800026b6: 0000 unimp
+800026b8: 0000 unimp
+800026ba: 0000 unimp
+800026bc: 0000 unimp
+800026be: 0000 unimp
+800026c0: 0000 unimp
+800026c2: 0000 unimp
+800026c4: 0000 unimp
+800026c6: 0000 unimp
+800026c8: 0000 unimp
+800026ca: 0000 unimp
+800026cc: 0000 unimp
+800026ce: 0000 unimp
+800026d0: 0000 unimp
+800026d2: 0000 unimp
+800026d4: 0000 unimp
+800026d6: 0000 unimp
+800026d8: 0000 unimp
+800026da: 0000 unimp
+800026dc: 0000 unimp
+800026de: 0000 unimp
+800026e0: 0000 unimp
+800026e2: 0000 unimp
+800026e4: 0000 unimp
+800026e6: 0000 unimp
+800026e8: 0000 unimp
+800026ea: 0000 unimp
+800026ec: 0000 unimp
+800026ee: 0000 unimp
+800026f0: 0000 unimp
+800026f2: 0000 unimp
+800026f4: 0000 unimp
+800026f6: 0000 unimp
+800026f8: 0000 unimp
+800026fa: 0000 unimp
+800026fc: 0000 unimp
+800026fe: 0000 unimp
+80002700: 0000 unimp
+80002702: 0000 unimp
+80002704: 0000 unimp
+80002706: 0000 unimp
+80002708: 0000 unimp
+8000270a: 0000 unimp
+8000270c: 0000 unimp
+8000270e: 0000 unimp
+80002710: 0000 unimp
+80002712: 0000 unimp
+80002714: 0000 unimp
+80002716: 0000 unimp
+80002718: 0000 unimp
+8000271a: 0000 unimp
+8000271c: 0000 unimp
+8000271e: 0000 unimp
+80002720: 0000 unimp
+80002722: 0000 unimp
+80002724: 0000 unimp
+80002726: 0000 unimp
+80002728: 0000 unimp
+8000272a: 0000 unimp
+8000272c: 0000 unimp
+8000272e: 0000 unimp
+80002730: 0000 unimp
+80002732: 0000 unimp
+80002734: 0000 unimp
+80002736: 0000 unimp
+80002738: 0000 unimp
+8000273a: 0000 unimp
+8000273c: 0000 unimp
+8000273e: 0000 unimp
+80002740: 0000 unimp
+80002742: 0000 unimp
+80002744: 0000 unimp
+80002746: 0000 unimp
+80002748: 0000 unimp
+8000274a: 0000 unimp
+8000274c: 0000 unimp
+8000274e: 0000 unimp
+80002750: 0000 unimp
+80002752: 0000 unimp
+80002754: 0000 unimp
+80002756: 0000 unimp
+80002758: 0000 unimp
+8000275a: 0000 unimp
+8000275c: 0000 unimp
+8000275e: 0000 unimp
+80002760: 0000 unimp
+80002762: 0000 unimp
+80002764: 0000 unimp
+80002766: 0000 unimp
+80002768: 0000 unimp
+8000276a: 0000 unimp
+8000276c: 0000 unimp
+8000276e: 0000 unimp
+80002770: 0000 unimp
+80002772: 0000 unimp
+80002774: 0000 unimp
+80002776: 0000 unimp
+80002778: 0000 unimp
+8000277a: 0000 unimp
+8000277c: 0000 unimp
+8000277e: 0000 unimp
+80002780: 0000 unimp
+80002782: 0000 unimp
+80002784: 0000 unimp
+80002786: 0000 unimp
+80002788: 0000 unimp
+8000278a: 0000 unimp
+8000278c: 0000 unimp
+8000278e: 0000 unimp
+80002790: 0000 unimp
+80002792: 0000 unimp
+80002794: 0000 unimp
+80002796: 0000 unimp
+80002798: 0000 unimp
+8000279a: 0000 unimp
+8000279c: 0000 unimp
+8000279e: 0000 unimp
+800027a0: 0000 unimp
+800027a2: 0000 unimp
+800027a4: 0000 unimp
+800027a6: 0000 unimp
+800027a8: 0000 unimp
+800027aa: 0000 unimp
+800027ac: 0000 unimp
+800027ae: 0000 unimp
+800027b0: 0000 unimp
+800027b2: 0000 unimp
+800027b4: 0000 unimp
+800027b6: 0000 unimp
+800027b8: 0000 unimp
+800027ba: 0000 unimp
+800027bc: 0000 unimp
+800027be: 0000 unimp
+800027c0: 0000 unimp
+800027c2: 0000 unimp
+800027c4: 0000 unimp
+800027c6: 0000 unimp
+800027c8: 0000 unimp
+800027ca: 0000 unimp
+800027cc: 0000 unimp
+800027ce: 0000 unimp
+800027d0: 0000 unimp
+800027d2: 0000 unimp
+800027d4: 0000 unimp
+800027d6: 0000 unimp
+800027d8: 0000 unimp
+800027da: 0000 unimp
+800027dc: 0000 unimp
+800027de: 0000 unimp
+800027e0: 0000 unimp
+800027e2: 0000 unimp
+800027e4: 0000 unimp
+800027e6: 0000 unimp
+800027e8: 0000 unimp
+800027ea: 0000 unimp
+800027ec: 0000 unimp
+800027ee: 0000 unimp
+800027f0: 0000 unimp
+800027f2: 0000 unimp
+800027f4: 0000 unimp
+800027f6: 0000 unimp
+800027f8: 0000 unimp
+800027fa: 0000 unimp
+800027fc: 0000 unimp
+800027fe: 0000 unimp
+80002800: 0000 unimp
+80002802: 0000 unimp
+80002804: 0000 unimp
+80002806: 0000 unimp
+80002808: 0000 unimp
+8000280a: 0000 unimp
+8000280c: 0000 unimp
+8000280e: 0000 unimp
+80002810: 0000 unimp
+80002812: 0000 unimp
+80002814: 0000 unimp
+80002816: 0000 unimp
+80002818: 0000 unimp
+8000281a: 0000 unimp
+8000281c: 0000 unimp
+8000281e: 0000 unimp
+80002820: 0000 unimp
+80002822: 0000 unimp
+80002824: 0000 unimp
+80002826: 0000 unimp
+80002828: 0000 unimp
+8000282a: 0000 unimp
+8000282c: 0000 unimp
+8000282e: 0000 unimp
+80002830: 0000 unimp
+80002832: 0000 unimp
+80002834: 0000 unimp
+80002836: 0000 unimp
+80002838: 0000 unimp
+8000283a: 0000 unimp
+8000283c: 0000 unimp
+8000283e: 0000 unimp
+80002840: 0000 unimp
+80002842: 0000 unimp
+80002844: 0000 unimp
+80002846: 0000 unimp
+80002848: 0000 unimp
+8000284a: 0000 unimp
+8000284c: 0000 unimp
+8000284e: 0000 unimp
+80002850: 0000 unimp
+80002852: 0000 unimp
+80002854: 0000 unimp
+80002856: 0000 unimp
+80002858: 0000 unimp
+8000285a: 0000 unimp
+8000285c: 0000 unimp
+8000285e: 0000 unimp
+80002860: 0000 unimp
+80002862: 0000 unimp
+80002864: 0000 unimp
+80002866: 0000 unimp
+80002868: 0000 unimp
+8000286a: 0000 unimp
+8000286c: 0000 unimp
+8000286e: 0000 unimp
+80002870: 0000 unimp
+80002872: 0000 unimp
+80002874: 0000 unimp
+80002876: 0000 unimp
+80002878: 0000 unimp
+8000287a: 0000 unimp
+8000287c: 0000 unimp
+8000287e: 0000 unimp
+80002880: 0000 unimp
+80002882: 0000 unimp
+80002884: 0000 unimp
+80002886: 0000 unimp
+80002888: 0000 unimp
+8000288a: 0000 unimp
+8000288c: 0000 unimp
+8000288e: 0000 unimp
+80002890: 0000 unimp
+80002892: 0000 unimp
+80002894: 0000 unimp
+80002896: 0000 unimp
+80002898: 0000 unimp
+8000289a: 0000 unimp
+8000289c: 0000 unimp
+8000289e: 0000 unimp
+800028a0: 0000 unimp
+800028a2: 0000 unimp
+800028a4: 0000 unimp
+800028a6: 0000 unimp
+800028a8: 0000 unimp
+800028aa: 0000 unimp
+800028ac: 0000 unimp
+800028ae: 0000 unimp
+800028b0: 0000 unimp
+800028b2: 0000 unimp
+800028b4: 0000 unimp
+800028b6: 0000 unimp
+800028b8: 0000 unimp
+800028ba: 0000 unimp
+800028bc: 0000 unimp
+800028be: 0000 unimp
+800028c0: 0000 unimp
+800028c2: 0000 unimp
+800028c4: 0000 unimp
+800028c6: 0000 unimp
+800028c8: 0000 unimp
+800028ca: 0000 unimp
+800028cc: 0000 unimp
+800028ce: 0000 unimp
+800028d0: 0000 unimp
+800028d2: 0000 unimp
+800028d4: 0000 unimp
+800028d6: 0000 unimp
+800028d8: 0000 unimp
+800028da: 0000 unimp
+800028dc: 0000 unimp
+800028de: 0000 unimp
+800028e0: 0000 unimp
+800028e2: 0000 unimp
+800028e4: 0000 unimp
+800028e6: 0000 unimp
+800028e8: 0000 unimp
+800028ea: 0000 unimp
+800028ec: 0000 unimp
+800028ee: 0000 unimp
+800028f0: 0000 unimp
+800028f2: 0000 unimp
+800028f4: 0000 unimp
+800028f6: 0000 unimp
+800028f8: 0000 unimp
+800028fa: 0000 unimp
+800028fc: 0000 unimp
+800028fe: 0000 unimp
+80002900: 0000 unimp
+80002902: 0000 unimp
+80002904: 0000 unimp
+80002906: 0000 unimp
+80002908: 0000 unimp
+8000290a: 0000 unimp
+8000290c: 0000 unimp
+8000290e: 0000 unimp
+80002910: 0000 unimp
+80002912: 0000 unimp
+80002914: 0000 unimp
+80002916: 0000 unimp
+80002918: 0000 unimp
+8000291a: 0000 unimp
+8000291c: 0000 unimp
+8000291e: 0000 unimp
+80002920: 0000 unimp
+80002922: 0000 unimp
+80002924: 0000 unimp
+80002926: 0000 unimp
+80002928: 0000 unimp
+8000292a: 0000 unimp
+8000292c: 0000 unimp
+8000292e: 0000 unimp
+80002930: 0000 unimp
+80002932: 0000 unimp
+80002934: 0000 unimp
+80002936: 0000 unimp
+80002938: 0000 unimp
+8000293a: 0000 unimp
+8000293c: 0000 unimp
+8000293e: 0000 unimp
+80002940: 0000 unimp
+80002942: 0000 unimp
+80002944: 0000 unimp
+80002946: 0000 unimp
+80002948: 0000 unimp
+8000294a: 0000 unimp
+8000294c: 0000 unimp
+8000294e: 0000 unimp
+80002950: 0000 unimp
+80002952: 0000 unimp
+80002954: 0000 unimp
+80002956: 0000 unimp
+80002958: 0000 unimp
+8000295a: 0000 unimp
+8000295c: 0000 unimp
+8000295e: 0000 unimp
+80002960: 0000 unimp
+80002962: 0000 unimp
+80002964: 0000 unimp
+80002966: 0000 unimp
+80002968: 0000 unimp
+8000296a: 0000 unimp
+8000296c: 0000 unimp
+8000296e: 0000 unimp
+80002970: 0000 unimp
+80002972: 0000 unimp
+80002974: 0000 unimp
+80002976: 0000 unimp
+80002978: 0000 unimp
+8000297a: 0000 unimp
+8000297c: 0000 unimp
+8000297e: 0000 unimp
+80002980: 0000 unimp
+80002982: 0000 unimp
+80002984: 0000 unimp
+80002986: 0000 unimp
+80002988: 0000 unimp
+8000298a: 0000 unimp
+8000298c: 0000 unimp
+8000298e: 0000 unimp
+80002990: 0000 unimp
+80002992: 0000 unimp
+80002994: 0000 unimp
+80002996: 0000 unimp
+80002998: 0000 unimp
+8000299a: 0000 unimp
+8000299c: 0000 unimp
+8000299e: 0000 unimp
+800029a0: 0000 unimp
+800029a2: 0000 unimp
+800029a4: 0000 unimp
+800029a6: 0000 unimp
+800029a8: 0000 unimp
+800029aa: 0000 unimp
+800029ac: 0000 unimp
+800029ae: 0000 unimp
+800029b0: 0000 unimp
+800029b2: 0000 unimp
+800029b4: 0000 unimp
+800029b6: 0000 unimp
+800029b8: 0000 unimp
+800029ba: 0000 unimp
+800029bc: 0000 unimp
+800029be: 0000 unimp
+800029c0: 0000 unimp
+800029c2: 0000 unimp
+800029c4: 0000 unimp
+800029c6: 0000 unimp
+800029c8: 0000 unimp
+800029ca: 0000 unimp
+800029cc: 0000 unimp
+800029ce: 0000 unimp
+800029d0: 0000 unimp
+800029d2: 0000 unimp
+800029d4: 0000 unimp
+800029d6: 0000 unimp
+800029d8: 0000 unimp
+800029da: 0000 unimp
+800029dc: 0000 unimp
+800029de: 0000 unimp
+800029e0: 0000 unimp
+800029e2: 0000 unimp
+800029e4: 0000 unimp
+800029e6: 0000 unimp
+800029e8: 0000 unimp
+800029ea: 0000 unimp
+800029ec: 0000 unimp
+800029ee: 0000 unimp
+800029f0: 0000 unimp
+800029f2: 0000 unimp
+800029f4: 0000 unimp
+800029f6: 0000 unimp
+800029f8: 0000 unimp
+800029fa: 0000 unimp
+800029fc: 0000 unimp
+800029fe: 0000 unimp
+80002a00: 0000 unimp
+80002a02: 0000 unimp
+80002a04: 0000 unimp
+80002a06: 0000 unimp
+80002a08: 0000 unimp
+80002a0a: 0000 unimp
+80002a0c: 0000 unimp
+80002a0e: 0000 unimp
+80002a10: 0000 unimp
+80002a12: 0000 unimp
+80002a14: 0000 unimp
+80002a16: 0000 unimp
+80002a18: 0000 unimp
+80002a1a: 0000 unimp
+80002a1c: 0000 unimp
+80002a1e: 0000 unimp
+80002a20: 0000 unimp
+80002a22: 0000 unimp
+80002a24: 0000 unimp
+80002a26: 0000 unimp
+80002a28: 0000 unimp
+80002a2a: 0000 unimp
+80002a2c: 0000 unimp
+80002a2e: 0000 unimp
+80002a30: 0000 unimp
+80002a32: 0000 unimp
+80002a34: 0000 unimp
+80002a36: 0000 unimp
+80002a38: 0000 unimp
+80002a3a: 0000 unimp
+80002a3c: 0000 unimp
+80002a3e: 0000 unimp
+80002a40: 0000 unimp
+80002a42: 0000 unimp
+80002a44: 0000 unimp
+80002a46: 0000 unimp
+80002a48: 0000 unimp
+80002a4a: 0000 unimp
+80002a4c: 0000 unimp
+80002a4e: 0000 unimp
+80002a50: 0000 unimp
+80002a52: 0000 unimp
+80002a54: 0000 unimp
+80002a56: 0000 unimp
+80002a58: 0000 unimp
+80002a5a: 0000 unimp
+80002a5c: 0000 unimp
+80002a5e: 0000 unimp
+80002a60: 0000 unimp
+80002a62: 0000 unimp
+80002a64: 0000 unimp
+80002a66: 0000 unimp
+80002a68: 0000 unimp
+80002a6a: 0000 unimp
+80002a6c: 0000 unimp
+80002a6e: 0000 unimp
+80002a70: 0000 unimp
+80002a72: 0000 unimp
+80002a74: 0000 unimp
+80002a76: 0000 unimp
+80002a78: 0000 unimp
+80002a7a: 0000 unimp
+80002a7c: 0000 unimp
+80002a7e: 0000 unimp
+80002a80: 0000 unimp
+80002a82: 0000 unimp
+80002a84: 0000 unimp
+80002a86: 0000 unimp
+80002a88: 0000 unimp
+80002a8a: 0000 unimp
+80002a8c: 0000 unimp
+80002a8e: 0000 unimp
+80002a90: 0000 unimp
+80002a92: 0000 unimp
+80002a94: 0000 unimp
+80002a96: 0000 unimp
+80002a98: 0000 unimp
+80002a9a: 0000 unimp
+80002a9c: 0000 unimp
+80002a9e: 0000 unimp
+80002aa0: 0000 unimp
+80002aa2: 0000 unimp
+80002aa4: 0000 unimp
+80002aa6: 0000 unimp
+80002aa8: 0000 unimp
+80002aaa: 0000 unimp
+80002aac: 0000 unimp
+80002aae: 0000 unimp
+80002ab0: 0000 unimp
+80002ab2: 0000 unimp
+80002ab4: 0000 unimp
+80002ab6: 0000 unimp
+80002ab8: 0000 unimp
+80002aba: 0000 unimp
+80002abc: 0000 unimp
+80002abe: 0000 unimp
+80002ac0: 0000 unimp
+80002ac2: 0000 unimp
+80002ac4: 0000 unimp
+80002ac6: 0000 unimp
+80002ac8: 0000 unimp
+80002aca: 0000 unimp
+80002acc: 0000 unimp
+80002ace: 0000 unimp
+80002ad0: 0000 unimp
+80002ad2: 0000 unimp
+80002ad4: 0000 unimp
+80002ad6: 0000 unimp
+80002ad8: 0000 unimp
+80002ada: 0000 unimp
+80002adc: 0000 unimp
+80002ade: 0000 unimp
+80002ae0: 0000 unimp
+80002ae2: 0000 unimp
+80002ae4: 0000 unimp
+80002ae6: 0000 unimp
+80002ae8: 0000 unimp
+80002aea: 0000 unimp
+80002aec: 0000 unimp
+80002aee: 0000 unimp
+80002af0: 0000 unimp
+80002af2: 0000 unimp
+80002af4: 0000 unimp
+80002af6: 0000 unimp
+80002af8: 0000 unimp
+80002afa: 0000 unimp
+80002afc: 0000 unimp
+80002afe: 0000 unimp
+80002b00: 0000 unimp
+80002b02: 0000 unimp
+80002b04: 0000 unimp
+80002b06: 0000 unimp
+80002b08: 0000 unimp
+80002b0a: 0000 unimp
+80002b0c: 0000 unimp
+80002b0e: 0000 unimp
+80002b10: 0000 unimp
+80002b12: 0000 unimp
+80002b14: 0000 unimp
+80002b16: 0000 unimp
+80002b18: 0000 unimp
+80002b1a: 0000 unimp
+80002b1c: 0000 unimp
+80002b1e: 0000 unimp
+80002b20: 0000 unimp
+80002b22: 0000 unimp
+80002b24: 0000 unimp
+80002b26: 0000 unimp
+80002b28: 0000 unimp
+80002b2a: 0000 unimp
+80002b2c: 0000 unimp
+80002b2e: 0000 unimp
+80002b30: 0000 unimp
+80002b32: 0000 unimp
+80002b34: 0000 unimp
+80002b36: 0000 unimp
+80002b38: 0000 unimp
+80002b3a: 0000 unimp
+80002b3c: 0000 unimp
+80002b3e: 0000 unimp
+80002b40: 0000 unimp
+80002b42: 0000 unimp
+80002b44: 0000 unimp
+80002b46: 0000 unimp
+80002b48: 0000 unimp
+80002b4a: 0000 unimp
+80002b4c: 0000 unimp
+80002b4e: 0000 unimp
+80002b50: 0000 unimp
+80002b52: 0000 unimp
+80002b54: 0000 unimp
+80002b56: 0000 unimp
+80002b58: 0000 unimp
+80002b5a: 0000 unimp
+80002b5c: 0000 unimp
+80002b5e: 0000 unimp
+80002b60: 0000 unimp
+80002b62: 0000 unimp
+80002b64: 0000 unimp
+80002b66: 0000 unimp
+80002b68: 0000 unimp
+80002b6a: 0000 unimp
+80002b6c: 0000 unimp
+80002b6e: 0000 unimp
+80002b70: 0000 unimp
+80002b72: 0000 unimp
+80002b74: 0000 unimp
+80002b76: 0000 unimp
+80002b78: 0000 unimp
+80002b7a: 0000 unimp
+80002b7c: 0000 unimp
+80002b7e: 0000 unimp
+80002b80: 0000 unimp
+80002b82: 0000 unimp
+80002b84: 0000 unimp
+80002b86: 0000 unimp
+80002b88: 0000 unimp
+80002b8a: 0000 unimp
+80002b8c: 0000 unimp
+80002b8e: 0000 unimp
+80002b90: 0000 unimp
+80002b92: 0000 unimp
+80002b94: 0000 unimp
+80002b96: 0000 unimp
+80002b98: 0000 unimp
+80002b9a: 0000 unimp
+80002b9c: 0000 unimp
+80002b9e: 0000 unimp
+80002ba0: 0000 unimp
+80002ba2: 0000 unimp
+80002ba4: 0000 unimp
+80002ba6: 0000 unimp
+80002ba8: 0000 unimp
+80002baa: 0000 unimp
+80002bac: 0000 unimp
+80002bae: 0000 unimp
+80002bb0: 0000 unimp
+80002bb2: 0000 unimp
+80002bb4: 0000 unimp
+80002bb6: 0000 unimp
+80002bb8: 0000 unimp
+80002bba: 0000 unimp
+80002bbc: 0000 unimp
+80002bbe: 0000 unimp
+80002bc0: 0000 unimp
+80002bc2: 0000 unimp
+80002bc4: 0000 unimp
+80002bc6: 0000 unimp
+80002bc8: 0000 unimp
+80002bca: 0000 unimp
+80002bcc: 0000 unimp
+80002bce: 0000 unimp
+80002bd0: 0000 unimp
+80002bd2: 0000 unimp
+80002bd4: 0000 unimp
+80002bd6: 0000 unimp
+80002bd8: 0000 unimp
+80002bda: 0000 unimp
+80002bdc: 0000 unimp
+80002bde: 0000 unimp
+80002be0: 0000 unimp
+80002be2: 0000 unimp
+80002be4: 0000 unimp
+80002be6: 0000 unimp
+80002be8: 0000 unimp
+80002bea: 0000 unimp
+80002bec: 0000 unimp
+80002bee: 0000 unimp
+80002bf0: 0000 unimp
+80002bf2: 0000 unimp
+80002bf4: 0000 unimp
+80002bf6: 0000 unimp
+80002bf8: 0000 unimp
+80002bfa: 0000 unimp
+80002bfc: 0000 unimp
+80002bfe: 0000 unimp
+80002c00: 0000 unimp
+80002c02: 0000 unimp
+80002c04: 0000 unimp
+80002c06: 0000 unimp
+80002c08: 0000 unimp
+80002c0a: 0000 unimp
+80002c0c: 0000 unimp
+80002c0e: 0000 unimp
+80002c10: 0000 unimp
+80002c12: 0000 unimp
+80002c14: 0000 unimp
+80002c16: 0000 unimp
+80002c18: 0000 unimp
+80002c1a: 0000 unimp
+80002c1c: 0000 unimp
+80002c1e: 0000 unimp
+80002c20: 0000 unimp
+80002c22: 0000 unimp
+80002c24: 0000 unimp
+80002c26: 0000 unimp
+80002c28: 0000 unimp
+80002c2a: 0000 unimp
+80002c2c: 0000 unimp
+80002c2e: 0000 unimp
+80002c30: 0000 unimp
+80002c32: 0000 unimp
+80002c34: 0000 unimp
+80002c36: 0000 unimp
+80002c38: 0000 unimp
+80002c3a: 0000 unimp
+80002c3c: 0000 unimp
+80002c3e: 0000 unimp
+80002c40: 0000 unimp
+80002c42: 0000 unimp
+80002c44: 0000 unimp
+80002c46: 0000 unimp
+80002c48: 0000 unimp
+80002c4a: 0000 unimp
+80002c4c: 0000 unimp
+80002c4e: 0000 unimp
+80002c50: 0000 unimp
+80002c52: 0000 unimp
+80002c54: 0000 unimp
+80002c56: 0000 unimp
+80002c58: 0000 unimp
+80002c5a: 0000 unimp
+80002c5c: 0000 unimp
+80002c5e: 0000 unimp
+80002c60: 0000 unimp
+80002c62: 0000 unimp
+80002c64: 0000 unimp
+80002c66: 0000 unimp
+80002c68: 0000 unimp
+80002c6a: 0000 unimp
+80002c6c: 0000 unimp
+80002c6e: 0000 unimp
+80002c70: 0000 unimp
+80002c72: 0000 unimp
+80002c74: 0000 unimp
+80002c76: 0000 unimp
+80002c78: 0000 unimp
+80002c7a: 0000 unimp
+80002c7c: 0000 unimp
+80002c7e: 0000 unimp
+80002c80: 0000 unimp
+80002c82: 0000 unimp
+80002c84: 0000 unimp
+80002c86: 0000 unimp
+80002c88: 0000 unimp
+80002c8a: 0000 unimp
+80002c8c: 0000 unimp
+80002c8e: 0000 unimp
+80002c90: 0000 unimp
+80002c92: 0000 unimp
+80002c94: 0000 unimp
+80002c96: 0000 unimp
+80002c98: 0000 unimp
+80002c9a: 0000 unimp
+80002c9c: 0000 unimp
+80002c9e: 0000 unimp
+80002ca0: 0000 unimp
+80002ca2: 0000 unimp
+80002ca4: 0000 unimp
+80002ca6: 0000 unimp
+80002ca8: 0000 unimp
+80002caa: 0000 unimp
+80002cac: 0000 unimp
+80002cae: 0000 unimp
+80002cb0: 0000 unimp
+80002cb2: 0000 unimp
+80002cb4: 0000 unimp
+80002cb6: 0000 unimp
+80002cb8: 0000 unimp
+80002cba: 0000 unimp
+80002cbc: 0000 unimp
+80002cbe: 0000 unimp
+80002cc0: 0000 unimp
+80002cc2: 0000 unimp
+80002cc4: 0000 unimp
+80002cc6: 0000 unimp
+80002cc8: 0000 unimp
+80002cca: 0000 unimp
+80002ccc: 0000 unimp
+80002cce: 0000 unimp
+80002cd0: 0000 unimp
+80002cd2: 0000 unimp
+80002cd4: 0000 unimp
+80002cd6: 0000 unimp
+80002cd8: 0000 unimp
+80002cda: 0000 unimp
+80002cdc: 0000 unimp
+80002cde: 0000 unimp
+80002ce0: 0000 unimp
+80002ce2: 0000 unimp
+80002ce4: 0000 unimp
+80002ce6: 0000 unimp
+80002ce8: 0000 unimp
+80002cea: 0000 unimp
+80002cec: 0000 unimp
+80002cee: 0000 unimp
+80002cf0: 0000 unimp
+80002cf2: 0000 unimp
+80002cf4: 0000 unimp
+80002cf6: 0000 unimp
+80002cf8: 0000 unimp
+80002cfa: 0000 unimp
+80002cfc: 0000 unimp
+80002cfe: 0000 unimp
+80002d00: 0000 unimp
+80002d02: 0000 unimp
+80002d04: 0000 unimp
+80002d06: 0000 unimp
+80002d08: 0000 unimp
+80002d0a: 0000 unimp
+80002d0c: 0000 unimp
+80002d0e: 0000 unimp
+80002d10: 0000 unimp
+80002d12: 0000 unimp
+80002d14: 0000 unimp
+80002d16: 0000 unimp
+80002d18: 0000 unimp
+80002d1a: 0000 unimp
+80002d1c: 0000 unimp
+80002d1e: 0000 unimp
+80002d20: 0000 unimp
+80002d22: 0000 unimp
+80002d24: 0000 unimp
+80002d26: 0000 unimp
+80002d28: 0000 unimp
+80002d2a: 0000 unimp
+80002d2c: 0000 unimp
+80002d2e: 0000 unimp
+80002d30: 0000 unimp
+80002d32: 0000 unimp
+80002d34: 0000 unimp
+80002d36: 0000 unimp
+80002d38: 0000 unimp
+80002d3a: 0000 unimp
+80002d3c: 0000 unimp
+80002d3e: 0000 unimp
+80002d40: 0000 unimp
+80002d42: 0000 unimp
+80002d44: 0000 unimp
+80002d46: 0000 unimp
+80002d48: 0000 unimp
+80002d4a: 0000 unimp
+80002d4c: 0000 unimp
+80002d4e: 0000 unimp
+80002d50: 0000 unimp
+80002d52: 0000 unimp
+80002d54: 0000 unimp
+80002d56: 0000 unimp
+80002d58: 0000 unimp
+80002d5a: 0000 unimp
+80002d5c: 0000 unimp
+80002d5e: 0000 unimp
+80002d60: 0000 unimp
+80002d62: 0000 unimp
+80002d64: 0000 unimp
+80002d66: 0000 unimp
+80002d68: 0000 unimp
+80002d6a: 0000 unimp
+80002d6c: 0000 unimp
+80002d6e: 0000 unimp
+80002d70: 0000 unimp
+80002d72: 0000 unimp
+80002d74: 0000 unimp
+80002d76: 0000 unimp
+80002d78: 0000 unimp
+80002d7a: 0000 unimp
+80002d7c: 0000 unimp
+80002d7e: 0000 unimp
+80002d80: 0000 unimp
+80002d82: 0000 unimp
+80002d84: 0000 unimp
+80002d86: 0000 unimp
+80002d88: 0000 unimp
+80002d8a: 0000 unimp
+80002d8c: 0000 unimp
+80002d8e: 0000 unimp
+80002d90: 0000 unimp
+80002d92: 0000 unimp
+80002d94: 0000 unimp
+80002d96: 0000 unimp
+80002d98: 0000 unimp
+80002d9a: 0000 unimp
+80002d9c: 0000 unimp
+80002d9e: 0000 unimp
+80002da0: 0000 unimp
+80002da2: 0000 unimp
+80002da4: 0000 unimp
+80002da6: 0000 unimp
+80002da8: 0000 unimp
+80002daa: 0000 unimp
+80002dac: 0000 unimp
+80002dae: 0000 unimp
+80002db0: 0000 unimp
+80002db2: 0000 unimp
+80002db4: 0000 unimp
+80002db6: 0000 unimp
+80002db8: 0000 unimp
+80002dba: 0000 unimp
+80002dbc: 0000 unimp
+80002dbe: 0000 unimp
+80002dc0: 0000 unimp
+80002dc2: 0000 unimp
+80002dc4: 0000 unimp
+80002dc6: 0000 unimp
+80002dc8: 0000 unimp
+80002dca: 0000 unimp
+80002dcc: 0000 unimp
+80002dce: 0000 unimp
+80002dd0: 0000 unimp
+80002dd2: 0000 unimp
+80002dd4: 0000 unimp
+80002dd6: 0000 unimp
+80002dd8: 0000 unimp
+80002dda: 0000 unimp
+80002ddc: 0000 unimp
+80002dde: 0000 unimp
+80002de0: 0000 unimp
+80002de2: 0000 unimp
+80002de4: 0000 unimp
+80002de6: 0000 unimp
+80002de8: 0000 unimp
+80002dea: 0000 unimp
+80002dec: 0000 unimp
+80002dee: 0000 unimp
+80002df0: 0000 unimp
+80002df2: 0000 unimp
+80002df4: 0000 unimp
+80002df6: 0000 unimp
+80002df8: 0000 unimp
+80002dfa: 0000 unimp
+80002dfc: 0000 unimp
+80002dfe: 0000 unimp
+80002e00: 0000 unimp
+80002e02: 0000 unimp
+80002e04: 0000 unimp
+80002e06: 0000 unimp
+80002e08: 0000 unimp
+80002e0a: 0000 unimp
+80002e0c: 0000 unimp
+80002e0e: 0000 unimp
+80002e10: 0000 unimp
+80002e12: 0000 unimp
+80002e14: 0000 unimp
+80002e16: 0000 unimp
+80002e18: 0000 unimp
+80002e1a: 0000 unimp
+80002e1c: 0000 unimp
+80002e1e: 0000 unimp
+80002e20: 0000 unimp
+80002e22: 0000 unimp
+80002e24: 0000 unimp
+80002e26: 0000 unimp
+80002e28: 0000 unimp
+80002e2a: 0000 unimp
+80002e2c: 0000 unimp
+80002e2e: 0000 unimp
+80002e30: 0000 unimp
+80002e32: 0000 unimp
+80002e34: 0000 unimp
+80002e36: 0000 unimp
+80002e38: 0000 unimp
+80002e3a: 0000 unimp
+80002e3c: 0000 unimp
+80002e3e: 0000 unimp
+80002e40: 0000 unimp
+80002e42: 0000 unimp
+80002e44: 0000 unimp
+80002e46: 0000 unimp
+80002e48: 0000 unimp
+80002e4a: 0000 unimp
+80002e4c: 0000 unimp
+80002e4e: 0000 unimp
+80002e50: 0000 unimp
+80002e52: 0000 unimp
+80002e54: 0000 unimp
+80002e56: 0000 unimp
+80002e58: 0000 unimp
+80002e5a: 0000 unimp
+80002e5c: 0000 unimp
+80002e5e: 0000 unimp
+80002e60: 0000 unimp
+80002e62: 0000 unimp
+80002e64: 0000 unimp
+80002e66: 0000 unimp
+80002e68: 0000 unimp
+80002e6a: 0000 unimp
+80002e6c: 0000 unimp
+80002e6e: 0000 unimp
+80002e70: 0000 unimp
+80002e72: 0000 unimp
+80002e74: 0000 unimp
+80002e76: 0000 unimp
+80002e78: 0000 unimp
+80002e7a: 0000 unimp
+80002e7c: 0000 unimp
+80002e7e: 0000 unimp
+80002e80: 0000 unimp
+80002e82: 0000 unimp
+80002e84: 0000 unimp
+80002e86: 0000 unimp
+80002e88: 0000 unimp
+80002e8a: 0000 unimp
+80002e8c: 0000 unimp
+80002e8e: 0000 unimp
+80002e90: 0000 unimp
+80002e92: 0000 unimp
+80002e94: 0000 unimp
+80002e96: 0000 unimp
+80002e98: 0000 unimp
diff --git a/test/riscv-tests/rv32uc-p-rvc.elf b/test/riscv-tests/rv32uc-p-rvc.elf
new file mode 100644
index 0000000..7813b71
--- /dev/null
+++ b/test/riscv-tests/rv32uc-p-rvc.elf
Binary files differ
diff --git a/test/riscv-tests/rv32uc-v-rvc.dump b/test/riscv-tests/rv32uc-v-rvc.dump
new file mode 100644
index 0000000..39c393a
--- /dev/null
+++ b/test/riscv-tests/rv32uc-v-rvc.dump
@@ -0,0 +1,6474 @@
+
+rv32uc-v-rvc: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 0000a117 auipc sp,0xa
+8000001c: 35010113 addi sp,sp,848 # 8000a368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: fd050513 addi a0,a0,-48 # 80003000 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00005317 auipc t1,0x5
+80002370: c9430313 addi t1,t1,-876 # 80007000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00007797 auipc a5,0x7
+8000238c: 06c78793 addi a5,a5,108 # 800093f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00007717 auipc a4,0x7
+800023a0: 05470713 addi a4,a4,84 # 800093f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00007697 auipc a3,0x7
+800023ac: 04f6a623 sw a5,76(a3) # 800093f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00007717 auipc a4,0x7
+800023dc: e2070713 addi a4,a4,-480 # 800091f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf6c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00007797 auipc a5,0x7
+800024bc: f207ac23 sw zero,-200(a5) # 800093f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00004597 auipc a1,0x4
+800024cc: b0c58593 addi a1,a1,-1268 # 80005fd4 <pass+0xd7c>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00004597 auipc a1,0x4
+8000253c: b2858593 addi a1,a1,-1240 # 80006060 <pass+0xe08>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00004597 auipc a1,0x4
+800025a8: ad458593 addi a1,a1,-1324 # 80006078 <pass+0xe20>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00004597 auipc a1,0x4
+80002614: a0858593 addi a1,a1,-1528 # 80006018 <pass+0xdc0>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00004597 auipc a1,0x4
+8000274c: 9f858593 addi a1,a1,-1544 # 80006140 <pass+0xee8>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00004597 auipc a1,0x4
+800027c0: 96058593 addi a1,a1,-1696 # 8000611c <pass+0xec4>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00007b17 auipc s6,0x7
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800091f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00004d17 auipc s10,0x4
+80002840: 7c4d0d13 addi s10,s10,1988 # 80007000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00007717 auipc a4,0x7
+8000285c: b8f72c23 sw a5,-1128(a4) # 800093f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00007717 auipc a4,0x7
+800028e8: b0c70713 addi a4,a4,-1268 # 800093f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00007717 auipc a4,0x7
+800028fc: aef72c23 sw a5,-1288(a4) # 800093f0 <freelist_tail>
+80002900: 00007717 auipc a4,0x7
+80002904: aef72a23 sw a5,-1292(a4) # 800093f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00004617 auipc a2,0x4
+80002914: 85c60613 addi a2,a2,-1956 # 8000616c <pass+0xf14>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00003617 auipc a2,0x3
+80002980: 76c60613 addi a2,a2,1900 # 800060e8 <pass+0xe90>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00003617 auipc a2,0x3
+800029cc: 6ec60613 addi a2,a2,1772 # 800060b4 <pass+0xe5c>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00005797 auipc a5,0x5
+80002a4c: 5b878793 addi a5,a5,1464 # 80008000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00004697 auipc a3,0x4
+80002a60: 5af6a223 sw a5,1444(a3) # 80007000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00004717 auipc a4,0x4
+80002a6c: 59870713 addi a4,a4,1432 # 80007000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00005697 auipc a3,0x5
+80002a7c: 58f6a223 sw a5,1412(a3) # 80007ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf6ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc06797 auipc a5,0x7fc06
+80002aec: 51878793 addi a5,a5,1304 # ffc09000 <_end+0x7fbffc08>
+80002af0: 00007717 auipc a4,0x7
+80002af4: 90f72223 sw a5,-1788(a4) # 800093f4 <freelist_head>
+80002af8: 7fc06797 auipc a5,0x7fc06
+80002afc: 6f878793 addi a5,a5,1784 # ffc091f0 <_end+0x7fbffdf8>
+80002b00: 00007717 auipc a4,0x7
+80002b04: 8ef72823 sw a5,-1808(a4) # 800093f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00006717 auipc a4,0x6
+80002b10: 4f470713 addi a4,a4,1268 # 80009000 <freelist_nodes>
+80002b14: 00006317 auipc t1,0x6
+80002b18: 6e430313 addi t1,t1,1764 # 800091f8 <user_mapping>
+80002b1c: 01d00793 li a5,29
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00006797 auipc a5,0x6
+80002b6c: 6807a623 sw zero,1676(a5) # 800091f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 077307b7 lui a5,0x7730
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 04778793 addi a5,a5,71 # 7730047 <_start-0x788cffb9>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+80002be0: 0000 unimp
+80002be2: 0000 unimp
+80002be4: 0000 unimp
+80002be6: 0000 unimp
+80002be8: 0000 unimp
+80002bea: 0000 unimp
+80002bec: 0000 unimp
+80002bee: 0000 unimp
+80002bf0: 0000 unimp
+80002bf2: 0000 unimp
+80002bf4: 0000 unimp
+80002bf6: 0000 unimp
+80002bf8: 0000 unimp
+80002bfa: 0000 unimp
+80002bfc: 0000 unimp
+80002bfe: 0000 unimp
+80002c00: 0000 unimp
+80002c02: 0000 unimp
+80002c04: 0000 unimp
+80002c06: 0000 unimp
+80002c08: 0000 unimp
+80002c0a: 0000 unimp
+80002c0c: 0000 unimp
+80002c0e: 0000 unimp
+80002c10: 0000 unimp
+80002c12: 0000 unimp
+80002c14: 0000 unimp
+80002c16: 0000 unimp
+80002c18: 0000 unimp
+80002c1a: 0000 unimp
+80002c1c: 0000 unimp
+80002c1e: 0000 unimp
+80002c20: 0000 unimp
+80002c22: 0000 unimp
+80002c24: 0000 unimp
+80002c26: 0000 unimp
+80002c28: 0000 unimp
+80002c2a: 0000 unimp
+80002c2c: 0000 unimp
+80002c2e: 0000 unimp
+80002c30: 0000 unimp
+80002c32: 0000 unimp
+80002c34: 0000 unimp
+80002c36: 0000 unimp
+80002c38: 0000 unimp
+80002c3a: 0000 unimp
+80002c3c: 0000 unimp
+80002c3e: 0000 unimp
+80002c40: 0000 unimp
+80002c42: 0000 unimp
+80002c44: 0000 unimp
+80002c46: 0000 unimp
+80002c48: 0000 unimp
+80002c4a: 0000 unimp
+80002c4c: 0000 unimp
+80002c4e: 0000 unimp
+80002c50: 0000 unimp
+80002c52: 0000 unimp
+80002c54: 0000 unimp
+80002c56: 0000 unimp
+80002c58: 0000 unimp
+80002c5a: 0000 unimp
+80002c5c: 0000 unimp
+80002c5e: 0000 unimp
+80002c60: 0000 unimp
+80002c62: 0000 unimp
+80002c64: 0000 unimp
+80002c66: 0000 unimp
+80002c68: 0000 unimp
+80002c6a: 0000 unimp
+80002c6c: 0000 unimp
+80002c6e: 0000 unimp
+80002c70: 0000 unimp
+80002c72: 0000 unimp
+80002c74: 0000 unimp
+80002c76: 0000 unimp
+80002c78: 0000 unimp
+80002c7a: 0000 unimp
+80002c7c: 0000 unimp
+80002c7e: 0000 unimp
+80002c80: 0000 unimp
+80002c82: 0000 unimp
+80002c84: 0000 unimp
+80002c86: 0000 unimp
+80002c88: 0000 unimp
+80002c8a: 0000 unimp
+80002c8c: 0000 unimp
+80002c8e: 0000 unimp
+80002c90: 0000 unimp
+80002c92: 0000 unimp
+80002c94: 0000 unimp
+80002c96: 0000 unimp
+80002c98: 0000 unimp
+80002c9a: 0000 unimp
+80002c9c: 0000 unimp
+80002c9e: 0000 unimp
+80002ca0: 0000 unimp
+80002ca2: 0000 unimp
+80002ca4: 0000 unimp
+80002ca6: 0000 unimp
+80002ca8: 0000 unimp
+80002caa: 0000 unimp
+80002cac: 0000 unimp
+80002cae: 0000 unimp
+80002cb0: 0000 unimp
+80002cb2: 0000 unimp
+80002cb4: 0000 unimp
+80002cb6: 0000 unimp
+80002cb8: 0000 unimp
+80002cba: 0000 unimp
+80002cbc: 0000 unimp
+80002cbe: 0000 unimp
+80002cc0: 0000 unimp
+80002cc2: 0000 unimp
+80002cc4: 0000 unimp
+80002cc6: 0000 unimp
+80002cc8: 0000 unimp
+80002cca: 0000 unimp
+80002ccc: 0000 unimp
+80002cce: 0000 unimp
+80002cd0: 0000 unimp
+80002cd2: 0000 unimp
+80002cd4: 0000 unimp
+80002cd6: 0000 unimp
+80002cd8: 0000 unimp
+80002cda: 0000 unimp
+80002cdc: 0000 unimp
+80002cde: 0000 unimp
+80002ce0: 0000 unimp
+80002ce2: 0000 unimp
+80002ce4: 0000 unimp
+80002ce6: 0000 unimp
+80002ce8: 0000 unimp
+80002cea: 0000 unimp
+80002cec: 0000 unimp
+80002cee: 0000 unimp
+80002cf0: 0000 unimp
+80002cf2: 0000 unimp
+80002cf4: 0000 unimp
+80002cf6: 0000 unimp
+80002cf8: 0000 unimp
+80002cfa: 0000 unimp
+80002cfc: 0000 unimp
+80002cfe: 0000 unimp
+80002d00: 0000 unimp
+80002d02: 0000 unimp
+80002d04: 0000 unimp
+80002d06: 0000 unimp
+80002d08: 0000 unimp
+80002d0a: 0000 unimp
+80002d0c: 0000 unimp
+80002d0e: 0000 unimp
+80002d10: 0000 unimp
+80002d12: 0000 unimp
+80002d14: 0000 unimp
+80002d16: 0000 unimp
+80002d18: 0000 unimp
+80002d1a: 0000 unimp
+80002d1c: 0000 unimp
+80002d1e: 0000 unimp
+80002d20: 0000 unimp
+80002d22: 0000 unimp
+80002d24: 0000 unimp
+80002d26: 0000 unimp
+80002d28: 0000 unimp
+80002d2a: 0000 unimp
+80002d2c: 0000 unimp
+80002d2e: 0000 unimp
+80002d30: 0000 unimp
+80002d32: 0000 unimp
+80002d34: 0000 unimp
+80002d36: 0000 unimp
+80002d38: 0000 unimp
+80002d3a: 0000 unimp
+80002d3c: 0000 unimp
+80002d3e: 0000 unimp
+80002d40: 0000 unimp
+80002d42: 0000 unimp
+80002d44: 0000 unimp
+80002d46: 0000 unimp
+80002d48: 0000 unimp
+80002d4a: 0000 unimp
+80002d4c: 0000 unimp
+80002d4e: 0000 unimp
+80002d50: 0000 unimp
+80002d52: 0000 unimp
+80002d54: 0000 unimp
+80002d56: 0000 unimp
+80002d58: 0000 unimp
+80002d5a: 0000 unimp
+80002d5c: 0000 unimp
+80002d5e: 0000 unimp
+80002d60: 0000 unimp
+80002d62: 0000 unimp
+80002d64: 0000 unimp
+80002d66: 0000 unimp
+80002d68: 0000 unimp
+80002d6a: 0000 unimp
+80002d6c: 0000 unimp
+80002d6e: 0000 unimp
+80002d70: 0000 unimp
+80002d72: 0000 unimp
+80002d74: 0000 unimp
+80002d76: 0000 unimp
+80002d78: 0000 unimp
+80002d7a: 0000 unimp
+80002d7c: 0000 unimp
+80002d7e: 0000 unimp
+80002d80: 0000 unimp
+80002d82: 0000 unimp
+80002d84: 0000 unimp
+80002d86: 0000 unimp
+80002d88: 0000 unimp
+80002d8a: 0000 unimp
+80002d8c: 0000 unimp
+80002d8e: 0000 unimp
+80002d90: 0000 unimp
+80002d92: 0000 unimp
+80002d94: 0000 unimp
+80002d96: 0000 unimp
+80002d98: 0000 unimp
+80002d9a: 0000 unimp
+80002d9c: 0000 unimp
+80002d9e: 0000 unimp
+80002da0: 0000 unimp
+80002da2: 0000 unimp
+80002da4: 0000 unimp
+80002da6: 0000 unimp
+80002da8: 0000 unimp
+80002daa: 0000 unimp
+80002dac: 0000 unimp
+80002dae: 0000 unimp
+80002db0: 0000 unimp
+80002db2: 0000 unimp
+80002db4: 0000 unimp
+80002db6: 0000 unimp
+80002db8: 0000 unimp
+80002dba: 0000 unimp
+80002dbc: 0000 unimp
+80002dbe: 0000 unimp
+80002dc0: 0000 unimp
+80002dc2: 0000 unimp
+80002dc4: 0000 unimp
+80002dc6: 0000 unimp
+80002dc8: 0000 unimp
+80002dca: 0000 unimp
+80002dcc: 0000 unimp
+80002dce: 0000 unimp
+80002dd0: 0000 unimp
+80002dd2: 0000 unimp
+80002dd4: 0000 unimp
+80002dd6: 0000 unimp
+80002dd8: 0000 unimp
+80002dda: 0000 unimp
+80002ddc: 0000 unimp
+80002dde: 0000 unimp
+80002de0: 0000 unimp
+80002de2: 0000 unimp
+80002de4: 0000 unimp
+80002de6: 0000 unimp
+80002de8: 0000 unimp
+80002dea: 0000 unimp
+80002dec: 0000 unimp
+80002dee: 0000 unimp
+80002df0: 0000 unimp
+80002df2: 0000 unimp
+80002df4: 0000 unimp
+80002df6: 0000 unimp
+80002df8: 0000 unimp
+80002dfa: 0000 unimp
+80002dfc: 0000 unimp
+80002dfe: 0000 unimp
+80002e00: 0000 unimp
+80002e02: 0000 unimp
+80002e04: 0000 unimp
+80002e06: 0000 unimp
+80002e08: 0000 unimp
+80002e0a: 0000 unimp
+80002e0c: 0000 unimp
+80002e0e: 0000 unimp
+80002e10: 0000 unimp
+80002e12: 0000 unimp
+80002e14: 0000 unimp
+80002e16: 0000 unimp
+80002e18: 0000 unimp
+80002e1a: 0000 unimp
+80002e1c: 0000 unimp
+80002e1e: 0000 unimp
+80002e20: 0000 unimp
+80002e22: 0000 unimp
+80002e24: 0000 unimp
+80002e26: 0000 unimp
+80002e28: 0000 unimp
+80002e2a: 0000 unimp
+80002e2c: 0000 unimp
+80002e2e: 0000 unimp
+80002e30: 0000 unimp
+80002e32: 0000 unimp
+80002e34: 0000 unimp
+80002e36: 0000 unimp
+80002e38: 0000 unimp
+80002e3a: 0000 unimp
+80002e3c: 0000 unimp
+80002e3e: 0000 unimp
+80002e40: 0000 unimp
+80002e42: 0000 unimp
+80002e44: 0000 unimp
+80002e46: 0000 unimp
+80002e48: 0000 unimp
+80002e4a: 0000 unimp
+80002e4c: 0000 unimp
+80002e4e: 0000 unimp
+80002e50: 0000 unimp
+80002e52: 0000 unimp
+80002e54: 0000 unimp
+80002e56: 0000 unimp
+80002e58: 0000 unimp
+80002e5a: 0000 unimp
+80002e5c: 0000 unimp
+80002e5e: 0000 unimp
+80002e60: 0000 unimp
+80002e62: 0000 unimp
+80002e64: 0000 unimp
+80002e66: 0000 unimp
+80002e68: 0000 unimp
+80002e6a: 0000 unimp
+80002e6c: 0000 unimp
+80002e6e: 0000 unimp
+80002e70: 0000 unimp
+80002e72: 0000 unimp
+80002e74: 0000 unimp
+80002e76: 0000 unimp
+80002e78: 0000 unimp
+80002e7a: 0000 unimp
+80002e7c: 0000 unimp
+80002e7e: 0000 unimp
+80002e80: 0000 unimp
+80002e82: 0000 unimp
+80002e84: 0000 unimp
+80002e86: 0000 unimp
+80002e88: 0000 unimp
+80002e8a: 0000 unimp
+80002e8c: 0000 unimp
+80002e8e: 0000 unimp
+80002e90: 0000 unimp
+80002e92: 0000 unimp
+80002e94: 0000 unimp
+80002e96: 0000 unimp
+80002e98: 0000 unimp
+80002e9a: 0000 unimp
+80002e9c: 0000 unimp
+80002e9e: 0000 unimp
+80002ea0: 0000 unimp
+80002ea2: 0000 unimp
+80002ea4: 0000 unimp
+80002ea6: 0000 unimp
+80002ea8: 0000 unimp
+80002eaa: 0000 unimp
+80002eac: 0000 unimp
+80002eae: 0000 unimp
+80002eb0: 0000 unimp
+80002eb2: 0000 unimp
+80002eb4: 0000 unimp
+80002eb6: 0000 unimp
+80002eb8: 0000 unimp
+80002eba: 0000 unimp
+80002ebc: 0000 unimp
+80002ebe: 0000 unimp
+80002ec0: 0000 unimp
+80002ec2: 0000 unimp
+80002ec4: 0000 unimp
+80002ec6: 0000 unimp
+80002ec8: 0000 unimp
+80002eca: 0000 unimp
+80002ecc: 0000 unimp
+80002ece: 0000 unimp
+80002ed0: 0000 unimp
+80002ed2: 0000 unimp
+80002ed4: 0000 unimp
+80002ed6: 0000 unimp
+80002ed8: 0000 unimp
+80002eda: 0000 unimp
+80002edc: 0000 unimp
+80002ede: 0000 unimp
+80002ee0: 0000 unimp
+80002ee2: 0000 unimp
+80002ee4: 0000 unimp
+80002ee6: 0000 unimp
+80002ee8: 0000 unimp
+80002eea: 0000 unimp
+80002eec: 0000 unimp
+80002eee: 0000 unimp
+80002ef0: 0000 unimp
+80002ef2: 0000 unimp
+80002ef4: 0000 unimp
+80002ef6: 0000 unimp
+80002ef8: 0000 unimp
+80002efa: 0000 unimp
+80002efc: 0000 unimp
+80002efe: 0000 unimp
+80002f00: 0000 unimp
+80002f02: 0000 unimp
+80002f04: 0000 unimp
+80002f06: 0000 unimp
+80002f08: 0000 unimp
+80002f0a: 0000 unimp
+80002f0c: 0000 unimp
+80002f0e: 0000 unimp
+80002f10: 0000 unimp
+80002f12: 0000 unimp
+80002f14: 0000 unimp
+80002f16: 0000 unimp
+80002f18: 0000 unimp
+80002f1a: 0000 unimp
+80002f1c: 0000 unimp
+80002f1e: 0000 unimp
+80002f20: 0000 unimp
+80002f22: 0000 unimp
+80002f24: 0000 unimp
+80002f26: 0000 unimp
+80002f28: 0000 unimp
+80002f2a: 0000 unimp
+80002f2c: 0000 unimp
+80002f2e: 0000 unimp
+80002f30: 0000 unimp
+80002f32: 0000 unimp
+80002f34: 0000 unimp
+80002f36: 0000 unimp
+80002f38: 0000 unimp
+80002f3a: 0000 unimp
+80002f3c: 0000 unimp
+80002f3e: 0000 unimp
+80002f40: 0000 unimp
+80002f42: 0000 unimp
+80002f44: 0000 unimp
+80002f46: 0000 unimp
+80002f48: 0000 unimp
+80002f4a: 0000 unimp
+80002f4c: 0000 unimp
+80002f4e: 0000 unimp
+80002f50: 0000 unimp
+80002f52: 0000 unimp
+80002f54: 0000 unimp
+80002f56: 0000 unimp
+80002f58: 0000 unimp
+80002f5a: 0000 unimp
+80002f5c: 0000 unimp
+80002f5e: 0000 unimp
+80002f60: 0000 unimp
+80002f62: 0000 unimp
+80002f64: 0000 unimp
+80002f66: 0000 unimp
+80002f68: 0000 unimp
+80002f6a: 0000 unimp
+80002f6c: 0000 unimp
+80002f6e: 0000 unimp
+80002f70: 0000 unimp
+80002f72: 0000 unimp
+80002f74: 0000 unimp
+80002f76: 0000 unimp
+80002f78: 0000 unimp
+80002f7a: 0000 unimp
+80002f7c: 0000 unimp
+80002f7e: 0000 unimp
+80002f80: 0000 unimp
+80002f82: 0000 unimp
+80002f84: 0000 unimp
+80002f86: 0000 unimp
+80002f88: 0000 unimp
+80002f8a: 0000 unimp
+80002f8c: 0000 unimp
+80002f8e: 0000 unimp
+80002f90: 0000 unimp
+80002f92: 0000 unimp
+80002f94: 0000 unimp
+80002f96: 0000 unimp
+80002f98: 0000 unimp
+80002f9a: 0000 unimp
+80002f9c: 0000 unimp
+80002f9e: 0000 unimp
+80002fa0: 0000 unimp
+80002fa2: 0000 unimp
+80002fa4: 0000 unimp
+80002fa6: 0000 unimp
+80002fa8: 0000 unimp
+80002faa: 0000 unimp
+80002fac: 0000 unimp
+80002fae: 0000 unimp
+80002fb0: 0000 unimp
+80002fb2: 0000 unimp
+80002fb4: 0000 unimp
+80002fb6: 0000 unimp
+80002fb8: 0000 unimp
+80002fba: 0000 unimp
+80002fbc: 0000 unimp
+80002fbe: 0000 unimp
+80002fc0: 0000 unimp
+80002fc2: 0000 unimp
+80002fc4: 0000 unimp
+80002fc6: 0000 unimp
+80002fc8: 0000 unimp
+80002fca: 0000 unimp
+80002fcc: 0000 unimp
+80002fce: 0000 unimp
+80002fd0: 0000 unimp
+80002fd2: 0000 unimp
+80002fd4: 0000 unimp
+80002fd6: 0000 unimp
+80002fd8: 0000 unimp
+80002fda: 0000 unimp
+80002fdc: 0000 unimp
+80002fde: 0000 unimp
+80002fe0: 0000 unimp
+80002fe2: 0000 unimp
+80002fe4: 0000 unimp
+80002fe6: 0000 unimp
+80002fe8: 0000 unimp
+80002fea: 0000 unimp
+80002fec: 0000 unimp
+80002fee: 0000 unimp
+80002ff0: 0000 unimp
+80002ff2: 0000 unimp
+80002ff4: 0000 unimp
+80002ff6: 0000 unimp
+80002ff8: 0000 unimp
+80002ffa: 0000 unimp
+80002ffc: 0000 unimp
+80002ffe: 0000 unimp
+
+80003000 <userstart>:
+80003000: 00200193 li gp,2
+80003004: 29a00593 li a1,666
+
+80003008 <test_2>:
+80003008: 7f70106f j 80004ffe <data+0x1fee>
+8000300c: 00000013 nop
+
+80003010 <data>:
+80003010: 3210 fld fa2,32(a2)
+80003012: 7654 flw fa3,44(a2)
+80003014: ba98 fsd fa4,48(a3)
+80003016: fedc fsw fa5,60(a3)
+80003018: 3210 fld fa2,32(a2)
+8000301a: 7654 flw fa3,44(a2)
+8000301c: ba98 fsd fa4,48(a3)
+8000301e: fedc fsw fa5,60(a3)
+80003020: 00000013 nop
+80003024: 00000013 nop
+80003028: 00000013 nop
+8000302c: 00000013 nop
+80003030: 00000013 nop
+80003034: 00000013 nop
+80003038: 00000013 nop
+8000303c: 00000013 nop
+80003040: 00000013 nop
+80003044: 00000013 nop
+80003048: 00000013 nop
+8000304c: 00000013 nop
+80003050: 00000013 nop
+80003054: 00000013 nop
+80003058: 00000013 nop
+8000305c: 00000013 nop
+80003060: 00000013 nop
+80003064: 00000013 nop
+80003068: 00000013 nop
+8000306c: 00000013 nop
+80003070: 00000013 nop
+80003074: 00000013 nop
+80003078: 00000013 nop
+8000307c: 00000013 nop
+80003080: 00000013 nop
+80003084: 00000013 nop
+80003088: 00000013 nop
+8000308c: 00000013 nop
+80003090: 00000013 nop
+80003094: 00000013 nop
+80003098: 00000013 nop
+8000309c: 00000013 nop
+800030a0: 00000013 nop
+800030a4: 00000013 nop
+800030a8: 00000013 nop
+800030ac: 00000013 nop
+800030b0: 00000013 nop
+800030b4: 00000013 nop
+800030b8: 00000013 nop
+800030bc: 00000013 nop
+800030c0: 00000013 nop
+800030c4: 00000013 nop
+800030c8: 00000013 nop
+800030cc: 00000013 nop
+800030d0: 00000013 nop
+800030d4: 00000013 nop
+800030d8: 00000013 nop
+800030dc: 00000013 nop
+800030e0: 00000013 nop
+800030e4: 00000013 nop
+800030e8: 00000013 nop
+800030ec: 00000013 nop
+800030f0: 00000013 nop
+800030f4: 00000013 nop
+800030f8: 00000013 nop
+800030fc: 00000013 nop
+80003100: 00000013 nop
+80003104: 00000013 nop
+80003108: 00000013 nop
+8000310c: 00000013 nop
+80003110: 00000013 nop
+80003114: 00000013 nop
+80003118: 00000013 nop
+8000311c: 00000013 nop
+80003120: 00000013 nop
+80003124: 00000013 nop
+80003128: 00000013 nop
+8000312c: 00000013 nop
+80003130: 00000013 nop
+80003134: 00000013 nop
+80003138: 00000013 nop
+8000313c: 00000013 nop
+80003140: 00000013 nop
+80003144: 00000013 nop
+80003148: 00000013 nop
+8000314c: 00000013 nop
+80003150: 00000013 nop
+80003154: 00000013 nop
+80003158: 00000013 nop
+8000315c: 00000013 nop
+80003160: 00000013 nop
+80003164: 00000013 nop
+80003168: 00000013 nop
+8000316c: 00000013 nop
+80003170: 00000013 nop
+80003174: 00000013 nop
+80003178: 00000013 nop
+8000317c: 00000013 nop
+80003180: 00000013 nop
+80003184: 00000013 nop
+80003188: 00000013 nop
+8000318c: 00000013 nop
+80003190: 00000013 nop
+80003194: 00000013 nop
+80003198: 00000013 nop
+8000319c: 00000013 nop
+800031a0: 00000013 nop
+800031a4: 00000013 nop
+800031a8: 00000013 nop
+800031ac: 00000013 nop
+800031b0: 00000013 nop
+800031b4: 00000013 nop
+800031b8: 00000013 nop
+800031bc: 00000013 nop
+800031c0: 00000013 nop
+800031c4: 00000013 nop
+800031c8: 00000013 nop
+800031cc: 00000013 nop
+800031d0: 00000013 nop
+800031d4: 00000013 nop
+800031d8: 00000013 nop
+800031dc: 00000013 nop
+800031e0: 00000013 nop
+800031e4: 00000013 nop
+800031e8: 00000013 nop
+800031ec: 00000013 nop
+800031f0: 00000013 nop
+800031f4: 00000013 nop
+800031f8: 00000013 nop
+800031fc: 00000013 nop
+80003200: 00000013 nop
+80003204: 00000013 nop
+80003208: 00000013 nop
+8000320c: 00000013 nop
+80003210: 00000013 nop
+80003214: 00000013 nop
+80003218: 00000013 nop
+8000321c: 00000013 nop
+80003220: 00000013 nop
+80003224: 00000013 nop
+80003228: 00000013 nop
+8000322c: 00000013 nop
+80003230: 00000013 nop
+80003234: 00000013 nop
+80003238: 00000013 nop
+8000323c: 00000013 nop
+80003240: 00000013 nop
+80003244: 00000013 nop
+80003248: 00000013 nop
+8000324c: 00000013 nop
+80003250: 00000013 nop
+80003254: 00000013 nop
+80003258: 00000013 nop
+8000325c: 00000013 nop
+80003260: 00000013 nop
+80003264: 00000013 nop
+80003268: 00000013 nop
+8000326c: 00000013 nop
+80003270: 00000013 nop
+80003274: 00000013 nop
+80003278: 00000013 nop
+8000327c: 00000013 nop
+80003280: 00000013 nop
+80003284: 00000013 nop
+80003288: 00000013 nop
+8000328c: 00000013 nop
+80003290: 00000013 nop
+80003294: 00000013 nop
+80003298: 00000013 nop
+8000329c: 00000013 nop
+800032a0: 00000013 nop
+800032a4: 00000013 nop
+800032a8: 00000013 nop
+800032ac: 00000013 nop
+800032b0: 00000013 nop
+800032b4: 00000013 nop
+800032b8: 00000013 nop
+800032bc: 00000013 nop
+800032c0: 00000013 nop
+800032c4: 00000013 nop
+800032c8: 00000013 nop
+800032cc: 00000013 nop
+800032d0: 00000013 nop
+800032d4: 00000013 nop
+800032d8: 00000013 nop
+800032dc: 00000013 nop
+800032e0: 00000013 nop
+800032e4: 00000013 nop
+800032e8: 00000013 nop
+800032ec: 00000013 nop
+800032f0: 00000013 nop
+800032f4: 00000013 nop
+800032f8: 00000013 nop
+800032fc: 00000013 nop
+80003300: 00000013 nop
+80003304: 00000013 nop
+80003308: 00000013 nop
+8000330c: 00000013 nop
+80003310: 00000013 nop
+80003314: 00000013 nop
+80003318: 00000013 nop
+8000331c: 00000013 nop
+80003320: 00000013 nop
+80003324: 00000013 nop
+80003328: 00000013 nop
+8000332c: 00000013 nop
+80003330: 00000013 nop
+80003334: 00000013 nop
+80003338: 00000013 nop
+8000333c: 00000013 nop
+80003340: 00000013 nop
+80003344: 00000013 nop
+80003348: 00000013 nop
+8000334c: 00000013 nop
+80003350: 00000013 nop
+80003354: 00000013 nop
+80003358: 00000013 nop
+8000335c: 00000013 nop
+80003360: 00000013 nop
+80003364: 00000013 nop
+80003368: 00000013 nop
+8000336c: 00000013 nop
+80003370: 00000013 nop
+80003374: 00000013 nop
+80003378: 00000013 nop
+8000337c: 00000013 nop
+80003380: 00000013 nop
+80003384: 00000013 nop
+80003388: 00000013 nop
+8000338c: 00000013 nop
+80003390: 00000013 nop
+80003394: 00000013 nop
+80003398: 00000013 nop
+8000339c: 00000013 nop
+800033a0: 00000013 nop
+800033a4: 00000013 nop
+800033a8: 00000013 nop
+800033ac: 00000013 nop
+800033b0: 00000013 nop
+800033b4: 00000013 nop
+800033b8: 00000013 nop
+800033bc: 00000013 nop
+800033c0: 00000013 nop
+800033c4: 00000013 nop
+800033c8: 00000013 nop
+800033cc: 00000013 nop
+800033d0: 00000013 nop
+800033d4: 00000013 nop
+800033d8: 00000013 nop
+800033dc: 00000013 nop
+800033e0: 00000013 nop
+800033e4: 00000013 nop
+800033e8: 00000013 nop
+800033ec: 00000013 nop
+800033f0: 00000013 nop
+800033f4: 00000013 nop
+800033f8: 00000013 nop
+800033fc: 00000013 nop
+80003400: 00000013 nop
+80003404: 00000013 nop
+80003408: 00000013 nop
+8000340c: 00000013 nop
+80003410: 00000013 nop
+80003414: 00000013 nop
+80003418: 00000013 nop
+8000341c: 00000013 nop
+80003420: 00000013 nop
+80003424: 00000013 nop
+80003428: 00000013 nop
+8000342c: 00000013 nop
+80003430: 00000013 nop
+80003434: 00000013 nop
+80003438: 00000013 nop
+8000343c: 00000013 nop
+80003440: 00000013 nop
+80003444: 00000013 nop
+80003448: 00000013 nop
+8000344c: 00000013 nop
+80003450: 00000013 nop
+80003454: 00000013 nop
+80003458: 00000013 nop
+8000345c: 00000013 nop
+80003460: 00000013 nop
+80003464: 00000013 nop
+80003468: 00000013 nop
+8000346c: 00000013 nop
+80003470: 00000013 nop
+80003474: 00000013 nop
+80003478: 00000013 nop
+8000347c: 00000013 nop
+80003480: 00000013 nop
+80003484: 00000013 nop
+80003488: 00000013 nop
+8000348c: 00000013 nop
+80003490: 00000013 nop
+80003494: 00000013 nop
+80003498: 00000013 nop
+8000349c: 00000013 nop
+800034a0: 00000013 nop
+800034a4: 00000013 nop
+800034a8: 00000013 nop
+800034ac: 00000013 nop
+800034b0: 00000013 nop
+800034b4: 00000013 nop
+800034b8: 00000013 nop
+800034bc: 00000013 nop
+800034c0: 00000013 nop
+800034c4: 00000013 nop
+800034c8: 00000013 nop
+800034cc: 00000013 nop
+800034d0: 00000013 nop
+800034d4: 00000013 nop
+800034d8: 00000013 nop
+800034dc: 00000013 nop
+800034e0: 00000013 nop
+800034e4: 00000013 nop
+800034e8: 00000013 nop
+800034ec: 00000013 nop
+800034f0: 00000013 nop
+800034f4: 00000013 nop
+800034f8: 00000013 nop
+800034fc: 00000013 nop
+80003500: 00000013 nop
+80003504: 00000013 nop
+80003508: 00000013 nop
+8000350c: 00000013 nop
+80003510: 00000013 nop
+80003514: 00000013 nop
+80003518: 00000013 nop
+8000351c: 00000013 nop
+80003520: 00000013 nop
+80003524: 00000013 nop
+80003528: 00000013 nop
+8000352c: 00000013 nop
+80003530: 00000013 nop
+80003534: 00000013 nop
+80003538: 00000013 nop
+8000353c: 00000013 nop
+80003540: 00000013 nop
+80003544: 00000013 nop
+80003548: 00000013 nop
+8000354c: 00000013 nop
+80003550: 00000013 nop
+80003554: 00000013 nop
+80003558: 00000013 nop
+8000355c: 00000013 nop
+80003560: 00000013 nop
+80003564: 00000013 nop
+80003568: 00000013 nop
+8000356c: 00000013 nop
+80003570: 00000013 nop
+80003574: 00000013 nop
+80003578: 00000013 nop
+8000357c: 00000013 nop
+80003580: 00000013 nop
+80003584: 00000013 nop
+80003588: 00000013 nop
+8000358c: 00000013 nop
+80003590: 00000013 nop
+80003594: 00000013 nop
+80003598: 00000013 nop
+8000359c: 00000013 nop
+800035a0: 00000013 nop
+800035a4: 00000013 nop
+800035a8: 00000013 nop
+800035ac: 00000013 nop
+800035b0: 00000013 nop
+800035b4: 00000013 nop
+800035b8: 00000013 nop
+800035bc: 00000013 nop
+800035c0: 00000013 nop
+800035c4: 00000013 nop
+800035c8: 00000013 nop
+800035cc: 00000013 nop
+800035d0: 00000013 nop
+800035d4: 00000013 nop
+800035d8: 00000013 nop
+800035dc: 00000013 nop
+800035e0: 00000013 nop
+800035e4: 00000013 nop
+800035e8: 00000013 nop
+800035ec: 00000013 nop
+800035f0: 00000013 nop
+800035f4: 00000013 nop
+800035f8: 00000013 nop
+800035fc: 00000013 nop
+80003600: 00000013 nop
+80003604: 00000013 nop
+80003608: 00000013 nop
+8000360c: 00000013 nop
+80003610: 00000013 nop
+80003614: 00000013 nop
+80003618: 00000013 nop
+8000361c: 00000013 nop
+80003620: 00000013 nop
+80003624: 00000013 nop
+80003628: 00000013 nop
+8000362c: 00000013 nop
+80003630: 00000013 nop
+80003634: 00000013 nop
+80003638: 00000013 nop
+8000363c: 00000013 nop
+80003640: 00000013 nop
+80003644: 00000013 nop
+80003648: 00000013 nop
+8000364c: 00000013 nop
+80003650: 00000013 nop
+80003654: 00000013 nop
+80003658: 00000013 nop
+8000365c: 00000013 nop
+80003660: 00000013 nop
+80003664: 00000013 nop
+80003668: 00000013 nop
+8000366c: 00000013 nop
+80003670: 00000013 nop
+80003674: 00000013 nop
+80003678: 00000013 nop
+8000367c: 00000013 nop
+80003680: 00000013 nop
+80003684: 00000013 nop
+80003688: 00000013 nop
+8000368c: 00000013 nop
+80003690: 00000013 nop
+80003694: 00000013 nop
+80003698: 00000013 nop
+8000369c: 00000013 nop
+800036a0: 00000013 nop
+800036a4: 00000013 nop
+800036a8: 00000013 nop
+800036ac: 00000013 nop
+800036b0: 00000013 nop
+800036b4: 00000013 nop
+800036b8: 00000013 nop
+800036bc: 00000013 nop
+800036c0: 00000013 nop
+800036c4: 00000013 nop
+800036c8: 00000013 nop
+800036cc: 00000013 nop
+800036d0: 00000013 nop
+800036d4: 00000013 nop
+800036d8: 00000013 nop
+800036dc: 00000013 nop
+800036e0: 00000013 nop
+800036e4: 00000013 nop
+800036e8: 00000013 nop
+800036ec: 00000013 nop
+800036f0: 00000013 nop
+800036f4: 00000013 nop
+800036f8: 00000013 nop
+800036fc: 00000013 nop
+80003700: 00000013 nop
+80003704: 00000013 nop
+80003708: 00000013 nop
+8000370c: 00000013 nop
+80003710: 00000013 nop
+80003714: 00000013 nop
+80003718: 00000013 nop
+8000371c: 00000013 nop
+80003720: 00000013 nop
+80003724: 00000013 nop
+80003728: 00000013 nop
+8000372c: 00000013 nop
+80003730: 00000013 nop
+80003734: 00000013 nop
+80003738: 00000013 nop
+8000373c: 00000013 nop
+80003740: 00000013 nop
+80003744: 00000013 nop
+80003748: 00000013 nop
+8000374c: 00000013 nop
+80003750: 00000013 nop
+80003754: 00000013 nop
+80003758: 00000013 nop
+8000375c: 00000013 nop
+80003760: 00000013 nop
+80003764: 00000013 nop
+80003768: 00000013 nop
+8000376c: 00000013 nop
+80003770: 00000013 nop
+80003774: 00000013 nop
+80003778: 00000013 nop
+8000377c: 00000013 nop
+80003780: 00000013 nop
+80003784: 00000013 nop
+80003788: 00000013 nop
+8000378c: 00000013 nop
+80003790: 00000013 nop
+80003794: 00000013 nop
+80003798: 00000013 nop
+8000379c: 00000013 nop
+800037a0: 00000013 nop
+800037a4: 00000013 nop
+800037a8: 00000013 nop
+800037ac: 00000013 nop
+800037b0: 00000013 nop
+800037b4: 00000013 nop
+800037b8: 00000013 nop
+800037bc: 00000013 nop
+800037c0: 00000013 nop
+800037c4: 00000013 nop
+800037c8: 00000013 nop
+800037cc: 00000013 nop
+800037d0: 00000013 nop
+800037d4: 00000013 nop
+800037d8: 00000013 nop
+800037dc: 00000013 nop
+800037e0: 00000013 nop
+800037e4: 00000013 nop
+800037e8: 00000013 nop
+800037ec: 00000013 nop
+800037f0: 00000013 nop
+800037f4: 00000013 nop
+800037f8: 00000013 nop
+800037fc: 00000013 nop
+80003800: 00000013 nop
+80003804: 00000013 nop
+80003808: 00000013 nop
+8000380c: 00000013 nop
+80003810: 00000013 nop
+80003814: 00000013 nop
+80003818: 00000013 nop
+8000381c: 00000013 nop
+80003820: 00000013 nop
+80003824: 00000013 nop
+80003828: 00000013 nop
+8000382c: 00000013 nop
+80003830: 00000013 nop
+80003834: 00000013 nop
+80003838: 00000013 nop
+8000383c: 00000013 nop
+80003840: 00000013 nop
+80003844: 00000013 nop
+80003848: 00000013 nop
+8000384c: 00000013 nop
+80003850: 00000013 nop
+80003854: 00000013 nop
+80003858: 00000013 nop
+8000385c: 00000013 nop
+80003860: 00000013 nop
+80003864: 00000013 nop
+80003868: 00000013 nop
+8000386c: 00000013 nop
+80003870: 00000013 nop
+80003874: 00000013 nop
+80003878: 00000013 nop
+8000387c: 00000013 nop
+80003880: 00000013 nop
+80003884: 00000013 nop
+80003888: 00000013 nop
+8000388c: 00000013 nop
+80003890: 00000013 nop
+80003894: 00000013 nop
+80003898: 00000013 nop
+8000389c: 00000013 nop
+800038a0: 00000013 nop
+800038a4: 00000013 nop
+800038a8: 00000013 nop
+800038ac: 00000013 nop
+800038b0: 00000013 nop
+800038b4: 00000013 nop
+800038b8: 00000013 nop
+800038bc: 00000013 nop
+800038c0: 00000013 nop
+800038c4: 00000013 nop
+800038c8: 00000013 nop
+800038cc: 00000013 nop
+800038d0: 00000013 nop
+800038d4: 00000013 nop
+800038d8: 00000013 nop
+800038dc: 00000013 nop
+800038e0: 00000013 nop
+800038e4: 00000013 nop
+800038e8: 00000013 nop
+800038ec: 00000013 nop
+800038f0: 00000013 nop
+800038f4: 00000013 nop
+800038f8: 00000013 nop
+800038fc: 00000013 nop
+80003900: 00000013 nop
+80003904: 00000013 nop
+80003908: 00000013 nop
+8000390c: 00000013 nop
+80003910: 00000013 nop
+80003914: 00000013 nop
+80003918: 00000013 nop
+8000391c: 00000013 nop
+80003920: 00000013 nop
+80003924: 00000013 nop
+80003928: 00000013 nop
+8000392c: 00000013 nop
+80003930: 00000013 nop
+80003934: 00000013 nop
+80003938: 00000013 nop
+8000393c: 00000013 nop
+80003940: 00000013 nop
+80003944: 00000013 nop
+80003948: 00000013 nop
+8000394c: 00000013 nop
+80003950: 00000013 nop
+80003954: 00000013 nop
+80003958: 00000013 nop
+8000395c: 00000013 nop
+80003960: 00000013 nop
+80003964: 00000013 nop
+80003968: 00000013 nop
+8000396c: 00000013 nop
+80003970: 00000013 nop
+80003974: 00000013 nop
+80003978: 00000013 nop
+8000397c: 00000013 nop
+80003980: 00000013 nop
+80003984: 00000013 nop
+80003988: 00000013 nop
+8000398c: 00000013 nop
+80003990: 00000013 nop
+80003994: 00000013 nop
+80003998: 00000013 nop
+8000399c: 00000013 nop
+800039a0: 00000013 nop
+800039a4: 00000013 nop
+800039a8: 00000013 nop
+800039ac: 00000013 nop
+800039b0: 00000013 nop
+800039b4: 00000013 nop
+800039b8: 00000013 nop
+800039bc: 00000013 nop
+800039c0: 00000013 nop
+800039c4: 00000013 nop
+800039c8: 00000013 nop
+800039cc: 00000013 nop
+800039d0: 00000013 nop
+800039d4: 00000013 nop
+800039d8: 00000013 nop
+800039dc: 00000013 nop
+800039e0: 00000013 nop
+800039e4: 00000013 nop
+800039e8: 00000013 nop
+800039ec: 00000013 nop
+800039f0: 00000013 nop
+800039f4: 00000013 nop
+800039f8: 00000013 nop
+800039fc: 00000013 nop
+80003a00: 00000013 nop
+80003a04: 00000013 nop
+80003a08: 00000013 nop
+80003a0c: 00000013 nop
+80003a10: 00000013 nop
+80003a14: 00000013 nop
+80003a18: 00000013 nop
+80003a1c: 00000013 nop
+80003a20: 00000013 nop
+80003a24: 00000013 nop
+80003a28: 00000013 nop
+80003a2c: 00000013 nop
+80003a30: 00000013 nop
+80003a34: 00000013 nop
+80003a38: 00000013 nop
+80003a3c: 00000013 nop
+80003a40: 00000013 nop
+80003a44: 00000013 nop
+80003a48: 00000013 nop
+80003a4c: 00000013 nop
+80003a50: 00000013 nop
+80003a54: 00000013 nop
+80003a58: 00000013 nop
+80003a5c: 00000013 nop
+80003a60: 00000013 nop
+80003a64: 00000013 nop
+80003a68: 00000013 nop
+80003a6c: 00000013 nop
+80003a70: 00000013 nop
+80003a74: 00000013 nop
+80003a78: 00000013 nop
+80003a7c: 00000013 nop
+80003a80: 00000013 nop
+80003a84: 00000013 nop
+80003a88: 00000013 nop
+80003a8c: 00000013 nop
+80003a90: 00000013 nop
+80003a94: 00000013 nop
+80003a98: 00000013 nop
+80003a9c: 00000013 nop
+80003aa0: 00000013 nop
+80003aa4: 00000013 nop
+80003aa8: 00000013 nop
+80003aac: 00000013 nop
+80003ab0: 00000013 nop
+80003ab4: 00000013 nop
+80003ab8: 00000013 nop
+80003abc: 00000013 nop
+80003ac0: 00000013 nop
+80003ac4: 00000013 nop
+80003ac8: 00000013 nop
+80003acc: 00000013 nop
+80003ad0: 00000013 nop
+80003ad4: 00000013 nop
+80003ad8: 00000013 nop
+80003adc: 00000013 nop
+80003ae0: 00000013 nop
+80003ae4: 00000013 nop
+80003ae8: 00000013 nop
+80003aec: 00000013 nop
+80003af0: 00000013 nop
+80003af4: 00000013 nop
+80003af8: 00000013 nop
+80003afc: 00000013 nop
+80003b00: 00000013 nop
+80003b04: 00000013 nop
+80003b08: 00000013 nop
+80003b0c: 00000013 nop
+80003b10: 00000013 nop
+80003b14: 00000013 nop
+80003b18: 00000013 nop
+80003b1c: 00000013 nop
+80003b20: 00000013 nop
+80003b24: 00000013 nop
+80003b28: 00000013 nop
+80003b2c: 00000013 nop
+80003b30: 00000013 nop
+80003b34: 00000013 nop
+80003b38: 00000013 nop
+80003b3c: 00000013 nop
+80003b40: 00000013 nop
+80003b44: 00000013 nop
+80003b48: 00000013 nop
+80003b4c: 00000013 nop
+80003b50: 00000013 nop
+80003b54: 00000013 nop
+80003b58: 00000013 nop
+80003b5c: 00000013 nop
+80003b60: 00000013 nop
+80003b64: 00000013 nop
+80003b68: 00000013 nop
+80003b6c: 00000013 nop
+80003b70: 00000013 nop
+80003b74: 00000013 nop
+80003b78: 00000013 nop
+80003b7c: 00000013 nop
+80003b80: 00000013 nop
+80003b84: 00000013 nop
+80003b88: 00000013 nop
+80003b8c: 00000013 nop
+80003b90: 00000013 nop
+80003b94: 00000013 nop
+80003b98: 00000013 nop
+80003b9c: 00000013 nop
+80003ba0: 00000013 nop
+80003ba4: 00000013 nop
+80003ba8: 00000013 nop
+80003bac: 00000013 nop
+80003bb0: 00000013 nop
+80003bb4: 00000013 nop
+80003bb8: 00000013 nop
+80003bbc: 00000013 nop
+80003bc0: 00000013 nop
+80003bc4: 00000013 nop
+80003bc8: 00000013 nop
+80003bcc: 00000013 nop
+80003bd0: 00000013 nop
+80003bd4: 00000013 nop
+80003bd8: 00000013 nop
+80003bdc: 00000013 nop
+80003be0: 00000013 nop
+80003be4: 00000013 nop
+80003be8: 00000013 nop
+80003bec: 00000013 nop
+80003bf0: 00000013 nop
+80003bf4: 00000013 nop
+80003bf8: 00000013 nop
+80003bfc: 00000013 nop
+80003c00: 00000013 nop
+80003c04: 00000013 nop
+80003c08: 00000013 nop
+80003c0c: 00000013 nop
+80003c10: 00000013 nop
+80003c14: 00000013 nop
+80003c18: 00000013 nop
+80003c1c: 00000013 nop
+80003c20: 00000013 nop
+80003c24: 00000013 nop
+80003c28: 00000013 nop
+80003c2c: 00000013 nop
+80003c30: 00000013 nop
+80003c34: 00000013 nop
+80003c38: 00000013 nop
+80003c3c: 00000013 nop
+80003c40: 00000013 nop
+80003c44: 00000013 nop
+80003c48: 00000013 nop
+80003c4c: 00000013 nop
+80003c50: 00000013 nop
+80003c54: 00000013 nop
+80003c58: 00000013 nop
+80003c5c: 00000013 nop
+80003c60: 00000013 nop
+80003c64: 00000013 nop
+80003c68: 00000013 nop
+80003c6c: 00000013 nop
+80003c70: 00000013 nop
+80003c74: 00000013 nop
+80003c78: 00000013 nop
+80003c7c: 00000013 nop
+80003c80: 00000013 nop
+80003c84: 00000013 nop
+80003c88: 00000013 nop
+80003c8c: 00000013 nop
+80003c90: 00000013 nop
+80003c94: 00000013 nop
+80003c98: 00000013 nop
+80003c9c: 00000013 nop
+80003ca0: 00000013 nop
+80003ca4: 00000013 nop
+80003ca8: 00000013 nop
+80003cac: 00000013 nop
+80003cb0: 00000013 nop
+80003cb4: 00000013 nop
+80003cb8: 00000013 nop
+80003cbc: 00000013 nop
+80003cc0: 00000013 nop
+80003cc4: 00000013 nop
+80003cc8: 00000013 nop
+80003ccc: 00000013 nop
+80003cd0: 00000013 nop
+80003cd4: 00000013 nop
+80003cd8: 00000013 nop
+80003cdc: 00000013 nop
+80003ce0: 00000013 nop
+80003ce4: 00000013 nop
+80003ce8: 00000013 nop
+80003cec: 00000013 nop
+80003cf0: 00000013 nop
+80003cf4: 00000013 nop
+80003cf8: 00000013 nop
+80003cfc: 00000013 nop
+80003d00: 00000013 nop
+80003d04: 00000013 nop
+80003d08: 00000013 nop
+80003d0c: 00000013 nop
+80003d10: 00000013 nop
+80003d14: 00000013 nop
+80003d18: 00000013 nop
+80003d1c: 00000013 nop
+80003d20: 00000013 nop
+80003d24: 00000013 nop
+80003d28: 00000013 nop
+80003d2c: 00000013 nop
+80003d30: 00000013 nop
+80003d34: 00000013 nop
+80003d38: 00000013 nop
+80003d3c: 00000013 nop
+80003d40: 00000013 nop
+80003d44: 00000013 nop
+80003d48: 00000013 nop
+80003d4c: 00000013 nop
+80003d50: 00000013 nop
+80003d54: 00000013 nop
+80003d58: 00000013 nop
+80003d5c: 00000013 nop
+80003d60: 00000013 nop
+80003d64: 00000013 nop
+80003d68: 00000013 nop
+80003d6c: 00000013 nop
+80003d70: 00000013 nop
+80003d74: 00000013 nop
+80003d78: 00000013 nop
+80003d7c: 00000013 nop
+80003d80: 00000013 nop
+80003d84: 00000013 nop
+80003d88: 00000013 nop
+80003d8c: 00000013 nop
+80003d90: 00000013 nop
+80003d94: 00000013 nop
+80003d98: 00000013 nop
+80003d9c: 00000013 nop
+80003da0: 00000013 nop
+80003da4: 00000013 nop
+80003da8: 00000013 nop
+80003dac: 00000013 nop
+80003db0: 00000013 nop
+80003db4: 00000013 nop
+80003db8: 00000013 nop
+80003dbc: 00000013 nop
+80003dc0: 00000013 nop
+80003dc4: 00000013 nop
+80003dc8: 00000013 nop
+80003dcc: 00000013 nop
+80003dd0: 00000013 nop
+80003dd4: 00000013 nop
+80003dd8: 00000013 nop
+80003ddc: 00000013 nop
+80003de0: 00000013 nop
+80003de4: 00000013 nop
+80003de8: 00000013 nop
+80003dec: 00000013 nop
+80003df0: 00000013 nop
+80003df4: 00000013 nop
+80003df8: 00000013 nop
+80003dfc: 00000013 nop
+80003e00: 00000013 nop
+80003e04: 00000013 nop
+80003e08: 00000013 nop
+80003e0c: 00000013 nop
+80003e10: 00000013 nop
+80003e14: 00000013 nop
+80003e18: 00000013 nop
+80003e1c: 00000013 nop
+80003e20: 00000013 nop
+80003e24: 00000013 nop
+80003e28: 00000013 nop
+80003e2c: 00000013 nop
+80003e30: 00000013 nop
+80003e34: 00000013 nop
+80003e38: 00000013 nop
+80003e3c: 00000013 nop
+80003e40: 00000013 nop
+80003e44: 00000013 nop
+80003e48: 00000013 nop
+80003e4c: 00000013 nop
+80003e50: 00000013 nop
+80003e54: 00000013 nop
+80003e58: 00000013 nop
+80003e5c: 00000013 nop
+80003e60: 00000013 nop
+80003e64: 00000013 nop
+80003e68: 00000013 nop
+80003e6c: 00000013 nop
+80003e70: 00000013 nop
+80003e74: 00000013 nop
+80003e78: 00000013 nop
+80003e7c: 00000013 nop
+80003e80: 00000013 nop
+80003e84: 00000013 nop
+80003e88: 00000013 nop
+80003e8c: 00000013 nop
+80003e90: 00000013 nop
+80003e94: 00000013 nop
+80003e98: 00000013 nop
+80003e9c: 00000013 nop
+80003ea0: 00000013 nop
+80003ea4: 00000013 nop
+80003ea8: 00000013 nop
+80003eac: 00000013 nop
+80003eb0: 00000013 nop
+80003eb4: 00000013 nop
+80003eb8: 00000013 nop
+80003ebc: 00000013 nop
+80003ec0: 00000013 nop
+80003ec4: 00000013 nop
+80003ec8: 00000013 nop
+80003ecc: 00000013 nop
+80003ed0: 00000013 nop
+80003ed4: 00000013 nop
+80003ed8: 00000013 nop
+80003edc: 00000013 nop
+80003ee0: 00000013 nop
+80003ee4: 00000013 nop
+80003ee8: 00000013 nop
+80003eec: 00000013 nop
+80003ef0: 00000013 nop
+80003ef4: 00000013 nop
+80003ef8: 00000013 nop
+80003efc: 00000013 nop
+80003f00: 00000013 nop
+80003f04: 00000013 nop
+80003f08: 00000013 nop
+80003f0c: 00000013 nop
+80003f10: 00000013 nop
+80003f14: 00000013 nop
+80003f18: 00000013 nop
+80003f1c: 00000013 nop
+80003f20: 00000013 nop
+80003f24: 00000013 nop
+80003f28: 00000013 nop
+80003f2c: 00000013 nop
+80003f30: 00000013 nop
+80003f34: 00000013 nop
+80003f38: 00000013 nop
+80003f3c: 00000013 nop
+80003f40: 00000013 nop
+80003f44: 00000013 nop
+80003f48: 00000013 nop
+80003f4c: 00000013 nop
+80003f50: 00000013 nop
+80003f54: 00000013 nop
+80003f58: 00000013 nop
+80003f5c: 00000013 nop
+80003f60: 00000013 nop
+80003f64: 00000013 nop
+80003f68: 00000013 nop
+80003f6c: 00000013 nop
+80003f70: 00000013 nop
+80003f74: 00000013 nop
+80003f78: 00000013 nop
+80003f7c: 00000013 nop
+80003f80: 00000013 nop
+80003f84: 00000013 nop
+80003f88: 00000013 nop
+80003f8c: 00000013 nop
+80003f90: 00000013 nop
+80003f94: 00000013 nop
+80003f98: 00000013 nop
+80003f9c: 00000013 nop
+80003fa0: 00000013 nop
+80003fa4: 00000013 nop
+80003fa8: 00000013 nop
+80003fac: 00000013 nop
+80003fb0: 00000013 nop
+80003fb4: 00000013 nop
+80003fb8: 00000013 nop
+80003fbc: 00000013 nop
+80003fc0: 00000013 nop
+80003fc4: 00000013 nop
+80003fc8: 00000013 nop
+80003fcc: 00000013 nop
+80003fd0: 00000013 nop
+80003fd4: 00000013 nop
+80003fd8: 00000013 nop
+80003fdc: 00000013 nop
+80003fe0: 00000013 nop
+80003fe4: 00000013 nop
+80003fe8: 00000013 nop
+80003fec: 00000013 nop
+80003ff0: 00000013 nop
+80003ff4: 00000013 nop
+80003ff8: 00000013 nop
+80003ffc: 00000013 nop
+80004000: 0000 unimp
+80004002: 0000 unimp
+80004004: 0000 unimp
+80004006: 0000 unimp
+80004008: 0000 unimp
+8000400a: 0000 unimp
+8000400c: 0000 unimp
+8000400e: 0000 unimp
+80004010: 0000 unimp
+80004012: 0000 unimp
+80004014: 0000 unimp
+80004016: 0000 unimp
+80004018: 0000 unimp
+8000401a: 0000 unimp
+8000401c: 0000 unimp
+8000401e: 0000 unimp
+80004020: 0000 unimp
+80004022: 0000 unimp
+80004024: 0000 unimp
+80004026: 0000 unimp
+80004028: 0000 unimp
+8000402a: 0000 unimp
+8000402c: 0000 unimp
+8000402e: 0000 unimp
+80004030: 0000 unimp
+80004032: 0000 unimp
+80004034: 0000 unimp
+80004036: 0000 unimp
+80004038: 0000 unimp
+8000403a: 0000 unimp
+8000403c: 0000 unimp
+8000403e: 0000 unimp
+80004040: 0000 unimp
+80004042: 0000 unimp
+80004044: 0000 unimp
+80004046: 0000 unimp
+80004048: 0000 unimp
+8000404a: 0000 unimp
+8000404c: 0000 unimp
+8000404e: 0000 unimp
+80004050: 0000 unimp
+80004052: 0000 unimp
+80004054: 0000 unimp
+80004056: 0000 unimp
+80004058: 0000 unimp
+8000405a: 0000 unimp
+8000405c: 0000 unimp
+8000405e: 0000 unimp
+80004060: 0000 unimp
+80004062: 0000 unimp
+80004064: 0000 unimp
+80004066: 0000 unimp
+80004068: 0000 unimp
+8000406a: 0000 unimp
+8000406c: 0000 unimp
+8000406e: 0000 unimp
+80004070: 0000 unimp
+80004072: 0000 unimp
+80004074: 0000 unimp
+80004076: 0000 unimp
+80004078: 0000 unimp
+8000407a: 0000 unimp
+8000407c: 0000 unimp
+8000407e: 0000 unimp
+80004080: 0000 unimp
+80004082: 0000 unimp
+80004084: 0000 unimp
+80004086: 0000 unimp
+80004088: 0000 unimp
+8000408a: 0000 unimp
+8000408c: 0000 unimp
+8000408e: 0000 unimp
+80004090: 0000 unimp
+80004092: 0000 unimp
+80004094: 0000 unimp
+80004096: 0000 unimp
+80004098: 0000 unimp
+8000409a: 0000 unimp
+8000409c: 0000 unimp
+8000409e: 0000 unimp
+800040a0: 0000 unimp
+800040a2: 0000 unimp
+800040a4: 0000 unimp
+800040a6: 0000 unimp
+800040a8: 0000 unimp
+800040aa: 0000 unimp
+800040ac: 0000 unimp
+800040ae: 0000 unimp
+800040b0: 0000 unimp
+800040b2: 0000 unimp
+800040b4: 0000 unimp
+800040b6: 0000 unimp
+800040b8: 0000 unimp
+800040ba: 0000 unimp
+800040bc: 0000 unimp
+800040be: 0000 unimp
+800040c0: 0000 unimp
+800040c2: 0000 unimp
+800040c4: 0000 unimp
+800040c6: 0000 unimp
+800040c8: 0000 unimp
+800040ca: 0000 unimp
+800040cc: 0000 unimp
+800040ce: 0000 unimp
+800040d0: 0000 unimp
+800040d2: 0000 unimp
+800040d4: 0000 unimp
+800040d6: 0000 unimp
+800040d8: 0000 unimp
+800040da: 0000 unimp
+800040dc: 0000 unimp
+800040de: 0000 unimp
+800040e0: 0000 unimp
+800040e2: 0000 unimp
+800040e4: 0000 unimp
+800040e6: 0000 unimp
+800040e8: 0000 unimp
+800040ea: 0000 unimp
+800040ec: 0000 unimp
+800040ee: 0000 unimp
+800040f0: 0000 unimp
+800040f2: 0000 unimp
+800040f4: 0000 unimp
+800040f6: 0000 unimp
+800040f8: 0000 unimp
+800040fa: 0000 unimp
+800040fc: 0000 unimp
+800040fe: 0000 unimp
+80004100: 0000 unimp
+80004102: 0000 unimp
+80004104: 0000 unimp
+80004106: 0000 unimp
+80004108: 0000 unimp
+8000410a: 0000 unimp
+8000410c: 0000 unimp
+8000410e: 0000 unimp
+80004110: 0000 unimp
+80004112: 0000 unimp
+80004114: 0000 unimp
+80004116: 0000 unimp
+80004118: 0000 unimp
+8000411a: 0000 unimp
+8000411c: 0000 unimp
+8000411e: 0000 unimp
+80004120: 0000 unimp
+80004122: 0000 unimp
+80004124: 0000 unimp
+80004126: 0000 unimp
+80004128: 0000 unimp
+8000412a: 0000 unimp
+8000412c: 0000 unimp
+8000412e: 0000 unimp
+80004130: 0000 unimp
+80004132: 0000 unimp
+80004134: 0000 unimp
+80004136: 0000 unimp
+80004138: 0000 unimp
+8000413a: 0000 unimp
+8000413c: 0000 unimp
+8000413e: 0000 unimp
+80004140: 0000 unimp
+80004142: 0000 unimp
+80004144: 0000 unimp
+80004146: 0000 unimp
+80004148: 0000 unimp
+8000414a: 0000 unimp
+8000414c: 0000 unimp
+8000414e: 0000 unimp
+80004150: 0000 unimp
+80004152: 0000 unimp
+80004154: 0000 unimp
+80004156: 0000 unimp
+80004158: 0000 unimp
+8000415a: 0000 unimp
+8000415c: 0000 unimp
+8000415e: 0000 unimp
+80004160: 0000 unimp
+80004162: 0000 unimp
+80004164: 0000 unimp
+80004166: 0000 unimp
+80004168: 0000 unimp
+8000416a: 0000 unimp
+8000416c: 0000 unimp
+8000416e: 0000 unimp
+80004170: 0000 unimp
+80004172: 0000 unimp
+80004174: 0000 unimp
+80004176: 0000 unimp
+80004178: 0000 unimp
+8000417a: 0000 unimp
+8000417c: 0000 unimp
+8000417e: 0000 unimp
+80004180: 0000 unimp
+80004182: 0000 unimp
+80004184: 0000 unimp
+80004186: 0000 unimp
+80004188: 0000 unimp
+8000418a: 0000 unimp
+8000418c: 0000 unimp
+8000418e: 0000 unimp
+80004190: 0000 unimp
+80004192: 0000 unimp
+80004194: 0000 unimp
+80004196: 0000 unimp
+80004198: 0000 unimp
+8000419a: 0000 unimp
+8000419c: 0000 unimp
+8000419e: 0000 unimp
+800041a0: 0000 unimp
+800041a2: 0000 unimp
+800041a4: 0000 unimp
+800041a6: 0000 unimp
+800041a8: 0000 unimp
+800041aa: 0000 unimp
+800041ac: 0000 unimp
+800041ae: 0000 unimp
+800041b0: 0000 unimp
+800041b2: 0000 unimp
+800041b4: 0000 unimp
+800041b6: 0000 unimp
+800041b8: 0000 unimp
+800041ba: 0000 unimp
+800041bc: 0000 unimp
+800041be: 0000 unimp
+800041c0: 0000 unimp
+800041c2: 0000 unimp
+800041c4: 0000 unimp
+800041c6: 0000 unimp
+800041c8: 0000 unimp
+800041ca: 0000 unimp
+800041cc: 0000 unimp
+800041ce: 0000 unimp
+800041d0: 0000 unimp
+800041d2: 0000 unimp
+800041d4: 0000 unimp
+800041d6: 0000 unimp
+800041d8: 0000 unimp
+800041da: 0000 unimp
+800041dc: 0000 unimp
+800041de: 0000 unimp
+800041e0: 0000 unimp
+800041e2: 0000 unimp
+800041e4: 0000 unimp
+800041e6: 0000 unimp
+800041e8: 0000 unimp
+800041ea: 0000 unimp
+800041ec: 0000 unimp
+800041ee: 0000 unimp
+800041f0: 0000 unimp
+800041f2: 0000 unimp
+800041f4: 0000 unimp
+800041f6: 0000 unimp
+800041f8: 0000 unimp
+800041fa: 0000 unimp
+800041fc: 0000 unimp
+800041fe: 0000 unimp
+80004200: 0000 unimp
+80004202: 0000 unimp
+80004204: 0000 unimp
+80004206: 0000 unimp
+80004208: 0000 unimp
+8000420a: 0000 unimp
+8000420c: 0000 unimp
+8000420e: 0000 unimp
+80004210: 0000 unimp
+80004212: 0000 unimp
+80004214: 0000 unimp
+80004216: 0000 unimp
+80004218: 0000 unimp
+8000421a: 0000 unimp
+8000421c: 0000 unimp
+8000421e: 0000 unimp
+80004220: 0000 unimp
+80004222: 0000 unimp
+80004224: 0000 unimp
+80004226: 0000 unimp
+80004228: 0000 unimp
+8000422a: 0000 unimp
+8000422c: 0000 unimp
+8000422e: 0000 unimp
+80004230: 0000 unimp
+80004232: 0000 unimp
+80004234: 0000 unimp
+80004236: 0000 unimp
+80004238: 0000 unimp
+8000423a: 0000 unimp
+8000423c: 0000 unimp
+8000423e: 0000 unimp
+80004240: 0000 unimp
+80004242: 0000 unimp
+80004244: 0000 unimp
+80004246: 0000 unimp
+80004248: 0000 unimp
+8000424a: 0000 unimp
+8000424c: 0000 unimp
+8000424e: 0000 unimp
+80004250: 0000 unimp
+80004252: 0000 unimp
+80004254: 0000 unimp
+80004256: 0000 unimp
+80004258: 0000 unimp
+8000425a: 0000 unimp
+8000425c: 0000 unimp
+8000425e: 0000 unimp
+80004260: 0000 unimp
+80004262: 0000 unimp
+80004264: 0000 unimp
+80004266: 0000 unimp
+80004268: 0000 unimp
+8000426a: 0000 unimp
+8000426c: 0000 unimp
+8000426e: 0000 unimp
+80004270: 0000 unimp
+80004272: 0000 unimp
+80004274: 0000 unimp
+80004276: 0000 unimp
+80004278: 0000 unimp
+8000427a: 0000 unimp
+8000427c: 0000 unimp
+8000427e: 0000 unimp
+80004280: 0000 unimp
+80004282: 0000 unimp
+80004284: 0000 unimp
+80004286: 0000 unimp
+80004288: 0000 unimp
+8000428a: 0000 unimp
+8000428c: 0000 unimp
+8000428e: 0000 unimp
+80004290: 0000 unimp
+80004292: 0000 unimp
+80004294: 0000 unimp
+80004296: 0000 unimp
+80004298: 0000 unimp
+8000429a: 0000 unimp
+8000429c: 0000 unimp
+8000429e: 0000 unimp
+800042a0: 0000 unimp
+800042a2: 0000 unimp
+800042a4: 0000 unimp
+800042a6: 0000 unimp
+800042a8: 0000 unimp
+800042aa: 0000 unimp
+800042ac: 0000 unimp
+800042ae: 0000 unimp
+800042b0: 0000 unimp
+800042b2: 0000 unimp
+800042b4: 0000 unimp
+800042b6: 0000 unimp
+800042b8: 0000 unimp
+800042ba: 0000 unimp
+800042bc: 0000 unimp
+800042be: 0000 unimp
+800042c0: 0000 unimp
+800042c2: 0000 unimp
+800042c4: 0000 unimp
+800042c6: 0000 unimp
+800042c8: 0000 unimp
+800042ca: 0000 unimp
+800042cc: 0000 unimp
+800042ce: 0000 unimp
+800042d0: 0000 unimp
+800042d2: 0000 unimp
+800042d4: 0000 unimp
+800042d6: 0000 unimp
+800042d8: 0000 unimp
+800042da: 0000 unimp
+800042dc: 0000 unimp
+800042de: 0000 unimp
+800042e0: 0000 unimp
+800042e2: 0000 unimp
+800042e4: 0000 unimp
+800042e6: 0000 unimp
+800042e8: 0000 unimp
+800042ea: 0000 unimp
+800042ec: 0000 unimp
+800042ee: 0000 unimp
+800042f0: 0000 unimp
+800042f2: 0000 unimp
+800042f4: 0000 unimp
+800042f6: 0000 unimp
+800042f8: 0000 unimp
+800042fa: 0000 unimp
+800042fc: 0000 unimp
+800042fe: 0000 unimp
+80004300: 0000 unimp
+80004302: 0000 unimp
+80004304: 0000 unimp
+80004306: 0000 unimp
+80004308: 0000 unimp
+8000430a: 0000 unimp
+8000430c: 0000 unimp
+8000430e: 0000 unimp
+80004310: 0000 unimp
+80004312: 0000 unimp
+80004314: 0000 unimp
+80004316: 0000 unimp
+80004318: 0000 unimp
+8000431a: 0000 unimp
+8000431c: 0000 unimp
+8000431e: 0000 unimp
+80004320: 0000 unimp
+80004322: 0000 unimp
+80004324: 0000 unimp
+80004326: 0000 unimp
+80004328: 0000 unimp
+8000432a: 0000 unimp
+8000432c: 0000 unimp
+8000432e: 0000 unimp
+80004330: 0000 unimp
+80004332: 0000 unimp
+80004334: 0000 unimp
+80004336: 0000 unimp
+80004338: 0000 unimp
+8000433a: 0000 unimp
+8000433c: 0000 unimp
+8000433e: 0000 unimp
+80004340: 0000 unimp
+80004342: 0000 unimp
+80004344: 0000 unimp
+80004346: 0000 unimp
+80004348: 0000 unimp
+8000434a: 0000 unimp
+8000434c: 0000 unimp
+8000434e: 0000 unimp
+80004350: 0000 unimp
+80004352: 0000 unimp
+80004354: 0000 unimp
+80004356: 0000 unimp
+80004358: 0000 unimp
+8000435a: 0000 unimp
+8000435c: 0000 unimp
+8000435e: 0000 unimp
+80004360: 0000 unimp
+80004362: 0000 unimp
+80004364: 0000 unimp
+80004366: 0000 unimp
+80004368: 0000 unimp
+8000436a: 0000 unimp
+8000436c: 0000 unimp
+8000436e: 0000 unimp
+80004370: 0000 unimp
+80004372: 0000 unimp
+80004374: 0000 unimp
+80004376: 0000 unimp
+80004378: 0000 unimp
+8000437a: 0000 unimp
+8000437c: 0000 unimp
+8000437e: 0000 unimp
+80004380: 0000 unimp
+80004382: 0000 unimp
+80004384: 0000 unimp
+80004386: 0000 unimp
+80004388: 0000 unimp
+8000438a: 0000 unimp
+8000438c: 0000 unimp
+8000438e: 0000 unimp
+80004390: 0000 unimp
+80004392: 0000 unimp
+80004394: 0000 unimp
+80004396: 0000 unimp
+80004398: 0000 unimp
+8000439a: 0000 unimp
+8000439c: 0000 unimp
+8000439e: 0000 unimp
+800043a0: 0000 unimp
+800043a2: 0000 unimp
+800043a4: 0000 unimp
+800043a6: 0000 unimp
+800043a8: 0000 unimp
+800043aa: 0000 unimp
+800043ac: 0000 unimp
+800043ae: 0000 unimp
+800043b0: 0000 unimp
+800043b2: 0000 unimp
+800043b4: 0000 unimp
+800043b6: 0000 unimp
+800043b8: 0000 unimp
+800043ba: 0000 unimp
+800043bc: 0000 unimp
+800043be: 0000 unimp
+800043c0: 0000 unimp
+800043c2: 0000 unimp
+800043c4: 0000 unimp
+800043c6: 0000 unimp
+800043c8: 0000 unimp
+800043ca: 0000 unimp
+800043cc: 0000 unimp
+800043ce: 0000 unimp
+800043d0: 0000 unimp
+800043d2: 0000 unimp
+800043d4: 0000 unimp
+800043d6: 0000 unimp
+800043d8: 0000 unimp
+800043da: 0000 unimp
+800043dc: 0000 unimp
+800043de: 0000 unimp
+800043e0: 0000 unimp
+800043e2: 0000 unimp
+800043e4: 0000 unimp
+800043e6: 0000 unimp
+800043e8: 0000 unimp
+800043ea: 0000 unimp
+800043ec: 0000 unimp
+800043ee: 0000 unimp
+800043f0: 0000 unimp
+800043f2: 0000 unimp
+800043f4: 0000 unimp
+800043f6: 0000 unimp
+800043f8: 0000 unimp
+800043fa: 0000 unimp
+800043fc: 0000 unimp
+800043fe: 0000 unimp
+80004400: 0000 unimp
+80004402: 0000 unimp
+80004404: 0000 unimp
+80004406: 0000 unimp
+80004408: 0000 unimp
+8000440a: 0000 unimp
+8000440c: 0000 unimp
+8000440e: 0000 unimp
+80004410: 0000 unimp
+80004412: 0000 unimp
+80004414: 0000 unimp
+80004416: 0000 unimp
+80004418: 0000 unimp
+8000441a: 0000 unimp
+8000441c: 0000 unimp
+8000441e: 0000 unimp
+80004420: 0000 unimp
+80004422: 0000 unimp
+80004424: 0000 unimp
+80004426: 0000 unimp
+80004428: 0000 unimp
+8000442a: 0000 unimp
+8000442c: 0000 unimp
+8000442e: 0000 unimp
+80004430: 0000 unimp
+80004432: 0000 unimp
+80004434: 0000 unimp
+80004436: 0000 unimp
+80004438: 0000 unimp
+8000443a: 0000 unimp
+8000443c: 0000 unimp
+8000443e: 0000 unimp
+80004440: 0000 unimp
+80004442: 0000 unimp
+80004444: 0000 unimp
+80004446: 0000 unimp
+80004448: 0000 unimp
+8000444a: 0000 unimp
+8000444c: 0000 unimp
+8000444e: 0000 unimp
+80004450: 0000 unimp
+80004452: 0000 unimp
+80004454: 0000 unimp
+80004456: 0000 unimp
+80004458: 0000 unimp
+8000445a: 0000 unimp
+8000445c: 0000 unimp
+8000445e: 0000 unimp
+80004460: 0000 unimp
+80004462: 0000 unimp
+80004464: 0000 unimp
+80004466: 0000 unimp
+80004468: 0000 unimp
+8000446a: 0000 unimp
+8000446c: 0000 unimp
+8000446e: 0000 unimp
+80004470: 0000 unimp
+80004472: 0000 unimp
+80004474: 0000 unimp
+80004476: 0000 unimp
+80004478: 0000 unimp
+8000447a: 0000 unimp
+8000447c: 0000 unimp
+8000447e: 0000 unimp
+80004480: 0000 unimp
+80004482: 0000 unimp
+80004484: 0000 unimp
+80004486: 0000 unimp
+80004488: 0000 unimp
+8000448a: 0000 unimp
+8000448c: 0000 unimp
+8000448e: 0000 unimp
+80004490: 0000 unimp
+80004492: 0000 unimp
+80004494: 0000 unimp
+80004496: 0000 unimp
+80004498: 0000 unimp
+8000449a: 0000 unimp
+8000449c: 0000 unimp
+8000449e: 0000 unimp
+800044a0: 0000 unimp
+800044a2: 0000 unimp
+800044a4: 0000 unimp
+800044a6: 0000 unimp
+800044a8: 0000 unimp
+800044aa: 0000 unimp
+800044ac: 0000 unimp
+800044ae: 0000 unimp
+800044b0: 0000 unimp
+800044b2: 0000 unimp
+800044b4: 0000 unimp
+800044b6: 0000 unimp
+800044b8: 0000 unimp
+800044ba: 0000 unimp
+800044bc: 0000 unimp
+800044be: 0000 unimp
+800044c0: 0000 unimp
+800044c2: 0000 unimp
+800044c4: 0000 unimp
+800044c6: 0000 unimp
+800044c8: 0000 unimp
+800044ca: 0000 unimp
+800044cc: 0000 unimp
+800044ce: 0000 unimp
+800044d0: 0000 unimp
+800044d2: 0000 unimp
+800044d4: 0000 unimp
+800044d6: 0000 unimp
+800044d8: 0000 unimp
+800044da: 0000 unimp
+800044dc: 0000 unimp
+800044de: 0000 unimp
+800044e0: 0000 unimp
+800044e2: 0000 unimp
+800044e4: 0000 unimp
+800044e6: 0000 unimp
+800044e8: 0000 unimp
+800044ea: 0000 unimp
+800044ec: 0000 unimp
+800044ee: 0000 unimp
+800044f0: 0000 unimp
+800044f2: 0000 unimp
+800044f4: 0000 unimp
+800044f6: 0000 unimp
+800044f8: 0000 unimp
+800044fa: 0000 unimp
+800044fc: 0000 unimp
+800044fe: 0000 unimp
+80004500: 0000 unimp
+80004502: 0000 unimp
+80004504: 0000 unimp
+80004506: 0000 unimp
+80004508: 0000 unimp
+8000450a: 0000 unimp
+8000450c: 0000 unimp
+8000450e: 0000 unimp
+80004510: 0000 unimp
+80004512: 0000 unimp
+80004514: 0000 unimp
+80004516: 0000 unimp
+80004518: 0000 unimp
+8000451a: 0000 unimp
+8000451c: 0000 unimp
+8000451e: 0000 unimp
+80004520: 0000 unimp
+80004522: 0000 unimp
+80004524: 0000 unimp
+80004526: 0000 unimp
+80004528: 0000 unimp
+8000452a: 0000 unimp
+8000452c: 0000 unimp
+8000452e: 0000 unimp
+80004530: 0000 unimp
+80004532: 0000 unimp
+80004534: 0000 unimp
+80004536: 0000 unimp
+80004538: 0000 unimp
+8000453a: 0000 unimp
+8000453c: 0000 unimp
+8000453e: 0000 unimp
+80004540: 0000 unimp
+80004542: 0000 unimp
+80004544: 0000 unimp
+80004546: 0000 unimp
+80004548: 0000 unimp
+8000454a: 0000 unimp
+8000454c: 0000 unimp
+8000454e: 0000 unimp
+80004550: 0000 unimp
+80004552: 0000 unimp
+80004554: 0000 unimp
+80004556: 0000 unimp
+80004558: 0000 unimp
+8000455a: 0000 unimp
+8000455c: 0000 unimp
+8000455e: 0000 unimp
+80004560: 0000 unimp
+80004562: 0000 unimp
+80004564: 0000 unimp
+80004566: 0000 unimp
+80004568: 0000 unimp
+8000456a: 0000 unimp
+8000456c: 0000 unimp
+8000456e: 0000 unimp
+80004570: 0000 unimp
+80004572: 0000 unimp
+80004574: 0000 unimp
+80004576: 0000 unimp
+80004578: 0000 unimp
+8000457a: 0000 unimp
+8000457c: 0000 unimp
+8000457e: 0000 unimp
+80004580: 0000 unimp
+80004582: 0000 unimp
+80004584: 0000 unimp
+80004586: 0000 unimp
+80004588: 0000 unimp
+8000458a: 0000 unimp
+8000458c: 0000 unimp
+8000458e: 0000 unimp
+80004590: 0000 unimp
+80004592: 0000 unimp
+80004594: 0000 unimp
+80004596: 0000 unimp
+80004598: 0000 unimp
+8000459a: 0000 unimp
+8000459c: 0000 unimp
+8000459e: 0000 unimp
+800045a0: 0000 unimp
+800045a2: 0000 unimp
+800045a4: 0000 unimp
+800045a6: 0000 unimp
+800045a8: 0000 unimp
+800045aa: 0000 unimp
+800045ac: 0000 unimp
+800045ae: 0000 unimp
+800045b0: 0000 unimp
+800045b2: 0000 unimp
+800045b4: 0000 unimp
+800045b6: 0000 unimp
+800045b8: 0000 unimp
+800045ba: 0000 unimp
+800045bc: 0000 unimp
+800045be: 0000 unimp
+800045c0: 0000 unimp
+800045c2: 0000 unimp
+800045c4: 0000 unimp
+800045c6: 0000 unimp
+800045c8: 0000 unimp
+800045ca: 0000 unimp
+800045cc: 0000 unimp
+800045ce: 0000 unimp
+800045d0: 0000 unimp
+800045d2: 0000 unimp
+800045d4: 0000 unimp
+800045d6: 0000 unimp
+800045d8: 0000 unimp
+800045da: 0000 unimp
+800045dc: 0000 unimp
+800045de: 0000 unimp
+800045e0: 0000 unimp
+800045e2: 0000 unimp
+800045e4: 0000 unimp
+800045e6: 0000 unimp
+800045e8: 0000 unimp
+800045ea: 0000 unimp
+800045ec: 0000 unimp
+800045ee: 0000 unimp
+800045f0: 0000 unimp
+800045f2: 0000 unimp
+800045f4: 0000 unimp
+800045f6: 0000 unimp
+800045f8: 0000 unimp
+800045fa: 0000 unimp
+800045fc: 0000 unimp
+800045fe: 0000 unimp
+80004600: 0000 unimp
+80004602: 0000 unimp
+80004604: 0000 unimp
+80004606: 0000 unimp
+80004608: 0000 unimp
+8000460a: 0000 unimp
+8000460c: 0000 unimp
+8000460e: 0000 unimp
+80004610: 0000 unimp
+80004612: 0000 unimp
+80004614: 0000 unimp
+80004616: 0000 unimp
+80004618: 0000 unimp
+8000461a: 0000 unimp
+8000461c: 0000 unimp
+8000461e: 0000 unimp
+80004620: 0000 unimp
+80004622: 0000 unimp
+80004624: 0000 unimp
+80004626: 0000 unimp
+80004628: 0000 unimp
+8000462a: 0000 unimp
+8000462c: 0000 unimp
+8000462e: 0000 unimp
+80004630: 0000 unimp
+80004632: 0000 unimp
+80004634: 0000 unimp
+80004636: 0000 unimp
+80004638: 0000 unimp
+8000463a: 0000 unimp
+8000463c: 0000 unimp
+8000463e: 0000 unimp
+80004640: 0000 unimp
+80004642: 0000 unimp
+80004644: 0000 unimp
+80004646: 0000 unimp
+80004648: 0000 unimp
+8000464a: 0000 unimp
+8000464c: 0000 unimp
+8000464e: 0000 unimp
+80004650: 0000 unimp
+80004652: 0000 unimp
+80004654: 0000 unimp
+80004656: 0000 unimp
+80004658: 0000 unimp
+8000465a: 0000 unimp
+8000465c: 0000 unimp
+8000465e: 0000 unimp
+80004660: 0000 unimp
+80004662: 0000 unimp
+80004664: 0000 unimp
+80004666: 0000 unimp
+80004668: 0000 unimp
+8000466a: 0000 unimp
+8000466c: 0000 unimp
+8000466e: 0000 unimp
+80004670: 0000 unimp
+80004672: 0000 unimp
+80004674: 0000 unimp
+80004676: 0000 unimp
+80004678: 0000 unimp
+8000467a: 0000 unimp
+8000467c: 0000 unimp
+8000467e: 0000 unimp
+80004680: 0000 unimp
+80004682: 0000 unimp
+80004684: 0000 unimp
+80004686: 0000 unimp
+80004688: 0000 unimp
+8000468a: 0000 unimp
+8000468c: 0000 unimp
+8000468e: 0000 unimp
+80004690: 0000 unimp
+80004692: 0000 unimp
+80004694: 0000 unimp
+80004696: 0000 unimp
+80004698: 0000 unimp
+8000469a: 0000 unimp
+8000469c: 0000 unimp
+8000469e: 0000 unimp
+800046a0: 0000 unimp
+800046a2: 0000 unimp
+800046a4: 0000 unimp
+800046a6: 0000 unimp
+800046a8: 0000 unimp
+800046aa: 0000 unimp
+800046ac: 0000 unimp
+800046ae: 0000 unimp
+800046b0: 0000 unimp
+800046b2: 0000 unimp
+800046b4: 0000 unimp
+800046b6: 0000 unimp
+800046b8: 0000 unimp
+800046ba: 0000 unimp
+800046bc: 0000 unimp
+800046be: 0000 unimp
+800046c0: 0000 unimp
+800046c2: 0000 unimp
+800046c4: 0000 unimp
+800046c6: 0000 unimp
+800046c8: 0000 unimp
+800046ca: 0000 unimp
+800046cc: 0000 unimp
+800046ce: 0000 unimp
+800046d0: 0000 unimp
+800046d2: 0000 unimp
+800046d4: 0000 unimp
+800046d6: 0000 unimp
+800046d8: 0000 unimp
+800046da: 0000 unimp
+800046dc: 0000 unimp
+800046de: 0000 unimp
+800046e0: 0000 unimp
+800046e2: 0000 unimp
+800046e4: 0000 unimp
+800046e6: 0000 unimp
+800046e8: 0000 unimp
+800046ea: 0000 unimp
+800046ec: 0000 unimp
+800046ee: 0000 unimp
+800046f0: 0000 unimp
+800046f2: 0000 unimp
+800046f4: 0000 unimp
+800046f6: 0000 unimp
+800046f8: 0000 unimp
+800046fa: 0000 unimp
+800046fc: 0000 unimp
+800046fe: 0000 unimp
+80004700: 0000 unimp
+80004702: 0000 unimp
+80004704: 0000 unimp
+80004706: 0000 unimp
+80004708: 0000 unimp
+8000470a: 0000 unimp
+8000470c: 0000 unimp
+8000470e: 0000 unimp
+80004710: 0000 unimp
+80004712: 0000 unimp
+80004714: 0000 unimp
+80004716: 0000 unimp
+80004718: 0000 unimp
+8000471a: 0000 unimp
+8000471c: 0000 unimp
+8000471e: 0000 unimp
+80004720: 0000 unimp
+80004722: 0000 unimp
+80004724: 0000 unimp
+80004726: 0000 unimp
+80004728: 0000 unimp
+8000472a: 0000 unimp
+8000472c: 0000 unimp
+8000472e: 0000 unimp
+80004730: 0000 unimp
+80004732: 0000 unimp
+80004734: 0000 unimp
+80004736: 0000 unimp
+80004738: 0000 unimp
+8000473a: 0000 unimp
+8000473c: 0000 unimp
+8000473e: 0000 unimp
+80004740: 0000 unimp
+80004742: 0000 unimp
+80004744: 0000 unimp
+80004746: 0000 unimp
+80004748: 0000 unimp
+8000474a: 0000 unimp
+8000474c: 0000 unimp
+8000474e: 0000 unimp
+80004750: 0000 unimp
+80004752: 0000 unimp
+80004754: 0000 unimp
+80004756: 0000 unimp
+80004758: 0000 unimp
+8000475a: 0000 unimp
+8000475c: 0000 unimp
+8000475e: 0000 unimp
+80004760: 0000 unimp
+80004762: 0000 unimp
+80004764: 0000 unimp
+80004766: 0000 unimp
+80004768: 0000 unimp
+8000476a: 0000 unimp
+8000476c: 0000 unimp
+8000476e: 0000 unimp
+80004770: 0000 unimp
+80004772: 0000 unimp
+80004774: 0000 unimp
+80004776: 0000 unimp
+80004778: 0000 unimp
+8000477a: 0000 unimp
+8000477c: 0000 unimp
+8000477e: 0000 unimp
+80004780: 0000 unimp
+80004782: 0000 unimp
+80004784: 0000 unimp
+80004786: 0000 unimp
+80004788: 0000 unimp
+8000478a: 0000 unimp
+8000478c: 0000 unimp
+8000478e: 0000 unimp
+80004790: 0000 unimp
+80004792: 0000 unimp
+80004794: 0000 unimp
+80004796: 0000 unimp
+80004798: 0000 unimp
+8000479a: 0000 unimp
+8000479c: 0000 unimp
+8000479e: 0000 unimp
+800047a0: 0000 unimp
+800047a2: 0000 unimp
+800047a4: 0000 unimp
+800047a6: 0000 unimp
+800047a8: 0000 unimp
+800047aa: 0000 unimp
+800047ac: 0000 unimp
+800047ae: 0000 unimp
+800047b0: 0000 unimp
+800047b2: 0000 unimp
+800047b4: 0000 unimp
+800047b6: 0000 unimp
+800047b8: 0000 unimp
+800047ba: 0000 unimp
+800047bc: 0000 unimp
+800047be: 0000 unimp
+800047c0: 0000 unimp
+800047c2: 0000 unimp
+800047c4: 0000 unimp
+800047c6: 0000 unimp
+800047c8: 0000 unimp
+800047ca: 0000 unimp
+800047cc: 0000 unimp
+800047ce: 0000 unimp
+800047d0: 0000 unimp
+800047d2: 0000 unimp
+800047d4: 0000 unimp
+800047d6: 0000 unimp
+800047d8: 0000 unimp
+800047da: 0000 unimp
+800047dc: 0000 unimp
+800047de: 0000 unimp
+800047e0: 0000 unimp
+800047e2: 0000 unimp
+800047e4: 0000 unimp
+800047e6: 0000 unimp
+800047e8: 0000 unimp
+800047ea: 0000 unimp
+800047ec: 0000 unimp
+800047ee: 0000 unimp
+800047f0: 0000 unimp
+800047f2: 0000 unimp
+800047f4: 0000 unimp
+800047f6: 0000 unimp
+800047f8: 0000 unimp
+800047fa: 0000 unimp
+800047fc: 0000 unimp
+800047fe: 0000 unimp
+80004800: 0000 unimp
+80004802: 0000 unimp
+80004804: 0000 unimp
+80004806: 0000 unimp
+80004808: 0000 unimp
+8000480a: 0000 unimp
+8000480c: 0000 unimp
+8000480e: 0000 unimp
+80004810: 0000 unimp
+80004812: 0000 unimp
+80004814: 0000 unimp
+80004816: 0000 unimp
+80004818: 0000 unimp
+8000481a: 0000 unimp
+8000481c: 0000 unimp
+8000481e: 0000 unimp
+80004820: 0000 unimp
+80004822: 0000 unimp
+80004824: 0000 unimp
+80004826: 0000 unimp
+80004828: 0000 unimp
+8000482a: 0000 unimp
+8000482c: 0000 unimp
+8000482e: 0000 unimp
+80004830: 0000 unimp
+80004832: 0000 unimp
+80004834: 0000 unimp
+80004836: 0000 unimp
+80004838: 0000 unimp
+8000483a: 0000 unimp
+8000483c: 0000 unimp
+8000483e: 0000 unimp
+80004840: 0000 unimp
+80004842: 0000 unimp
+80004844: 0000 unimp
+80004846: 0000 unimp
+80004848: 0000 unimp
+8000484a: 0000 unimp
+8000484c: 0000 unimp
+8000484e: 0000 unimp
+80004850: 0000 unimp
+80004852: 0000 unimp
+80004854: 0000 unimp
+80004856: 0000 unimp
+80004858: 0000 unimp
+8000485a: 0000 unimp
+8000485c: 0000 unimp
+8000485e: 0000 unimp
+80004860: 0000 unimp
+80004862: 0000 unimp
+80004864: 0000 unimp
+80004866: 0000 unimp
+80004868: 0000 unimp
+8000486a: 0000 unimp
+8000486c: 0000 unimp
+8000486e: 0000 unimp
+80004870: 0000 unimp
+80004872: 0000 unimp
+80004874: 0000 unimp
+80004876: 0000 unimp
+80004878: 0000 unimp
+8000487a: 0000 unimp
+8000487c: 0000 unimp
+8000487e: 0000 unimp
+80004880: 0000 unimp
+80004882: 0000 unimp
+80004884: 0000 unimp
+80004886: 0000 unimp
+80004888: 0000 unimp
+8000488a: 0000 unimp
+8000488c: 0000 unimp
+8000488e: 0000 unimp
+80004890: 0000 unimp
+80004892: 0000 unimp
+80004894: 0000 unimp
+80004896: 0000 unimp
+80004898: 0000 unimp
+8000489a: 0000 unimp
+8000489c: 0000 unimp
+8000489e: 0000 unimp
+800048a0: 0000 unimp
+800048a2: 0000 unimp
+800048a4: 0000 unimp
+800048a6: 0000 unimp
+800048a8: 0000 unimp
+800048aa: 0000 unimp
+800048ac: 0000 unimp
+800048ae: 0000 unimp
+800048b0: 0000 unimp
+800048b2: 0000 unimp
+800048b4: 0000 unimp
+800048b6: 0000 unimp
+800048b8: 0000 unimp
+800048ba: 0000 unimp
+800048bc: 0000 unimp
+800048be: 0000 unimp
+800048c0: 0000 unimp
+800048c2: 0000 unimp
+800048c4: 0000 unimp
+800048c6: 0000 unimp
+800048c8: 0000 unimp
+800048ca: 0000 unimp
+800048cc: 0000 unimp
+800048ce: 0000 unimp
+800048d0: 0000 unimp
+800048d2: 0000 unimp
+800048d4: 0000 unimp
+800048d6: 0000 unimp
+800048d8: 0000 unimp
+800048da: 0000 unimp
+800048dc: 0000 unimp
+800048de: 0000 unimp
+800048e0: 0000 unimp
+800048e2: 0000 unimp
+800048e4: 0000 unimp
+800048e6: 0000 unimp
+800048e8: 0000 unimp
+800048ea: 0000 unimp
+800048ec: 0000 unimp
+800048ee: 0000 unimp
+800048f0: 0000 unimp
+800048f2: 0000 unimp
+800048f4: 0000 unimp
+800048f6: 0000 unimp
+800048f8: 0000 unimp
+800048fa: 0000 unimp
+800048fc: 0000 unimp
+800048fe: 0000 unimp
+80004900: 0000 unimp
+80004902: 0000 unimp
+80004904: 0000 unimp
+80004906: 0000 unimp
+80004908: 0000 unimp
+8000490a: 0000 unimp
+8000490c: 0000 unimp
+8000490e: 0000 unimp
+80004910: 0000 unimp
+80004912: 0000 unimp
+80004914: 0000 unimp
+80004916: 0000 unimp
+80004918: 0000 unimp
+8000491a: 0000 unimp
+8000491c: 0000 unimp
+8000491e: 0000 unimp
+80004920: 0000 unimp
+80004922: 0000 unimp
+80004924: 0000 unimp
+80004926: 0000 unimp
+80004928: 0000 unimp
+8000492a: 0000 unimp
+8000492c: 0000 unimp
+8000492e: 0000 unimp
+80004930: 0000 unimp
+80004932: 0000 unimp
+80004934: 0000 unimp
+80004936: 0000 unimp
+80004938: 0000 unimp
+8000493a: 0000 unimp
+8000493c: 0000 unimp
+8000493e: 0000 unimp
+80004940: 0000 unimp
+80004942: 0000 unimp
+80004944: 0000 unimp
+80004946: 0000 unimp
+80004948: 0000 unimp
+8000494a: 0000 unimp
+8000494c: 0000 unimp
+8000494e: 0000 unimp
+80004950: 0000 unimp
+80004952: 0000 unimp
+80004954: 0000 unimp
+80004956: 0000 unimp
+80004958: 0000 unimp
+8000495a: 0000 unimp
+8000495c: 0000 unimp
+8000495e: 0000 unimp
+80004960: 0000 unimp
+80004962: 0000 unimp
+80004964: 0000 unimp
+80004966: 0000 unimp
+80004968: 0000 unimp
+8000496a: 0000 unimp
+8000496c: 0000 unimp
+8000496e: 0000 unimp
+80004970: 0000 unimp
+80004972: 0000 unimp
+80004974: 0000 unimp
+80004976: 0000 unimp
+80004978: 0000 unimp
+8000497a: 0000 unimp
+8000497c: 0000 unimp
+8000497e: 0000 unimp
+80004980: 0000 unimp
+80004982: 0000 unimp
+80004984: 0000 unimp
+80004986: 0000 unimp
+80004988: 0000 unimp
+8000498a: 0000 unimp
+8000498c: 0000 unimp
+8000498e: 0000 unimp
+80004990: 0000 unimp
+80004992: 0000 unimp
+80004994: 0000 unimp
+80004996: 0000 unimp
+80004998: 0000 unimp
+8000499a: 0000 unimp
+8000499c: 0000 unimp
+8000499e: 0000 unimp
+800049a0: 0000 unimp
+800049a2: 0000 unimp
+800049a4: 0000 unimp
+800049a6: 0000 unimp
+800049a8: 0000 unimp
+800049aa: 0000 unimp
+800049ac: 0000 unimp
+800049ae: 0000 unimp
+800049b0: 0000 unimp
+800049b2: 0000 unimp
+800049b4: 0000 unimp
+800049b6: 0000 unimp
+800049b8: 0000 unimp
+800049ba: 0000 unimp
+800049bc: 0000 unimp
+800049be: 0000 unimp
+800049c0: 0000 unimp
+800049c2: 0000 unimp
+800049c4: 0000 unimp
+800049c6: 0000 unimp
+800049c8: 0000 unimp
+800049ca: 0000 unimp
+800049cc: 0000 unimp
+800049ce: 0000 unimp
+800049d0: 0000 unimp
+800049d2: 0000 unimp
+800049d4: 0000 unimp
+800049d6: 0000 unimp
+800049d8: 0000 unimp
+800049da: 0000 unimp
+800049dc: 0000 unimp
+800049de: 0000 unimp
+800049e0: 0000 unimp
+800049e2: 0000 unimp
+800049e4: 0000 unimp
+800049e6: 0000 unimp
+800049e8: 0000 unimp
+800049ea: 0000 unimp
+800049ec: 0000 unimp
+800049ee: 0000 unimp
+800049f0: 0000 unimp
+800049f2: 0000 unimp
+800049f4: 0000 unimp
+800049f6: 0000 unimp
+800049f8: 0000 unimp
+800049fa: 0000 unimp
+800049fc: 0000 unimp
+800049fe: 0000 unimp
+80004a00: 0000 unimp
+80004a02: 0000 unimp
+80004a04: 0000 unimp
+80004a06: 0000 unimp
+80004a08: 0000 unimp
+80004a0a: 0000 unimp
+80004a0c: 0000 unimp
+80004a0e: 0000 unimp
+80004a10: 0000 unimp
+80004a12: 0000 unimp
+80004a14: 0000 unimp
+80004a16: 0000 unimp
+80004a18: 0000 unimp
+80004a1a: 0000 unimp
+80004a1c: 0000 unimp
+80004a1e: 0000 unimp
+80004a20: 0000 unimp
+80004a22: 0000 unimp
+80004a24: 0000 unimp
+80004a26: 0000 unimp
+80004a28: 0000 unimp
+80004a2a: 0000 unimp
+80004a2c: 0000 unimp
+80004a2e: 0000 unimp
+80004a30: 0000 unimp
+80004a32: 0000 unimp
+80004a34: 0000 unimp
+80004a36: 0000 unimp
+80004a38: 0000 unimp
+80004a3a: 0000 unimp
+80004a3c: 0000 unimp
+80004a3e: 0000 unimp
+80004a40: 0000 unimp
+80004a42: 0000 unimp
+80004a44: 0000 unimp
+80004a46: 0000 unimp
+80004a48: 0000 unimp
+80004a4a: 0000 unimp
+80004a4c: 0000 unimp
+80004a4e: 0000 unimp
+80004a50: 0000 unimp
+80004a52: 0000 unimp
+80004a54: 0000 unimp
+80004a56: 0000 unimp
+80004a58: 0000 unimp
+80004a5a: 0000 unimp
+80004a5c: 0000 unimp
+80004a5e: 0000 unimp
+80004a60: 0000 unimp
+80004a62: 0000 unimp
+80004a64: 0000 unimp
+80004a66: 0000 unimp
+80004a68: 0000 unimp
+80004a6a: 0000 unimp
+80004a6c: 0000 unimp
+80004a6e: 0000 unimp
+80004a70: 0000 unimp
+80004a72: 0000 unimp
+80004a74: 0000 unimp
+80004a76: 0000 unimp
+80004a78: 0000 unimp
+80004a7a: 0000 unimp
+80004a7c: 0000 unimp
+80004a7e: 0000 unimp
+80004a80: 0000 unimp
+80004a82: 0000 unimp
+80004a84: 0000 unimp
+80004a86: 0000 unimp
+80004a88: 0000 unimp
+80004a8a: 0000 unimp
+80004a8c: 0000 unimp
+80004a8e: 0000 unimp
+80004a90: 0000 unimp
+80004a92: 0000 unimp
+80004a94: 0000 unimp
+80004a96: 0000 unimp
+80004a98: 0000 unimp
+80004a9a: 0000 unimp
+80004a9c: 0000 unimp
+80004a9e: 0000 unimp
+80004aa0: 0000 unimp
+80004aa2: 0000 unimp
+80004aa4: 0000 unimp
+80004aa6: 0000 unimp
+80004aa8: 0000 unimp
+80004aaa: 0000 unimp
+80004aac: 0000 unimp
+80004aae: 0000 unimp
+80004ab0: 0000 unimp
+80004ab2: 0000 unimp
+80004ab4: 0000 unimp
+80004ab6: 0000 unimp
+80004ab8: 0000 unimp
+80004aba: 0000 unimp
+80004abc: 0000 unimp
+80004abe: 0000 unimp
+80004ac0: 0000 unimp
+80004ac2: 0000 unimp
+80004ac4: 0000 unimp
+80004ac6: 0000 unimp
+80004ac8: 0000 unimp
+80004aca: 0000 unimp
+80004acc: 0000 unimp
+80004ace: 0000 unimp
+80004ad0: 0000 unimp
+80004ad2: 0000 unimp
+80004ad4: 0000 unimp
+80004ad6: 0000 unimp
+80004ad8: 0000 unimp
+80004ada: 0000 unimp
+80004adc: 0000 unimp
+80004ade: 0000 unimp
+80004ae0: 0000 unimp
+80004ae2: 0000 unimp
+80004ae4: 0000 unimp
+80004ae6: 0000 unimp
+80004ae8: 0000 unimp
+80004aea: 0000 unimp
+80004aec: 0000 unimp
+80004aee: 0000 unimp
+80004af0: 0000 unimp
+80004af2: 0000 unimp
+80004af4: 0000 unimp
+80004af6: 0000 unimp
+80004af8: 0000 unimp
+80004afa: 0000 unimp
+80004afc: 0000 unimp
+80004afe: 0000 unimp
+80004b00: 0000 unimp
+80004b02: 0000 unimp
+80004b04: 0000 unimp
+80004b06: 0000 unimp
+80004b08: 0000 unimp
+80004b0a: 0000 unimp
+80004b0c: 0000 unimp
+80004b0e: 0000 unimp
+80004b10: 0000 unimp
+80004b12: 0000 unimp
+80004b14: 0000 unimp
+80004b16: 0000 unimp
+80004b18: 0000 unimp
+80004b1a: 0000 unimp
+80004b1c: 0000 unimp
+80004b1e: 0000 unimp
+80004b20: 0000 unimp
+80004b22: 0000 unimp
+80004b24: 0000 unimp
+80004b26: 0000 unimp
+80004b28: 0000 unimp
+80004b2a: 0000 unimp
+80004b2c: 0000 unimp
+80004b2e: 0000 unimp
+80004b30: 0000 unimp
+80004b32: 0000 unimp
+80004b34: 0000 unimp
+80004b36: 0000 unimp
+80004b38: 0000 unimp
+80004b3a: 0000 unimp
+80004b3c: 0000 unimp
+80004b3e: 0000 unimp
+80004b40: 0000 unimp
+80004b42: 0000 unimp
+80004b44: 0000 unimp
+80004b46: 0000 unimp
+80004b48: 0000 unimp
+80004b4a: 0000 unimp
+80004b4c: 0000 unimp
+80004b4e: 0000 unimp
+80004b50: 0000 unimp
+80004b52: 0000 unimp
+80004b54: 0000 unimp
+80004b56: 0000 unimp
+80004b58: 0000 unimp
+80004b5a: 0000 unimp
+80004b5c: 0000 unimp
+80004b5e: 0000 unimp
+80004b60: 0000 unimp
+80004b62: 0000 unimp
+80004b64: 0000 unimp
+80004b66: 0000 unimp
+80004b68: 0000 unimp
+80004b6a: 0000 unimp
+80004b6c: 0000 unimp
+80004b6e: 0000 unimp
+80004b70: 0000 unimp
+80004b72: 0000 unimp
+80004b74: 0000 unimp
+80004b76: 0000 unimp
+80004b78: 0000 unimp
+80004b7a: 0000 unimp
+80004b7c: 0000 unimp
+80004b7e: 0000 unimp
+80004b80: 0000 unimp
+80004b82: 0000 unimp
+80004b84: 0000 unimp
+80004b86: 0000 unimp
+80004b88: 0000 unimp
+80004b8a: 0000 unimp
+80004b8c: 0000 unimp
+80004b8e: 0000 unimp
+80004b90: 0000 unimp
+80004b92: 0000 unimp
+80004b94: 0000 unimp
+80004b96: 0000 unimp
+80004b98: 0000 unimp
+80004b9a: 0000 unimp
+80004b9c: 0000 unimp
+80004b9e: 0000 unimp
+80004ba0: 0000 unimp
+80004ba2: 0000 unimp
+80004ba4: 0000 unimp
+80004ba6: 0000 unimp
+80004ba8: 0000 unimp
+80004baa: 0000 unimp
+80004bac: 0000 unimp
+80004bae: 0000 unimp
+80004bb0: 0000 unimp
+80004bb2: 0000 unimp
+80004bb4: 0000 unimp
+80004bb6: 0000 unimp
+80004bb8: 0000 unimp
+80004bba: 0000 unimp
+80004bbc: 0000 unimp
+80004bbe: 0000 unimp
+80004bc0: 0000 unimp
+80004bc2: 0000 unimp
+80004bc4: 0000 unimp
+80004bc6: 0000 unimp
+80004bc8: 0000 unimp
+80004bca: 0000 unimp
+80004bcc: 0000 unimp
+80004bce: 0000 unimp
+80004bd0: 0000 unimp
+80004bd2: 0000 unimp
+80004bd4: 0000 unimp
+80004bd6: 0000 unimp
+80004bd8: 0000 unimp
+80004bda: 0000 unimp
+80004bdc: 0000 unimp
+80004bde: 0000 unimp
+80004be0: 0000 unimp
+80004be2: 0000 unimp
+80004be4: 0000 unimp
+80004be6: 0000 unimp
+80004be8: 0000 unimp
+80004bea: 0000 unimp
+80004bec: 0000 unimp
+80004bee: 0000 unimp
+80004bf0: 0000 unimp
+80004bf2: 0000 unimp
+80004bf4: 0000 unimp
+80004bf6: 0000 unimp
+80004bf8: 0000 unimp
+80004bfa: 0000 unimp
+80004bfc: 0000 unimp
+80004bfe: 0000 unimp
+80004c00: 0000 unimp
+80004c02: 0000 unimp
+80004c04: 0000 unimp
+80004c06: 0000 unimp
+80004c08: 0000 unimp
+80004c0a: 0000 unimp
+80004c0c: 0000 unimp
+80004c0e: 0000 unimp
+80004c10: 0000 unimp
+80004c12: 0000 unimp
+80004c14: 0000 unimp
+80004c16: 0000 unimp
+80004c18: 0000 unimp
+80004c1a: 0000 unimp
+80004c1c: 0000 unimp
+80004c1e: 0000 unimp
+80004c20: 0000 unimp
+80004c22: 0000 unimp
+80004c24: 0000 unimp
+80004c26: 0000 unimp
+80004c28: 0000 unimp
+80004c2a: 0000 unimp
+80004c2c: 0000 unimp
+80004c2e: 0000 unimp
+80004c30: 0000 unimp
+80004c32: 0000 unimp
+80004c34: 0000 unimp
+80004c36: 0000 unimp
+80004c38: 0000 unimp
+80004c3a: 0000 unimp
+80004c3c: 0000 unimp
+80004c3e: 0000 unimp
+80004c40: 0000 unimp
+80004c42: 0000 unimp
+80004c44: 0000 unimp
+80004c46: 0000 unimp
+80004c48: 0000 unimp
+80004c4a: 0000 unimp
+80004c4c: 0000 unimp
+80004c4e: 0000 unimp
+80004c50: 0000 unimp
+80004c52: 0000 unimp
+80004c54: 0000 unimp
+80004c56: 0000 unimp
+80004c58: 0000 unimp
+80004c5a: 0000 unimp
+80004c5c: 0000 unimp
+80004c5e: 0000 unimp
+80004c60: 0000 unimp
+80004c62: 0000 unimp
+80004c64: 0000 unimp
+80004c66: 0000 unimp
+80004c68: 0000 unimp
+80004c6a: 0000 unimp
+80004c6c: 0000 unimp
+80004c6e: 0000 unimp
+80004c70: 0000 unimp
+80004c72: 0000 unimp
+80004c74: 0000 unimp
+80004c76: 0000 unimp
+80004c78: 0000 unimp
+80004c7a: 0000 unimp
+80004c7c: 0000 unimp
+80004c7e: 0000 unimp
+80004c80: 0000 unimp
+80004c82: 0000 unimp
+80004c84: 0000 unimp
+80004c86: 0000 unimp
+80004c88: 0000 unimp
+80004c8a: 0000 unimp
+80004c8c: 0000 unimp
+80004c8e: 0000 unimp
+80004c90: 0000 unimp
+80004c92: 0000 unimp
+80004c94: 0000 unimp
+80004c96: 0000 unimp
+80004c98: 0000 unimp
+80004c9a: 0000 unimp
+80004c9c: 0000 unimp
+80004c9e: 0000 unimp
+80004ca0: 0000 unimp
+80004ca2: 0000 unimp
+80004ca4: 0000 unimp
+80004ca6: 0000 unimp
+80004ca8: 0000 unimp
+80004caa: 0000 unimp
+80004cac: 0000 unimp
+80004cae: 0000 unimp
+80004cb0: 0000 unimp
+80004cb2: 0000 unimp
+80004cb4: 0000 unimp
+80004cb6: 0000 unimp
+80004cb8: 0000 unimp
+80004cba: 0000 unimp
+80004cbc: 0000 unimp
+80004cbe: 0000 unimp
+80004cc0: 0000 unimp
+80004cc2: 0000 unimp
+80004cc4: 0000 unimp
+80004cc6: 0000 unimp
+80004cc8: 0000 unimp
+80004cca: 0000 unimp
+80004ccc: 0000 unimp
+80004cce: 0000 unimp
+80004cd0: 0000 unimp
+80004cd2: 0000 unimp
+80004cd4: 0000 unimp
+80004cd6: 0000 unimp
+80004cd8: 0000 unimp
+80004cda: 0000 unimp
+80004cdc: 0000 unimp
+80004cde: 0000 unimp
+80004ce0: 0000 unimp
+80004ce2: 0000 unimp
+80004ce4: 0000 unimp
+80004ce6: 0000 unimp
+80004ce8: 0000 unimp
+80004cea: 0000 unimp
+80004cec: 0000 unimp
+80004cee: 0000 unimp
+80004cf0: 0000 unimp
+80004cf2: 0000 unimp
+80004cf4: 0000 unimp
+80004cf6: 0000 unimp
+80004cf8: 0000 unimp
+80004cfa: 0000 unimp
+80004cfc: 0000 unimp
+80004cfe: 0000 unimp
+80004d00: 0000 unimp
+80004d02: 0000 unimp
+80004d04: 0000 unimp
+80004d06: 0000 unimp
+80004d08: 0000 unimp
+80004d0a: 0000 unimp
+80004d0c: 0000 unimp
+80004d0e: 0000 unimp
+80004d10: 0000 unimp
+80004d12: 0000 unimp
+80004d14: 0000 unimp
+80004d16: 0000 unimp
+80004d18: 0000 unimp
+80004d1a: 0000 unimp
+80004d1c: 0000 unimp
+80004d1e: 0000 unimp
+80004d20: 0000 unimp
+80004d22: 0000 unimp
+80004d24: 0000 unimp
+80004d26: 0000 unimp
+80004d28: 0000 unimp
+80004d2a: 0000 unimp
+80004d2c: 0000 unimp
+80004d2e: 0000 unimp
+80004d30: 0000 unimp
+80004d32: 0000 unimp
+80004d34: 0000 unimp
+80004d36: 0000 unimp
+80004d38: 0000 unimp
+80004d3a: 0000 unimp
+80004d3c: 0000 unimp
+80004d3e: 0000 unimp
+80004d40: 0000 unimp
+80004d42: 0000 unimp
+80004d44: 0000 unimp
+80004d46: 0000 unimp
+80004d48: 0000 unimp
+80004d4a: 0000 unimp
+80004d4c: 0000 unimp
+80004d4e: 0000 unimp
+80004d50: 0000 unimp
+80004d52: 0000 unimp
+80004d54: 0000 unimp
+80004d56: 0000 unimp
+80004d58: 0000 unimp
+80004d5a: 0000 unimp
+80004d5c: 0000 unimp
+80004d5e: 0000 unimp
+80004d60: 0000 unimp
+80004d62: 0000 unimp
+80004d64: 0000 unimp
+80004d66: 0000 unimp
+80004d68: 0000 unimp
+80004d6a: 0000 unimp
+80004d6c: 0000 unimp
+80004d6e: 0000 unimp
+80004d70: 0000 unimp
+80004d72: 0000 unimp
+80004d74: 0000 unimp
+80004d76: 0000 unimp
+80004d78: 0000 unimp
+80004d7a: 0000 unimp
+80004d7c: 0000 unimp
+80004d7e: 0000 unimp
+80004d80: 0000 unimp
+80004d82: 0000 unimp
+80004d84: 0000 unimp
+80004d86: 0000 unimp
+80004d88: 0000 unimp
+80004d8a: 0000 unimp
+80004d8c: 0000 unimp
+80004d8e: 0000 unimp
+80004d90: 0000 unimp
+80004d92: 0000 unimp
+80004d94: 0000 unimp
+80004d96: 0000 unimp
+80004d98: 0000 unimp
+80004d9a: 0000 unimp
+80004d9c: 0000 unimp
+80004d9e: 0000 unimp
+80004da0: 0000 unimp
+80004da2: 0000 unimp
+80004da4: 0000 unimp
+80004da6: 0000 unimp
+80004da8: 0000 unimp
+80004daa: 0000 unimp
+80004dac: 0000 unimp
+80004dae: 0000 unimp
+80004db0: 0000 unimp
+80004db2: 0000 unimp
+80004db4: 0000 unimp
+80004db6: 0000 unimp
+80004db8: 0000 unimp
+80004dba: 0000 unimp
+80004dbc: 0000 unimp
+80004dbe: 0000 unimp
+80004dc0: 0000 unimp
+80004dc2: 0000 unimp
+80004dc4: 0000 unimp
+80004dc6: 0000 unimp
+80004dc8: 0000 unimp
+80004dca: 0000 unimp
+80004dcc: 0000 unimp
+80004dce: 0000 unimp
+80004dd0: 0000 unimp
+80004dd2: 0000 unimp
+80004dd4: 0000 unimp
+80004dd6: 0000 unimp
+80004dd8: 0000 unimp
+80004dda: 0000 unimp
+80004ddc: 0000 unimp
+80004dde: 0000 unimp
+80004de0: 0000 unimp
+80004de2: 0000 unimp
+80004de4: 0000 unimp
+80004de6: 0000 unimp
+80004de8: 0000 unimp
+80004dea: 0000 unimp
+80004dec: 0000 unimp
+80004dee: 0000 unimp
+80004df0: 0000 unimp
+80004df2: 0000 unimp
+80004df4: 0000 unimp
+80004df6: 0000 unimp
+80004df8: 0000 unimp
+80004dfa: 0000 unimp
+80004dfc: 0000 unimp
+80004dfe: 0000 unimp
+80004e00: 0000 unimp
+80004e02: 0000 unimp
+80004e04: 0000 unimp
+80004e06: 0000 unimp
+80004e08: 0000 unimp
+80004e0a: 0000 unimp
+80004e0c: 0000 unimp
+80004e0e: 0000 unimp
+80004e10: 0000 unimp
+80004e12: 0000 unimp
+80004e14: 0000 unimp
+80004e16: 0000 unimp
+80004e18: 0000 unimp
+80004e1a: 0000 unimp
+80004e1c: 0000 unimp
+80004e1e: 0000 unimp
+80004e20: 0000 unimp
+80004e22: 0000 unimp
+80004e24: 0000 unimp
+80004e26: 0000 unimp
+80004e28: 0000 unimp
+80004e2a: 0000 unimp
+80004e2c: 0000 unimp
+80004e2e: 0000 unimp
+80004e30: 0000 unimp
+80004e32: 0000 unimp
+80004e34: 0000 unimp
+80004e36: 0000 unimp
+80004e38: 0000 unimp
+80004e3a: 0000 unimp
+80004e3c: 0000 unimp
+80004e3e: 0000 unimp
+80004e40: 0000 unimp
+80004e42: 0000 unimp
+80004e44: 0000 unimp
+80004e46: 0000 unimp
+80004e48: 0000 unimp
+80004e4a: 0000 unimp
+80004e4c: 0000 unimp
+80004e4e: 0000 unimp
+80004e50: 0000 unimp
+80004e52: 0000 unimp
+80004e54: 0000 unimp
+80004e56: 0000 unimp
+80004e58: 0000 unimp
+80004e5a: 0000 unimp
+80004e5c: 0000 unimp
+80004e5e: 0000 unimp
+80004e60: 0000 unimp
+80004e62: 0000 unimp
+80004e64: 0000 unimp
+80004e66: 0000 unimp
+80004e68: 0000 unimp
+80004e6a: 0000 unimp
+80004e6c: 0000 unimp
+80004e6e: 0000 unimp
+80004e70: 0000 unimp
+80004e72: 0000 unimp
+80004e74: 0000 unimp
+80004e76: 0000 unimp
+80004e78: 0000 unimp
+80004e7a: 0000 unimp
+80004e7c: 0000 unimp
+80004e7e: 0000 unimp
+80004e80: 0000 unimp
+80004e82: 0000 unimp
+80004e84: 0000 unimp
+80004e86: 0000 unimp
+80004e88: 0000 unimp
+80004e8a: 0000 unimp
+80004e8c: 0000 unimp
+80004e8e: 0000 unimp
+80004e90: 0000 unimp
+80004e92: 0000 unimp
+80004e94: 0000 unimp
+80004e96: 0000 unimp
+80004e98: 0000 unimp
+80004e9a: 0000 unimp
+80004e9c: 0000 unimp
+80004e9e: 0000 unimp
+80004ea0: 0000 unimp
+80004ea2: 0000 unimp
+80004ea4: 0000 unimp
+80004ea6: 0000 unimp
+80004ea8: 0000 unimp
+80004eaa: 0000 unimp
+80004eac: 0000 unimp
+80004eae: 0000 unimp
+80004eb0: 0000 unimp
+80004eb2: 0000 unimp
+80004eb4: 0000 unimp
+80004eb6: 0000 unimp
+80004eb8: 0000 unimp
+80004eba: 0000 unimp
+80004ebc: 0000 unimp
+80004ebe: 0000 unimp
+80004ec0: 0000 unimp
+80004ec2: 0000 unimp
+80004ec4: 0000 unimp
+80004ec6: 0000 unimp
+80004ec8: 0000 unimp
+80004eca: 0000 unimp
+80004ecc: 0000 unimp
+80004ece: 0000 unimp
+80004ed0: 0000 unimp
+80004ed2: 0000 unimp
+80004ed4: 0000 unimp
+80004ed6: 0000 unimp
+80004ed8: 0000 unimp
+80004eda: 0000 unimp
+80004edc: 0000 unimp
+80004ede: 0000 unimp
+80004ee0: 0000 unimp
+80004ee2: 0000 unimp
+80004ee4: 0000 unimp
+80004ee6: 0000 unimp
+80004ee8: 0000 unimp
+80004eea: 0000 unimp
+80004eec: 0000 unimp
+80004eee: 0000 unimp
+80004ef0: 0000 unimp
+80004ef2: 0000 unimp
+80004ef4: 0000 unimp
+80004ef6: 0000 unimp
+80004ef8: 0000 unimp
+80004efa: 0000 unimp
+80004efc: 0000 unimp
+80004efe: 0000 unimp
+80004f00: 0000 unimp
+80004f02: 0000 unimp
+80004f04: 0000 unimp
+80004f06: 0000 unimp
+80004f08: 0000 unimp
+80004f0a: 0000 unimp
+80004f0c: 0000 unimp
+80004f0e: 0000 unimp
+80004f10: 0000 unimp
+80004f12: 0000 unimp
+80004f14: 0000 unimp
+80004f16: 0000 unimp
+80004f18: 0000 unimp
+80004f1a: 0000 unimp
+80004f1c: 0000 unimp
+80004f1e: 0000 unimp
+80004f20: 0000 unimp
+80004f22: 0000 unimp
+80004f24: 0000 unimp
+80004f26: 0000 unimp
+80004f28: 0000 unimp
+80004f2a: 0000 unimp
+80004f2c: 0000 unimp
+80004f2e: 0000 unimp
+80004f30: 0000 unimp
+80004f32: 0000 unimp
+80004f34: 0000 unimp
+80004f36: 0000 unimp
+80004f38: 0000 unimp
+80004f3a: 0000 unimp
+80004f3c: 0000 unimp
+80004f3e: 0000 unimp
+80004f40: 0000 unimp
+80004f42: 0000 unimp
+80004f44: 0000 unimp
+80004f46: 0000 unimp
+80004f48: 0000 unimp
+80004f4a: 0000 unimp
+80004f4c: 0000 unimp
+80004f4e: 0000 unimp
+80004f50: 0000 unimp
+80004f52: 0000 unimp
+80004f54: 0000 unimp
+80004f56: 0000 unimp
+80004f58: 0000 unimp
+80004f5a: 0000 unimp
+80004f5c: 0000 unimp
+80004f5e: 0000 unimp
+80004f60: 0000 unimp
+80004f62: 0000 unimp
+80004f64: 0000 unimp
+80004f66: 0000 unimp
+80004f68: 0000 unimp
+80004f6a: 0000 unimp
+80004f6c: 0000 unimp
+80004f6e: 0000 unimp
+80004f70: 0000 unimp
+80004f72: 0000 unimp
+80004f74: 0000 unimp
+80004f76: 0000 unimp
+80004f78: 0000 unimp
+80004f7a: 0000 unimp
+80004f7c: 0000 unimp
+80004f7e: 0000 unimp
+80004f80: 0000 unimp
+80004f82: 0000 unimp
+80004f84: 0000 unimp
+80004f86: 0000 unimp
+80004f88: 0000 unimp
+80004f8a: 0000 unimp
+80004f8c: 0000 unimp
+80004f8e: 0000 unimp
+80004f90: 0000 unimp
+80004f92: 0000 unimp
+80004f94: 0000 unimp
+80004f96: 0000 unimp
+80004f98: 0000 unimp
+80004f9a: 0000 unimp
+80004f9c: 0000 unimp
+80004f9e: 0000 unimp
+80004fa0: 0000 unimp
+80004fa2: 0000 unimp
+80004fa4: 0000 unimp
+80004fa6: 0000 unimp
+80004fa8: 0000 unimp
+80004faa: 0000 unimp
+80004fac: 0000 unimp
+80004fae: 0000 unimp
+80004fb0: 0000 unimp
+80004fb2: 0000 unimp
+80004fb4: 0000 unimp
+80004fb6: 0000 unimp
+80004fb8: 0000 unimp
+80004fba: 0000 unimp
+80004fbc: 0000 unimp
+80004fbe: 0000 unimp
+80004fc0: 0000 unimp
+80004fc2: 0000 unimp
+80004fc4: 0000 unimp
+80004fc6: 0000 unimp
+80004fc8: 0000 unimp
+80004fca: 0000 unimp
+80004fcc: 0000 unimp
+80004fce: 0000 unimp
+80004fd0: 0000 unimp
+80004fd2: 0000 unimp
+80004fd4: 0000 unimp
+80004fd6: 0000 unimp
+80004fd8: 0000 unimp
+80004fda: 0000 unimp
+80004fdc: 0000 unimp
+80004fde: 0000 unimp
+80004fe0: 0000 unimp
+80004fe2: 0000 unimp
+80004fe4: 0000 unimp
+80004fe6: 0000 unimp
+80004fe8: 0000 unimp
+80004fea: 0000 unimp
+80004fec: 0000 unimp
+80004fee: 0000 unimp
+80004ff0: 0000 unimp
+80004ff2: 0000 unimp
+80004ff4: 0000 unimp
+80004ff6: 0000 unimp
+80004ff8: 0000 unimp
+80004ffa: 0000 unimp
+80004ffc: 0000 unimp
+80004ffe: 00158593 addi a1,a1,1 # 80000001 <_end+0xffff6c09>
+80005002: 29b00e93 li t4,667
+80005006: 00200193 li gp,2
+8000500a: 23d59f63 bne a1,t4,80005248 <fail>
+8000500e: 00001137 lui sp,0x1
+80005012: 23410113 addi sp,sp,564 # 1234 <_start-0x7fffedcc>
+
+80005016 <test_3>:
+80005016: 1fe8 addi a0,sp,1020
+80005018: 00001eb7 lui t4,0x1
+8000501c: 630e8e93 addi t4,t4,1584 # 1630 <_start-0x7fffe9d0>
+80005020: 00300193 li gp,3
+80005024: 23d51263 bne a0,t4,80005248 <fail>
+
+80005028 <test_4>:
+80005028: 617d addi sp,sp,496
+8000502a: 0001 nop
+8000502c: 00001eb7 lui t4,0x1
+80005030: 424e8e93 addi t4,t4,1060 # 1424 <_start-0x7fffebdc>
+80005034: 00400193 li gp,4
+80005038: 21d11863 bne sp,t4,80005248 <fail>
+
+8000503c <test_5>:
+8000503c: 7101 addi sp,sp,-512
+8000503e: 0001 nop
+80005040: 00001eb7 lui t4,0x1
+80005044: 224e8e93 addi t4,t4,548 # 1224 <_start-0x7fffeddc>
+80005048: 00500193 li gp,5
+8000504c: 1fd11e63 bne sp,t4,80005248 <fail>
+80005050: ffffe597 auipc a1,0xffffe
+80005054: fc058593 addi a1,a1,-64 # 80003010 <data>
+
+80005058 <test_6>:
+80005058: 41c8 lw a0,4(a1)
+8000505a: 0505 addi a0,a0,1
+8000505c: c1c8 sw a0,4(a1)
+8000505e: 41d0 lw a2,4(a1)
+80005060: fedcceb7 lui t4,0xfedcc
+80005064: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc26a1>
+80005068: 00600193 li gp,6
+8000506c: 1dd61e63 bne a2,t4,80005248 <fail>
+
+80005070 <test_8>:
+80005070: 00106513 ori a0,zero,1
+80005074: 1541 addi a0,a0,-16
+80005076: 0001 nop
+80005078: ff100e93 li t4,-15
+8000507c: 00800193 li gp,8
+80005080: 1dd51463 bne a0,t4,80005248 <fail>
+
+80005084 <test_9>:
+80005084: 00106793 ori a5,zero,1
+80005088: 57c1 li a5,-16
+8000508a: 0001 nop
+8000508c: ff000e93 li t4,-16
+80005090: 00900193 li gp,9
+80005094: 1bd79a63 bne a5,t4,80005248 <fail>
+
+80005098 <test_11>:
+80005098: 7405 lui s0,0xfffe1
+8000509a: 8431 srai s0,s0,0xc
+8000509c: fe100e93 li t4,-31
+800050a0: 00b00193 li gp,11
+800050a4: 1bd41263 bne s0,t4,80005248 <fail>
+
+800050a8 <test_12>:
+800050a8: 7405 lui s0,0xfffe1
+800050aa: 8031 srli s0,s0,0xc
+800050ac: 00100eb7 lui t4,0x100
+800050b0: fe1e8e93 addi t4,t4,-31 # fffe1 <_start-0x7ff0001f>
+800050b4: 00c00193 li gp,12
+800050b8: 19d41863 bne s0,t4,80005248 <fail>
+
+800050bc <test_14>:
+800050bc: 5479 li s0,-2
+800050be: 983d andi s0,s0,-17
+800050c0: fee00e93 li t4,-18
+800050c4: 00e00193 li gp,14
+800050c8: 19d41063 bne s0,t4,80005248 <fail>
+
+800050cc <test_15>:
+800050cc: 44d1 li s1,20
+800050ce: 4519 li a0,6
+800050d0: 8c89 sub s1,s1,a0
+800050d2: 0001 nop
+800050d4: 00e00e93 li t4,14
+800050d8: 00f00193 li gp,15
+800050dc: 17d49663 bne s1,t4,80005248 <fail>
+
+800050e0 <test_16>:
+800050e0: 44d1 li s1,20
+800050e2: 4519 li a0,6
+800050e4: 8ca9 xor s1,s1,a0
+800050e6: 0001 nop
+800050e8: 01200e93 li t4,18
+800050ec: 01000193 li gp,16
+800050f0: 15d49c63 bne s1,t4,80005248 <fail>
+
+800050f4 <test_17>:
+800050f4: 44d1 li s1,20
+800050f6: 4519 li a0,6
+800050f8: 8cc9 or s1,s1,a0
+800050fa: 0001 nop
+800050fc: 01600e93 li t4,22
+80005100: 01100193 li gp,17
+80005104: 15d49263 bne s1,t4,80005248 <fail>
+
+80005108 <test_18>:
+80005108: 44d1 li s1,20
+8000510a: 4519 li a0,6
+8000510c: 8ce9 and s1,s1,a0
+8000510e: 0001 nop
+80005110: 00400e93 li t4,4
+80005114: 01200193 li gp,18
+80005118: 13d49863 bne s1,t4,80005248 <fail>
+
+8000511c <test_21>:
+8000511c: 00001437 lui s0,0x1
+80005120: 23440413 addi s0,s0,564 # 1234 <_start-0x7fffedcc>
+80005124: 0412 slli s0,s0,0x4
+80005126: 0001 nop
+80005128: 00012eb7 lui t4,0x12
+8000512c: 340e8e93 addi t4,t4,832 # 12340 <_start-0x7ffedcc0>
+80005130: 01500193 li gp,21
+80005134: 11d41a63 bne s0,t4,80005248 <fail>
+
+80005138 <test_30>:
+80005138: 4081 li ra,0
+8000513a: a011 j 8000513e <test_30+0x6>
+8000513c: a011 j 80005140 <test_30+0x8>
+8000513e: a011 j 80005142 <test_30+0xa>
+80005140: a221 j 80005248 <fail>
+80005142: 0001 nop
+80005144: 00000e93 li t4,0
+80005148: 01e00193 li gp,30
+8000514c: 0fd09e63 bne ra,t4,80005248 <fail>
+
+80005150 <test_31>:
+80005150: 4501 li a0,0
+80005152: c111 beqz a0,80005156 <test_31+0x6>
+80005154: a011 j 80005158 <test_31+0x8>
+80005156: a011 j 8000515a <test_31+0xa>
+80005158: a8c5 j 80005248 <fail>
+8000515a: 0001 nop
+8000515c: 00000e93 li t4,0
+80005160: 01f00193 li gp,31
+80005164: 0fd01263 bne zero,t4,80005248 <fail>
+
+80005168 <test_32>:
+80005168: 4505 li a0,1
+8000516a: e111 bnez a0,8000516e <test_32+0x6>
+8000516c: a011 j 80005170 <test_32+0x8>
+8000516e: a011 j 80005172 <test_32+0xa>
+80005170: a8e1 j 80005248 <fail>
+80005172: 0001 nop
+80005174: 00000e93 li t4,0
+80005178: 02000193 li gp,32
+8000517c: 0dd01663 bne zero,t4,80005248 <fail>
+
+80005180 <test_33>:
+80005180: 4505 li a0,1
+80005182: c111 beqz a0,80005186 <test_33+0x6>
+80005184: a011 j 80005188 <test_33+0x8>
+80005186: a0c9 j 80005248 <fail>
+80005188: 00000e93 li t4,0
+8000518c: 02100193 li gp,33
+80005190: 0bd01c63 bne zero,t4,80005248 <fail>
+
+80005194 <test_34>:
+80005194: 4501 li a0,0
+80005196: e111 bnez a0,8000519a <test_34+0x6>
+80005198: a011 j 8000519c <test_34+0x8>
+8000519a: a07d j 80005248 <fail>
+8000519c: 00000e93 li t4,0
+800051a0: 02200193 li gp,34
+800051a4: 0bd01263 bne zero,t4,80005248 <fail>
+
+800051a8 <test_35>:
+800051a8: 00000297 auipc t0,0x0
+800051ac: 00e28293 addi t0,t0,14 # 800051b6 <test_35+0xe>
+800051b0: 4081 li ra,0
+800051b2: 8282 jr t0
+800051b4: a011 j 800051b8 <test_35+0x10>
+800051b6: a011 j 800051ba <test_35+0x12>
+800051b8: a841 j 80005248 <fail>
+800051ba: 0001 nop
+800051bc: 00000e93 li t4,0
+800051c0: 02300193 li gp,35
+800051c4: 09d09263 bne ra,t4,80005248 <fail>
+
+800051c8 <test_36>:
+800051c8: 00000297 auipc t0,0x0
+800051cc: 00e28293 addi t0,t0,14 # 800051d6 <test_36+0xe>
+800051d0: 4081 li ra,0
+800051d2: 9282 jalr t0
+800051d4: a011 j 800051d8 <test_36+0x10>
+800051d6: a011 j 800051da <test_36+0x12>
+800051d8: a885 j 80005248 <fail>
+800051da: 405080b3 sub ra,ra,t0
+800051de: 0001 nop
+800051e0: ffe00e93 li t4,-2
+800051e4: 02400193 li gp,36
+800051e8: 07d09063 bne ra,t4,80005248 <fail>
+
+800051ec <test_37>:
+800051ec: 00000297 auipc t0,0x0
+800051f0: 00e28293 addi t0,t0,14 # 800051fa <test_37+0xe>
+800051f4: 4081 li ra,0
+800051f6: 2011 jal 800051fa <test_37+0xe>
+800051f8: a011 j 800051fc <test_37+0x10>
+800051fa: a011 j 800051fe <test_37+0x12>
+800051fc: a0b1 j 80005248 <fail>
+800051fe: 405080b3 sub ra,ra,t0
+80005202: 0001 nop
+80005204: ffe00e93 li t4,-2
+80005208: 02500193 li gp,37
+8000520c: 03d09e63 bne ra,t4,80005248 <fail>
+80005210: ffffe117 auipc sp,0xffffe
+80005214: e0010113 addi sp,sp,-512 # 80003010 <data>
+
+80005218 <test_40>:
+80005218: 4532 lw a0,12(sp)
+8000521a: 0505 addi a0,a0,1
+8000521c: c62a sw a0,12(sp)
+8000521e: 4632 lw a2,12(sp)
+80005220: fedcceb7 lui t4,0xfedcc
+80005224: a99e8e93 addi t4,t4,-1383 # fedcba99 <_end+0x7edc26a1>
+80005228: 02800193 li gp,40
+8000522c: 01d61e63 bne a2,t4,80005248 <fail>
+
+80005230 <test_42>:
+80005230: 12300513 li a0,291
+80005234: 82aa mv t0,a0
+80005236: 92aa add t0,t0,a0
+80005238: 24600e93 li t4,582
+8000523c: 02a00193 li gp,42
+80005240: 01d29463 bne t0,t4,80005248 <fail>
+80005244: 00301a63 bne zero,gp,80005258 <pass>
+
+80005248 <fail>:
+80005248: 00119513 slli a0,gp,0x1
+8000524c: 00050063 beqz a0,8000524c <fail+0x4>
+80005250: 00156513 ori a0,a0,1
+80005254: 00000073 ecall
+
+80005258 <pass>:
+80005258: 00100513 li a0,1
+8000525c: 00000073 ecall
+80005260: c0001073 unimp
+80005264: 0000 unimp
+80005266: 0000 unimp
+80005268: 0000 unimp
+8000526a: 0000 unimp
+8000526c: 0000 unimp
+8000526e: 0000 unimp
+80005270: 0000 unimp
+80005272: 0000 unimp
+80005274: 0000 unimp
+80005276: 0000 unimp
+80005278: 0000 unimp
+8000527a: 0000 unimp
+8000527c: 0000 unimp
+8000527e: 0000 unimp
+80005280: 0000 unimp
+80005282: 0000 unimp
+80005284: 0000 unimp
+80005286: 0000 unimp
+80005288: 0000 unimp
+8000528a: 0000 unimp
+8000528c: 0000 unimp
+8000528e: 0000 unimp
+80005290: 0000 unimp
+80005292: 0000 unimp
+80005294: 0000 unimp
+80005296: 0000 unimp
+80005298: 0000 unimp
+8000529a: 0000 unimp
+8000529c: 0000 unimp
+8000529e: 0000 unimp
+800052a0: 0000 unimp
+800052a2: 0000 unimp
+800052a4: 0000 unimp
+800052a6: 0000 unimp
+800052a8: 0000 unimp
+800052aa: 0000 unimp
+800052ac: 0000 unimp
+800052ae: 0000 unimp
+800052b0: 0000 unimp
+800052b2: 0000 unimp
+800052b4: 0000 unimp
+800052b6: 0000 unimp
+800052b8: 0000 unimp
+800052ba: 0000 unimp
+800052bc: 0000 unimp
+800052be: 0000 unimp
+800052c0: 0000 unimp
+800052c2: 0000 unimp
+800052c4: 0000 unimp
+800052c6: 0000 unimp
+800052c8: 0000 unimp
+800052ca: 0000 unimp
+800052cc: 0000 unimp
+800052ce: 0000 unimp
+800052d0: 0000 unimp
+800052d2: 0000 unimp
+800052d4: 0000 unimp
+800052d6: 0000 unimp
+800052d8: 0000 unimp
+800052da: 0000 unimp
+800052dc: 0000 unimp
+800052de: 0000 unimp
+800052e0: 0000 unimp
+800052e2: 0000 unimp
+800052e4: 0000 unimp
+800052e6: 0000 unimp
+800052e8: 0000 unimp
+800052ea: 0000 unimp
+800052ec: 0000 unimp
+800052ee: 0000 unimp
+800052f0: 0000 unimp
+800052f2: 0000 unimp
+800052f4: 0000 unimp
+800052f6: 0000 unimp
+800052f8: 0000 unimp
+800052fa: 0000 unimp
+800052fc: 0000 unimp
+800052fe: 0000 unimp
+80005300: 0000 unimp
+80005302: 0000 unimp
+80005304: 0000 unimp
+80005306: 0000 unimp
+80005308: 0000 unimp
+8000530a: 0000 unimp
+8000530c: 0000 unimp
+8000530e: 0000 unimp
+80005310: 0000 unimp
+80005312: 0000 unimp
+80005314: 0000 unimp
+80005316: 0000 unimp
+80005318: 0000 unimp
+8000531a: 0000 unimp
+8000531c: 0000 unimp
+8000531e: 0000 unimp
+80005320: 0000 unimp
+80005322: 0000 unimp
+80005324: 0000 unimp
+80005326: 0000 unimp
+80005328: 0000 unimp
+8000532a: 0000 unimp
+8000532c: 0000 unimp
+8000532e: 0000 unimp
+80005330: 0000 unimp
+80005332: 0000 unimp
+80005334: 0000 unimp
+80005336: 0000 unimp
+80005338: 0000 unimp
+8000533a: 0000 unimp
+8000533c: 0000 unimp
+8000533e: 0000 unimp
+80005340: 0000 unimp
+80005342: 0000 unimp
+80005344: 0000 unimp
+80005346: 0000 unimp
+80005348: 0000 unimp
+8000534a: 0000 unimp
+8000534c: 0000 unimp
+8000534e: 0000 unimp
+80005350: 0000 unimp
+80005352: 0000 unimp
+80005354: 0000 unimp
+80005356: 0000 unimp
+80005358: 0000 unimp
+8000535a: 0000 unimp
+8000535c: 0000 unimp
+8000535e: 0000 unimp
+80005360: 0000 unimp
+80005362: 0000 unimp
+80005364: 0000 unimp
+80005366: 0000 unimp
+80005368: 0000 unimp
+8000536a: 0000 unimp
+8000536c: 0000 unimp
+8000536e: 0000 unimp
+80005370: 0000 unimp
+80005372: 0000 unimp
+80005374: 0000 unimp
+80005376: 0000 unimp
+80005378: 0000 unimp
+8000537a: 0000 unimp
+8000537c: 0000 unimp
+8000537e: 0000 unimp
+80005380: 0000 unimp
+80005382: 0000 unimp
+80005384: 0000 unimp
+80005386: 0000 unimp
+80005388: 0000 unimp
+8000538a: 0000 unimp
+8000538c: 0000 unimp
+8000538e: 0000 unimp
+80005390: 0000 unimp
+80005392: 0000 unimp
+80005394: 0000 unimp
+80005396: 0000 unimp
+80005398: 0000 unimp
+8000539a: 0000 unimp
+8000539c: 0000 unimp
+8000539e: 0000 unimp
+800053a0: 0000 unimp
+800053a2: 0000 unimp
+800053a4: 0000 unimp
+800053a6: 0000 unimp
+800053a8: 0000 unimp
+800053aa: 0000 unimp
+800053ac: 0000 unimp
+800053ae: 0000 unimp
+800053b0: 0000 unimp
+800053b2: 0000 unimp
+800053b4: 0000 unimp
+800053b6: 0000 unimp
+800053b8: 0000 unimp
+800053ba: 0000 unimp
+800053bc: 0000 unimp
+800053be: 0000 unimp
+800053c0: 0000 unimp
+800053c2: 0000 unimp
+800053c4: 0000 unimp
+800053c6: 0000 unimp
+800053c8: 0000 unimp
+800053ca: 0000 unimp
+800053cc: 0000 unimp
+800053ce: 0000 unimp
+800053d0: 0000 unimp
+800053d2: 0000 unimp
+800053d4: 0000 unimp
+800053d6: 0000 unimp
+800053d8: 0000 unimp
+800053da: 0000 unimp
+800053dc: 0000 unimp
+800053de: 0000 unimp
+800053e0: 0000 unimp
+800053e2: 0000 unimp
+800053e4: 0000 unimp
+800053e6: 0000 unimp
+800053e8: 0000 unimp
+800053ea: 0000 unimp
+800053ec: 0000 unimp
+800053ee: 0000 unimp
+800053f0: 0000 unimp
+800053f2: 0000 unimp
+800053f4: 0000 unimp
+800053f6: 0000 unimp
+800053f8: 0000 unimp
+800053fa: 0000 unimp
+800053fc: 0000 unimp
+800053fe: 0000 unimp
+80005400: 0000 unimp
+80005402: 0000 unimp
+80005404: 0000 unimp
+80005406: 0000 unimp
+80005408: 0000 unimp
+8000540a: 0000 unimp
+8000540c: 0000 unimp
+8000540e: 0000 unimp
+80005410: 0000 unimp
+80005412: 0000 unimp
+80005414: 0000 unimp
+80005416: 0000 unimp
+80005418: 0000 unimp
+8000541a: 0000 unimp
+8000541c: 0000 unimp
+8000541e: 0000 unimp
+80005420: 0000 unimp
+80005422: 0000 unimp
+80005424: 0000 unimp
+80005426: 0000 unimp
+80005428: 0000 unimp
+8000542a: 0000 unimp
+8000542c: 0000 unimp
+8000542e: 0000 unimp
+80005430: 0000 unimp
+80005432: 0000 unimp
+80005434: 0000 unimp
+80005436: 0000 unimp
+80005438: 0000 unimp
+8000543a: 0000 unimp
+8000543c: 0000 unimp
+8000543e: 0000 unimp
+80005440: 0000 unimp
+80005442: 0000 unimp
+80005444: 0000 unimp
+80005446: 0000 unimp
+80005448: 0000 unimp
+8000544a: 0000 unimp
+8000544c: 0000 unimp
+8000544e: 0000 unimp
+80005450: 0000 unimp
+80005452: 0000 unimp
+80005454: 0000 unimp
+80005456: 0000 unimp
+80005458: 0000 unimp
+8000545a: 0000 unimp
+8000545c: 0000 unimp
+8000545e: 0000 unimp
+80005460: 0000 unimp
+80005462: 0000 unimp
+80005464: 0000 unimp
+80005466: 0000 unimp
+80005468: 0000 unimp
+8000546a: 0000 unimp
+8000546c: 0000 unimp
+8000546e: 0000 unimp
+80005470: 0000 unimp
+80005472: 0000 unimp
+80005474: 0000 unimp
+80005476: 0000 unimp
+80005478: 0000 unimp
+8000547a: 0000 unimp
+8000547c: 0000 unimp
+8000547e: 0000 unimp
+80005480: 0000 unimp
+80005482: 0000 unimp
+80005484: 0000 unimp
+80005486: 0000 unimp
+80005488: 0000 unimp
+8000548a: 0000 unimp
+8000548c: 0000 unimp
+8000548e: 0000 unimp
+80005490: 0000 unimp
+80005492: 0000 unimp
+80005494: 0000 unimp
+80005496: 0000 unimp
+80005498: 0000 unimp
+8000549a: 0000 unimp
+8000549c: 0000 unimp
+8000549e: 0000 unimp
+800054a0: 0000 unimp
+800054a2: 0000 unimp
+800054a4: 0000 unimp
+800054a6: 0000 unimp
+800054a8: 0000 unimp
+800054aa: 0000 unimp
+800054ac: 0000 unimp
+800054ae: 0000 unimp
+800054b0: 0000 unimp
+800054b2: 0000 unimp
+800054b4: 0000 unimp
+800054b6: 0000 unimp
+800054b8: 0000 unimp
+800054ba: 0000 unimp
+800054bc: 0000 unimp
+800054be: 0000 unimp
+800054c0: 0000 unimp
+800054c2: 0000 unimp
+800054c4: 0000 unimp
+800054c6: 0000 unimp
+800054c8: 0000 unimp
+800054ca: 0000 unimp
+800054cc: 0000 unimp
+800054ce: 0000 unimp
+800054d0: 0000 unimp
+800054d2: 0000 unimp
+800054d4: 0000 unimp
+800054d6: 0000 unimp
+800054d8: 0000 unimp
+800054da: 0000 unimp
+800054dc: 0000 unimp
+800054de: 0000 unimp
+800054e0: 0000 unimp
+800054e2: 0000 unimp
+800054e4: 0000 unimp
+800054e6: 0000 unimp
+800054e8: 0000 unimp
+800054ea: 0000 unimp
+800054ec: 0000 unimp
+800054ee: 0000 unimp
+800054f0: 0000 unimp
+800054f2: 0000 unimp
+800054f4: 0000 unimp
+800054f6: 0000 unimp
+800054f8: 0000 unimp
+800054fa: 0000 unimp
+800054fc: 0000 unimp
+800054fe: 0000 unimp
+80005500: 0000 unimp
+80005502: 0000 unimp
+80005504: 0000 unimp
+80005506: 0000 unimp
+80005508: 0000 unimp
+8000550a: 0000 unimp
+8000550c: 0000 unimp
+8000550e: 0000 unimp
+80005510: 0000 unimp
+80005512: 0000 unimp
+80005514: 0000 unimp
+80005516: 0000 unimp
+80005518: 0000 unimp
+8000551a: 0000 unimp
+8000551c: 0000 unimp
+8000551e: 0000 unimp
+80005520: 0000 unimp
+80005522: 0000 unimp
+80005524: 0000 unimp
+80005526: 0000 unimp
+80005528: 0000 unimp
+8000552a: 0000 unimp
+8000552c: 0000 unimp
+8000552e: 0000 unimp
+80005530: 0000 unimp
+80005532: 0000 unimp
+80005534: 0000 unimp
+80005536: 0000 unimp
+80005538: 0000 unimp
+8000553a: 0000 unimp
+8000553c: 0000 unimp
+8000553e: 0000 unimp
+80005540: 0000 unimp
+80005542: 0000 unimp
+80005544: 0000 unimp
+80005546: 0000 unimp
+80005548: 0000 unimp
+8000554a: 0000 unimp
+8000554c: 0000 unimp
+8000554e: 0000 unimp
+80005550: 0000 unimp
+80005552: 0000 unimp
+80005554: 0000 unimp
+80005556: 0000 unimp
+80005558: 0000 unimp
+8000555a: 0000 unimp
+8000555c: 0000 unimp
+8000555e: 0000 unimp
+80005560: 0000 unimp
+80005562: 0000 unimp
+80005564: 0000 unimp
+80005566: 0000 unimp
+80005568: 0000 unimp
+8000556a: 0000 unimp
+8000556c: 0000 unimp
+8000556e: 0000 unimp
+80005570: 0000 unimp
+80005572: 0000 unimp
+80005574: 0000 unimp
+80005576: 0000 unimp
+80005578: 0000 unimp
+8000557a: 0000 unimp
+8000557c: 0000 unimp
+8000557e: 0000 unimp
+80005580: 0000 unimp
+80005582: 0000 unimp
+80005584: 0000 unimp
+80005586: 0000 unimp
+80005588: 0000 unimp
+8000558a: 0000 unimp
+8000558c: 0000 unimp
+8000558e: 0000 unimp
+80005590: 0000 unimp
+80005592: 0000 unimp
+80005594: 0000 unimp
+80005596: 0000 unimp
+80005598: 0000 unimp
+8000559a: 0000 unimp
+8000559c: 0000 unimp
+8000559e: 0000 unimp
+800055a0: 0000 unimp
+800055a2: 0000 unimp
+800055a4: 0000 unimp
+800055a6: 0000 unimp
+800055a8: 0000 unimp
+800055aa: 0000 unimp
+800055ac: 0000 unimp
+800055ae: 0000 unimp
+800055b0: 0000 unimp
+800055b2: 0000 unimp
+800055b4: 0000 unimp
+800055b6: 0000 unimp
+800055b8: 0000 unimp
+800055ba: 0000 unimp
+800055bc: 0000 unimp
+800055be: 0000 unimp
+800055c0: 0000 unimp
+800055c2: 0000 unimp
+800055c4: 0000 unimp
+800055c6: 0000 unimp
+800055c8: 0000 unimp
+800055ca: 0000 unimp
+800055cc: 0000 unimp
+800055ce: 0000 unimp
+800055d0: 0000 unimp
+800055d2: 0000 unimp
+800055d4: 0000 unimp
+800055d6: 0000 unimp
+800055d8: 0000 unimp
+800055da: 0000 unimp
+800055dc: 0000 unimp
+800055de: 0000 unimp
+800055e0: 0000 unimp
+800055e2: 0000 unimp
+800055e4: 0000 unimp
+800055e6: 0000 unimp
+800055e8: 0000 unimp
+800055ea: 0000 unimp
+800055ec: 0000 unimp
+800055ee: 0000 unimp
+800055f0: 0000 unimp
+800055f2: 0000 unimp
+800055f4: 0000 unimp
+800055f6: 0000 unimp
+800055f8: 0000 unimp
+800055fa: 0000 unimp
+800055fc: 0000 unimp
+800055fe: 0000 unimp
+80005600: 0000 unimp
+80005602: 0000 unimp
+80005604: 0000 unimp
+80005606: 0000 unimp
+80005608: 0000 unimp
+8000560a: 0000 unimp
+8000560c: 0000 unimp
+8000560e: 0000 unimp
+80005610: 0000 unimp
+80005612: 0000 unimp
+80005614: 0000 unimp
+80005616: 0000 unimp
+80005618: 0000 unimp
+8000561a: 0000 unimp
+8000561c: 0000 unimp
+8000561e: 0000 unimp
+80005620: 0000 unimp
+80005622: 0000 unimp
+80005624: 0000 unimp
+80005626: 0000 unimp
+80005628: 0000 unimp
+8000562a: 0000 unimp
+8000562c: 0000 unimp
+8000562e: 0000 unimp
+80005630: 0000 unimp
+80005632: 0000 unimp
+80005634: 0000 unimp
+80005636: 0000 unimp
+80005638: 0000 unimp
+8000563a: 0000 unimp
+8000563c: 0000 unimp
+8000563e: 0000 unimp
+80005640: 0000 unimp
+80005642: 0000 unimp
+80005644: 0000 unimp
+80005646: 0000 unimp
+80005648: 0000 unimp
+8000564a: 0000 unimp
+8000564c: 0000 unimp
+8000564e: 0000 unimp
+80005650: 0000 unimp
+80005652: 0000 unimp
+80005654: 0000 unimp
+80005656: 0000 unimp
+80005658: 0000 unimp
+8000565a: 0000 unimp
+8000565c: 0000 unimp
+8000565e: 0000 unimp
+80005660: 0000 unimp
+80005662: 0000 unimp
+80005664: 0000 unimp
+80005666: 0000 unimp
+80005668: 0000 unimp
+8000566a: 0000 unimp
+8000566c: 0000 unimp
+8000566e: 0000 unimp
+80005670: 0000 unimp
+80005672: 0000 unimp
+80005674: 0000 unimp
+80005676: 0000 unimp
+80005678: 0000 unimp
+8000567a: 0000 unimp
+8000567c: 0000 unimp
+8000567e: 0000 unimp
+80005680: 0000 unimp
+80005682: 0000 unimp
+80005684: 0000 unimp
+80005686: 0000 unimp
+80005688: 0000 unimp
+8000568a: 0000 unimp
+8000568c: 0000 unimp
+8000568e: 0000 unimp
+80005690: 0000 unimp
+80005692: 0000 unimp
+80005694: 0000 unimp
+80005696: 0000 unimp
+80005698: 0000 unimp
+8000569a: 0000 unimp
+8000569c: 0000 unimp
+8000569e: 0000 unimp
+800056a0: 0000 unimp
+800056a2: 0000 unimp
+800056a4: 0000 unimp
+800056a6: 0000 unimp
+800056a8: 0000 unimp
+800056aa: 0000 unimp
+800056ac: 0000 unimp
+800056ae: 0000 unimp
+800056b0: 0000 unimp
+800056b2: 0000 unimp
+800056b4: 0000 unimp
+800056b6: 0000 unimp
+800056b8: 0000 unimp
+800056ba: 0000 unimp
+800056bc: 0000 unimp
+800056be: 0000 unimp
+800056c0: 0000 unimp
+800056c2: 0000 unimp
+800056c4: 0000 unimp
+800056c6: 0000 unimp
+800056c8: 0000 unimp
+800056ca: 0000 unimp
+800056cc: 0000 unimp
+800056ce: 0000 unimp
+800056d0: 0000 unimp
+800056d2: 0000 unimp
+800056d4: 0000 unimp
+800056d6: 0000 unimp
+800056d8: 0000 unimp
+800056da: 0000 unimp
+800056dc: 0000 unimp
+800056de: 0000 unimp
+800056e0: 0000 unimp
+800056e2: 0000 unimp
+800056e4: 0000 unimp
+800056e6: 0000 unimp
+800056e8: 0000 unimp
+800056ea: 0000 unimp
+800056ec: 0000 unimp
+800056ee: 0000 unimp
+800056f0: 0000 unimp
+800056f2: 0000 unimp
+800056f4: 0000 unimp
+800056f6: 0000 unimp
+800056f8: 0000 unimp
+800056fa: 0000 unimp
+800056fc: 0000 unimp
+800056fe: 0000 unimp
+80005700: 0000 unimp
+80005702: 0000 unimp
+80005704: 0000 unimp
+80005706: 0000 unimp
+80005708: 0000 unimp
+8000570a: 0000 unimp
+8000570c: 0000 unimp
+8000570e: 0000 unimp
+80005710: 0000 unimp
+80005712: 0000 unimp
+80005714: 0000 unimp
+80005716: 0000 unimp
+80005718: 0000 unimp
+8000571a: 0000 unimp
+8000571c: 0000 unimp
+8000571e: 0000 unimp
+80005720: 0000 unimp
+80005722: 0000 unimp
+80005724: 0000 unimp
+80005726: 0000 unimp
+80005728: 0000 unimp
+8000572a: 0000 unimp
+8000572c: 0000 unimp
+8000572e: 0000 unimp
+80005730: 0000 unimp
+80005732: 0000 unimp
+80005734: 0000 unimp
+80005736: 0000 unimp
+80005738: 0000 unimp
+8000573a: 0000 unimp
+8000573c: 0000 unimp
+8000573e: 0000 unimp
+80005740: 0000 unimp
+80005742: 0000 unimp
+80005744: 0000 unimp
+80005746: 0000 unimp
+80005748: 0000 unimp
+8000574a: 0000 unimp
+8000574c: 0000 unimp
+8000574e: 0000 unimp
+80005750: 0000 unimp
+80005752: 0000 unimp
+80005754: 0000 unimp
+80005756: 0000 unimp
+80005758: 0000 unimp
+8000575a: 0000 unimp
+8000575c: 0000 unimp
+8000575e: 0000 unimp
+80005760: 0000 unimp
+80005762: 0000 unimp
+80005764: 0000 unimp
+80005766: 0000 unimp
+80005768: 0000 unimp
+8000576a: 0000 unimp
+8000576c: 0000 unimp
+8000576e: 0000 unimp
+80005770: 0000 unimp
+80005772: 0000 unimp
+80005774: 0000 unimp
+80005776: 0000 unimp
+80005778: 0000 unimp
+8000577a: 0000 unimp
+8000577c: 0000 unimp
+8000577e: 0000 unimp
+80005780: 0000 unimp
+80005782: 0000 unimp
+80005784: 0000 unimp
+80005786: 0000 unimp
+80005788: 0000 unimp
+8000578a: 0000 unimp
+8000578c: 0000 unimp
+8000578e: 0000 unimp
+80005790: 0000 unimp
+80005792: 0000 unimp
+80005794: 0000 unimp
+80005796: 0000 unimp
+80005798: 0000 unimp
+8000579a: 0000 unimp
+8000579c: 0000 unimp
+8000579e: 0000 unimp
+800057a0: 0000 unimp
+800057a2: 0000 unimp
+800057a4: 0000 unimp
+800057a6: 0000 unimp
+800057a8: 0000 unimp
+800057aa: 0000 unimp
+800057ac: 0000 unimp
+800057ae: 0000 unimp
+800057b0: 0000 unimp
+800057b2: 0000 unimp
+800057b4: 0000 unimp
+800057b6: 0000 unimp
+800057b8: 0000 unimp
+800057ba: 0000 unimp
+800057bc: 0000 unimp
+800057be: 0000 unimp
+800057c0: 0000 unimp
+800057c2: 0000 unimp
+800057c4: 0000 unimp
+800057c6: 0000 unimp
+800057c8: 0000 unimp
+800057ca: 0000 unimp
+800057cc: 0000 unimp
+800057ce: 0000 unimp
+800057d0: 0000 unimp
+800057d2: 0000 unimp
+800057d4: 0000 unimp
+800057d6: 0000 unimp
+800057d8: 0000 unimp
+800057da: 0000 unimp
+800057dc: 0000 unimp
+800057de: 0000 unimp
+800057e0: 0000 unimp
+800057e2: 0000 unimp
+800057e4: 0000 unimp
+800057e6: 0000 unimp
+800057e8: 0000 unimp
+800057ea: 0000 unimp
+800057ec: 0000 unimp
+800057ee: 0000 unimp
+800057f0: 0000 unimp
+800057f2: 0000 unimp
+800057f4: 0000 unimp
+800057f6: 0000 unimp
+800057f8: 0000 unimp
+800057fa: 0000 unimp
+800057fc: 0000 unimp
+800057fe: 0000 unimp
+80005800: 0000 unimp
+80005802: 0000 unimp
+80005804: 0000 unimp
+80005806: 0000 unimp
+80005808: 0000 unimp
+8000580a: 0000 unimp
+8000580c: 0000 unimp
+8000580e: 0000 unimp
+80005810: 0000 unimp
+80005812: 0000 unimp
+80005814: 0000 unimp
+80005816: 0000 unimp
+80005818: 0000 unimp
+8000581a: 0000 unimp
+8000581c: 0000 unimp
+8000581e: 0000 unimp
+80005820: 0000 unimp
+80005822: 0000 unimp
+80005824: 0000 unimp
+80005826: 0000 unimp
+80005828: 0000 unimp
+8000582a: 0000 unimp
+8000582c: 0000 unimp
+8000582e: 0000 unimp
+80005830: 0000 unimp
+80005832: 0000 unimp
+80005834: 0000 unimp
+80005836: 0000 unimp
+80005838: 0000 unimp
+8000583a: 0000 unimp
+8000583c: 0000 unimp
+8000583e: 0000 unimp
+80005840: 0000 unimp
+80005842: 0000 unimp
+80005844: 0000 unimp
+80005846: 0000 unimp
+80005848: 0000 unimp
+8000584a: 0000 unimp
+8000584c: 0000 unimp
+8000584e: 0000 unimp
+80005850: 0000 unimp
+80005852: 0000 unimp
+80005854: 0000 unimp
+80005856: 0000 unimp
+80005858: 0000 unimp
+8000585a: 0000 unimp
+8000585c: 0000 unimp
+8000585e: 0000 unimp
+80005860: 0000 unimp
+80005862: 0000 unimp
+80005864: 0000 unimp
+80005866: 0000 unimp
+80005868: 0000 unimp
+8000586a: 0000 unimp
+8000586c: 0000 unimp
+8000586e: 0000 unimp
+80005870: 0000 unimp
+80005872: 0000 unimp
+80005874: 0000 unimp
+80005876: 0000 unimp
+80005878: 0000 unimp
+8000587a: 0000 unimp
+8000587c: 0000 unimp
+8000587e: 0000 unimp
+80005880: 0000 unimp
+80005882: 0000 unimp
+80005884: 0000 unimp
+80005886: 0000 unimp
+80005888: 0000 unimp
+8000588a: 0000 unimp
+8000588c: 0000 unimp
+8000588e: 0000 unimp
+80005890: 0000 unimp
+80005892: 0000 unimp
+80005894: 0000 unimp
+80005896: 0000 unimp
+80005898: 0000 unimp
+8000589a: 0000 unimp
+8000589c: 0000 unimp
+8000589e: 0000 unimp
+800058a0: 0000 unimp
+800058a2: 0000 unimp
+800058a4: 0000 unimp
+800058a6: 0000 unimp
+800058a8: 0000 unimp
+800058aa: 0000 unimp
+800058ac: 0000 unimp
+800058ae: 0000 unimp
+800058b0: 0000 unimp
+800058b2: 0000 unimp
+800058b4: 0000 unimp
+800058b6: 0000 unimp
+800058b8: 0000 unimp
+800058ba: 0000 unimp
+800058bc: 0000 unimp
+800058be: 0000 unimp
+800058c0: 0000 unimp
+800058c2: 0000 unimp
+800058c4: 0000 unimp
+800058c6: 0000 unimp
+800058c8: 0000 unimp
+800058ca: 0000 unimp
+800058cc: 0000 unimp
+800058ce: 0000 unimp
+800058d0: 0000 unimp
+800058d2: 0000 unimp
+800058d4: 0000 unimp
+800058d6: 0000 unimp
+800058d8: 0000 unimp
+800058da: 0000 unimp
+800058dc: 0000 unimp
+800058de: 0000 unimp
+800058e0: 0000 unimp
+800058e2: 0000 unimp
+800058e4: 0000 unimp
+800058e6: 0000 unimp
+800058e8: 0000 unimp
+800058ea: 0000 unimp
+800058ec: 0000 unimp
+800058ee: 0000 unimp
+800058f0: 0000 unimp
+800058f2: 0000 unimp
+800058f4: 0000 unimp
+800058f6: 0000 unimp
+800058f8: 0000 unimp
+800058fa: 0000 unimp
+800058fc: 0000 unimp
+800058fe: 0000 unimp
+80005900: 0000 unimp
+80005902: 0000 unimp
+80005904: 0000 unimp
+80005906: 0000 unimp
+80005908: 0000 unimp
+8000590a: 0000 unimp
+8000590c: 0000 unimp
+8000590e: 0000 unimp
+80005910: 0000 unimp
+80005912: 0000 unimp
+80005914: 0000 unimp
+80005916: 0000 unimp
+80005918: 0000 unimp
+8000591a: 0000 unimp
+8000591c: 0000 unimp
+8000591e: 0000 unimp
+80005920: 0000 unimp
+80005922: 0000 unimp
+80005924: 0000 unimp
+80005926: 0000 unimp
+80005928: 0000 unimp
+8000592a: 0000 unimp
+8000592c: 0000 unimp
+8000592e: 0000 unimp
+80005930: 0000 unimp
+80005932: 0000 unimp
+80005934: 0000 unimp
+80005936: 0000 unimp
+80005938: 0000 unimp
+8000593a: 0000 unimp
+8000593c: 0000 unimp
+8000593e: 0000 unimp
+80005940: 0000 unimp
+80005942: 0000 unimp
+80005944: 0000 unimp
+80005946: 0000 unimp
+80005948: 0000 unimp
+8000594a: 0000 unimp
+8000594c: 0000 unimp
+8000594e: 0000 unimp
+80005950: 0000 unimp
+80005952: 0000 unimp
+80005954: 0000 unimp
+80005956: 0000 unimp
+80005958: 0000 unimp
+8000595a: 0000 unimp
+8000595c: 0000 unimp
+8000595e: 0000 unimp
+80005960: 0000 unimp
+80005962: 0000 unimp
+80005964: 0000 unimp
+80005966: 0000 unimp
+80005968: 0000 unimp
+8000596a: 0000 unimp
+8000596c: 0000 unimp
+8000596e: 0000 unimp
+80005970: 0000 unimp
+80005972: 0000 unimp
+80005974: 0000 unimp
+80005976: 0000 unimp
+80005978: 0000 unimp
+8000597a: 0000 unimp
+8000597c: 0000 unimp
+8000597e: 0000 unimp
+80005980: 0000 unimp
+80005982: 0000 unimp
+80005984: 0000 unimp
+80005986: 0000 unimp
+80005988: 0000 unimp
+8000598a: 0000 unimp
+8000598c: 0000 unimp
+8000598e: 0000 unimp
+80005990: 0000 unimp
+80005992: 0000 unimp
+80005994: 0000 unimp
+80005996: 0000 unimp
+80005998: 0000 unimp
+8000599a: 0000 unimp
+8000599c: 0000 unimp
+8000599e: 0000 unimp
+800059a0: 0000 unimp
+800059a2: 0000 unimp
+800059a4: 0000 unimp
+800059a6: 0000 unimp
+800059a8: 0000 unimp
+800059aa: 0000 unimp
+800059ac: 0000 unimp
+800059ae: 0000 unimp
+800059b0: 0000 unimp
+800059b2: 0000 unimp
+800059b4: 0000 unimp
+800059b6: 0000 unimp
+800059b8: 0000 unimp
+800059ba: 0000 unimp
+800059bc: 0000 unimp
+800059be: 0000 unimp
+800059c0: 0000 unimp
+800059c2: 0000 unimp
+800059c4: 0000 unimp
+800059c6: 0000 unimp
+800059c8: 0000 unimp
+800059ca: 0000 unimp
+800059cc: 0000 unimp
+800059ce: 0000 unimp
+800059d0: 0000 unimp
+800059d2: 0000 unimp
+800059d4: 0000 unimp
+800059d6: 0000 unimp
+800059d8: 0000 unimp
+800059da: 0000 unimp
+800059dc: 0000 unimp
+800059de: 0000 unimp
+800059e0: 0000 unimp
+800059e2: 0000 unimp
+800059e4: 0000 unimp
+800059e6: 0000 unimp
+800059e8: 0000 unimp
+800059ea: 0000 unimp
+800059ec: 0000 unimp
+800059ee: 0000 unimp
+800059f0: 0000 unimp
+800059f2: 0000 unimp
+800059f4: 0000 unimp
+800059f6: 0000 unimp
+800059f8: 0000 unimp
+800059fa: 0000 unimp
+800059fc: 0000 unimp
+800059fe: 0000 unimp
+80005a00: 0000 unimp
+80005a02: 0000 unimp
+80005a04: 0000 unimp
+80005a06: 0000 unimp
+80005a08: 0000 unimp
+80005a0a: 0000 unimp
+80005a0c: 0000 unimp
+80005a0e: 0000 unimp
+80005a10: 0000 unimp
+80005a12: 0000 unimp
+80005a14: 0000 unimp
+80005a16: 0000 unimp
+80005a18: 0000 unimp
+80005a1a: 0000 unimp
+80005a1c: 0000 unimp
+80005a1e: 0000 unimp
+80005a20: 0000 unimp
+80005a22: 0000 unimp
+80005a24: 0000 unimp
+80005a26: 0000 unimp
+80005a28: 0000 unimp
+80005a2a: 0000 unimp
+80005a2c: 0000 unimp
+80005a2e: 0000 unimp
+80005a30: 0000 unimp
+80005a32: 0000 unimp
+80005a34: 0000 unimp
+80005a36: 0000 unimp
+80005a38: 0000 unimp
+80005a3a: 0000 unimp
+80005a3c: 0000 unimp
+80005a3e: 0000 unimp
+80005a40: 0000 unimp
+80005a42: 0000 unimp
+80005a44: 0000 unimp
+80005a46: 0000 unimp
+80005a48: 0000 unimp
+80005a4a: 0000 unimp
+80005a4c: 0000 unimp
+80005a4e: 0000 unimp
+80005a50: 0000 unimp
+80005a52: 0000 unimp
+80005a54: 0000 unimp
+80005a56: 0000 unimp
+80005a58: 0000 unimp
+80005a5a: 0000 unimp
+80005a5c: 0000 unimp
+80005a5e: 0000 unimp
+80005a60: 0000 unimp
+80005a62: 0000 unimp
+80005a64: 0000 unimp
+80005a66: 0000 unimp
+80005a68: 0000 unimp
+80005a6a: 0000 unimp
+80005a6c: 0000 unimp
+80005a6e: 0000 unimp
+80005a70: 0000 unimp
+80005a72: 0000 unimp
+80005a74: 0000 unimp
+80005a76: 0000 unimp
+80005a78: 0000 unimp
+80005a7a: 0000 unimp
+80005a7c: 0000 unimp
+80005a7e: 0000 unimp
+80005a80: 0000 unimp
+80005a82: 0000 unimp
+80005a84: 0000 unimp
+80005a86: 0000 unimp
+80005a88: 0000 unimp
+80005a8a: 0000 unimp
+80005a8c: 0000 unimp
+80005a8e: 0000 unimp
+80005a90: 0000 unimp
+80005a92: 0000 unimp
+80005a94: 0000 unimp
+80005a96: 0000 unimp
+80005a98: 0000 unimp
+80005a9a: 0000 unimp
+80005a9c: 0000 unimp
+80005a9e: 0000 unimp
+80005aa0: 0000 unimp
+80005aa2: 0000 unimp
+80005aa4: 0000 unimp
+80005aa6: 0000 unimp
+80005aa8: 0000 unimp
+80005aaa: 0000 unimp
+80005aac: 0000 unimp
+80005aae: 0000 unimp
+80005ab0: 0000 unimp
+80005ab2: 0000 unimp
+80005ab4: 0000 unimp
+80005ab6: 0000 unimp
+80005ab8: 0000 unimp
+80005aba: 0000 unimp
+80005abc: 0000 unimp
+80005abe: 0000 unimp
+80005ac0: 0000 unimp
+80005ac2: 0000 unimp
+80005ac4: 0000 unimp
+80005ac6: 0000 unimp
+80005ac8: 0000 unimp
+80005aca: 0000 unimp
+80005acc: 0000 unimp
+80005ace: 0000 unimp
+80005ad0: 0000 unimp
+80005ad2: 0000 unimp
+80005ad4: 0000 unimp
+80005ad6: 0000 unimp
+80005ad8: 0000 unimp
+80005ada: 0000 unimp
+80005adc: 0000 unimp
+80005ade: 0000 unimp
+80005ae0: 0000 unimp
+80005ae2: 0000 unimp
+80005ae4: 0000 unimp
+80005ae6: 0000 unimp
+80005ae8: 0000 unimp
+80005aea: 0000 unimp
+80005aec: 0000 unimp
+80005aee: 0000 unimp
+80005af0: 0000 unimp
+80005af2: 0000 unimp
+80005af4: 0000 unimp
+80005af6: 0000 unimp
+80005af8: 0000 unimp
+80005afa: 0000 unimp
+80005afc: 0000 unimp
+80005afe: 0000 unimp
+80005b00: 0000 unimp
+80005b02: 0000 unimp
+80005b04: 0000 unimp
+80005b06: 0000 unimp
+80005b08: 0000 unimp
+80005b0a: 0000 unimp
+80005b0c: 0000 unimp
+80005b0e: 0000 unimp
+80005b10: 0000 unimp
+80005b12: 0000 unimp
+80005b14: 0000 unimp
+80005b16: 0000 unimp
+80005b18: 0000 unimp
+80005b1a: 0000 unimp
+80005b1c: 0000 unimp
+80005b1e: 0000 unimp
+80005b20: 0000 unimp
+80005b22: 0000 unimp
+80005b24: 0000 unimp
+80005b26: 0000 unimp
+80005b28: 0000 unimp
+80005b2a: 0000 unimp
+80005b2c: 0000 unimp
+80005b2e: 0000 unimp
+80005b30: 0000 unimp
+80005b32: 0000 unimp
+80005b34: 0000 unimp
+80005b36: 0000 unimp
+80005b38: 0000 unimp
+80005b3a: 0000 unimp
+80005b3c: 0000 unimp
+80005b3e: 0000 unimp
+80005b40: 0000 unimp
+80005b42: 0000 unimp
+80005b44: 0000 unimp
+80005b46: 0000 unimp
+80005b48: 0000 unimp
+80005b4a: 0000 unimp
+80005b4c: 0000 unimp
+80005b4e: 0000 unimp
+80005b50: 0000 unimp
+80005b52: 0000 unimp
+80005b54: 0000 unimp
+80005b56: 0000 unimp
+80005b58: 0000 unimp
+80005b5a: 0000 unimp
+80005b5c: 0000 unimp
+80005b5e: 0000 unimp
+80005b60: 0000 unimp
+80005b62: 0000 unimp
+80005b64: 0000 unimp
+80005b66: 0000 unimp
+80005b68: 0000 unimp
+80005b6a: 0000 unimp
+80005b6c: 0000 unimp
+80005b6e: 0000 unimp
+80005b70: 0000 unimp
+80005b72: 0000 unimp
+80005b74: 0000 unimp
+80005b76: 0000 unimp
+80005b78: 0000 unimp
+80005b7a: 0000 unimp
+80005b7c: 0000 unimp
+80005b7e: 0000 unimp
+80005b80: 0000 unimp
+80005b82: 0000 unimp
+80005b84: 0000 unimp
+80005b86: 0000 unimp
+80005b88: 0000 unimp
+80005b8a: 0000 unimp
+80005b8c: 0000 unimp
+80005b8e: 0000 unimp
+80005b90: 0000 unimp
+80005b92: 0000 unimp
+80005b94: 0000 unimp
+80005b96: 0000 unimp
+80005b98: 0000 unimp
+80005b9a: 0000 unimp
+80005b9c: 0000 unimp
+80005b9e: 0000 unimp
+80005ba0: 0000 unimp
+80005ba2: 0000 unimp
+80005ba4: 0000 unimp
+80005ba6: 0000 unimp
+80005ba8: 0000 unimp
+80005baa: 0000 unimp
+80005bac: 0000 unimp
+80005bae: 0000 unimp
+80005bb0: 0000 unimp
+80005bb2: 0000 unimp
+80005bb4: 0000 unimp
+80005bb6: 0000 unimp
+80005bb8: 0000 unimp
+80005bba: 0000 unimp
+80005bbc: 0000 unimp
+80005bbe: 0000 unimp
+80005bc0: 0000 unimp
+80005bc2: 0000 unimp
+80005bc4: 0000 unimp
+80005bc6: 0000 unimp
+80005bc8: 0000 unimp
+80005bca: 0000 unimp
+80005bcc: 0000 unimp
+80005bce: 0000 unimp
+80005bd0: 0000 unimp
+80005bd2: 0000 unimp
+80005bd4: 0000 unimp
+80005bd6: 0000 unimp
+80005bd8: 0000 unimp
+80005bda: 0000 unimp
+80005bdc: 0000 unimp
+80005bde: 0000 unimp
+80005be0: 0000 unimp
+80005be2: 0000 unimp
+80005be4: 0000 unimp
+80005be6: 0000 unimp
+80005be8: 0000 unimp
+80005bea: 0000 unimp
+80005bec: 0000 unimp
+80005bee: 0000 unimp
+80005bf0: 0000 unimp
+80005bf2: 0000 unimp
+80005bf4: 0000 unimp
+80005bf6: 0000 unimp
+80005bf8: 0000 unimp
+80005bfa: 0000 unimp
+80005bfc: 0000 unimp
+80005bfe: 0000 unimp
+80005c00: 0000 unimp
+80005c02: 0000 unimp
+80005c04: 0000 unimp
+80005c06: 0000 unimp
+80005c08: 0000 unimp
+80005c0a: 0000 unimp
+80005c0c: 0000 unimp
+80005c0e: 0000 unimp
+80005c10: 0000 unimp
+80005c12: 0000 unimp
+80005c14: 0000 unimp
+80005c16: 0000 unimp
+80005c18: 0000 unimp
+80005c1a: 0000 unimp
+80005c1c: 0000 unimp
+80005c1e: 0000 unimp
+80005c20: 0000 unimp
+80005c22: 0000 unimp
+80005c24: 0000 unimp
+80005c26: 0000 unimp
+80005c28: 0000 unimp
+80005c2a: 0000 unimp
+80005c2c: 0000 unimp
+80005c2e: 0000 unimp
+80005c30: 0000 unimp
+80005c32: 0000 unimp
+80005c34: 0000 unimp
+80005c36: 0000 unimp
+80005c38: 0000 unimp
+80005c3a: 0000 unimp
+80005c3c: 0000 unimp
+80005c3e: 0000 unimp
+80005c40: 0000 unimp
+80005c42: 0000 unimp
+80005c44: 0000 unimp
+80005c46: 0000 unimp
+80005c48: 0000 unimp
+80005c4a: 0000 unimp
+80005c4c: 0000 unimp
+80005c4e: 0000 unimp
+80005c50: 0000 unimp
+80005c52: 0000 unimp
+80005c54: 0000 unimp
+80005c56: 0000 unimp
+80005c58: 0000 unimp
+80005c5a: 0000 unimp
+80005c5c: 0000 unimp
+80005c5e: 0000 unimp
+80005c60: 0000 unimp
+80005c62: 0000 unimp
+80005c64: 0000 unimp
+80005c66: 0000 unimp
+80005c68: 0000 unimp
+80005c6a: 0000 unimp
+80005c6c: 0000 unimp
+80005c6e: 0000 unimp
+80005c70: 0000 unimp
+80005c72: 0000 unimp
+80005c74: 0000 unimp
+80005c76: 0000 unimp
+80005c78: 0000 unimp
+80005c7a: 0000 unimp
+80005c7c: 0000 unimp
+80005c7e: 0000 unimp
+80005c80: 0000 unimp
+80005c82: 0000 unimp
+80005c84: 0000 unimp
+80005c86: 0000 unimp
+80005c88: 0000 unimp
+80005c8a: 0000 unimp
+80005c8c: 0000 unimp
+80005c8e: 0000 unimp
+80005c90: 0000 unimp
+80005c92: 0000 unimp
+80005c94: 0000 unimp
+80005c96: 0000 unimp
+80005c98: 0000 unimp
+80005c9a: 0000 unimp
+80005c9c: 0000 unimp
+80005c9e: 0000 unimp
+80005ca0: 0000 unimp
+80005ca2: 0000 unimp
+80005ca4: 0000 unimp
+80005ca6: 0000 unimp
+80005ca8: 0000 unimp
+80005caa: 0000 unimp
+80005cac: 0000 unimp
+80005cae: 0000 unimp
+80005cb0: 0000 unimp
+80005cb2: 0000 unimp
+80005cb4: 0000 unimp
+80005cb6: 0000 unimp
+80005cb8: 0000 unimp
+80005cba: 0000 unimp
+80005cbc: 0000 unimp
+80005cbe: 0000 unimp
+80005cc0: 0000 unimp
+80005cc2: 0000 unimp
+80005cc4: 0000 unimp
+80005cc6: 0000 unimp
+80005cc8: 0000 unimp
+80005cca: 0000 unimp
+80005ccc: 0000 unimp
+80005cce: 0000 unimp
+80005cd0: 0000 unimp
+80005cd2: 0000 unimp
+80005cd4: 0000 unimp
+80005cd6: 0000 unimp
+80005cd8: 0000 unimp
+80005cda: 0000 unimp
+80005cdc: 0000 unimp
+80005cde: 0000 unimp
+80005ce0: 0000 unimp
+80005ce2: 0000 unimp
+80005ce4: 0000 unimp
+80005ce6: 0000 unimp
+80005ce8: 0000 unimp
+80005cea: 0000 unimp
+80005cec: 0000 unimp
+80005cee: 0000 unimp
+80005cf0: 0000 unimp
+80005cf2: 0000 unimp
+80005cf4: 0000 unimp
+80005cf6: 0000 unimp
+80005cf8: 0000 unimp
+80005cfa: 0000 unimp
+80005cfc: 0000 unimp
+80005cfe: 0000 unimp
+80005d00: 0000 unimp
+80005d02: 0000 unimp
+80005d04: 0000 unimp
+80005d06: 0000 unimp
+80005d08: 0000 unimp
+80005d0a: 0000 unimp
+80005d0c: 0000 unimp
+80005d0e: 0000 unimp
+80005d10: 0000 unimp
+80005d12: 0000 unimp
+80005d14: 0000 unimp
+80005d16: 0000 unimp
+80005d18: 0000 unimp
+80005d1a: 0000 unimp
+80005d1c: 0000 unimp
+80005d1e: 0000 unimp
+80005d20: 0000 unimp
+80005d22: 0000 unimp
+80005d24: 0000 unimp
+80005d26: 0000 unimp
+80005d28: 0000 unimp
+80005d2a: 0000 unimp
+80005d2c: 0000 unimp
+80005d2e: 0000 unimp
+80005d30: 0000 unimp
+80005d32: 0000 unimp
+80005d34: 0000 unimp
+80005d36: 0000 unimp
+80005d38: 0000 unimp
+80005d3a: 0000 unimp
+80005d3c: 0000 unimp
+80005d3e: 0000 unimp
+80005d40: 0000 unimp
+80005d42: 0000 unimp
+80005d44: 0000 unimp
+80005d46: 0000 unimp
+80005d48: 0000 unimp
+80005d4a: 0000 unimp
+80005d4c: 0000 unimp
+80005d4e: 0000 unimp
+80005d50: 0000 unimp
+80005d52: 0000 unimp
+80005d54: 0000 unimp
+80005d56: 0000 unimp
+80005d58: 0000 unimp
+80005d5a: 0000 unimp
+80005d5c: 0000 unimp
+80005d5e: 0000 unimp
+80005d60: 0000 unimp
+80005d62: 0000 unimp
+80005d64: 0000 unimp
+80005d66: 0000 unimp
+80005d68: 0000 unimp
+80005d6a: 0000 unimp
+80005d6c: 0000 unimp
+80005d6e: 0000 unimp
+80005d70: 0000 unimp
+80005d72: 0000 unimp
+80005d74: 0000 unimp
+80005d76: 0000 unimp
+80005d78: 0000 unimp
+80005d7a: 0000 unimp
+80005d7c: 0000 unimp
+80005d7e: 0000 unimp
+80005d80: 0000 unimp
+80005d82: 0000 unimp
+80005d84: 0000 unimp
+80005d86: 0000 unimp
+80005d88: 0000 unimp
+80005d8a: 0000 unimp
+80005d8c: 0000 unimp
+80005d8e: 0000 unimp
+80005d90: 0000 unimp
+80005d92: 0000 unimp
+80005d94: 0000 unimp
+80005d96: 0000 unimp
+80005d98: 0000 unimp
+80005d9a: 0000 unimp
+80005d9c: 0000 unimp
+80005d9e: 0000 unimp
+80005da0: 0000 unimp
+80005da2: 0000 unimp
+80005da4: 0000 unimp
+80005da6: 0000 unimp
+80005da8: 0000 unimp
+80005daa: 0000 unimp
+80005dac: 0000 unimp
+80005dae: 0000 unimp
+80005db0: 0000 unimp
+80005db2: 0000 unimp
+80005db4: 0000 unimp
+80005db6: 0000 unimp
+80005db8: 0000 unimp
+80005dba: 0000 unimp
+80005dbc: 0000 unimp
+80005dbe: 0000 unimp
+80005dc0: 0000 unimp
+80005dc2: 0000 unimp
+80005dc4: 0000 unimp
+80005dc6: 0000 unimp
+80005dc8: 0000 unimp
+80005dca: 0000 unimp
+80005dcc: 0000 unimp
+80005dce: 0000 unimp
+80005dd0: 0000 unimp
+80005dd2: 0000 unimp
+80005dd4: 0000 unimp
+80005dd6: 0000 unimp
+80005dd8: 0000 unimp
+80005dda: 0000 unimp
+80005ddc: 0000 unimp
+80005dde: 0000 unimp
+80005de0: 0000 unimp
+80005de2: 0000 unimp
+80005de4: 0000 unimp
+80005de6: 0000 unimp
+80005de8: 0000 unimp
+80005dea: 0000 unimp
+80005dec: 0000 unimp
+80005dee: 0000 unimp
+80005df0: 0000 unimp
+80005df2: 0000 unimp
+80005df4: 0000 unimp
+80005df6: 0000 unimp
+80005df8: 0000 unimp
+80005dfa: 0000 unimp
+80005dfc: 0000 unimp
+80005dfe: 0000 unimp
+80005e00: 0000 unimp
+80005e02: 0000 unimp
+80005e04: 0000 unimp
+80005e06: 0000 unimp
+80005e08: 0000 unimp
+80005e0a: 0000 unimp
+80005e0c: 0000 unimp
+80005e0e: 0000 unimp
+80005e10: 0000 unimp
+80005e12: 0000 unimp
+80005e14: 0000 unimp
+80005e16: 0000 unimp
+80005e18: 0000 unimp
+80005e1a: 0000 unimp
+80005e1c: 0000 unimp
+80005e1e: 0000 unimp
+80005e20: 0000 unimp
+80005e22: 0000 unimp
+80005e24: 0000 unimp
+80005e26: 0000 unimp
+80005e28: 0000 unimp
+80005e2a: 0000 unimp
+80005e2c: 0000 unimp
+80005e2e: 0000 unimp
+80005e30: 0000 unimp
+80005e32: 0000 unimp
+80005e34: 0000 unimp
+80005e36: 0000 unimp
+80005e38: 0000 unimp
+80005e3a: 0000 unimp
+80005e3c: 0000 unimp
+80005e3e: 0000 unimp
+80005e40: 0000 unimp
+80005e42: 0000 unimp
+80005e44: 0000 unimp
+80005e46: 0000 unimp
+80005e48: 0000 unimp
+80005e4a: 0000 unimp
+80005e4c: 0000 unimp
+80005e4e: 0000 unimp
+80005e50: 0000 unimp
+80005e52: 0000 unimp
+80005e54: 0000 unimp
+80005e56: 0000 unimp
+80005e58: 0000 unimp
+80005e5a: 0000 unimp
+80005e5c: 0000 unimp
+80005e5e: 0000 unimp
+80005e60: 0000 unimp
+80005e62: 0000 unimp
+80005e64: 0000 unimp
+80005e66: 0000 unimp
+80005e68: 0000 unimp
+80005e6a: 0000 unimp
+80005e6c: 0000 unimp
+80005e6e: 0000 unimp
+80005e70: 0000 unimp
+80005e72: 0000 unimp
+80005e74: 0000 unimp
+80005e76: 0000 unimp
+80005e78: 0000 unimp
+80005e7a: 0000 unimp
+80005e7c: 0000 unimp
+80005e7e: 0000 unimp
+80005e80: 0000 unimp
+80005e82: 0000 unimp
+80005e84: 0000 unimp
+80005e86: 0000 unimp
+80005e88: 0000 unimp
+80005e8a: 0000 unimp
+80005e8c: 0000 unimp
+80005e8e: 0000 unimp
+80005e90: 0000 unimp
+80005e92: 0000 unimp
+80005e94: 0000 unimp
+80005e96: 0000 unimp
+80005e98: 0000 unimp
+80005e9a: 0000 unimp
+80005e9c: 0000 unimp
+80005e9e: 0000 unimp
+80005ea0: 0000 unimp
+80005ea2: 0000 unimp
+80005ea4: 0000 unimp
+80005ea6: 0000 unimp
+80005ea8: 0000 unimp
+80005eaa: 0000 unimp
+80005eac: 0000 unimp
+80005eae: 0000 unimp
+80005eb0: 0000 unimp
+80005eb2: 0000 unimp
+80005eb4: 0000 unimp
+80005eb6: 0000 unimp
+80005eb8: 0000 unimp
+80005eba: 0000 unimp
+80005ebc: 0000 unimp
+80005ebe: 0000 unimp
+80005ec0: 0000 unimp
+80005ec2: 0000 unimp
+80005ec4: 0000 unimp
+80005ec6: 0000 unimp
+80005ec8: 0000 unimp
+80005eca: 0000 unimp
+80005ecc: 0000 unimp
+80005ece: 0000 unimp
+80005ed0: 0000 unimp
+80005ed2: 0000 unimp
+80005ed4: 0000 unimp
+80005ed6: 0000 unimp
+80005ed8: 0000 unimp
+80005eda: 0000 unimp
+80005edc: 0000 unimp
+80005ede: 0000 unimp
+80005ee0: 0000 unimp
+80005ee2: 0000 unimp
+80005ee4: 0000 unimp
+80005ee6: 0000 unimp
+80005ee8: 0000 unimp
+80005eea: 0000 unimp
+80005eec: 0000 unimp
+80005eee: 0000 unimp
+80005ef0: 0000 unimp
+80005ef2: 0000 unimp
+80005ef4: 0000 unimp
+80005ef6: 0000 unimp
+80005ef8: 0000 unimp
+80005efa: 0000 unimp
+80005efc: 0000 unimp
+80005efe: 0000 unimp
+80005f00: 0000 unimp
+80005f02: 0000 unimp
+80005f04: 0000 unimp
+80005f06: 0000 unimp
+80005f08: 0000 unimp
+80005f0a: 0000 unimp
+80005f0c: 0000 unimp
+80005f0e: 0000 unimp
+80005f10: 0000 unimp
+80005f12: 0000 unimp
+80005f14: 0000 unimp
+80005f16: 0000 unimp
+80005f18: 0000 unimp
+80005f1a: 0000 unimp
+80005f1c: 0000 unimp
+80005f1e: 0000 unimp
+80005f20: 0000 unimp
+80005f22: 0000 unimp
+80005f24: 0000 unimp
+80005f26: 0000 unimp
+80005f28: 0000 unimp
+80005f2a: 0000 unimp
+80005f2c: 0000 unimp
+80005f2e: 0000 unimp
+80005f30: 0000 unimp
+80005f32: 0000 unimp
+80005f34: 0000 unimp
+80005f36: 0000 unimp
+80005f38: 0000 unimp
+80005f3a: 0000 unimp
+80005f3c: 0000 unimp
+80005f3e: 0000 unimp
+80005f40: 0000 unimp
+80005f42: 0000 unimp
+80005f44: 0000 unimp
+80005f46: 0000 unimp
+80005f48: 0000 unimp
+80005f4a: 0000 unimp
+80005f4c: 0000 unimp
+80005f4e: 0000 unimp
+80005f50: 0000 unimp
+80005f52: 0000 unimp
+80005f54: 0000 unimp
+80005f56: 0000 unimp
+80005f58: 0000 unimp
+80005f5a: 0000 unimp
+80005f5c: 0000 unimp
+80005f5e: 0000 unimp
+80005f60: 0000 unimp
+80005f62: 0000 unimp
+80005f64: 0000 unimp
+80005f66: 0000 unimp
+80005f68: 0000 unimp
+80005f6a: 0000 unimp
+80005f6c: 0000 unimp
+80005f6e: 0000 unimp
+80005f70: 0000 unimp
+80005f72: 0000 unimp
+80005f74: 0000 unimp
+80005f76: 0000 unimp
+80005f78: 0000 unimp
+80005f7a: 0000 unimp
+80005f7c: 0000 unimp
+80005f7e: 0000 unimp
+80005f80: 0000 unimp
+80005f82: 0000 unimp
+80005f84: 0000 unimp
+80005f86: 0000 unimp
+80005f88: 0000 unimp
+80005f8a: 0000 unimp
+80005f8c: 0000 unimp
+80005f8e: 0000 unimp
+80005f90: 0000 unimp
+80005f92: 0000 unimp
+80005f94: 0000 unimp
+80005f96: 0000 unimp
+80005f98: 0000 unimp
+80005f9a: 0000 unimp
+80005f9c: 0000 unimp
+80005f9e: 0000 unimp
+80005fa0: 0000 unimp
+80005fa2: 0000 unimp
+80005fa4: 0000 unimp
+80005fa6: 0000 unimp
+80005fa8: 0000 unimp
+80005faa: 0000 unimp
+80005fac: 0000 unimp
+80005fae: 0000 unimp
+80005fb0: 0000 unimp
+80005fb2: 0000 unimp
+80005fb4: 0000 unimp
+80005fb6: 0000 unimp
+80005fb8: 0000 unimp
+80005fba: 0000 unimp
+80005fbc: 0000 unimp
+80005fbe: 0000 unimp
+80005fc0: 0000 unimp
+80005fc2: 0000 unimp
+80005fc4: 0000 unimp
+80005fc6: 0000 unimp
+80005fc8: 0000 unimp
+80005fca: 0000 unimp
+80005fcc: 0000 unimp
+80005fce: 0000 unimp
+80005fd0: 0000 unimp
diff --git a/test/riscv-tests/rv32uc-v-rvc.elf b/test/riscv-tests/rv32uc-v-rvc.elf
new file mode 100644
index 0000000..f8d54be
--- /dev/null
+++ b/test/riscv-tests/rv32uc-v-rvc.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-add.dump b/test/riscv-tests/rv32ui-p-add.dump
new file mode 100644
index 0000000..90edaa4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-add.dump
@@ -0,0 +1,479 @@
+
+rv32ui-p-add: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 00208f33 add t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4ddf1663 bne t5,t4,800005dc <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 00208f33 add t5,ra,sp
+80000120: 00200e93 li t4,2
+80000124: 00300193 li gp,3
+80000128: 4bdf1a63 bne t5,t4,800005dc <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 00208f33 add t5,ra,sp
+80000138: 00a00e93 li t4,10
+8000013c: 00400193 li gp,4
+80000140: 49df1e63 bne t5,t4,800005dc <fail>
+
+80000144 <test_5>:
+80000144: 00000093 li ra,0
+80000148: ffff8137 lui sp,0xffff8
+8000014c: 00208f33 add t5,ra,sp
+80000150: ffff8eb7 lui t4,0xffff8
+80000154: 00500193 li gp,5
+80000158: 49df1263 bne t5,t4,800005dc <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00000113 li sp,0
+80000164: 00208f33 add t5,ra,sp
+80000168: 80000eb7 lui t4,0x80000
+8000016c: 00600193 li gp,6
+80000170: 47df1663 bne t5,t4,800005dc <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: ffff8137 lui sp,0xffff8
+8000017c: 00208f33 add t5,ra,sp
+80000180: 7fff8eb7 lui t4,0x7fff8
+80000184: 00700193 li gp,7
+80000188: 45df1a63 bne t5,t4,800005dc <fail>
+
+8000018c <test_8>:
+8000018c: 00000093 li ra,0
+80000190: 00008137 lui sp,0x8
+80000194: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80000198: 00208f33 add t5,ra,sp
+8000019c: 00008eb7 lui t4,0x8
+800001a0: fffe8e93 addi t4,t4,-1 # 7fff <_start-0x7fff8001>
+800001a4: 00800193 li gp,8
+800001a8: 43df1a63 bne t5,t4,800005dc <fail>
+
+800001ac <test_9>:
+800001ac: 800000b7 lui ra,0x80000
+800001b0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001b4: 00000113 li sp,0
+800001b8: 00208f33 add t5,ra,sp
+800001bc: 80000eb7 lui t4,0x80000
+800001c0: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+800001c4: 00900193 li gp,9
+800001c8: 41df1a63 bne t5,t4,800005dc <fail>
+
+800001cc <test_10>:
+800001cc: 800000b7 lui ra,0x80000
+800001d0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001d4: 00008137 lui sp,0x8
+800001d8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001dc: 00208f33 add t5,ra,sp
+800001e0: 80008eb7 lui t4,0x80008
+800001e4: ffee8e93 addi t4,t4,-2 # 80007ffe <_end+0x5ffe>
+800001e8: 00a00193 li gp,10
+800001ec: 3fdf1863 bne t5,t4,800005dc <fail>
+
+800001f0 <test_11>:
+800001f0: 800000b7 lui ra,0x80000
+800001f4: 00008137 lui sp,0x8
+800001f8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001fc: 00208f33 add t5,ra,sp
+80000200: 80008eb7 lui t4,0x80008
+80000204: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x5fff>
+80000208: 00b00193 li gp,11
+8000020c: 3ddf1863 bne t5,t4,800005dc <fail>
+
+80000210 <test_12>:
+80000210: 800000b7 lui ra,0x80000
+80000214: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000218: ffff8137 lui sp,0xffff8
+8000021c: 00208f33 add t5,ra,sp
+80000220: 7fff8eb7 lui t4,0x7fff8
+80000224: fffe8e93 addi t4,t4,-1 # 7fff7fff <_start-0x8001>
+80000228: 00c00193 li gp,12
+8000022c: 3bdf1863 bne t5,t4,800005dc <fail>
+
+80000230 <test_13>:
+80000230: 00000093 li ra,0
+80000234: fff00113 li sp,-1
+80000238: 00208f33 add t5,ra,sp
+8000023c: fff00e93 li t4,-1
+80000240: 00d00193 li gp,13
+80000244: 39df1c63 bne t5,t4,800005dc <fail>
+
+80000248 <test_14>:
+80000248: fff00093 li ra,-1
+8000024c: 00100113 li sp,1
+80000250: 00208f33 add t5,ra,sp
+80000254: 00000e93 li t4,0
+80000258: 00e00193 li gp,14
+8000025c: 39df1063 bne t5,t4,800005dc <fail>
+
+80000260 <test_15>:
+80000260: fff00093 li ra,-1
+80000264: fff00113 li sp,-1
+80000268: 00208f33 add t5,ra,sp
+8000026c: ffe00e93 li t4,-2
+80000270: 00f00193 li gp,15
+80000274: 37df1463 bne t5,t4,800005dc <fail>
+
+80000278 <test_16>:
+80000278: 00100093 li ra,1
+8000027c: 80000137 lui sp,0x80000
+80000280: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffffdfff>
+80000284: 00208f33 add t5,ra,sp
+80000288: 80000eb7 lui t4,0x80000
+8000028c: 01000193 li gp,16
+80000290: 35df1663 bne t5,t4,800005dc <fail>
+
+80000294 <test_17>:
+80000294: 00d00093 li ra,13
+80000298: 00b00113 li sp,11
+8000029c: 002080b3 add ra,ra,sp
+800002a0: 01800e93 li t4,24
+800002a4: 01100193 li gp,17
+800002a8: 33d09a63 bne ra,t4,800005dc <fail>
+
+800002ac <test_18>:
+800002ac: 00e00093 li ra,14
+800002b0: 00b00113 li sp,11
+800002b4: 00208133 add sp,ra,sp
+800002b8: 01900e93 li t4,25
+800002bc: 01200193 li gp,18
+800002c0: 31d11e63 bne sp,t4,800005dc <fail>
+
+800002c4 <test_19>:
+800002c4: 00d00093 li ra,13
+800002c8: 001080b3 add ra,ra,ra
+800002cc: 01a00e93 li t4,26
+800002d0: 01300193 li gp,19
+800002d4: 31d09463 bne ra,t4,800005dc <fail>
+
+800002d8 <test_20>:
+800002d8: 00000213 li tp,0
+800002dc: 00d00093 li ra,13
+800002e0: 00b00113 li sp,11
+800002e4: 00208f33 add t5,ra,sp
+800002e8: 000f0313 mv t1,t5
+800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f0: 00200293 li t0,2
+800002f4: fe5214e3 bne tp,t0,800002dc <test_20+0x4>
+800002f8: 01800e93 li t4,24
+800002fc: 01400193 li gp,20
+80000300: 2dd31e63 bne t1,t4,800005dc <fail>
+
+80000304 <test_21>:
+80000304: 00000213 li tp,0
+80000308: 00e00093 li ra,14
+8000030c: 00b00113 li sp,11
+80000310: 00208f33 add t5,ra,sp
+80000314: 00000013 nop
+80000318: 000f0313 mv t1,t5
+8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000320: 00200293 li t0,2
+80000324: fe5212e3 bne tp,t0,80000308 <test_21+0x4>
+80000328: 01900e93 li t4,25
+8000032c: 01500193 li gp,21
+80000330: 2bd31663 bne t1,t4,800005dc <fail>
+
+80000334 <test_22>:
+80000334: 00000213 li tp,0
+80000338: 00f00093 li ra,15
+8000033c: 00b00113 li sp,11
+80000340: 00208f33 add t5,ra,sp
+80000344: 00000013 nop
+80000348: 00000013 nop
+8000034c: 000f0313 mv t1,t5
+80000350: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000354: 00200293 li t0,2
+80000358: fe5210e3 bne tp,t0,80000338 <test_22+0x4>
+8000035c: 01a00e93 li t4,26
+80000360: 01600193 li gp,22
+80000364: 27d31c63 bne t1,t4,800005dc <fail>
+
+80000368 <test_23>:
+80000368: 00000213 li tp,0
+8000036c: 00d00093 li ra,13
+80000370: 00b00113 li sp,11
+80000374: 00208f33 add t5,ra,sp
+80000378: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000037c: 00200293 li t0,2
+80000380: fe5216e3 bne tp,t0,8000036c <test_23+0x4>
+80000384: 01800e93 li t4,24
+80000388: 01700193 li gp,23
+8000038c: 25df1863 bne t5,t4,800005dc <fail>
+
+80000390 <test_24>:
+80000390: 00000213 li tp,0
+80000394: 00e00093 li ra,14
+80000398: 00b00113 li sp,11
+8000039c: 00000013 nop
+800003a0: 00208f33 add t5,ra,sp
+800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003a8: 00200293 li t0,2
+800003ac: fe5214e3 bne tp,t0,80000394 <test_24+0x4>
+800003b0: 01900e93 li t4,25
+800003b4: 01800193 li gp,24
+800003b8: 23df1263 bne t5,t4,800005dc <fail>
+
+800003bc <test_25>:
+800003bc: 00000213 li tp,0
+800003c0: 00f00093 li ra,15
+800003c4: 00b00113 li sp,11
+800003c8: 00000013 nop
+800003cc: 00000013 nop
+800003d0: 00208f33 add t5,ra,sp
+800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003d8: 00200293 li t0,2
+800003dc: fe5212e3 bne tp,t0,800003c0 <test_25+0x4>
+800003e0: 01a00e93 li t4,26
+800003e4: 01900193 li gp,25
+800003e8: 1fdf1a63 bne t5,t4,800005dc <fail>
+
+800003ec <test_26>:
+800003ec: 00000213 li tp,0
+800003f0: 00d00093 li ra,13
+800003f4: 00000013 nop
+800003f8: 00b00113 li sp,11
+800003fc: 00208f33 add t5,ra,sp
+80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000404: 00200293 li t0,2
+80000408: fe5214e3 bne tp,t0,800003f0 <test_26+0x4>
+8000040c: 01800e93 li t4,24
+80000410: 01a00193 li gp,26
+80000414: 1ddf1463 bne t5,t4,800005dc <fail>
+
+80000418 <test_27>:
+80000418: 00000213 li tp,0
+8000041c: 00e00093 li ra,14
+80000420: 00000013 nop
+80000424: 00b00113 li sp,11
+80000428: 00000013 nop
+8000042c: 00208f33 add t5,ra,sp
+80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000434: 00200293 li t0,2
+80000438: fe5212e3 bne tp,t0,8000041c <test_27+0x4>
+8000043c: 01900e93 li t4,25
+80000440: 01b00193 li gp,27
+80000444: 19df1c63 bne t5,t4,800005dc <fail>
+
+80000448 <test_28>:
+80000448: 00000213 li tp,0
+8000044c: 00f00093 li ra,15
+80000450: 00000013 nop
+80000454: 00000013 nop
+80000458: 00b00113 li sp,11
+8000045c: 00208f33 add t5,ra,sp
+80000460: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000464: 00200293 li t0,2
+80000468: fe5212e3 bne tp,t0,8000044c <test_28+0x4>
+8000046c: 01a00e93 li t4,26
+80000470: 01c00193 li gp,28
+80000474: 17df1463 bne t5,t4,800005dc <fail>
+
+80000478 <test_29>:
+80000478: 00000213 li tp,0
+8000047c: 00b00113 li sp,11
+80000480: 00d00093 li ra,13
+80000484: 00208f33 add t5,ra,sp
+80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000048c: 00200293 li t0,2
+80000490: fe5216e3 bne tp,t0,8000047c <test_29+0x4>
+80000494: 01800e93 li t4,24
+80000498: 01d00193 li gp,29
+8000049c: 15df1063 bne t5,t4,800005dc <fail>
+
+800004a0 <test_30>:
+800004a0: 00000213 li tp,0
+800004a4: 00b00113 li sp,11
+800004a8: 00e00093 li ra,14
+800004ac: 00000013 nop
+800004b0: 00208f33 add t5,ra,sp
+800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004b8: 00200293 li t0,2
+800004bc: fe5214e3 bne tp,t0,800004a4 <test_30+0x4>
+800004c0: 01900e93 li t4,25
+800004c4: 01e00193 li gp,30
+800004c8: 11df1a63 bne t5,t4,800005dc <fail>
+
+800004cc <test_31>:
+800004cc: 00000213 li tp,0
+800004d0: 00b00113 li sp,11
+800004d4: 00f00093 li ra,15
+800004d8: 00000013 nop
+800004dc: 00000013 nop
+800004e0: 00208f33 add t5,ra,sp
+800004e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004e8: 00200293 li t0,2
+800004ec: fe5212e3 bne tp,t0,800004d0 <test_31+0x4>
+800004f0: 01a00e93 li t4,26
+800004f4: 01f00193 li gp,31
+800004f8: 0fdf1263 bne t5,t4,800005dc <fail>
+
+800004fc <test_32>:
+800004fc: 00000213 li tp,0
+80000500: 00b00113 li sp,11
+80000504: 00000013 nop
+80000508: 00d00093 li ra,13
+8000050c: 00208f33 add t5,ra,sp
+80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000514: 00200293 li t0,2
+80000518: fe5214e3 bne tp,t0,80000500 <test_32+0x4>
+8000051c: 01800e93 li t4,24
+80000520: 02000193 li gp,32
+80000524: 0bdf1c63 bne t5,t4,800005dc <fail>
+
+80000528 <test_33>:
+80000528: 00000213 li tp,0
+8000052c: 00b00113 li sp,11
+80000530: 00000013 nop
+80000534: 00e00093 li ra,14
+80000538: 00000013 nop
+8000053c: 00208f33 add t5,ra,sp
+80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000544: 00200293 li t0,2
+80000548: fe5212e3 bne tp,t0,8000052c <test_33+0x4>
+8000054c: 01900e93 li t4,25
+80000550: 02100193 li gp,33
+80000554: 09df1463 bne t5,t4,800005dc <fail>
+
+80000558 <test_34>:
+80000558: 00000213 li tp,0
+8000055c: 00b00113 li sp,11
+80000560: 00000013 nop
+80000564: 00000013 nop
+80000568: 00f00093 li ra,15
+8000056c: 00208f33 add t5,ra,sp
+80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000574: 00200293 li t0,2
+80000578: fe5212e3 bne tp,t0,8000055c <test_34+0x4>
+8000057c: 01a00e93 li t4,26
+80000580: 02200193 li gp,34
+80000584: 05df1c63 bne t5,t4,800005dc <fail>
+
+80000588 <test_35>:
+80000588: 00f00093 li ra,15
+8000058c: 00100133 add sp,zero,ra
+80000590: 00f00e93 li t4,15
+80000594: 02300193 li gp,35
+80000598: 05d11263 bne sp,t4,800005dc <fail>
+
+8000059c <test_36>:
+8000059c: 02000093 li ra,32
+800005a0: 00008133 add sp,ra,zero
+800005a4: 02000e93 li t4,32
+800005a8: 02400193 li gp,36
+800005ac: 03d11863 bne sp,t4,800005dc <fail>
+
+800005b0 <test_37>:
+800005b0: 000000b3 add ra,zero,zero
+800005b4: 00000e93 li t4,0
+800005b8: 02500193 li gp,37
+800005bc: 03d09063 bne ra,t4,800005dc <fail>
+
+800005c0 <test_38>:
+800005c0: 01000093 li ra,16
+800005c4: 01e00113 li sp,30
+800005c8: 00208033 add zero,ra,sp
+800005cc: 00000e93 li t4,0
+800005d0: 02600193 li gp,38
+800005d4: 01d01463 bne zero,t4,800005dc <fail>
+800005d8: 00301c63 bne zero,gp,800005f0 <pass>
+
+800005dc <fail>:
+800005dc: 0ff0000f fence
+800005e0: 00018063 beqz gp,800005e0 <fail+0x4>
+800005e4: 00119193 slli gp,gp,0x1
+800005e8: 0011e193 ori gp,gp,1
+800005ec: 00000073 ecall
+
+800005f0 <pass>:
+800005f0: 0ff0000f fence
+800005f4: 00100193 li gp,1
+800005f8: 00000073 ecall
+800005fc: c0001073 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-add.elf b/test/riscv-tests/rv32ui-p-add.elf
new file mode 100644
index 0000000..a32ea33
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-add.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-addi.dump b/test/riscv-tests/rv32ui-p-addi.dump
new file mode 100644
index 0000000..d72c7b3
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-addi.dump
@@ -0,0 +1,315 @@
+
+rv32ui-p-addi: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00008f13 mv t5,ra
+80000104: 00000e93 li t4,0
+80000108: 00200193 li gp,2
+8000010c: 27df1c63 bne t5,t4,80000384 <fail>
+
+80000110 <test_3>:
+80000110: 00100093 li ra,1
+80000114: 00108f13 addi t5,ra,1
+80000118: 00200e93 li t4,2
+8000011c: 00300193 li gp,3
+80000120: 27df1263 bne t5,t4,80000384 <fail>
+
+80000124 <test_4>:
+80000124: 00300093 li ra,3
+80000128: 00708f13 addi t5,ra,7
+8000012c: 00a00e93 li t4,10
+80000130: 00400193 li gp,4
+80000134: 25df1863 bne t5,t4,80000384 <fail>
+
+80000138 <test_5>:
+80000138: 00000093 li ra,0
+8000013c: 80008f13 addi t5,ra,-2048
+80000140: 80000e93 li t4,-2048
+80000144: 00500193 li gp,5
+80000148: 23df1e63 bne t5,t4,80000384 <fail>
+
+8000014c <test_6>:
+8000014c: 800000b7 lui ra,0x80000
+80000150: 00008f13 mv t5,ra
+80000154: 80000eb7 lui t4,0x80000
+80000158: 00600193 li gp,6
+8000015c: 23df1463 bne t5,t4,80000384 <fail>
+
+80000160 <test_7>:
+80000160: 800000b7 lui ra,0x80000
+80000164: 80008f13 addi t5,ra,-2048 # 7ffff800 <_end+0xffffd800>
+80000168: 80000eb7 lui t4,0x80000
+8000016c: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffffd800>
+80000170: 00700193 li gp,7
+80000174: 21df1863 bne t5,t4,80000384 <fail>
+
+80000178 <test_8>:
+80000178: 00000093 li ra,0
+8000017c: 7ff08f13 addi t5,ra,2047
+80000180: 7ff00e93 li t4,2047
+80000184: 00800193 li gp,8
+80000188: 1fdf1e63 bne t5,t4,80000384 <fail>
+
+8000018c <test_9>:
+8000018c: 800000b7 lui ra,0x80000
+80000190: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000194: 00008f13 mv t5,ra
+80000198: 80000eb7 lui t4,0x80000
+8000019c: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+800001a0: 00900193 li gp,9
+800001a4: 1fdf1063 bne t5,t4,80000384 <fail>
+
+800001a8 <test_10>:
+800001a8: 800000b7 lui ra,0x80000
+800001ac: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001b0: 7ff08f13 addi t5,ra,2047
+800001b4: 80000eb7 lui t4,0x80000
+800001b8: 7fee8e93 addi t4,t4,2046 # 800007fe <_end+0xffffe7fe>
+800001bc: 00a00193 li gp,10
+800001c0: 1ddf1263 bne t5,t4,80000384 <fail>
+
+800001c4 <test_11>:
+800001c4: 800000b7 lui ra,0x80000
+800001c8: 7ff08f13 addi t5,ra,2047 # 800007ff <_end+0xffffe7ff>
+800001cc: 80000eb7 lui t4,0x80000
+800001d0: 7ffe8e93 addi t4,t4,2047 # 800007ff <_end+0xffffe7ff>
+800001d4: 00b00193 li gp,11
+800001d8: 1bdf1663 bne t5,t4,80000384 <fail>
+
+800001dc <test_12>:
+800001dc: 800000b7 lui ra,0x80000
+800001e0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001e4: 80008f13 addi t5,ra,-2048
+800001e8: 7ffffeb7 lui t4,0x7ffff
+800001ec: 7ffe8e93 addi t4,t4,2047 # 7ffff7ff <_start-0x801>
+800001f0: 00c00193 li gp,12
+800001f4: 19df1863 bne t5,t4,80000384 <fail>
+
+800001f8 <test_13>:
+800001f8: 00000093 li ra,0
+800001fc: fff08f13 addi t5,ra,-1
+80000200: fff00e93 li t4,-1
+80000204: 00d00193 li gp,13
+80000208: 17df1e63 bne t5,t4,80000384 <fail>
+
+8000020c <test_14>:
+8000020c: fff00093 li ra,-1
+80000210: 00108f13 addi t5,ra,1
+80000214: 00000e93 li t4,0
+80000218: 00e00193 li gp,14
+8000021c: 17df1463 bne t5,t4,80000384 <fail>
+
+80000220 <test_15>:
+80000220: fff00093 li ra,-1
+80000224: fff08f13 addi t5,ra,-1
+80000228: ffe00e93 li t4,-2
+8000022c: 00f00193 li gp,15
+80000230: 15df1a63 bne t5,t4,80000384 <fail>
+
+80000234 <test_16>:
+80000234: 800000b7 lui ra,0x80000
+80000238: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+8000023c: 00108f13 addi t5,ra,1
+80000240: 80000eb7 lui t4,0x80000
+80000244: 01000193 li gp,16
+80000248: 13df1e63 bne t5,t4,80000384 <fail>
+
+8000024c <test_17>:
+8000024c: 00d00093 li ra,13
+80000250: 00b08093 addi ra,ra,11
+80000254: 01800e93 li t4,24
+80000258: 01100193 li gp,17
+8000025c: 13d09463 bne ra,t4,80000384 <fail>
+
+80000260 <test_18>:
+80000260: 00000213 li tp,0
+80000264: 00d00093 li ra,13
+80000268: 00b08f13 addi t5,ra,11
+8000026c: 000f0313 mv t1,t5
+80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000274: 00200293 li t0,2
+80000278: fe5216e3 bne tp,t0,80000264 <test_18+0x4>
+8000027c: 01800e93 li t4,24
+80000280: 01200193 li gp,18
+80000284: 11d31063 bne t1,t4,80000384 <fail>
+
+80000288 <test_19>:
+80000288: 00000213 li tp,0
+8000028c: 00d00093 li ra,13
+80000290: 00a08f13 addi t5,ra,10
+80000294: 00000013 nop
+80000298: 000f0313 mv t1,t5
+8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a0: 00200293 li t0,2
+800002a4: fe5214e3 bne tp,t0,8000028c <test_19+0x4>
+800002a8: 01700e93 li t4,23
+800002ac: 01300193 li gp,19
+800002b0: 0dd31a63 bne t1,t4,80000384 <fail>
+
+800002b4 <test_20>:
+800002b4: 00000213 li tp,0
+800002b8: 00d00093 li ra,13
+800002bc: 00908f13 addi t5,ra,9
+800002c0: 00000013 nop
+800002c4: 00000013 nop
+800002c8: 000f0313 mv t1,t5
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5212e3 bne tp,t0,800002b8 <test_20+0x4>
+800002d8: 01600e93 li t4,22
+800002dc: 01400193 li gp,20
+800002e0: 0bd31263 bne t1,t4,80000384 <fail>
+
+800002e4 <test_21>:
+800002e4: 00000213 li tp,0
+800002e8: 00d00093 li ra,13
+800002ec: 00b08f13 addi t5,ra,11
+800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f4: 00200293 li t0,2
+800002f8: fe5218e3 bne tp,t0,800002e8 <test_21+0x4>
+800002fc: 01800e93 li t4,24
+80000300: 01500193 li gp,21
+80000304: 09df1063 bne t5,t4,80000384 <fail>
+
+80000308 <test_22>:
+80000308: 00000213 li tp,0
+8000030c: 00d00093 li ra,13
+80000310: 00000013 nop
+80000314: 00a08f13 addi t5,ra,10
+80000318: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000031c: 00200293 li t0,2
+80000320: fe5216e3 bne tp,t0,8000030c <test_22+0x4>
+80000324: 01700e93 li t4,23
+80000328: 01600193 li gp,22
+8000032c: 05df1c63 bne t5,t4,80000384 <fail>
+
+80000330 <test_23>:
+80000330: 00000213 li tp,0
+80000334: 00d00093 li ra,13
+80000338: 00000013 nop
+8000033c: 00000013 nop
+80000340: 00908f13 addi t5,ra,9
+80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000348: 00200293 li t0,2
+8000034c: fe5214e3 bne tp,t0,80000334 <test_23+0x4>
+80000350: 01600e93 li t4,22
+80000354: 01700193 li gp,23
+80000358: 03df1663 bne t5,t4,80000384 <fail>
+
+8000035c <test_24>:
+8000035c: 02000093 li ra,32
+80000360: 02000e93 li t4,32
+80000364: 01800193 li gp,24
+80000368: 01d09e63 bne ra,t4,80000384 <fail>
+
+8000036c <test_25>:
+8000036c: 02100093 li ra,33
+80000370: 03208013 addi zero,ra,50
+80000374: 00000e93 li t4,0
+80000378: 01900193 li gp,25
+8000037c: 01d01463 bne zero,t4,80000384 <fail>
+80000380: 00301c63 bne zero,gp,80000398 <pass>
+
+80000384 <fail>:
+80000384: 0ff0000f fence
+80000388: 00018063 beqz gp,80000388 <fail+0x4>
+8000038c: 00119193 slli gp,gp,0x1
+80000390: 0011e193 ori gp,gp,1
+80000394: 00000073 ecall
+
+80000398 <pass>:
+80000398: 0ff0000f fence
+8000039c: 00100193 li gp,1
+800003a0: 00000073 ecall
+800003a4: c0001073 unimp
+800003a8: 0000 unimp
+800003aa: 0000 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-addi.elf b/test/riscv-tests/rv32ui-p-addi.elf
new file mode 100644
index 0000000..25f1c02
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-addi.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-and.dump b/test/riscv-tests/rv32ui-p-and.dump
new file mode 100644
index 0000000..ee8af53
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-and.dump
@@ -0,0 +1,467 @@
+
+rv32ui-p-and: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: ff0100b7 lui ra,0xff010
+80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000104: 0f0f1137 lui sp,0xf0f1
+80000108: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+8000010c: 0020ff33 and t5,ra,sp
+80000110: 0f001eb7 lui t4,0xf001
+80000114: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80000118: 00200193 li gp,2
+8000011c: 49df1c63 bne t5,t4,800005b4 <fail>
+
+80000120 <test_3>:
+80000120: 0ff010b7 lui ra,0xff01
+80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000128: f0f0f137 lui sp,0xf0f0f
+8000012c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000130: 0020ff33 and t5,ra,sp
+80000134: 00f00eb7 lui t4,0xf00
+80000138: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+8000013c: 00300193 li gp,3
+80000140: 47df1a63 bne t5,t4,800005b4 <fail>
+
+80000144 <test_4>:
+80000144: 00ff00b7 lui ra,0xff0
+80000148: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000014c: 0f0f1137 lui sp,0xf0f1
+80000150: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000154: 0020ff33 and t5,ra,sp
+80000158: 000f0eb7 lui t4,0xf0
+8000015c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80000160: 00400193 li gp,4
+80000164: 45df1863 bne t5,t4,800005b4 <fail>
+
+80000168 <test_5>:
+80000168: f00ff0b7 lui ra,0xf00ff
+8000016c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000170: f0f0f137 lui sp,0xf0f0f
+80000174: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000178: 0020ff33 and t5,ra,sp
+8000017c: f000feb7 lui t4,0xf000f
+80000180: 00500193 li gp,5
+80000184: 43df1863 bne t5,t4,800005b4 <fail>
+
+80000188 <test_6>:
+80000188: ff0100b7 lui ra,0xff010
+8000018c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000190: 0f0f1137 lui sp,0xf0f1
+80000194: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000198: 0020f0b3 and ra,ra,sp
+8000019c: 0f001eb7 lui t4,0xf001
+800001a0: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+800001a4: 00600193 li gp,6
+800001a8: 41d09663 bne ra,t4,800005b4 <fail>
+
+800001ac <test_7>:
+800001ac: 0ff010b7 lui ra,0xff01
+800001b0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800001b4: f0f0f137 lui sp,0xf0f0f
+800001b8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800001bc: 0020f133 and sp,ra,sp
+800001c0: 00f00eb7 lui t4,0xf00
+800001c4: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+800001c8: 00700193 li gp,7
+800001cc: 3fd11463 bne sp,t4,800005b4 <fail>
+
+800001d0 <test_8>:
+800001d0: ff0100b7 lui ra,0xff010
+800001d4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001d8: 0010f0b3 and ra,ra,ra
+800001dc: ff010eb7 lui t4,0xff010
+800001e0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+800001e4: 00800193 li gp,8
+800001e8: 3dd09663 bne ra,t4,800005b4 <fail>
+
+800001ec <test_9>:
+800001ec: 00000213 li tp,0
+800001f0: ff0100b7 lui ra,0xff010
+800001f4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001f8: 0f0f1137 lui sp,0xf0f1
+800001fc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000200: 0020ff33 and t5,ra,sp
+80000204: 000f0313 mv t1,t5
+80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000020c: 00200293 li t0,2
+80000210: fe5210e3 bne tp,t0,800001f0 <test_9+0x4>
+80000214: 0f001eb7 lui t4,0xf001
+80000218: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+8000021c: 00900193 li gp,9
+80000220: 39d31a63 bne t1,t4,800005b4 <fail>
+
+80000224 <test_10>:
+80000224: 00000213 li tp,0
+80000228: 0ff010b7 lui ra,0xff01
+8000022c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000230: f0f0f137 lui sp,0xf0f0f
+80000234: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000238: 0020ff33 and t5,ra,sp
+8000023c: 00000013 nop
+80000240: 000f0313 mv t1,t5
+80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000248: 00200293 li t0,2
+8000024c: fc521ee3 bne tp,t0,80000228 <test_10+0x4>
+80000250: 00f00eb7 lui t4,0xf00
+80000254: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80000258: 00a00193 li gp,10
+8000025c: 35d31c63 bne t1,t4,800005b4 <fail>
+
+80000260 <test_11>:
+80000260: 00000213 li tp,0
+80000264: 00ff00b7 lui ra,0xff0
+80000268: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000026c: 0f0f1137 lui sp,0xf0f1
+80000270: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000274: 0020ff33 and t5,ra,sp
+80000278: 00000013 nop
+8000027c: 00000013 nop
+80000280: 000f0313 mv t1,t5
+80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000288: 00200293 li t0,2
+8000028c: fc521ce3 bne tp,t0,80000264 <test_11+0x4>
+80000290: 000f0eb7 lui t4,0xf0
+80000294: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80000298: 00b00193 li gp,11
+8000029c: 31d31c63 bne t1,t4,800005b4 <fail>
+
+800002a0 <test_12>:
+800002a0: 00000213 li tp,0
+800002a4: ff0100b7 lui ra,0xff010
+800002a8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800002ac: 0f0f1137 lui sp,0xf0f1
+800002b0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800002b4: 0020ff33 and t5,ra,sp
+800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002bc: 00200293 li t0,2
+800002c0: fe5212e3 bne tp,t0,800002a4 <test_12+0x4>
+800002c4: 0f001eb7 lui t4,0xf001
+800002c8: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+800002cc: 00c00193 li gp,12
+800002d0: 2fdf1263 bne t5,t4,800005b4 <fail>
+
+800002d4 <test_13>:
+800002d4: 00000213 li tp,0
+800002d8: 0ff010b7 lui ra,0xff01
+800002dc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800002e0: f0f0f137 lui sp,0xf0f0f
+800002e4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800002e8: 00000013 nop
+800002ec: 0020ff33 and t5,ra,sp
+800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f4: 00200293 li t0,2
+800002f8: fe5210e3 bne tp,t0,800002d8 <test_13+0x4>
+800002fc: 00f00eb7 lui t4,0xf00
+80000300: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80000304: 00d00193 li gp,13
+80000308: 2bdf1663 bne t5,t4,800005b4 <fail>
+
+8000030c <test_14>:
+8000030c: 00000213 li tp,0
+80000310: 00ff00b7 lui ra,0xff0
+80000314: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000318: 0f0f1137 lui sp,0xf0f1
+8000031c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000320: 00000013 nop
+80000324: 00000013 nop
+80000328: 0020ff33 and t5,ra,sp
+8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000330: 00200293 li t0,2
+80000334: fc521ee3 bne tp,t0,80000310 <test_14+0x4>
+80000338: 000f0eb7 lui t4,0xf0
+8000033c: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80000340: 00e00193 li gp,14
+80000344: 27df1863 bne t5,t4,800005b4 <fail>
+
+80000348 <test_15>:
+80000348: 00000213 li tp,0
+8000034c: ff0100b7 lui ra,0xff010
+80000350: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000354: 00000013 nop
+80000358: 0f0f1137 lui sp,0xf0f1
+8000035c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000360: 0020ff33 and t5,ra,sp
+80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000368: 00200293 li t0,2
+8000036c: fe5210e3 bne tp,t0,8000034c <test_15+0x4>
+80000370: 0f001eb7 lui t4,0xf001
+80000374: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80000378: 00f00193 li gp,15
+8000037c: 23df1c63 bne t5,t4,800005b4 <fail>
+
+80000380 <test_16>:
+80000380: 00000213 li tp,0
+80000384: 0ff010b7 lui ra,0xff01
+80000388: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+8000038c: 00000013 nop
+80000390: f0f0f137 lui sp,0xf0f0f
+80000394: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000398: 00000013 nop
+8000039c: 0020ff33 and t5,ra,sp
+800003a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003a4: 00200293 li t0,2
+800003a8: fc521ee3 bne tp,t0,80000384 <test_16+0x4>
+800003ac: 00f00eb7 lui t4,0xf00
+800003b0: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+800003b4: 01000193 li gp,16
+800003b8: 1fdf1e63 bne t5,t4,800005b4 <fail>
+
+800003bc <test_17>:
+800003bc: 00000213 li tp,0
+800003c0: 00ff00b7 lui ra,0xff0
+800003c4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800003c8: 00000013 nop
+800003cc: 00000013 nop
+800003d0: 0f0f1137 lui sp,0xf0f1
+800003d4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800003d8: 0020ff33 and t5,ra,sp
+800003dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003e0: 00200293 li t0,2
+800003e4: fc521ee3 bne tp,t0,800003c0 <test_17+0x4>
+800003e8: 000f0eb7 lui t4,0xf0
+800003ec: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+800003f0: 01100193 li gp,17
+800003f4: 1ddf1063 bne t5,t4,800005b4 <fail>
+
+800003f8 <test_18>:
+800003f8: 00000213 li tp,0
+800003fc: 0f0f1137 lui sp,0xf0f1
+80000400: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000404: ff0100b7 lui ra,0xff010
+80000408: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+8000040c: 0020ff33 and t5,ra,sp
+80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000414: 00200293 li t0,2
+80000418: fe5212e3 bne tp,t0,800003fc <test_18+0x4>
+8000041c: 0f001eb7 lui t4,0xf001
+80000420: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80000424: 01200193 li gp,18
+80000428: 19df1663 bne t5,t4,800005b4 <fail>
+
+8000042c <test_19>:
+8000042c: 00000213 li tp,0
+80000430: f0f0f137 lui sp,0xf0f0f
+80000434: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000438: 0ff010b7 lui ra,0xff01
+8000043c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000440: 00000013 nop
+80000444: 0020ff33 and t5,ra,sp
+80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000044c: 00200293 li t0,2
+80000450: fe5210e3 bne tp,t0,80000430 <test_19+0x4>
+80000454: 00f00eb7 lui t4,0xf00
+80000458: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+8000045c: 01300193 li gp,19
+80000460: 15df1a63 bne t5,t4,800005b4 <fail>
+
+80000464 <test_20>:
+80000464: 00000213 li tp,0
+80000468: 0f0f1137 lui sp,0xf0f1
+8000046c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000470: 00ff00b7 lui ra,0xff0
+80000474: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000478: 00000013 nop
+8000047c: 00000013 nop
+80000480: 0020ff33 and t5,ra,sp
+80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000488: 00200293 li t0,2
+8000048c: fc521ee3 bne tp,t0,80000468 <test_20+0x4>
+80000490: 000f0eb7 lui t4,0xf0
+80000494: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80000498: 01400193 li gp,20
+8000049c: 11df1c63 bne t5,t4,800005b4 <fail>
+
+800004a0 <test_21>:
+800004a0: 00000213 li tp,0
+800004a4: 0f0f1137 lui sp,0xf0f1
+800004a8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800004ac: 00000013 nop
+800004b0: ff0100b7 lui ra,0xff010
+800004b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800004b8: 0020ff33 and t5,ra,sp
+800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c0: 00200293 li t0,2
+800004c4: fe5210e3 bne tp,t0,800004a4 <test_21+0x4>
+800004c8: 0f001eb7 lui t4,0xf001
+800004cc: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+800004d0: 01500193 li gp,21
+800004d4: 0fdf1063 bne t5,t4,800005b4 <fail>
+
+800004d8 <test_22>:
+800004d8: 00000213 li tp,0
+800004dc: f0f0f137 lui sp,0xf0f0f
+800004e0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800004e4: 00000013 nop
+800004e8: 0ff010b7 lui ra,0xff01
+800004ec: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800004f0: 00000013 nop
+800004f4: 0020ff33 and t5,ra,sp
+800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004fc: 00200293 li t0,2
+80000500: fc521ee3 bne tp,t0,800004dc <test_22+0x4>
+80000504: 00f00eb7 lui t4,0xf00
+80000508: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+8000050c: 01600193 li gp,22
+80000510: 0bdf1263 bne t5,t4,800005b4 <fail>
+
+80000514 <test_23>:
+80000514: 00000213 li tp,0
+80000518: 0f0f1137 lui sp,0xf0f1
+8000051c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000520: 00000013 nop
+80000524: 00000013 nop
+80000528: 00ff00b7 lui ra,0xff0
+8000052c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000530: 0020ff33 and t5,ra,sp
+80000534: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000538: 00200293 li t0,2
+8000053c: fc521ee3 bne tp,t0,80000518 <test_23+0x4>
+80000540: 000f0eb7 lui t4,0xf0
+80000544: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80000548: 01700193 li gp,23
+8000054c: 07df1463 bne t5,t4,800005b4 <fail>
+
+80000550 <test_24>:
+80000550: ff0100b7 lui ra,0xff010
+80000554: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000558: 00107133 and sp,zero,ra
+8000055c: 00000e93 li t4,0
+80000560: 01800193 li gp,24
+80000564: 05d11863 bne sp,t4,800005b4 <fail>
+
+80000568 <test_25>:
+80000568: 00ff00b7 lui ra,0xff0
+8000056c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000570: 0000f133 and sp,ra,zero
+80000574: 00000e93 li t4,0
+80000578: 01900193 li gp,25
+8000057c: 03d11c63 bne sp,t4,800005b4 <fail>
+
+80000580 <test_26>:
+80000580: 000070b3 and ra,zero,zero
+80000584: 00000e93 li t4,0
+80000588: 01a00193 li gp,26
+8000058c: 03d09463 bne ra,t4,800005b4 <fail>
+
+80000590 <test_27>:
+80000590: 111110b7 lui ra,0x11111
+80000594: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef>
+80000598: 22222137 lui sp,0x22222
+8000059c: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde>
+800005a0: 0020f033 and zero,ra,sp
+800005a4: 00000e93 li t4,0
+800005a8: 01b00193 li gp,27
+800005ac: 01d01463 bne zero,t4,800005b4 <fail>
+800005b0: 00301c63 bne zero,gp,800005c8 <pass>
+
+800005b4 <fail>:
+800005b4: 0ff0000f fence
+800005b8: 00018063 beqz gp,800005b8 <fail+0x4>
+800005bc: 00119193 slli gp,gp,0x1
+800005c0: 0011e193 ori gp,gp,1
+800005c4: 00000073 ecall
+
+800005c8 <pass>:
+800005c8: 0ff0000f fence
+800005cc: 00100193 li gp,1
+800005d0: 00000073 ecall
+800005d4: c0001073 unimp
+800005d8: 0000 unimp
+800005da: 0000 unimp
+800005dc: 0000 unimp
+800005de: 0000 unimp
+800005e0: 0000 unimp
+800005e2: 0000 unimp
+800005e4: 0000 unimp
+800005e6: 0000 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-and.elf b/test/riscv-tests/rv32ui-p-and.elf
new file mode 100644
index 0000000..f1468e4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-and.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-andi.dump b/test/riscv-tests/rv32ui-p-andi.dump
new file mode 100644
index 0000000..38ed8b2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-andi.dump
@@ -0,0 +1,247 @@
+
+rv32ui-p-andi: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: ff0100b7 lui ra,0xff010
+80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000104: f0f0ff13 andi t5,ra,-241
+80000108: ff010eb7 lui t4,0xff010
+8000010c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+80000110: 00200193 li gp,2
+80000114: 1bdf1463 bne t5,t4,800002bc <fail>
+
+80000118 <test_3>:
+80000118: 0ff010b7 lui ra,0xff01
+8000011c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000120: 0f00ff13 andi t5,ra,240
+80000124: 0f000e93 li t4,240
+80000128: 00300193 li gp,3
+8000012c: 19df1863 bne t5,t4,800002bc <fail>
+
+80000130 <test_4>:
+80000130: 00ff00b7 lui ra,0xff0
+80000134: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000138: 70f0ff13 andi t5,ra,1807
+8000013c: 00f00e93 li t4,15
+80000140: 00400193 li gp,4
+80000144: 17df1c63 bne t5,t4,800002bc <fail>
+
+80000148 <test_5>:
+80000148: f00ff0b7 lui ra,0xf00ff
+8000014c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000150: 0f00ff13 andi t5,ra,240
+80000154: 00000e93 li t4,0
+80000158: 00500193 li gp,5
+8000015c: 17df1063 bne t5,t4,800002bc <fail>
+
+80000160 <test_6>:
+80000160: ff0100b7 lui ra,0xff010
+80000164: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000168: 0f00f093 andi ra,ra,240
+8000016c: 00000e93 li t4,0
+80000170: 00600193 li gp,6
+80000174: 15d09463 bne ra,t4,800002bc <fail>
+
+80000178 <test_7>:
+80000178: 00000213 li tp,0
+8000017c: 0ff010b7 lui ra,0xff01
+80000180: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000184: 70f0ff13 andi t5,ra,1807
+80000188: 000f0313 mv t1,t5
+8000018c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000190: 00200293 li t0,2
+80000194: fe5214e3 bne tp,t0,8000017c <test_7+0x4>
+80000198: 70000e93 li t4,1792
+8000019c: 00700193 li gp,7
+800001a0: 11d31e63 bne t1,t4,800002bc <fail>
+
+800001a4 <test_8>:
+800001a4: 00000213 li tp,0
+800001a8: 00ff00b7 lui ra,0xff0
+800001ac: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800001b0: 0f00ff13 andi t5,ra,240
+800001b4: 00000013 nop
+800001b8: 000f0313 mv t1,t5
+800001bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001c0: 00200293 li t0,2
+800001c4: fe5212e3 bne tp,t0,800001a8 <test_8+0x4>
+800001c8: 0f000e93 li t4,240
+800001cc: 00800193 li gp,8
+800001d0: 0fd31663 bne t1,t4,800002bc <fail>
+
+800001d4 <test_9>:
+800001d4: 00000213 li tp,0
+800001d8: f00ff0b7 lui ra,0xf00ff
+800001dc: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+800001e0: f0f0ff13 andi t5,ra,-241
+800001e4: 00000013 nop
+800001e8: 00000013 nop
+800001ec: 000f0313 mv t1,t5
+800001f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001f4: 00200293 li t0,2
+800001f8: fe5210e3 bne tp,t0,800001d8 <test_9+0x4>
+800001fc: f00ffeb7 lui t4,0xf00ff
+80000200: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+80000204: 00900193 li gp,9
+80000208: 0bd31a63 bne t1,t4,800002bc <fail>
+
+8000020c <test_10>:
+8000020c: 00000213 li tp,0
+80000210: 0ff010b7 lui ra,0xff01
+80000214: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000218: 70f0ff13 andi t5,ra,1807
+8000021c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000220: 00200293 li t0,2
+80000224: fe5216e3 bne tp,t0,80000210 <test_10+0x4>
+80000228: 70000e93 li t4,1792
+8000022c: 00a00193 li gp,10
+80000230: 09df1663 bne t5,t4,800002bc <fail>
+
+80000234 <test_11>:
+80000234: 00000213 li tp,0
+80000238: 00ff00b7 lui ra,0xff0
+8000023c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000240: 00000013 nop
+80000244: 0f00ff13 andi t5,ra,240
+80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000024c: 00200293 li t0,2
+80000250: fe5214e3 bne tp,t0,80000238 <test_11+0x4>
+80000254: 0f000e93 li t4,240
+80000258: 00b00193 li gp,11
+8000025c: 07df1063 bne t5,t4,800002bc <fail>
+
+80000260 <test_12>:
+80000260: 00000213 li tp,0
+80000264: f00ff0b7 lui ra,0xf00ff
+80000268: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+8000026c: 00000013 nop
+80000270: 00000013 nop
+80000274: 70f0ff13 andi t5,ra,1807
+80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000027c: 00200293 li t0,2
+80000280: fe5212e3 bne tp,t0,80000264 <test_12+0x4>
+80000284: 00f00e93 li t4,15
+80000288: 00c00193 li gp,12
+8000028c: 03df1863 bne t5,t4,800002bc <fail>
+
+80000290 <test_13>:
+80000290: 0f007093 andi ra,zero,240
+80000294: 00000e93 li t4,0
+80000298: 00d00193 li gp,13
+8000029c: 03d09063 bne ra,t4,800002bc <fail>
+
+800002a0 <test_14>:
+800002a0: 00ff00b7 lui ra,0xff0
+800002a4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800002a8: 70f0f013 andi zero,ra,1807
+800002ac: 00000e93 li t4,0
+800002b0: 00e00193 li gp,14
+800002b4: 01d01463 bne zero,t4,800002bc <fail>
+800002b8: 00301c63 bne zero,gp,800002d0 <pass>
+
+800002bc <fail>:
+800002bc: 0ff0000f fence
+800002c0: 00018063 beqz gp,800002c0 <fail+0x4>
+800002c4: 00119193 slli gp,gp,0x1
+800002c8: 0011e193 ori gp,gp,1
+800002cc: 00000073 ecall
+
+800002d0 <pass>:
+800002d0: 0ff0000f fence
+800002d4: 00100193 li gp,1
+800002d8: 00000073 ecall
+800002dc: c0001073 unimp
+800002e0: 0000 unimp
+800002e2: 0000 unimp
+800002e4: 0000 unimp
+800002e6: 0000 unimp
+800002e8: 0000 unimp
+800002ea: 0000 unimp
+800002ec: 0000 unimp
+800002ee: 0000 unimp
+800002f0: 0000 unimp
+800002f2: 0000 unimp
+800002f4: 0000 unimp
+800002f6: 0000 unimp
+800002f8: 0000 unimp
+800002fa: 0000 unimp
+800002fc: 0000 unimp
+800002fe: 0000 unimp
+80000300: 0000 unimp
+80000302: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-andi.elf b/test/riscv-tests/rv32ui-p-andi.elf
new file mode 100644
index 0000000..5c02664
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-andi.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-auipc.dump b/test/riscv-tests/rv32ui-p-auipc.dump
new file mode 100644
index 0000000..89355fa
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-auipc.dump
@@ -0,0 +1,125 @@
+
+rv32ui-p-auipc: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000013 nop
+80000100: 00002517 auipc a0,0x2
+80000104: 71c50513 addi a0,a0,1820 # 8000281c <_end+0x81c>
+80000108: 004005ef jal a1,8000010c <test_2+0x10>
+8000010c: 40b50533 sub a0,a0,a1
+80000110: 00002eb7 lui t4,0x2
+80000114: 710e8e93 addi t4,t4,1808 # 2710 <_start-0x7fffd8f0>
+80000118: 00200193 li gp,2
+8000011c: 03d51463 bne a0,t4,80000144 <fail>
+
+80000120 <test_3>:
+80000120: ffffe517 auipc a0,0xffffe
+80000124: 8fc50513 addi a0,a0,-1796 # 7fffda1c <_start-0x25e4>
+80000128: 004005ef jal a1,8000012c <test_3+0xc>
+8000012c: 40b50533 sub a0,a0,a1
+80000130: ffffeeb7 lui t4,0xffffe
+80000134: 8f0e8e93 addi t4,t4,-1808 # ffffd8f0 <_end+0x7fffb8f0>
+80000138: 00300193 li gp,3
+8000013c: 01d51463 bne a0,t4,80000144 <fail>
+80000140: 00301c63 bne zero,gp,80000158 <pass>
+
+80000144 <fail>:
+80000144: 0ff0000f fence
+80000148: 00018063 beqz gp,80000148 <fail+0x4>
+8000014c: 00119193 slli gp,gp,0x1
+80000150: 0011e193 ori gp,gp,1
+80000154: 00000073 ecall
+
+80000158 <pass>:
+80000158: 0ff0000f fence
+8000015c: 00100193 li gp,1
+80000160: 00000073 ecall
+80000164: c0001073 unimp
+80000168: 0000 unimp
+8000016a: 0000 unimp
+8000016c: 0000 unimp
+8000016e: 0000 unimp
+80000170: 0000 unimp
+80000172: 0000 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-auipc.elf b/test/riscv-tests/rv32ui-p-auipc.elf
new file mode 100644
index 0000000..c50a29c
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-auipc.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-beq.dump b/test/riscv-tests/rv32ui-p-beq.dump
new file mode 100644
index 0000000..6b07e03
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-beq.dump
@@ -0,0 +1,325 @@
+
+rv32ui-p-beq: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 00000113 li sp,0
+80000108: 00208663 beq ra,sp,80000114 <test_2+0x18>
+8000010c: 2a301863 bne zero,gp,800003bc <fail>
+80000110: 00301663 bne zero,gp,8000011c <test_3>
+80000114: fe208ee3 beq ra,sp,80000110 <test_2+0x14>
+80000118: 2a301263 bne zero,gp,800003bc <fail>
+
+8000011c <test_3>:
+8000011c: 00300193 li gp,3
+80000120: 00100093 li ra,1
+80000124: 00100113 li sp,1
+80000128: 00208663 beq ra,sp,80000134 <test_3+0x18>
+8000012c: 28301863 bne zero,gp,800003bc <fail>
+80000130: 00301663 bne zero,gp,8000013c <test_4>
+80000134: fe208ee3 beq ra,sp,80000130 <test_3+0x14>
+80000138: 28301263 bne zero,gp,800003bc <fail>
+
+8000013c <test_4>:
+8000013c: 00400193 li gp,4
+80000140: fff00093 li ra,-1
+80000144: fff00113 li sp,-1
+80000148: 00208663 beq ra,sp,80000154 <test_4+0x18>
+8000014c: 26301863 bne zero,gp,800003bc <fail>
+80000150: 00301663 bne zero,gp,8000015c <test_5>
+80000154: fe208ee3 beq ra,sp,80000150 <test_4+0x14>
+80000158: 26301263 bne zero,gp,800003bc <fail>
+
+8000015c <test_5>:
+8000015c: 00500193 li gp,5
+80000160: 00000093 li ra,0
+80000164: 00100113 li sp,1
+80000168: 00208463 beq ra,sp,80000170 <test_5+0x14>
+8000016c: 00301463 bne zero,gp,80000174 <test_5+0x18>
+80000170: 24301663 bne zero,gp,800003bc <fail>
+80000174: fe208ee3 beq ra,sp,80000170 <test_5+0x14>
+
+80000178 <test_6>:
+80000178: 00600193 li gp,6
+8000017c: 00100093 li ra,1
+80000180: 00000113 li sp,0
+80000184: 00208463 beq ra,sp,8000018c <test_6+0x14>
+80000188: 00301463 bne zero,gp,80000190 <test_6+0x18>
+8000018c: 22301863 bne zero,gp,800003bc <fail>
+80000190: fe208ee3 beq ra,sp,8000018c <test_6+0x14>
+
+80000194 <test_7>:
+80000194: 00700193 li gp,7
+80000198: fff00093 li ra,-1
+8000019c: 00100113 li sp,1
+800001a0: 00208463 beq ra,sp,800001a8 <test_7+0x14>
+800001a4: 00301463 bne zero,gp,800001ac <test_7+0x18>
+800001a8: 20301a63 bne zero,gp,800003bc <fail>
+800001ac: fe208ee3 beq ra,sp,800001a8 <test_7+0x14>
+
+800001b0 <test_8>:
+800001b0: 00800193 li gp,8
+800001b4: 00100093 li ra,1
+800001b8: fff00113 li sp,-1
+800001bc: 00208463 beq ra,sp,800001c4 <test_8+0x14>
+800001c0: 00301463 bne zero,gp,800001c8 <test_8+0x18>
+800001c4: 1e301c63 bne zero,gp,800003bc <fail>
+800001c8: fe208ee3 beq ra,sp,800001c4 <test_8+0x14>
+
+800001cc <test_9>:
+800001cc: 00900193 li gp,9
+800001d0: 00000213 li tp,0
+800001d4: 00000093 li ra,0
+800001d8: fff00113 li sp,-1
+800001dc: 1e208063 beq ra,sp,800003bc <fail>
+800001e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001e4: 00200293 li t0,2
+800001e8: fe5216e3 bne tp,t0,800001d4 <test_9+0x8>
+
+800001ec <test_10>:
+800001ec: 00a00193 li gp,10
+800001f0: 00000213 li tp,0
+800001f4: 00000093 li ra,0
+800001f8: fff00113 li sp,-1
+800001fc: 00000013 nop
+80000200: 1a208e63 beq ra,sp,800003bc <fail>
+80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000208: 00200293 li t0,2
+8000020c: fe5214e3 bne tp,t0,800001f4 <test_10+0x8>
+
+80000210 <test_11>:
+80000210: 00b00193 li gp,11
+80000214: 00000213 li tp,0
+80000218: 00000093 li ra,0
+8000021c: fff00113 li sp,-1
+80000220: 00000013 nop
+80000224: 00000013 nop
+80000228: 18208a63 beq ra,sp,800003bc <fail>
+8000022c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000230: 00200293 li t0,2
+80000234: fe5212e3 bne tp,t0,80000218 <test_11+0x8>
+
+80000238 <test_12>:
+80000238: 00c00193 li gp,12
+8000023c: 00000213 li tp,0
+80000240: 00000093 li ra,0
+80000244: 00000013 nop
+80000248: fff00113 li sp,-1
+8000024c: 16208863 beq ra,sp,800003bc <fail>
+80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000254: 00200293 li t0,2
+80000258: fe5214e3 bne tp,t0,80000240 <test_12+0x8>
+
+8000025c <test_13>:
+8000025c: 00d00193 li gp,13
+80000260: 00000213 li tp,0
+80000264: 00000093 li ra,0
+80000268: 00000013 nop
+8000026c: fff00113 li sp,-1
+80000270: 00000013 nop
+80000274: 14208463 beq ra,sp,800003bc <fail>
+80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000027c: 00200293 li t0,2
+80000280: fe5212e3 bne tp,t0,80000264 <test_13+0x8>
+
+80000284 <test_14>:
+80000284: 00e00193 li gp,14
+80000288: 00000213 li tp,0
+8000028c: 00000093 li ra,0
+80000290: 00000013 nop
+80000294: 00000013 nop
+80000298: fff00113 li sp,-1
+8000029c: 12208063 beq ra,sp,800003bc <fail>
+800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a4: 00200293 li t0,2
+800002a8: fe5212e3 bne tp,t0,8000028c <test_14+0x8>
+
+800002ac <test_15>:
+800002ac: 00f00193 li gp,15
+800002b0: 00000213 li tp,0
+800002b4: 00000093 li ra,0
+800002b8: fff00113 li sp,-1
+800002bc: 10208063 beq ra,sp,800003bc <fail>
+800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c4: 00200293 li t0,2
+800002c8: fe5216e3 bne tp,t0,800002b4 <test_15+0x8>
+
+800002cc <test_16>:
+800002cc: 01000193 li gp,16
+800002d0: 00000213 li tp,0
+800002d4: 00000093 li ra,0
+800002d8: fff00113 li sp,-1
+800002dc: 00000013 nop
+800002e0: 0c208e63 beq ra,sp,800003bc <fail>
+800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002e8: 00200293 li t0,2
+800002ec: fe5214e3 bne tp,t0,800002d4 <test_16+0x8>
+
+800002f0 <test_17>:
+800002f0: 01100193 li gp,17
+800002f4: 00000213 li tp,0
+800002f8: 00000093 li ra,0
+800002fc: fff00113 li sp,-1
+80000300: 00000013 nop
+80000304: 00000013 nop
+80000308: 0a208a63 beq ra,sp,800003bc <fail>
+8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000310: 00200293 li t0,2
+80000314: fe5212e3 bne tp,t0,800002f8 <test_17+0x8>
+
+80000318 <test_18>:
+80000318: 01200193 li gp,18
+8000031c: 00000213 li tp,0
+80000320: 00000093 li ra,0
+80000324: 00000013 nop
+80000328: fff00113 li sp,-1
+8000032c: 08208863 beq ra,sp,800003bc <fail>
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fe5214e3 bne tp,t0,80000320 <test_18+0x8>
+
+8000033c <test_19>:
+8000033c: 01300193 li gp,19
+80000340: 00000213 li tp,0
+80000344: 00000093 li ra,0
+80000348: 00000013 nop
+8000034c: fff00113 li sp,-1
+80000350: 00000013 nop
+80000354: 06208463 beq ra,sp,800003bc <fail>
+80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000035c: 00200293 li t0,2
+80000360: fe5212e3 bne tp,t0,80000344 <test_19+0x8>
+
+80000364 <test_20>:
+80000364: 01400193 li gp,20
+80000368: 00000213 li tp,0
+8000036c: 00000093 li ra,0
+80000370: 00000013 nop
+80000374: 00000013 nop
+80000378: fff00113 li sp,-1
+8000037c: 04208063 beq ra,sp,800003bc <fail>
+80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000384: 00200293 li t0,2
+80000388: fe5212e3 bne tp,t0,8000036c <test_20+0x8>
+
+8000038c <test_21>:
+8000038c: 00100093 li ra,1
+80000390: 00000a63 beqz zero,800003a4 <test_21+0x18>
+80000394: 00108093 addi ra,ra,1
+80000398: 00108093 addi ra,ra,1
+8000039c: 00108093 addi ra,ra,1
+800003a0: 00108093 addi ra,ra,1
+800003a4: 00108093 addi ra,ra,1
+800003a8: 00108093 addi ra,ra,1
+800003ac: 00300e93 li t4,3
+800003b0: 01500193 li gp,21
+800003b4: 01d09463 bne ra,t4,800003bc <fail>
+800003b8: 00301c63 bne zero,gp,800003d0 <pass>
+
+800003bc <fail>:
+800003bc: 0ff0000f fence
+800003c0: 00018063 beqz gp,800003c0 <fail+0x4>
+800003c4: 00119193 slli gp,gp,0x1
+800003c8: 0011e193 ori gp,gp,1
+800003cc: 00000073 ecall
+
+800003d0 <pass>:
+800003d0: 0ff0000f fence
+800003d4: 00100193 li gp,1
+800003d8: 00000073 ecall
+800003dc: c0001073 unimp
+800003e0: 0000 unimp
+800003e2: 0000 unimp
+800003e4: 0000 unimp
+800003e6: 0000 unimp
+800003e8: 0000 unimp
+800003ea: 0000 unimp
+800003ec: 0000 unimp
+800003ee: 0000 unimp
+800003f0: 0000 unimp
+800003f2: 0000 unimp
+800003f4: 0000 unimp
+800003f6: 0000 unimp
+800003f8: 0000 unimp
+800003fa: 0000 unimp
+800003fc: 0000 unimp
+800003fe: 0000 unimp
+80000400: 0000 unimp
+80000402: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-beq.elf b/test/riscv-tests/rv32ui-p-beq.elf
new file mode 100644
index 0000000..0d2a410
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-beq.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-bge.dump b/test/riscv-tests/rv32ui-p-bge.dump
new file mode 100644
index 0000000..84ffbb3
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bge.dump
@@ -0,0 +1,339 @@
+
+rv32ui-p-bge: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 00000113 li sp,0
+80000108: 0020d663 ble sp,ra,80000114 <test_2+0x18>
+8000010c: 30301863 bne zero,gp,8000041c <fail>
+80000110: 00301663 bne zero,gp,8000011c <test_3>
+80000114: fe20dee3 ble sp,ra,80000110 <test_2+0x14>
+80000118: 30301263 bne zero,gp,8000041c <fail>
+
+8000011c <test_3>:
+8000011c: 00300193 li gp,3
+80000120: 00100093 li ra,1
+80000124: 00100113 li sp,1
+80000128: 0020d663 ble sp,ra,80000134 <test_3+0x18>
+8000012c: 2e301863 bne zero,gp,8000041c <fail>
+80000130: 00301663 bne zero,gp,8000013c <test_4>
+80000134: fe20dee3 ble sp,ra,80000130 <test_3+0x14>
+80000138: 2e301263 bne zero,gp,8000041c <fail>
+
+8000013c <test_4>:
+8000013c: 00400193 li gp,4
+80000140: fff00093 li ra,-1
+80000144: fff00113 li sp,-1
+80000148: 0020d663 ble sp,ra,80000154 <test_4+0x18>
+8000014c: 2c301863 bne zero,gp,8000041c <fail>
+80000150: 00301663 bne zero,gp,8000015c <test_5>
+80000154: fe20dee3 ble sp,ra,80000150 <test_4+0x14>
+80000158: 2c301263 bne zero,gp,8000041c <fail>
+
+8000015c <test_5>:
+8000015c: 00500193 li gp,5
+80000160: 00100093 li ra,1
+80000164: 00000113 li sp,0
+80000168: 0020d663 ble sp,ra,80000174 <test_5+0x18>
+8000016c: 2a301863 bne zero,gp,8000041c <fail>
+80000170: 00301663 bne zero,gp,8000017c <test_6>
+80000174: fe20dee3 ble sp,ra,80000170 <test_5+0x14>
+80000178: 2a301263 bne zero,gp,8000041c <fail>
+
+8000017c <test_6>:
+8000017c: 00600193 li gp,6
+80000180: 00100093 li ra,1
+80000184: fff00113 li sp,-1
+80000188: 0020d663 ble sp,ra,80000194 <test_6+0x18>
+8000018c: 28301863 bne zero,gp,8000041c <fail>
+80000190: 00301663 bne zero,gp,8000019c <test_7>
+80000194: fe20dee3 ble sp,ra,80000190 <test_6+0x14>
+80000198: 28301263 bne zero,gp,8000041c <fail>
+
+8000019c <test_7>:
+8000019c: 00700193 li gp,7
+800001a0: fff00093 li ra,-1
+800001a4: ffe00113 li sp,-2
+800001a8: 0020d663 ble sp,ra,800001b4 <test_7+0x18>
+800001ac: 26301863 bne zero,gp,8000041c <fail>
+800001b0: 00301663 bne zero,gp,800001bc <test_8>
+800001b4: fe20dee3 ble sp,ra,800001b0 <test_7+0x14>
+800001b8: 26301263 bne zero,gp,8000041c <fail>
+
+800001bc <test_8>:
+800001bc: 00800193 li gp,8
+800001c0: 00000093 li ra,0
+800001c4: 00100113 li sp,1
+800001c8: 0020d463 ble sp,ra,800001d0 <test_8+0x14>
+800001cc: 00301463 bne zero,gp,800001d4 <test_8+0x18>
+800001d0: 24301663 bne zero,gp,8000041c <fail>
+800001d4: fe20dee3 ble sp,ra,800001d0 <test_8+0x14>
+
+800001d8 <test_9>:
+800001d8: 00900193 li gp,9
+800001dc: fff00093 li ra,-1
+800001e0: 00100113 li sp,1
+800001e4: 0020d463 ble sp,ra,800001ec <test_9+0x14>
+800001e8: 00301463 bne zero,gp,800001f0 <test_9+0x18>
+800001ec: 22301863 bne zero,gp,8000041c <fail>
+800001f0: fe20dee3 ble sp,ra,800001ec <test_9+0x14>
+
+800001f4 <test_10>:
+800001f4: 00a00193 li gp,10
+800001f8: ffe00093 li ra,-2
+800001fc: fff00113 li sp,-1
+80000200: 0020d463 ble sp,ra,80000208 <test_10+0x14>
+80000204: 00301463 bne zero,gp,8000020c <test_10+0x18>
+80000208: 20301a63 bne zero,gp,8000041c <fail>
+8000020c: fe20dee3 ble sp,ra,80000208 <test_10+0x14>
+
+80000210 <test_11>:
+80000210: 00b00193 li gp,11
+80000214: ffe00093 li ra,-2
+80000218: 00100113 li sp,1
+8000021c: 0020d463 ble sp,ra,80000224 <test_11+0x14>
+80000220: 00301463 bne zero,gp,80000228 <test_11+0x18>
+80000224: 1e301c63 bne zero,gp,8000041c <fail>
+80000228: fe20dee3 ble sp,ra,80000224 <test_11+0x14>
+
+8000022c <test_12>:
+8000022c: 00c00193 li gp,12
+80000230: 00000213 li tp,0
+80000234: fff00093 li ra,-1
+80000238: 00000113 li sp,0
+8000023c: 1e20d063 ble sp,ra,8000041c <fail>
+80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000244: 00200293 li t0,2
+80000248: fe5216e3 bne tp,t0,80000234 <test_12+0x8>
+
+8000024c <test_13>:
+8000024c: 00d00193 li gp,13
+80000250: 00000213 li tp,0
+80000254: fff00093 li ra,-1
+80000258: 00000113 li sp,0
+8000025c: 00000013 nop
+80000260: 1a20de63 ble sp,ra,8000041c <fail>
+80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000268: 00200293 li t0,2
+8000026c: fe5214e3 bne tp,t0,80000254 <test_13+0x8>
+
+80000270 <test_14>:
+80000270: 00e00193 li gp,14
+80000274: 00000213 li tp,0
+80000278: fff00093 li ra,-1
+8000027c: 00000113 li sp,0
+80000280: 00000013 nop
+80000284: 00000013 nop
+80000288: 1820da63 ble sp,ra,8000041c <fail>
+8000028c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000290: 00200293 li t0,2
+80000294: fe5212e3 bne tp,t0,80000278 <test_14+0x8>
+
+80000298 <test_15>:
+80000298: 00f00193 li gp,15
+8000029c: 00000213 li tp,0
+800002a0: fff00093 li ra,-1
+800002a4: 00000013 nop
+800002a8: 00000113 li sp,0
+800002ac: 1620d863 ble sp,ra,8000041c <fail>
+800002b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002b4: 00200293 li t0,2
+800002b8: fe5214e3 bne tp,t0,800002a0 <test_15+0x8>
+
+800002bc <test_16>:
+800002bc: 01000193 li gp,16
+800002c0: 00000213 li tp,0
+800002c4: fff00093 li ra,-1
+800002c8: 00000013 nop
+800002cc: 00000113 li sp,0
+800002d0: 00000013 nop
+800002d4: 1420d463 ble sp,ra,8000041c <fail>
+800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002dc: 00200293 li t0,2
+800002e0: fe5212e3 bne tp,t0,800002c4 <test_16+0x8>
+
+800002e4 <test_17>:
+800002e4: 01100193 li gp,17
+800002e8: 00000213 li tp,0
+800002ec: fff00093 li ra,-1
+800002f0: 00000013 nop
+800002f4: 00000013 nop
+800002f8: 00000113 li sp,0
+800002fc: 1220d063 ble sp,ra,8000041c <fail>
+80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000304: 00200293 li t0,2
+80000308: fe5212e3 bne tp,t0,800002ec <test_17+0x8>
+
+8000030c <test_18>:
+8000030c: 01200193 li gp,18
+80000310: 00000213 li tp,0
+80000314: fff00093 li ra,-1
+80000318: 00000113 li sp,0
+8000031c: 1020d063 ble sp,ra,8000041c <fail>
+80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000324: 00200293 li t0,2
+80000328: fe5216e3 bne tp,t0,80000314 <test_18+0x8>
+
+8000032c <test_19>:
+8000032c: 01300193 li gp,19
+80000330: 00000213 li tp,0
+80000334: fff00093 li ra,-1
+80000338: 00000113 li sp,0
+8000033c: 00000013 nop
+80000340: 0c20de63 ble sp,ra,8000041c <fail>
+80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000348: 00200293 li t0,2
+8000034c: fe5214e3 bne tp,t0,80000334 <test_19+0x8>
+
+80000350 <test_20>:
+80000350: 01400193 li gp,20
+80000354: 00000213 li tp,0
+80000358: fff00093 li ra,-1
+8000035c: 00000113 li sp,0
+80000360: 00000013 nop
+80000364: 00000013 nop
+80000368: 0a20da63 ble sp,ra,8000041c <fail>
+8000036c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000370: 00200293 li t0,2
+80000374: fe5212e3 bne tp,t0,80000358 <test_20+0x8>
+
+80000378 <test_21>:
+80000378: 01500193 li gp,21
+8000037c: 00000213 li tp,0
+80000380: fff00093 li ra,-1
+80000384: 00000013 nop
+80000388: 00000113 li sp,0
+8000038c: 0820d863 ble sp,ra,8000041c <fail>
+80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000394: 00200293 li t0,2
+80000398: fe5214e3 bne tp,t0,80000380 <test_21+0x8>
+
+8000039c <test_22>:
+8000039c: 01600193 li gp,22
+800003a0: 00000213 li tp,0
+800003a4: fff00093 li ra,-1
+800003a8: 00000013 nop
+800003ac: 00000113 li sp,0
+800003b0: 00000013 nop
+800003b4: 0620d463 ble sp,ra,8000041c <fail>
+800003b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003bc: 00200293 li t0,2
+800003c0: fe5212e3 bne tp,t0,800003a4 <test_22+0x8>
+
+800003c4 <test_23>:
+800003c4: 01700193 li gp,23
+800003c8: 00000213 li tp,0
+800003cc: fff00093 li ra,-1
+800003d0: 00000013 nop
+800003d4: 00000013 nop
+800003d8: 00000113 li sp,0
+800003dc: 0420d063 ble sp,ra,8000041c <fail>
+800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003e4: 00200293 li t0,2
+800003e8: fe5212e3 bne tp,t0,800003cc <test_23+0x8>
+
+800003ec <test_24>:
+800003ec: 00100093 li ra,1
+800003f0: 0000da63 bgez ra,80000404 <test_24+0x18>
+800003f4: 00108093 addi ra,ra,1
+800003f8: 00108093 addi ra,ra,1
+800003fc: 00108093 addi ra,ra,1
+80000400: 00108093 addi ra,ra,1
+80000404: 00108093 addi ra,ra,1
+80000408: 00108093 addi ra,ra,1
+8000040c: 00300e93 li t4,3
+80000410: 01800193 li gp,24
+80000414: 01d09463 bne ra,t4,8000041c <fail>
+80000418: 00301c63 bne zero,gp,80000430 <pass>
+
+8000041c <fail>:
+8000041c: 0ff0000f fence
+80000420: 00018063 beqz gp,80000420 <fail+0x4>
+80000424: 00119193 slli gp,gp,0x1
+80000428: 0011e193 ori gp,gp,1
+8000042c: 00000073 ecall
+
+80000430 <pass>:
+80000430: 0ff0000f fence
+80000434: 00100193 li gp,1
+80000438: 00000073 ecall
+8000043c: c0001073 unimp
+80000440: 0000 unimp
+80000442: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-bge.elf b/test/riscv-tests/rv32ui-p-bge.elf
new file mode 100644
index 0000000..8979b9e
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bge.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-bgeu.dump b/test/riscv-tests/rv32ui-p-bgeu.dump
new file mode 100644
index 0000000..bc6f3c2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bgeu.dump
@@ -0,0 +1,358 @@
+
+rv32ui-p-bgeu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 00000113 li sp,0
+80000108: 0020f663 bleu sp,ra,80000114 <test_2+0x18>
+8000010c: 34301263 bne zero,gp,80000450 <fail>
+80000110: 00301663 bne zero,gp,8000011c <test_3>
+80000114: fe20fee3 bleu sp,ra,80000110 <test_2+0x14>
+80000118: 32301c63 bne zero,gp,80000450 <fail>
+
+8000011c <test_3>:
+8000011c: 00300193 li gp,3
+80000120: 00100093 li ra,1
+80000124: 00100113 li sp,1
+80000128: 0020f663 bleu sp,ra,80000134 <test_3+0x18>
+8000012c: 32301263 bne zero,gp,80000450 <fail>
+80000130: 00301663 bne zero,gp,8000013c <test_4>
+80000134: fe20fee3 bleu sp,ra,80000130 <test_3+0x14>
+80000138: 30301c63 bne zero,gp,80000450 <fail>
+
+8000013c <test_4>:
+8000013c: 00400193 li gp,4
+80000140: fff00093 li ra,-1
+80000144: fff00113 li sp,-1
+80000148: 0020f663 bleu sp,ra,80000154 <test_4+0x18>
+8000014c: 30301263 bne zero,gp,80000450 <fail>
+80000150: 00301663 bne zero,gp,8000015c <test_5>
+80000154: fe20fee3 bleu sp,ra,80000150 <test_4+0x14>
+80000158: 2e301c63 bne zero,gp,80000450 <fail>
+
+8000015c <test_5>:
+8000015c: 00500193 li gp,5
+80000160: 00100093 li ra,1
+80000164: 00000113 li sp,0
+80000168: 0020f663 bleu sp,ra,80000174 <test_5+0x18>
+8000016c: 2e301263 bne zero,gp,80000450 <fail>
+80000170: 00301663 bne zero,gp,8000017c <test_6>
+80000174: fe20fee3 bleu sp,ra,80000170 <test_5+0x14>
+80000178: 2c301c63 bne zero,gp,80000450 <fail>
+
+8000017c <test_6>:
+8000017c: 00600193 li gp,6
+80000180: fff00093 li ra,-1
+80000184: ffe00113 li sp,-2
+80000188: 0020f663 bleu sp,ra,80000194 <test_6+0x18>
+8000018c: 2c301263 bne zero,gp,80000450 <fail>
+80000190: 00301663 bne zero,gp,8000019c <test_7>
+80000194: fe20fee3 bleu sp,ra,80000190 <test_6+0x14>
+80000198: 2a301c63 bne zero,gp,80000450 <fail>
+
+8000019c <test_7>:
+8000019c: 00700193 li gp,7
+800001a0: fff00093 li ra,-1
+800001a4: 00000113 li sp,0
+800001a8: 0020f663 bleu sp,ra,800001b4 <test_7+0x18>
+800001ac: 2a301263 bne zero,gp,80000450 <fail>
+800001b0: 00301663 bne zero,gp,800001bc <test_8>
+800001b4: fe20fee3 bleu sp,ra,800001b0 <test_7+0x14>
+800001b8: 28301c63 bne zero,gp,80000450 <fail>
+
+800001bc <test_8>:
+800001bc: 00800193 li gp,8
+800001c0: 00000093 li ra,0
+800001c4: 00100113 li sp,1
+800001c8: 0020f463 bleu sp,ra,800001d0 <test_8+0x14>
+800001cc: 00301463 bne zero,gp,800001d4 <test_8+0x18>
+800001d0: 28301063 bne zero,gp,80000450 <fail>
+800001d4: fe20fee3 bleu sp,ra,800001d0 <test_8+0x14>
+
+800001d8 <test_9>:
+800001d8: 00900193 li gp,9
+800001dc: ffe00093 li ra,-2
+800001e0: fff00113 li sp,-1
+800001e4: 0020f463 bleu sp,ra,800001ec <test_9+0x14>
+800001e8: 00301463 bne zero,gp,800001f0 <test_9+0x18>
+800001ec: 26301263 bne zero,gp,80000450 <fail>
+800001f0: fe20fee3 bleu sp,ra,800001ec <test_9+0x14>
+
+800001f4 <test_10>:
+800001f4: 00a00193 li gp,10
+800001f8: 00000093 li ra,0
+800001fc: fff00113 li sp,-1
+80000200: 0020f463 bleu sp,ra,80000208 <test_10+0x14>
+80000204: 00301463 bne zero,gp,8000020c <test_10+0x18>
+80000208: 24301463 bne zero,gp,80000450 <fail>
+8000020c: fe20fee3 bleu sp,ra,80000208 <test_10+0x14>
+
+80000210 <test_11>:
+80000210: 00b00193 li gp,11
+80000214: 800000b7 lui ra,0x80000
+80000218: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+8000021c: 80000137 lui sp,0x80000
+80000220: 0020f463 bleu sp,ra,80000228 <test_11+0x18>
+80000224: 00301463 bne zero,gp,8000022c <test_11+0x1c>
+80000228: 22301463 bne zero,gp,80000450 <fail>
+8000022c: fe20fee3 bleu sp,ra,80000228 <test_11+0x18>
+
+80000230 <test_12>:
+80000230: 00c00193 li gp,12
+80000234: 00000213 li tp,0
+80000238: f00000b7 lui ra,0xf0000
+8000023c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+80000240: f0000137 lui sp,0xf0000
+80000244: 2020f663 bleu sp,ra,80000450 <fail>
+80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000024c: 00200293 li t0,2
+80000250: fe5214e3 bne tp,t0,80000238 <test_12+0x8>
+
+80000254 <test_13>:
+80000254: 00d00193 li gp,13
+80000258: 00000213 li tp,0
+8000025c: f00000b7 lui ra,0xf0000
+80000260: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+80000264: f0000137 lui sp,0xf0000
+80000268: 00000013 nop
+8000026c: 1e20f263 bleu sp,ra,80000450 <fail>
+80000270: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000274: 00200293 li t0,2
+80000278: fe5212e3 bne tp,t0,8000025c <test_13+0x8>
+
+8000027c <test_14>:
+8000027c: 00e00193 li gp,14
+80000280: 00000213 li tp,0
+80000284: f00000b7 lui ra,0xf0000
+80000288: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+8000028c: f0000137 lui sp,0xf0000
+80000290: 00000013 nop
+80000294: 00000013 nop
+80000298: 1a20fc63 bleu sp,ra,80000450 <fail>
+8000029c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a0: 00200293 li t0,2
+800002a4: fe5210e3 bne tp,t0,80000284 <test_14+0x8>
+
+800002a8 <test_15>:
+800002a8: 00f00193 li gp,15
+800002ac: 00000213 li tp,0
+800002b0: f00000b7 lui ra,0xf0000
+800002b4: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+800002b8: 00000013 nop
+800002bc: f0000137 lui sp,0xf0000
+800002c0: 1820f863 bleu sp,ra,80000450 <fail>
+800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c8: 00200293 li t0,2
+800002cc: fe5212e3 bne tp,t0,800002b0 <test_15+0x8>
+
+800002d0 <test_16>:
+800002d0: 01000193 li gp,16
+800002d4: 00000213 li tp,0
+800002d8: f00000b7 lui ra,0xf0000
+800002dc: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+800002e0: 00000013 nop
+800002e4: f0000137 lui sp,0xf0000
+800002e8: 00000013 nop
+800002ec: 1620f263 bleu sp,ra,80000450 <fail>
+800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f4: 00200293 li t0,2
+800002f8: fe5210e3 bne tp,t0,800002d8 <test_16+0x8>
+
+800002fc <test_17>:
+800002fc: 01100193 li gp,17
+80000300: 00000213 li tp,0
+80000304: f00000b7 lui ra,0xf0000
+80000308: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+8000030c: 00000013 nop
+80000310: 00000013 nop
+80000314: f0000137 lui sp,0xf0000
+80000318: 1220fc63 bleu sp,ra,80000450 <fail>
+8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000320: 00200293 li t0,2
+80000324: fe5210e3 bne tp,t0,80000304 <test_17+0x8>
+
+80000328 <test_18>:
+80000328: 01200193 li gp,18
+8000032c: 00000213 li tp,0
+80000330: f00000b7 lui ra,0xf0000
+80000334: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+80000338: f0000137 lui sp,0xf0000
+8000033c: 1020fa63 bleu sp,ra,80000450 <fail>
+80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000344: 00200293 li t0,2
+80000348: fe5214e3 bne tp,t0,80000330 <test_18+0x8>
+
+8000034c <test_19>:
+8000034c: 01300193 li gp,19
+80000350: 00000213 li tp,0
+80000354: f00000b7 lui ra,0xf0000
+80000358: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+8000035c: f0000137 lui sp,0xf0000
+80000360: 00000013 nop
+80000364: 0e20f663 bleu sp,ra,80000450 <fail>
+80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000036c: 00200293 li t0,2
+80000370: fe5212e3 bne tp,t0,80000354 <test_19+0x8>
+
+80000374 <test_20>:
+80000374: 01400193 li gp,20
+80000378: 00000213 li tp,0
+8000037c: f00000b7 lui ra,0xf0000
+80000380: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+80000384: f0000137 lui sp,0xf0000
+80000388: 00000013 nop
+8000038c: 00000013 nop
+80000390: 0c20f063 bleu sp,ra,80000450 <fail>
+80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000398: 00200293 li t0,2
+8000039c: fe5210e3 bne tp,t0,8000037c <test_20+0x8>
+
+800003a0 <test_21>:
+800003a0: 01500193 li gp,21
+800003a4: 00000213 li tp,0
+800003a8: f00000b7 lui ra,0xf0000
+800003ac: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+800003b0: 00000013 nop
+800003b4: f0000137 lui sp,0xf0000
+800003b8: 0820fc63 bleu sp,ra,80000450 <fail>
+800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c0: 00200293 li t0,2
+800003c4: fe5212e3 bne tp,t0,800003a8 <test_21+0x8>
+
+800003c8 <test_22>:
+800003c8: 01600193 li gp,22
+800003cc: 00000213 li tp,0
+800003d0: f00000b7 lui ra,0xf0000
+800003d4: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+800003d8: 00000013 nop
+800003dc: f0000137 lui sp,0xf0000
+800003e0: 00000013 nop
+800003e4: 0620f663 bleu sp,ra,80000450 <fail>
+800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003ec: 00200293 li t0,2
+800003f0: fe5210e3 bne tp,t0,800003d0 <test_22+0x8>
+
+800003f4 <test_23>:
+800003f4: 01700193 li gp,23
+800003f8: 00000213 li tp,0
+800003fc: f00000b7 lui ra,0xf0000
+80000400: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fffdfff>
+80000404: 00000013 nop
+80000408: 00000013 nop
+8000040c: f0000137 lui sp,0xf0000
+80000410: 0420f063 bleu sp,ra,80000450 <fail>
+80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000418: 00200293 li t0,2
+8000041c: fe5210e3 bne tp,t0,800003fc <test_23+0x8>
+
+80000420 <test_24>:
+80000420: 00100093 li ra,1
+80000424: 0000fa63 bleu zero,ra,80000438 <test_24+0x18>
+80000428: 00108093 addi ra,ra,1
+8000042c: 00108093 addi ra,ra,1
+80000430: 00108093 addi ra,ra,1
+80000434: 00108093 addi ra,ra,1
+80000438: 00108093 addi ra,ra,1
+8000043c: 00108093 addi ra,ra,1
+80000440: 00300e93 li t4,3
+80000444: 01800193 li gp,24
+80000448: 01d09463 bne ra,t4,80000450 <fail>
+8000044c: 00301c63 bne zero,gp,80000464 <pass>
+
+80000450 <fail>:
+80000450: 0ff0000f fence
+80000454: 00018063 beqz gp,80000454 <fail+0x4>
+80000458: 00119193 slli gp,gp,0x1
+8000045c: 0011e193 ori gp,gp,1
+80000460: 00000073 ecall
+
+80000464 <pass>:
+80000464: 0ff0000f fence
+80000468: 00100193 li gp,1
+8000046c: 00000073 ecall
+80000470: c0001073 unimp
+80000474: 0000 unimp
+80000476: 0000 unimp
+80000478: 0000 unimp
+8000047a: 0000 unimp
+8000047c: 0000 unimp
+8000047e: 0000 unimp
+80000480: 0000 unimp
+80000482: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-bgeu.elf b/test/riscv-tests/rv32ui-p-bgeu.elf
new file mode 100644
index 0000000..8051042
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bgeu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-blt.dump b/test/riscv-tests/rv32ui-p-blt.dump
new file mode 100644
index 0000000..300a412
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-blt.dump
@@ -0,0 +1,325 @@
+
+rv32ui-p-blt: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 00100113 li sp,1
+80000108: 0020c663 blt ra,sp,80000114 <test_2+0x18>
+8000010c: 2a301863 bne zero,gp,800003bc <fail>
+80000110: 00301663 bne zero,gp,8000011c <test_3>
+80000114: fe20cee3 blt ra,sp,80000110 <test_2+0x14>
+80000118: 2a301263 bne zero,gp,800003bc <fail>
+
+8000011c <test_3>:
+8000011c: 00300193 li gp,3
+80000120: fff00093 li ra,-1
+80000124: 00100113 li sp,1
+80000128: 0020c663 blt ra,sp,80000134 <test_3+0x18>
+8000012c: 28301863 bne zero,gp,800003bc <fail>
+80000130: 00301663 bne zero,gp,8000013c <test_4>
+80000134: fe20cee3 blt ra,sp,80000130 <test_3+0x14>
+80000138: 28301263 bne zero,gp,800003bc <fail>
+
+8000013c <test_4>:
+8000013c: 00400193 li gp,4
+80000140: ffe00093 li ra,-2
+80000144: fff00113 li sp,-1
+80000148: 0020c663 blt ra,sp,80000154 <test_4+0x18>
+8000014c: 26301863 bne zero,gp,800003bc <fail>
+80000150: 00301663 bne zero,gp,8000015c <test_5>
+80000154: fe20cee3 blt ra,sp,80000150 <test_4+0x14>
+80000158: 26301263 bne zero,gp,800003bc <fail>
+
+8000015c <test_5>:
+8000015c: 00500193 li gp,5
+80000160: 00100093 li ra,1
+80000164: 00000113 li sp,0
+80000168: 0020c463 blt ra,sp,80000170 <test_5+0x14>
+8000016c: 00301463 bne zero,gp,80000174 <test_5+0x18>
+80000170: 24301663 bne zero,gp,800003bc <fail>
+80000174: fe20cee3 blt ra,sp,80000170 <test_5+0x14>
+
+80000178 <test_6>:
+80000178: 00600193 li gp,6
+8000017c: 00100093 li ra,1
+80000180: fff00113 li sp,-1
+80000184: 0020c463 blt ra,sp,8000018c <test_6+0x14>
+80000188: 00301463 bne zero,gp,80000190 <test_6+0x18>
+8000018c: 22301863 bne zero,gp,800003bc <fail>
+80000190: fe20cee3 blt ra,sp,8000018c <test_6+0x14>
+
+80000194 <test_7>:
+80000194: 00700193 li gp,7
+80000198: fff00093 li ra,-1
+8000019c: ffe00113 li sp,-2
+800001a0: 0020c463 blt ra,sp,800001a8 <test_7+0x14>
+800001a4: 00301463 bne zero,gp,800001ac <test_7+0x18>
+800001a8: 20301a63 bne zero,gp,800003bc <fail>
+800001ac: fe20cee3 blt ra,sp,800001a8 <test_7+0x14>
+
+800001b0 <test_8>:
+800001b0: 00800193 li gp,8
+800001b4: 00100093 li ra,1
+800001b8: ffe00113 li sp,-2
+800001bc: 0020c463 blt ra,sp,800001c4 <test_8+0x14>
+800001c0: 00301463 bne zero,gp,800001c8 <test_8+0x18>
+800001c4: 1e301c63 bne zero,gp,800003bc <fail>
+800001c8: fe20cee3 blt ra,sp,800001c4 <test_8+0x14>
+
+800001cc <test_9>:
+800001cc: 00900193 li gp,9
+800001d0: 00000213 li tp,0
+800001d4: 00000093 li ra,0
+800001d8: fff00113 li sp,-1
+800001dc: 1e20c063 blt ra,sp,800003bc <fail>
+800001e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001e4: 00200293 li t0,2
+800001e8: fe5216e3 bne tp,t0,800001d4 <test_9+0x8>
+
+800001ec <test_10>:
+800001ec: 00a00193 li gp,10
+800001f0: 00000213 li tp,0
+800001f4: 00000093 li ra,0
+800001f8: fff00113 li sp,-1
+800001fc: 00000013 nop
+80000200: 1a20ce63 blt ra,sp,800003bc <fail>
+80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000208: 00200293 li t0,2
+8000020c: fe5214e3 bne tp,t0,800001f4 <test_10+0x8>
+
+80000210 <test_11>:
+80000210: 00b00193 li gp,11
+80000214: 00000213 li tp,0
+80000218: 00000093 li ra,0
+8000021c: fff00113 li sp,-1
+80000220: 00000013 nop
+80000224: 00000013 nop
+80000228: 1820ca63 blt ra,sp,800003bc <fail>
+8000022c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000230: 00200293 li t0,2
+80000234: fe5212e3 bne tp,t0,80000218 <test_11+0x8>
+
+80000238 <test_12>:
+80000238: 00c00193 li gp,12
+8000023c: 00000213 li tp,0
+80000240: 00000093 li ra,0
+80000244: 00000013 nop
+80000248: fff00113 li sp,-1
+8000024c: 1620c863 blt ra,sp,800003bc <fail>
+80000250: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000254: 00200293 li t0,2
+80000258: fe5214e3 bne tp,t0,80000240 <test_12+0x8>
+
+8000025c <test_13>:
+8000025c: 00d00193 li gp,13
+80000260: 00000213 li tp,0
+80000264: 00000093 li ra,0
+80000268: 00000013 nop
+8000026c: fff00113 li sp,-1
+80000270: 00000013 nop
+80000274: 1420c463 blt ra,sp,800003bc <fail>
+80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000027c: 00200293 li t0,2
+80000280: fe5212e3 bne tp,t0,80000264 <test_13+0x8>
+
+80000284 <test_14>:
+80000284: 00e00193 li gp,14
+80000288: 00000213 li tp,0
+8000028c: 00000093 li ra,0
+80000290: 00000013 nop
+80000294: 00000013 nop
+80000298: fff00113 li sp,-1
+8000029c: 1220c063 blt ra,sp,800003bc <fail>
+800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a4: 00200293 li t0,2
+800002a8: fe5212e3 bne tp,t0,8000028c <test_14+0x8>
+
+800002ac <test_15>:
+800002ac: 00f00193 li gp,15
+800002b0: 00000213 li tp,0
+800002b4: 00000093 li ra,0
+800002b8: fff00113 li sp,-1
+800002bc: 1020c063 blt ra,sp,800003bc <fail>
+800002c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c4: 00200293 li t0,2
+800002c8: fe5216e3 bne tp,t0,800002b4 <test_15+0x8>
+
+800002cc <test_16>:
+800002cc: 01000193 li gp,16
+800002d0: 00000213 li tp,0
+800002d4: 00000093 li ra,0
+800002d8: fff00113 li sp,-1
+800002dc: 00000013 nop
+800002e0: 0c20ce63 blt ra,sp,800003bc <fail>
+800002e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002e8: 00200293 li t0,2
+800002ec: fe5214e3 bne tp,t0,800002d4 <test_16+0x8>
+
+800002f0 <test_17>:
+800002f0: 01100193 li gp,17
+800002f4: 00000213 li tp,0
+800002f8: 00000093 li ra,0
+800002fc: fff00113 li sp,-1
+80000300: 00000013 nop
+80000304: 00000013 nop
+80000308: 0a20ca63 blt ra,sp,800003bc <fail>
+8000030c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000310: 00200293 li t0,2
+80000314: fe5212e3 bne tp,t0,800002f8 <test_17+0x8>
+
+80000318 <test_18>:
+80000318: 01200193 li gp,18
+8000031c: 00000213 li tp,0
+80000320: 00000093 li ra,0
+80000324: 00000013 nop
+80000328: fff00113 li sp,-1
+8000032c: 0820c863 blt ra,sp,800003bc <fail>
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fe5214e3 bne tp,t0,80000320 <test_18+0x8>
+
+8000033c <test_19>:
+8000033c: 01300193 li gp,19
+80000340: 00000213 li tp,0
+80000344: 00000093 li ra,0
+80000348: 00000013 nop
+8000034c: fff00113 li sp,-1
+80000350: 00000013 nop
+80000354: 0620c463 blt ra,sp,800003bc <fail>
+80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000035c: 00200293 li t0,2
+80000360: fe5212e3 bne tp,t0,80000344 <test_19+0x8>
+
+80000364 <test_20>:
+80000364: 01400193 li gp,20
+80000368: 00000213 li tp,0
+8000036c: 00000093 li ra,0
+80000370: 00000013 nop
+80000374: 00000013 nop
+80000378: fff00113 li sp,-1
+8000037c: 0420c063 blt ra,sp,800003bc <fail>
+80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000384: 00200293 li t0,2
+80000388: fe5212e3 bne tp,t0,8000036c <test_20+0x8>
+
+8000038c <test_21>:
+8000038c: 00100093 li ra,1
+80000390: 00104a63 bgtz ra,800003a4 <test_21+0x18>
+80000394: 00108093 addi ra,ra,1
+80000398: 00108093 addi ra,ra,1
+8000039c: 00108093 addi ra,ra,1
+800003a0: 00108093 addi ra,ra,1
+800003a4: 00108093 addi ra,ra,1
+800003a8: 00108093 addi ra,ra,1
+800003ac: 00300e93 li t4,3
+800003b0: 01500193 li gp,21
+800003b4: 01d09463 bne ra,t4,800003bc <fail>
+800003b8: 00301c63 bne zero,gp,800003d0 <pass>
+
+800003bc <fail>:
+800003bc: 0ff0000f fence
+800003c0: 00018063 beqz gp,800003c0 <fail+0x4>
+800003c4: 00119193 slli gp,gp,0x1
+800003c8: 0011e193 ori gp,gp,1
+800003cc: 00000073 ecall
+
+800003d0 <pass>:
+800003d0: 0ff0000f fence
+800003d4: 00100193 li gp,1
+800003d8: 00000073 ecall
+800003dc: c0001073 unimp
+800003e0: 0000 unimp
+800003e2: 0000 unimp
+800003e4: 0000 unimp
+800003e6: 0000 unimp
+800003e8: 0000 unimp
+800003ea: 0000 unimp
+800003ec: 0000 unimp
+800003ee: 0000 unimp
+800003f0: 0000 unimp
+800003f2: 0000 unimp
+800003f4: 0000 unimp
+800003f6: 0000 unimp
+800003f8: 0000 unimp
+800003fa: 0000 unimp
+800003fc: 0000 unimp
+800003fe: 0000 unimp
+80000400: 0000 unimp
+80000402: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-blt.elf b/test/riscv-tests/rv32ui-p-blt.elf
new file mode 100644
index 0000000..d46af04
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-blt.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-bltu.dump b/test/riscv-tests/rv32ui-p-bltu.dump
new file mode 100644
index 0000000..b2e00bd
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bltu.dump
@@ -0,0 +1,344 @@
+
+rv32ui-p-bltu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 00100113 li sp,1
+80000108: 0020e663 bltu ra,sp,80000114 <test_2+0x18>
+8000010c: 2e301263 bne zero,gp,800003f0 <fail>
+80000110: 00301663 bne zero,gp,8000011c <test_3>
+80000114: fe20eee3 bltu ra,sp,80000110 <test_2+0x14>
+80000118: 2c301c63 bne zero,gp,800003f0 <fail>
+
+8000011c <test_3>:
+8000011c: 00300193 li gp,3
+80000120: ffe00093 li ra,-2
+80000124: fff00113 li sp,-1
+80000128: 0020e663 bltu ra,sp,80000134 <test_3+0x18>
+8000012c: 2c301263 bne zero,gp,800003f0 <fail>
+80000130: 00301663 bne zero,gp,8000013c <test_4>
+80000134: fe20eee3 bltu ra,sp,80000130 <test_3+0x14>
+80000138: 2a301c63 bne zero,gp,800003f0 <fail>
+
+8000013c <test_4>:
+8000013c: 00400193 li gp,4
+80000140: 00000093 li ra,0
+80000144: fff00113 li sp,-1
+80000148: 0020e663 bltu ra,sp,80000154 <test_4+0x18>
+8000014c: 2a301263 bne zero,gp,800003f0 <fail>
+80000150: 00301663 bne zero,gp,8000015c <test_5>
+80000154: fe20eee3 bltu ra,sp,80000150 <test_4+0x14>
+80000158: 28301c63 bne zero,gp,800003f0 <fail>
+
+8000015c <test_5>:
+8000015c: 00500193 li gp,5
+80000160: 00100093 li ra,1
+80000164: 00000113 li sp,0
+80000168: 0020e463 bltu ra,sp,80000170 <test_5+0x14>
+8000016c: 00301463 bne zero,gp,80000174 <test_5+0x18>
+80000170: 28301063 bne zero,gp,800003f0 <fail>
+80000174: fe20eee3 bltu ra,sp,80000170 <test_5+0x14>
+
+80000178 <test_6>:
+80000178: 00600193 li gp,6
+8000017c: fff00093 li ra,-1
+80000180: ffe00113 li sp,-2
+80000184: 0020e463 bltu ra,sp,8000018c <test_6+0x14>
+80000188: 00301463 bne zero,gp,80000190 <test_6+0x18>
+8000018c: 26301263 bne zero,gp,800003f0 <fail>
+80000190: fe20eee3 bltu ra,sp,8000018c <test_6+0x14>
+
+80000194 <test_7>:
+80000194: 00700193 li gp,7
+80000198: fff00093 li ra,-1
+8000019c: 00000113 li sp,0
+800001a0: 0020e463 bltu ra,sp,800001a8 <test_7+0x14>
+800001a4: 00301463 bne zero,gp,800001ac <test_7+0x18>
+800001a8: 24301463 bne zero,gp,800003f0 <fail>
+800001ac: fe20eee3 bltu ra,sp,800001a8 <test_7+0x14>
+
+800001b0 <test_8>:
+800001b0: 00800193 li gp,8
+800001b4: 800000b7 lui ra,0x80000
+800001b8: 80000137 lui sp,0x80000
+800001bc: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffffdfff>
+800001c0: 0020e463 bltu ra,sp,800001c8 <test_8+0x18>
+800001c4: 00301463 bne zero,gp,800001cc <test_8+0x1c>
+800001c8: 22301463 bne zero,gp,800003f0 <fail>
+800001cc: fe20eee3 bltu ra,sp,800001c8 <test_8+0x18>
+
+800001d0 <test_9>:
+800001d0: 00900193 li gp,9
+800001d4: 00000213 li tp,0
+800001d8: f00000b7 lui ra,0xf0000
+800001dc: f0000137 lui sp,0xf0000
+800001e0: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+800001e4: 2020e663 bltu ra,sp,800003f0 <fail>
+800001e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001ec: 00200293 li t0,2
+800001f0: fe5214e3 bne tp,t0,800001d8 <test_9+0x8>
+
+800001f4 <test_10>:
+800001f4: 00a00193 li gp,10
+800001f8: 00000213 li tp,0
+800001fc: f00000b7 lui ra,0xf0000
+80000200: f0000137 lui sp,0xf0000
+80000204: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000208: 00000013 nop
+8000020c: 1e20e263 bltu ra,sp,800003f0 <fail>
+80000210: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000214: 00200293 li t0,2
+80000218: fe5212e3 bne tp,t0,800001fc <test_10+0x8>
+
+8000021c <test_11>:
+8000021c: 00b00193 li gp,11
+80000220: 00000213 li tp,0
+80000224: f00000b7 lui ra,0xf0000
+80000228: f0000137 lui sp,0xf0000
+8000022c: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000230: 00000013 nop
+80000234: 00000013 nop
+80000238: 1a20ec63 bltu ra,sp,800003f0 <fail>
+8000023c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000240: 00200293 li t0,2
+80000244: fe5210e3 bne tp,t0,80000224 <test_11+0x8>
+
+80000248 <test_12>:
+80000248: 00c00193 li gp,12
+8000024c: 00000213 li tp,0
+80000250: f00000b7 lui ra,0xf0000
+80000254: 00000013 nop
+80000258: f0000137 lui sp,0xf0000
+8000025c: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000260: 1820e863 bltu ra,sp,800003f0 <fail>
+80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000268: 00200293 li t0,2
+8000026c: fe5212e3 bne tp,t0,80000250 <test_12+0x8>
+
+80000270 <test_13>:
+80000270: 00d00193 li gp,13
+80000274: 00000213 li tp,0
+80000278: f00000b7 lui ra,0xf0000
+8000027c: 00000013 nop
+80000280: f0000137 lui sp,0xf0000
+80000284: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000288: 00000013 nop
+8000028c: 1620e263 bltu ra,sp,800003f0 <fail>
+80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000294: 00200293 li t0,2
+80000298: fe5210e3 bne tp,t0,80000278 <test_13+0x8>
+
+8000029c <test_14>:
+8000029c: 00e00193 li gp,14
+800002a0: 00000213 li tp,0
+800002a4: f00000b7 lui ra,0xf0000
+800002a8: 00000013 nop
+800002ac: 00000013 nop
+800002b0: f0000137 lui sp,0xf0000
+800002b4: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+800002b8: 1220ec63 bltu ra,sp,800003f0 <fail>
+800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c0: 00200293 li t0,2
+800002c4: fe5210e3 bne tp,t0,800002a4 <test_14+0x8>
+
+800002c8 <test_15>:
+800002c8: 00f00193 li gp,15
+800002cc: 00000213 li tp,0
+800002d0: f00000b7 lui ra,0xf0000
+800002d4: f0000137 lui sp,0xf0000
+800002d8: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+800002dc: 1020ea63 bltu ra,sp,800003f0 <fail>
+800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002e4: 00200293 li t0,2
+800002e8: fe5214e3 bne tp,t0,800002d0 <test_15+0x8>
+
+800002ec <test_16>:
+800002ec: 01000193 li gp,16
+800002f0: 00000213 li tp,0
+800002f4: f00000b7 lui ra,0xf0000
+800002f8: f0000137 lui sp,0xf0000
+800002fc: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000300: 00000013 nop
+80000304: 0e20e663 bltu ra,sp,800003f0 <fail>
+80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000030c: 00200293 li t0,2
+80000310: fe5212e3 bne tp,t0,800002f4 <test_16+0x8>
+
+80000314 <test_17>:
+80000314: 01100193 li gp,17
+80000318: 00000213 li tp,0
+8000031c: f00000b7 lui ra,0xf0000
+80000320: f0000137 lui sp,0xf0000
+80000324: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000328: 00000013 nop
+8000032c: 00000013 nop
+80000330: 0c20e063 bltu ra,sp,800003f0 <fail>
+80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000338: 00200293 li t0,2
+8000033c: fe5210e3 bne tp,t0,8000031c <test_17+0x8>
+
+80000340 <test_18>:
+80000340: 01200193 li gp,18
+80000344: 00000213 li tp,0
+80000348: f00000b7 lui ra,0xf0000
+8000034c: 00000013 nop
+80000350: f0000137 lui sp,0xf0000
+80000354: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000358: 0820ec63 bltu ra,sp,800003f0 <fail>
+8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000360: 00200293 li t0,2
+80000364: fe5212e3 bne tp,t0,80000348 <test_18+0x8>
+
+80000368 <test_19>:
+80000368: 01300193 li gp,19
+8000036c: 00000213 li tp,0
+80000370: f00000b7 lui ra,0xf0000
+80000374: 00000013 nop
+80000378: f0000137 lui sp,0xf0000
+8000037c: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+80000380: 00000013 nop
+80000384: 0620e663 bltu ra,sp,800003f0 <fail>
+80000388: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000038c: 00200293 li t0,2
+80000390: fe5210e3 bne tp,t0,80000370 <test_19+0x8>
+
+80000394 <test_20>:
+80000394: 01400193 li gp,20
+80000398: 00000213 li tp,0
+8000039c: f00000b7 lui ra,0xf0000
+800003a0: 00000013 nop
+800003a4: 00000013 nop
+800003a8: f0000137 lui sp,0xf0000
+800003ac: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fffdfff>
+800003b0: 0420e063 bltu ra,sp,800003f0 <fail>
+800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003b8: 00200293 li t0,2
+800003bc: fe5210e3 bne tp,t0,8000039c <test_20+0x8>
+
+800003c0 <test_21>:
+800003c0: 00100093 li ra,1
+800003c4: 00106a63 bltu zero,ra,800003d8 <test_21+0x18>
+800003c8: 00108093 addi ra,ra,1 # f0000001 <_end+0x6fffe001>
+800003cc: 00108093 addi ra,ra,1
+800003d0: 00108093 addi ra,ra,1
+800003d4: 00108093 addi ra,ra,1
+800003d8: 00108093 addi ra,ra,1
+800003dc: 00108093 addi ra,ra,1
+800003e0: 00300e93 li t4,3
+800003e4: 01500193 li gp,21
+800003e8: 01d09463 bne ra,t4,800003f0 <fail>
+800003ec: 00301c63 bne zero,gp,80000404 <pass>
+
+800003f0 <fail>:
+800003f0: 0ff0000f fence
+800003f4: 00018063 beqz gp,800003f4 <fail+0x4>
+800003f8: 00119193 slli gp,gp,0x1
+800003fc: 0011e193 ori gp,gp,1
+80000400: 00000073 ecall
+
+80000404 <pass>:
+80000404: 0ff0000f fence
+80000408: 00100193 li gp,1
+8000040c: 00000073 ecall
+80000410: c0001073 unimp
+80000414: 0000 unimp
+80000416: 0000 unimp
+80000418: 0000 unimp
+8000041a: 0000 unimp
+8000041c: 0000 unimp
+8000041e: 0000 unimp
+80000420: 0000 unimp
+80000422: 0000 unimp
+80000424: 0000 unimp
+80000426: 0000 unimp
+80000428: 0000 unimp
+8000042a: 0000 unimp
+8000042c: 0000 unimp
+8000042e: 0000 unimp
+80000430: 0000 unimp
+80000432: 0000 unimp
+80000434: 0000 unimp
+80000436: 0000 unimp
+80000438: 0000 unimp
+8000043a: 0000 unimp
+8000043c: 0000 unimp
+8000043e: 0000 unimp
+80000440: 0000 unimp
+80000442: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-bltu.elf b/test/riscv-tests/rv32ui-p-bltu.elf
new file mode 100644
index 0000000..e4e90ec
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-bne.dump b/test/riscv-tests/rv32ui-p-bne.dump
new file mode 100644
index 0000000..2878664
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bne.dump
@@ -0,0 +1,324 @@
+
+rv32ui-p-bne: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 00100113 li sp,1
+80000108: 00209663 bne ra,sp,80000114 <test_2+0x18>
+8000010c: 2a301a63 bne zero,gp,800003c0 <fail>
+80000110: 00301663 bne zero,gp,8000011c <test_3>
+80000114: fe209ee3 bne ra,sp,80000110 <test_2+0x14>
+80000118: 2a301463 bne zero,gp,800003c0 <fail>
+
+8000011c <test_3>:
+8000011c: 00300193 li gp,3
+80000120: 00100093 li ra,1
+80000124: 00000113 li sp,0
+80000128: 00209663 bne ra,sp,80000134 <test_3+0x18>
+8000012c: 28301a63 bne zero,gp,800003c0 <fail>
+80000130: 00301663 bne zero,gp,8000013c <test_4>
+80000134: fe209ee3 bne ra,sp,80000130 <test_3+0x14>
+80000138: 28301463 bne zero,gp,800003c0 <fail>
+
+8000013c <test_4>:
+8000013c: 00400193 li gp,4
+80000140: fff00093 li ra,-1
+80000144: 00100113 li sp,1
+80000148: 00209663 bne ra,sp,80000154 <test_4+0x18>
+8000014c: 26301a63 bne zero,gp,800003c0 <fail>
+80000150: 00301663 bne zero,gp,8000015c <test_5>
+80000154: fe209ee3 bne ra,sp,80000150 <test_4+0x14>
+80000158: 26301463 bne zero,gp,800003c0 <fail>
+
+8000015c <test_5>:
+8000015c: 00500193 li gp,5
+80000160: 00100093 li ra,1
+80000164: fff00113 li sp,-1
+80000168: 00209663 bne ra,sp,80000174 <test_5+0x18>
+8000016c: 24301a63 bne zero,gp,800003c0 <fail>
+80000170: 00301663 bne zero,gp,8000017c <test_6>
+80000174: fe209ee3 bne ra,sp,80000170 <test_5+0x14>
+80000178: 24301463 bne zero,gp,800003c0 <fail>
+
+8000017c <test_6>:
+8000017c: 00600193 li gp,6
+80000180: 00000093 li ra,0
+80000184: 00000113 li sp,0
+80000188: 00209463 bne ra,sp,80000190 <test_6+0x14>
+8000018c: 00301463 bne zero,gp,80000194 <test_6+0x18>
+80000190: 22301863 bne zero,gp,800003c0 <fail>
+80000194: fe209ee3 bne ra,sp,80000190 <test_6+0x14>
+
+80000198 <test_7>:
+80000198: 00700193 li gp,7
+8000019c: 00100093 li ra,1
+800001a0: 00100113 li sp,1
+800001a4: 00209463 bne ra,sp,800001ac <test_7+0x14>
+800001a8: 00301463 bne zero,gp,800001b0 <test_7+0x18>
+800001ac: 20301a63 bne zero,gp,800003c0 <fail>
+800001b0: fe209ee3 bne ra,sp,800001ac <test_7+0x14>
+
+800001b4 <test_8>:
+800001b4: 00800193 li gp,8
+800001b8: fff00093 li ra,-1
+800001bc: fff00113 li sp,-1
+800001c0: 00209463 bne ra,sp,800001c8 <test_8+0x14>
+800001c4: 00301463 bne zero,gp,800001cc <test_8+0x18>
+800001c8: 1e301c63 bne zero,gp,800003c0 <fail>
+800001cc: fe209ee3 bne ra,sp,800001c8 <test_8+0x14>
+
+800001d0 <test_9>:
+800001d0: 00900193 li gp,9
+800001d4: 00000213 li tp,0
+800001d8: 00000093 li ra,0
+800001dc: 00000113 li sp,0
+800001e0: 1e209063 bne ra,sp,800003c0 <fail>
+800001e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001e8: 00200293 li t0,2
+800001ec: fe5216e3 bne tp,t0,800001d8 <test_9+0x8>
+
+800001f0 <test_10>:
+800001f0: 00a00193 li gp,10
+800001f4: 00000213 li tp,0
+800001f8: 00000093 li ra,0
+800001fc: 00000113 li sp,0
+80000200: 00000013 nop
+80000204: 1a209e63 bne ra,sp,800003c0 <fail>
+80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000020c: 00200293 li t0,2
+80000210: fe5214e3 bne tp,t0,800001f8 <test_10+0x8>
+
+80000214 <test_11>:
+80000214: 00b00193 li gp,11
+80000218: 00000213 li tp,0
+8000021c: 00000093 li ra,0
+80000220: 00000113 li sp,0
+80000224: 00000013 nop
+80000228: 00000013 nop
+8000022c: 18209a63 bne ra,sp,800003c0 <fail>
+80000230: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000234: 00200293 li t0,2
+80000238: fe5212e3 bne tp,t0,8000021c <test_11+0x8>
+
+8000023c <test_12>:
+8000023c: 00c00193 li gp,12
+80000240: 00000213 li tp,0
+80000244: 00000093 li ra,0
+80000248: 00000013 nop
+8000024c: 00000113 li sp,0
+80000250: 16209863 bne ra,sp,800003c0 <fail>
+80000254: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000258: 00200293 li t0,2
+8000025c: fe5214e3 bne tp,t0,80000244 <test_12+0x8>
+
+80000260 <test_13>:
+80000260: 00d00193 li gp,13
+80000264: 00000213 li tp,0
+80000268: 00000093 li ra,0
+8000026c: 00000013 nop
+80000270: 00000113 li sp,0
+80000274: 00000013 nop
+80000278: 14209463 bne ra,sp,800003c0 <fail>
+8000027c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000280: 00200293 li t0,2
+80000284: fe5212e3 bne tp,t0,80000268 <test_13+0x8>
+
+80000288 <test_14>:
+80000288: 00e00193 li gp,14
+8000028c: 00000213 li tp,0
+80000290: 00000093 li ra,0
+80000294: 00000013 nop
+80000298: 00000013 nop
+8000029c: 00000113 li sp,0
+800002a0: 12209063 bne ra,sp,800003c0 <fail>
+800002a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a8: 00200293 li t0,2
+800002ac: fe5212e3 bne tp,t0,80000290 <test_14+0x8>
+
+800002b0 <test_15>:
+800002b0: 00f00193 li gp,15
+800002b4: 00000213 li tp,0
+800002b8: 00000093 li ra,0
+800002bc: 00000113 li sp,0
+800002c0: 10209063 bne ra,sp,800003c0 <fail>
+800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c8: 00200293 li t0,2
+800002cc: fe5216e3 bne tp,t0,800002b8 <test_15+0x8>
+
+800002d0 <test_16>:
+800002d0: 01000193 li gp,16
+800002d4: 00000213 li tp,0
+800002d8: 00000093 li ra,0
+800002dc: 00000113 li sp,0
+800002e0: 00000013 nop
+800002e4: 0c209e63 bne ra,sp,800003c0 <fail>
+800002e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002ec: 00200293 li t0,2
+800002f0: fe5214e3 bne tp,t0,800002d8 <test_16+0x8>
+
+800002f4 <test_17>:
+800002f4: 01100193 li gp,17
+800002f8: 00000213 li tp,0
+800002fc: 00000093 li ra,0
+80000300: 00000113 li sp,0
+80000304: 00000013 nop
+80000308: 00000013 nop
+8000030c: 0a209a63 bne ra,sp,800003c0 <fail>
+80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000314: 00200293 li t0,2
+80000318: fe5212e3 bne tp,t0,800002fc <test_17+0x8>
+
+8000031c <test_18>:
+8000031c: 01200193 li gp,18
+80000320: 00000213 li tp,0
+80000324: 00000093 li ra,0
+80000328: 00000013 nop
+8000032c: 00000113 li sp,0
+80000330: 08209863 bne ra,sp,800003c0 <fail>
+80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000338: 00200293 li t0,2
+8000033c: fe5214e3 bne tp,t0,80000324 <test_18+0x8>
+
+80000340 <test_19>:
+80000340: 01300193 li gp,19
+80000344: 00000213 li tp,0
+80000348: 00000093 li ra,0
+8000034c: 00000013 nop
+80000350: 00000113 li sp,0
+80000354: 00000013 nop
+80000358: 06209463 bne ra,sp,800003c0 <fail>
+8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000360: 00200293 li t0,2
+80000364: fe5212e3 bne tp,t0,80000348 <test_19+0x8>
+
+80000368 <test_20>:
+80000368: 01400193 li gp,20
+8000036c: 00000213 li tp,0
+80000370: 00000093 li ra,0
+80000374: 00000013 nop
+80000378: 00000013 nop
+8000037c: 00000113 li sp,0
+80000380: 04209063 bne ra,sp,800003c0 <fail>
+80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000388: 00200293 li t0,2
+8000038c: fe5212e3 bne tp,t0,80000370 <test_20+0x8>
+
+80000390 <test_21>:
+80000390: 00100093 li ra,1
+80000394: 00009a63 bnez ra,800003a8 <test_21+0x18>
+80000398: 00108093 addi ra,ra,1
+8000039c: 00108093 addi ra,ra,1
+800003a0: 00108093 addi ra,ra,1
+800003a4: 00108093 addi ra,ra,1
+800003a8: 00108093 addi ra,ra,1
+800003ac: 00108093 addi ra,ra,1
+800003b0: 00300e93 li t4,3
+800003b4: 01500193 li gp,21
+800003b8: 01d09463 bne ra,t4,800003c0 <fail>
+800003bc: 00301c63 bne zero,gp,800003d4 <pass>
+
+800003c0 <fail>:
+800003c0: 0ff0000f fence
+800003c4: 00018063 beqz gp,800003c4 <fail+0x4>
+800003c8: 00119193 slli gp,gp,0x1
+800003cc: 0011e193 ori gp,gp,1
+800003d0: 00000073 ecall
+
+800003d4 <pass>:
+800003d4: 0ff0000f fence
+800003d8: 00100193 li gp,1
+800003dc: 00000073 ecall
+800003e0: c0001073 unimp
+800003e4: 0000 unimp
+800003e6: 0000 unimp
+800003e8: 0000 unimp
+800003ea: 0000 unimp
+800003ec: 0000 unimp
+800003ee: 0000 unimp
+800003f0: 0000 unimp
+800003f2: 0000 unimp
+800003f4: 0000 unimp
+800003f6: 0000 unimp
+800003f8: 0000 unimp
+800003fa: 0000 unimp
+800003fc: 0000 unimp
+800003fe: 0000 unimp
+80000400: 0000 unimp
+80000402: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-bne.elf b/test/riscv-tests/rv32ui-p-bne.elf
new file mode 100644
index 0000000..3c3460b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-bne.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-fence_i.dump b/test/riscv-tests/rv32ui-p-fence_i.dump
new file mode 100644
index 0000000..2b9bfc4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-fence_i.dump
@@ -0,0 +1,189 @@
+
+rv32ui-p-fence_i: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <reset_vector+0xb0>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+800000fc: 06f00693 li a3,111
+80000100: 00002517 auipc a0,0x2
+80000104: f0051503 lh a0,-256(a0) # 80002000 <begin_signature>
+80000108: 00002597 auipc a1,0x2
+8000010c: efa59583 lh a1,-262(a1) # 80002002 <begin_signature+0x2>
+80000110: 00000013 nop
+80000114: 00000013 nop
+80000118: 00000013 nop
+8000011c: 00000013 nop
+80000120: 00000013 nop
+80000124: 00000013 nop
+80000128: 00000013 nop
+8000012c: 00000013 nop
+80000130: 00000013 nop
+80000134: 00000013 nop
+80000138: 00000013 nop
+8000013c: 00000013 nop
+80000140: 00000297 auipc t0,0x0
+80000144: 00a29a23 sh a0,20(t0) # 80000154 <reset_vector+0x108>
+80000148: 00000297 auipc t0,0x0
+8000014c: 00b29723 sh a1,14(t0) # 80000156 <reset_vector+0x10a>
+80000150: 0000100f fence.i
+80000154: 0de68693 addi a3,a3,222
+
+80000158 <test_2>:
+80000158: 00000013 nop
+8000015c: 1bc00e93 li t4,444
+80000160: 00200193 li gp,2
+80000164: 07d69a63 bne a3,t4,800001d8 <fail>
+80000168: 06400713 li a4,100
+8000016c: fff70713 addi a4,a4,-1
+80000170: fe071ee3 bnez a4,8000016c <test_2+0x14>
+80000174: 00000297 auipc t0,0x0
+80000178: 04a29623 sh a0,76(t0) # 800001c0 <test_2+0x68>
+8000017c: 00000297 auipc t0,0x0
+80000180: 04b29323 sh a1,70(t0) # 800001c2 <test_2+0x6a>
+80000184: 0000100f fence.i
+80000188: 00000013 nop
+8000018c: 00000013 nop
+80000190: 00000013 nop
+80000194: 00000013 nop
+80000198: 00000013 nop
+8000019c: 00000013 nop
+800001a0: 00000013 nop
+800001a4: 00000013 nop
+800001a8: 00000013 nop
+800001ac: 00000013 nop
+800001b0: 00000013 nop
+800001b4: 00000013 nop
+800001b8: 00000013 nop
+800001bc: 00000013 nop
+800001c0: 22b68693 addi a3,a3,555
+
+800001c4 <test_3>:
+800001c4: 00000013 nop
+800001c8: 30900e93 li t4,777
+800001cc: 00300193 li gp,3
+800001d0: 01d69463 bne a3,t4,800001d8 <fail>
+800001d4: 00301c63 bne zero,gp,800001ec <pass>
+
+800001d8 <fail>:
+800001d8: 0ff0000f fence
+800001dc: 00018063 beqz gp,800001dc <fail+0x4>
+800001e0: 00119193 slli gp,gp,0x1
+800001e4: 0011e193 ori gp,gp,1
+800001e8: 00000073 ecall
+
+800001ec <pass>:
+800001ec: 0ff0000f fence
+800001f0: 00100193 li gp,1
+800001f4: 00000073 ecall
+800001f8: c0001073 unimp
+800001fc: 0000 unimp
+800001fe: 0000 unimp
+80000200: 0000 unimp
+80000202: 0000 unimp
+80000204: 0000 unimp
+80000206: 0000 unimp
+80000208: 0000 unimp
+8000020a: 0000 unimp
+8000020c: 0000 unimp
+8000020e: 0000 unimp
+80000210: 0000 unimp
+80000212: 0000 unimp
+80000214: 0000 unimp
+80000216: 0000 unimp
+80000218: 0000 unimp
+8000021a: 0000 unimp
+8000021c: 0000 unimp
+8000021e: 0000 unimp
+80000220: 0000 unimp
+80000222: 0000 unimp
+80000224: 0000 unimp
+80000226: 0000 unimp
+80000228: 0000 unimp
+8000022a: 0000 unimp
+8000022c: 0000 unimp
+8000022e: 0000 unimp
+80000230: 0000 unimp
+80000232: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 14d68693 addi a3,a3,333
+80002004: 0000 unimp
+80002006: 0000 unimp
+80002008: 0000 unimp
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-fence_i.elf b/test/riscv-tests/rv32ui-p-fence_i.elf
new file mode 100644
index 0000000..5a14522
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-fence_i.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-jal.dump b/test/riscv-tests/rv32ui-p-jal.dump
new file mode 100644
index 0000000..4fa9613
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-jal.dump
@@ -0,0 +1,128 @@
+
+rv32ui-p-jal: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000093 li ra,0
+80000104: 0100026f jal tp,80000114 <target_2>
+
+80000108 <linkaddr_2>:
+80000108: 00000013 nop
+8000010c: 00000013 nop
+80000110: 0400006f j 80000150 <fail>
+
+80000114 <target_2>:
+80000114: 00000117 auipc sp,0x0
+80000118: ff410113 addi sp,sp,-12 # 80000108 <linkaddr_2>
+8000011c: 02411a63 bne sp,tp,80000150 <fail>
+
+80000120 <test_3>:
+80000120: 00100093 li ra,1
+80000124: 0140006f j 80000138 <test_3+0x18>
+80000128: 00108093 addi ra,ra,1
+8000012c: 00108093 addi ra,ra,1
+80000130: 00108093 addi ra,ra,1
+80000134: 00108093 addi ra,ra,1
+80000138: 00108093 addi ra,ra,1
+8000013c: 00108093 addi ra,ra,1
+80000140: 00300e93 li t4,3
+80000144: 00300193 li gp,3
+80000148: 01d09463 bne ra,t4,80000150 <fail>
+8000014c: 00301c63 bne zero,gp,80000164 <pass>
+
+80000150 <fail>:
+80000150: 0ff0000f fence
+80000154: 00018063 beqz gp,80000154 <fail+0x4>
+80000158: 00119193 slli gp,gp,0x1
+8000015c: 0011e193 ori gp,gp,1
+80000160: 00000073 ecall
+
+80000164 <pass>:
+80000164: 0ff0000f fence
+80000168: 00100193 li gp,1
+8000016c: 00000073 ecall
+80000170: c0001073 unimp
+80000174: 0000 unimp
+80000176: 0000 unimp
+80000178: 0000 unimp
+8000017a: 0000 unimp
+8000017c: 0000 unimp
+8000017e: 0000 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-jal.elf b/test/riscv-tests/rv32ui-p-jal.elf
new file mode 100644
index 0000000..2f30903
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-jal.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-jalr.dump b/test/riscv-tests/rv32ui-p-jalr.dump
new file mode 100644
index 0000000..09fdd35
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-jalr.dump
@@ -0,0 +1,166 @@
+
+rv32ui-p-jalr: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00200193 li gp,2
+80000100: 00000293 li t0,0
+80000104: 00000317 auipc t1,0x0
+80000108: 01030313 addi t1,t1,16 # 80000114 <target_2>
+8000010c: 000302e7 jalr t0,t1
+
+80000110 <linkaddr_2>:
+80000110: 0c00006f j 800001d0 <fail>
+
+80000114 <target_2>:
+80000114: 00000317 auipc t1,0x0
+80000118: ffc30313 addi t1,t1,-4 # 80000110 <linkaddr_2>
+8000011c: 0a629a63 bne t0,t1,800001d0 <fail>
+
+80000120 <test_4>:
+80000120: 00400193 li gp,4
+80000124: 00000213 li tp,0
+80000128: 00000317 auipc t1,0x0
+8000012c: 01030313 addi t1,t1,16 # 80000138 <test_4+0x18>
+80000130: 000309e7 jalr s3,t1
+80000134: 08301e63 bne zero,gp,800001d0 <fail>
+80000138: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000013c: 00200293 li t0,2
+80000140: fe5214e3 bne tp,t0,80000128 <test_4+0x8>
+
+80000144 <test_5>:
+80000144: 00500193 li gp,5
+80000148: 00000213 li tp,0
+8000014c: 00000317 auipc t1,0x0
+80000150: 01430313 addi t1,t1,20 # 80000160 <test_5+0x1c>
+80000154: 00000013 nop
+80000158: 000309e7 jalr s3,t1
+8000015c: 06301a63 bne zero,gp,800001d0 <fail>
+80000160: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000164: 00200293 li t0,2
+80000168: fe5212e3 bne tp,t0,8000014c <test_5+0x8>
+
+8000016c <test_6>:
+8000016c: 00600193 li gp,6
+80000170: 00000213 li tp,0
+80000174: 00000317 auipc t1,0x0
+80000178: 01830313 addi t1,t1,24 # 8000018c <test_6+0x20>
+8000017c: 00000013 nop
+80000180: 00000013 nop
+80000184: 000309e7 jalr s3,t1
+80000188: 04301463 bne zero,gp,800001d0 <fail>
+8000018c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000190: 00200293 li t0,2
+80000194: fe5210e3 bne tp,t0,80000174 <test_6+0x8>
+
+80000198 <test_7>:
+80000198: 00100293 li t0,1
+8000019c: 00000317 auipc t1,0x0
+800001a0: 01c30313 addi t1,t1,28 # 800001b8 <test_7+0x20>
+800001a4: ffc30067 jr -4(t1)
+800001a8: 00128293 addi t0,t0,1
+800001ac: 00128293 addi t0,t0,1
+800001b0: 00128293 addi t0,t0,1
+800001b4: 00128293 addi t0,t0,1
+800001b8: 00128293 addi t0,t0,1
+800001bc: 00128293 addi t0,t0,1
+800001c0: 00400e93 li t4,4
+800001c4: 00700193 li gp,7
+800001c8: 01d29463 bne t0,t4,800001d0 <fail>
+800001cc: 00301c63 bne zero,gp,800001e4 <pass>
+
+800001d0 <fail>:
+800001d0: 0ff0000f fence
+800001d4: 00018063 beqz gp,800001d4 <fail+0x4>
+800001d8: 00119193 slli gp,gp,0x1
+800001dc: 0011e193 ori gp,gp,1
+800001e0: 00000073 ecall
+
+800001e4 <pass>:
+800001e4: 0ff0000f fence
+800001e8: 00100193 li gp,1
+800001ec: 00000073 ecall
+800001f0: c0001073 unimp
+800001f4: 0000 unimp
+800001f6: 0000 unimp
+800001f8: 0000 unimp
+800001fa: 0000 unimp
+800001fc: 0000 unimp
+800001fe: 0000 unimp
+80000200: 0000 unimp
+80000202: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-jalr.elf b/test/riscv-tests/rv32ui-p-jalr.elf
new file mode 100644
index 0000000..78f985d
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-jalr.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-lb.dump b/test/riscv-tests/rv32ui-p-lb.dump
new file mode 100644
index 0000000..d7e051a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lb.dump
@@ -0,0 +1,306 @@
+
+rv32ui-p-lb: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 00008f03 lb t5,0(ra)
+80000108: fff00e93 li t4,-1
+8000010c: 00200193 li gp,2
+80000110: 23df1c63 bne t5,t4,80000348 <fail>
+
+80000114 <test_3>:
+80000114: 00002097 auipc ra,0x2
+80000118: eec08093 addi ra,ra,-276 # 80002000 <begin_signature>
+8000011c: 00108f03 lb t5,1(ra)
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 23df1063 bne t5,t4,80000348 <fail>
+
+8000012c <test_4>:
+8000012c: 00002097 auipc ra,0x2
+80000130: ed408093 addi ra,ra,-300 # 80002000 <begin_signature>
+80000134: 00208f03 lb t5,2(ra)
+80000138: ff000e93 li t4,-16
+8000013c: 00400193 li gp,4
+80000140: 21df1463 bne t5,t4,80000348 <fail>
+
+80000144 <test_5>:
+80000144: 00002097 auipc ra,0x2
+80000148: ebc08093 addi ra,ra,-324 # 80002000 <begin_signature>
+8000014c: 00308f03 lb t5,3(ra)
+80000150: 00f00e93 li t4,15
+80000154: 00500193 li gp,5
+80000158: 1fdf1863 bne t5,t4,80000348 <fail>
+
+8000015c <test_6>:
+8000015c: 00002097 auipc ra,0x2
+80000160: ea708093 addi ra,ra,-345 # 80002003 <tdat4>
+80000164: ffd08f03 lb t5,-3(ra)
+80000168: fff00e93 li t4,-1
+8000016c: 00600193 li gp,6
+80000170: 1ddf1c63 bne t5,t4,80000348 <fail>
+
+80000174 <test_7>:
+80000174: 00002097 auipc ra,0x2
+80000178: e8f08093 addi ra,ra,-369 # 80002003 <tdat4>
+8000017c: ffe08f03 lb t5,-2(ra)
+80000180: 00000e93 li t4,0
+80000184: 00700193 li gp,7
+80000188: 1ddf1063 bne t5,t4,80000348 <fail>
+
+8000018c <test_8>:
+8000018c: 00002097 auipc ra,0x2
+80000190: e7708093 addi ra,ra,-393 # 80002003 <tdat4>
+80000194: fff08f03 lb t5,-1(ra)
+80000198: ff000e93 li t4,-16
+8000019c: 00800193 li gp,8
+800001a0: 1bdf1463 bne t5,t4,80000348 <fail>
+
+800001a4 <test_9>:
+800001a4: 00002097 auipc ra,0x2
+800001a8: e5f08093 addi ra,ra,-417 # 80002003 <tdat4>
+800001ac: 00008f03 lb t5,0(ra)
+800001b0: 00f00e93 li t4,15
+800001b4: 00900193 li gp,9
+800001b8: 19df1863 bne t5,t4,80000348 <fail>
+
+800001bc <test_10>:
+800001bc: 00002097 auipc ra,0x2
+800001c0: e4408093 addi ra,ra,-444 # 80002000 <begin_signature>
+800001c4: fe008093 addi ra,ra,-32
+800001c8: 02008283 lb t0,32(ra)
+800001cc: fff00e93 li t4,-1
+800001d0: 00a00193 li gp,10
+800001d4: 17d29a63 bne t0,t4,80000348 <fail>
+
+800001d8 <test_11>:
+800001d8: 00002097 auipc ra,0x2
+800001dc: e2808093 addi ra,ra,-472 # 80002000 <begin_signature>
+800001e0: ffa08093 addi ra,ra,-6
+800001e4: 00708283 lb t0,7(ra)
+800001e8: 00000e93 li t4,0
+800001ec: 00b00193 li gp,11
+800001f0: 15d29c63 bne t0,t4,80000348 <fail>
+
+800001f4 <test_12>:
+800001f4: 00c00193 li gp,12
+800001f8: 00000213 li tp,0
+800001fc: 00002097 auipc ra,0x2
+80000200: e0508093 addi ra,ra,-507 # 80002001 <tdat2>
+80000204: 00108f03 lb t5,1(ra)
+80000208: 000f0313 mv t1,t5
+8000020c: ff000e93 li t4,-16
+80000210: 13d31c63 bne t1,t4,80000348 <fail>
+80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000218: 00200293 li t0,2
+8000021c: fe5210e3 bne tp,t0,800001fc <test_12+0x8>
+
+80000220 <test_13>:
+80000220: 00d00193 li gp,13
+80000224: 00000213 li tp,0
+80000228: 00002097 auipc ra,0x2
+8000022c: dda08093 addi ra,ra,-550 # 80002002 <tdat3>
+80000230: 00108f03 lb t5,1(ra)
+80000234: 00000013 nop
+80000238: 000f0313 mv t1,t5
+8000023c: 00f00e93 li t4,15
+80000240: 11d31463 bne t1,t4,80000348 <fail>
+80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000248: 00200293 li t0,2
+8000024c: fc521ee3 bne tp,t0,80000228 <test_13+0x8>
+
+80000250 <test_14>:
+80000250: 00e00193 li gp,14
+80000254: 00000213 li tp,0
+80000258: 00002097 auipc ra,0x2
+8000025c: da808093 addi ra,ra,-600 # 80002000 <begin_signature>
+80000260: 00108f03 lb t5,1(ra)
+80000264: 00000013 nop
+80000268: 00000013 nop
+8000026c: 000f0313 mv t1,t5
+80000270: 00000e93 li t4,0
+80000274: 0dd31a63 bne t1,t4,80000348 <fail>
+80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000027c: 00200293 li t0,2
+80000280: fc521ce3 bne tp,t0,80000258 <test_14+0x8>
+
+80000284 <test_15>:
+80000284: 00f00193 li gp,15
+80000288: 00000213 li tp,0
+8000028c: 00002097 auipc ra,0x2
+80000290: d7508093 addi ra,ra,-651 # 80002001 <tdat2>
+80000294: 00108f03 lb t5,1(ra)
+80000298: ff000e93 li t4,-16
+8000029c: 0bdf1663 bne t5,t4,80000348 <fail>
+800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a4: 00200293 li t0,2
+800002a8: fe5212e3 bne tp,t0,8000028c <test_15+0x8>
+
+800002ac <test_16>:
+800002ac: 01000193 li gp,16
+800002b0: 00000213 li tp,0
+800002b4: 00002097 auipc ra,0x2
+800002b8: d4e08093 addi ra,ra,-690 # 80002002 <tdat3>
+800002bc: 00000013 nop
+800002c0: 00108f03 lb t5,1(ra)
+800002c4: 00f00e93 li t4,15
+800002c8: 09df1063 bne t5,t4,80000348 <fail>
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5210e3 bne tp,t0,800002b4 <test_16+0x8>
+
+800002d8 <test_17>:
+800002d8: 01100193 li gp,17
+800002dc: 00000213 li tp,0
+800002e0: 00002097 auipc ra,0x2
+800002e4: d2008093 addi ra,ra,-736 # 80002000 <begin_signature>
+800002e8: 00000013 nop
+800002ec: 00000013 nop
+800002f0: 00108f03 lb t5,1(ra)
+800002f4: 00000e93 li t4,0
+800002f8: 05df1863 bne t5,t4,80000348 <fail>
+800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000300: 00200293 li t0,2
+80000304: fc521ee3 bne tp,t0,800002e0 <test_17+0x8>
+
+80000308 <test_18>:
+80000308: 00002297 auipc t0,0x2
+8000030c: cf828293 addi t0,t0,-776 # 80002000 <begin_signature>
+80000310: 00028103 lb sp,0(t0)
+80000314: 00200113 li sp,2
+80000318: 00200e93 li t4,2
+8000031c: 01200193 li gp,18
+80000320: 03d11463 bne sp,t4,80000348 <fail>
+
+80000324 <test_19>:
+80000324: 00002297 auipc t0,0x2
+80000328: cdc28293 addi t0,t0,-804 # 80002000 <begin_signature>
+8000032c: 00028103 lb sp,0(t0)
+80000330: 00000013 nop
+80000334: 00200113 li sp,2
+80000338: 00200e93 li t4,2
+8000033c: 01300193 li gp,19
+80000340: 01d11463 bne sp,t4,80000348 <fail>
+80000344: 00301c63 bne zero,gp,8000035c <pass>
+
+80000348 <fail>:
+80000348: 0ff0000f fence
+8000034c: 00018063 beqz gp,8000034c <fail+0x4>
+80000350: 00119193 slli gp,gp,0x1
+80000354: 0011e193 ori gp,gp,1
+80000358: 00000073 ecall
+
+8000035c <pass>:
+8000035c: 0ff0000f fence
+80000360: 00100193 li gp,1
+80000364: 00000073 ecall
+80000368: c0001073 unimp
+8000036c: 0000 unimp
+8000036e: 0000 unimp
+80000370: 0000 unimp
+80000372: 0000 unimp
+80000374: 0000 unimp
+80000376: 0000 unimp
+80000378: 0000 unimp
+8000037a: 0000 unimp
+8000037c: 0000 unimp
+8000037e: 0000 unimp
+80000380: 0000 unimp
+80000382: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 0xff
+
+80002001 <tdat2>:
+80002001: fsw fs0,32(s0)
+
+80002002 <tdat3>:
+80002002: addi a2,sp,988
+
+80002003 <tdat4>:
+80002003: 0000000f fence unknown,unknown
+80002007: 0000 unimp
+80002009: 0000 unimp
+8000200b: 0000 unimp
+8000200d: 0000 unimp
+8000200f: 00 Address 0x000000008000200f is out of bounds.
+
diff --git a/test/riscv-tests/rv32ui-p-lb.elf b/test/riscv-tests/rv32ui-p-lb.elf
new file mode 100644
index 0000000..5e070c8
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lb.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-lbu.dump b/test/riscv-tests/rv32ui-p-lbu.dump
new file mode 100644
index 0000000..ca55e4d
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lbu.dump
@@ -0,0 +1,306 @@
+
+rv32ui-p-lbu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 0000cf03 lbu t5,0(ra)
+80000108: 0ff00e93 li t4,255
+8000010c: 00200193 li gp,2
+80000110: 23df1c63 bne t5,t4,80000348 <fail>
+
+80000114 <test_3>:
+80000114: 00002097 auipc ra,0x2
+80000118: eec08093 addi ra,ra,-276 # 80002000 <begin_signature>
+8000011c: 0010cf03 lbu t5,1(ra)
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 23df1063 bne t5,t4,80000348 <fail>
+
+8000012c <test_4>:
+8000012c: 00002097 auipc ra,0x2
+80000130: ed408093 addi ra,ra,-300 # 80002000 <begin_signature>
+80000134: 0020cf03 lbu t5,2(ra)
+80000138: 0f000e93 li t4,240
+8000013c: 00400193 li gp,4
+80000140: 21df1463 bne t5,t4,80000348 <fail>
+
+80000144 <test_5>:
+80000144: 00002097 auipc ra,0x2
+80000148: ebc08093 addi ra,ra,-324 # 80002000 <begin_signature>
+8000014c: 0030cf03 lbu t5,3(ra)
+80000150: 00f00e93 li t4,15
+80000154: 00500193 li gp,5
+80000158: 1fdf1863 bne t5,t4,80000348 <fail>
+
+8000015c <test_6>:
+8000015c: 00002097 auipc ra,0x2
+80000160: ea708093 addi ra,ra,-345 # 80002003 <tdat4>
+80000164: ffd0cf03 lbu t5,-3(ra)
+80000168: 0ff00e93 li t4,255
+8000016c: 00600193 li gp,6
+80000170: 1ddf1c63 bne t5,t4,80000348 <fail>
+
+80000174 <test_7>:
+80000174: 00002097 auipc ra,0x2
+80000178: e8f08093 addi ra,ra,-369 # 80002003 <tdat4>
+8000017c: ffe0cf03 lbu t5,-2(ra)
+80000180: 00000e93 li t4,0
+80000184: 00700193 li gp,7
+80000188: 1ddf1063 bne t5,t4,80000348 <fail>
+
+8000018c <test_8>:
+8000018c: 00002097 auipc ra,0x2
+80000190: e7708093 addi ra,ra,-393 # 80002003 <tdat4>
+80000194: fff0cf03 lbu t5,-1(ra)
+80000198: 0f000e93 li t4,240
+8000019c: 00800193 li gp,8
+800001a0: 1bdf1463 bne t5,t4,80000348 <fail>
+
+800001a4 <test_9>:
+800001a4: 00002097 auipc ra,0x2
+800001a8: e5f08093 addi ra,ra,-417 # 80002003 <tdat4>
+800001ac: 0000cf03 lbu t5,0(ra)
+800001b0: 00f00e93 li t4,15
+800001b4: 00900193 li gp,9
+800001b8: 19df1863 bne t5,t4,80000348 <fail>
+
+800001bc <test_10>:
+800001bc: 00002097 auipc ra,0x2
+800001c0: e4408093 addi ra,ra,-444 # 80002000 <begin_signature>
+800001c4: fe008093 addi ra,ra,-32
+800001c8: 0200c283 lbu t0,32(ra)
+800001cc: 0ff00e93 li t4,255
+800001d0: 00a00193 li gp,10
+800001d4: 17d29a63 bne t0,t4,80000348 <fail>
+
+800001d8 <test_11>:
+800001d8: 00002097 auipc ra,0x2
+800001dc: e2808093 addi ra,ra,-472 # 80002000 <begin_signature>
+800001e0: ffa08093 addi ra,ra,-6
+800001e4: 0070c283 lbu t0,7(ra)
+800001e8: 00000e93 li t4,0
+800001ec: 00b00193 li gp,11
+800001f0: 15d29c63 bne t0,t4,80000348 <fail>
+
+800001f4 <test_12>:
+800001f4: 00c00193 li gp,12
+800001f8: 00000213 li tp,0
+800001fc: 00002097 auipc ra,0x2
+80000200: e0508093 addi ra,ra,-507 # 80002001 <tdat2>
+80000204: 0010cf03 lbu t5,1(ra)
+80000208: 000f0313 mv t1,t5
+8000020c: 0f000e93 li t4,240
+80000210: 13d31c63 bne t1,t4,80000348 <fail>
+80000214: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000218: 00200293 li t0,2
+8000021c: fe5210e3 bne tp,t0,800001fc <test_12+0x8>
+
+80000220 <test_13>:
+80000220: 00d00193 li gp,13
+80000224: 00000213 li tp,0
+80000228: 00002097 auipc ra,0x2
+8000022c: dda08093 addi ra,ra,-550 # 80002002 <tdat3>
+80000230: 0010cf03 lbu t5,1(ra)
+80000234: 00000013 nop
+80000238: 000f0313 mv t1,t5
+8000023c: 00f00e93 li t4,15
+80000240: 11d31463 bne t1,t4,80000348 <fail>
+80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000248: 00200293 li t0,2
+8000024c: fc521ee3 bne tp,t0,80000228 <test_13+0x8>
+
+80000250 <test_14>:
+80000250: 00e00193 li gp,14
+80000254: 00000213 li tp,0
+80000258: 00002097 auipc ra,0x2
+8000025c: da808093 addi ra,ra,-600 # 80002000 <begin_signature>
+80000260: 0010cf03 lbu t5,1(ra)
+80000264: 00000013 nop
+80000268: 00000013 nop
+8000026c: 000f0313 mv t1,t5
+80000270: 00000e93 li t4,0
+80000274: 0dd31a63 bne t1,t4,80000348 <fail>
+80000278: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000027c: 00200293 li t0,2
+80000280: fc521ce3 bne tp,t0,80000258 <test_14+0x8>
+
+80000284 <test_15>:
+80000284: 00f00193 li gp,15
+80000288: 00000213 li tp,0
+8000028c: 00002097 auipc ra,0x2
+80000290: d7508093 addi ra,ra,-651 # 80002001 <tdat2>
+80000294: 0010cf03 lbu t5,1(ra)
+80000298: 0f000e93 li t4,240
+8000029c: 0bdf1663 bne t5,t4,80000348 <fail>
+800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a4: 00200293 li t0,2
+800002a8: fe5212e3 bne tp,t0,8000028c <test_15+0x8>
+
+800002ac <test_16>:
+800002ac: 01000193 li gp,16
+800002b0: 00000213 li tp,0
+800002b4: 00002097 auipc ra,0x2
+800002b8: d4e08093 addi ra,ra,-690 # 80002002 <tdat3>
+800002bc: 00000013 nop
+800002c0: 0010cf03 lbu t5,1(ra)
+800002c4: 00f00e93 li t4,15
+800002c8: 09df1063 bne t5,t4,80000348 <fail>
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5210e3 bne tp,t0,800002b4 <test_16+0x8>
+
+800002d8 <test_17>:
+800002d8: 01100193 li gp,17
+800002dc: 00000213 li tp,0
+800002e0: 00002097 auipc ra,0x2
+800002e4: d2008093 addi ra,ra,-736 # 80002000 <begin_signature>
+800002e8: 00000013 nop
+800002ec: 00000013 nop
+800002f0: 0010cf03 lbu t5,1(ra)
+800002f4: 00000e93 li t4,0
+800002f8: 05df1863 bne t5,t4,80000348 <fail>
+800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000300: 00200293 li t0,2
+80000304: fc521ee3 bne tp,t0,800002e0 <test_17+0x8>
+
+80000308 <test_18>:
+80000308: 00002297 auipc t0,0x2
+8000030c: cf828293 addi t0,t0,-776 # 80002000 <begin_signature>
+80000310: 0002c103 lbu sp,0(t0)
+80000314: 00200113 li sp,2
+80000318: 00200e93 li t4,2
+8000031c: 01200193 li gp,18
+80000320: 03d11463 bne sp,t4,80000348 <fail>
+
+80000324 <test_19>:
+80000324: 00002297 auipc t0,0x2
+80000328: cdc28293 addi t0,t0,-804 # 80002000 <begin_signature>
+8000032c: 0002c103 lbu sp,0(t0)
+80000330: 00000013 nop
+80000334: 00200113 li sp,2
+80000338: 00200e93 li t4,2
+8000033c: 01300193 li gp,19
+80000340: 01d11463 bne sp,t4,80000348 <fail>
+80000344: 00301c63 bne zero,gp,8000035c <pass>
+
+80000348 <fail>:
+80000348: 0ff0000f fence
+8000034c: 00018063 beqz gp,8000034c <fail+0x4>
+80000350: 00119193 slli gp,gp,0x1
+80000354: 0011e193 ori gp,gp,1
+80000358: 00000073 ecall
+
+8000035c <pass>:
+8000035c: 0ff0000f fence
+80000360: 00100193 li gp,1
+80000364: 00000073 ecall
+80000368: c0001073 unimp
+8000036c: 0000 unimp
+8000036e: 0000 unimp
+80000370: 0000 unimp
+80000372: 0000 unimp
+80000374: 0000 unimp
+80000376: 0000 unimp
+80000378: 0000 unimp
+8000037a: 0000 unimp
+8000037c: 0000 unimp
+8000037e: 0000 unimp
+80000380: 0000 unimp
+80000382: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 0xff
+
+80002001 <tdat2>:
+80002001: fsw fs0,32(s0)
+
+80002002 <tdat3>:
+80002002: addi a2,sp,988
+
+80002003 <tdat4>:
+80002003: 0000000f fence unknown,unknown
+80002007: 0000 unimp
+80002009: 0000 unimp
+8000200b: 0000 unimp
+8000200d: 0000 unimp
+8000200f: 00 Address 0x000000008000200f is out of bounds.
+
diff --git a/test/riscv-tests/rv32ui-p-lbu.elf b/test/riscv-tests/rv32ui-p-lbu.elf
new file mode 100644
index 0000000..b094c86
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lbu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-lh.dump b/test/riscv-tests/rv32ui-p-lh.dump
new file mode 100644
index 0000000..df4c8d8
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lh.dump
@@ -0,0 +1,327 @@
+
+rv32ui-p-lh: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 00009f03 lh t5,0(ra)
+80000108: 0ff00e93 li t4,255
+8000010c: 00200193 li gp,2
+80000110: 25df1c63 bne t5,t4,80000368 <fail>
+
+80000114 <test_3>:
+80000114: 00002097 auipc ra,0x2
+80000118: eec08093 addi ra,ra,-276 # 80002000 <begin_signature>
+8000011c: 00209f03 lh t5,2(ra)
+80000120: f0000e93 li t4,-256
+80000124: 00300193 li gp,3
+80000128: 25df1063 bne t5,t4,80000368 <fail>
+
+8000012c <test_4>:
+8000012c: 00002097 auipc ra,0x2
+80000130: ed408093 addi ra,ra,-300 # 80002000 <begin_signature>
+80000134: 00409f03 lh t5,4(ra)
+80000138: 00001eb7 lui t4,0x1
+8000013c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80000140: 00400193 li gp,4
+80000144: 23df1263 bne t5,t4,80000368 <fail>
+
+80000148 <test_5>:
+80000148: 00002097 auipc ra,0x2
+8000014c: eb808093 addi ra,ra,-328 # 80002000 <begin_signature>
+80000150: 00609f03 lh t5,6(ra)
+80000154: fffffeb7 lui t4,0xfffff
+80000158: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff>
+8000015c: 00500193 li gp,5
+80000160: 21df1463 bne t5,t4,80000368 <fail>
+
+80000164 <test_6>:
+80000164: 00002097 auipc ra,0x2
+80000168: ea208093 addi ra,ra,-350 # 80002006 <tdat4>
+8000016c: ffa09f03 lh t5,-6(ra)
+80000170: 0ff00e93 li t4,255
+80000174: 00600193 li gp,6
+80000178: 1fdf1863 bne t5,t4,80000368 <fail>
+
+8000017c <test_7>:
+8000017c: 00002097 auipc ra,0x2
+80000180: e8a08093 addi ra,ra,-374 # 80002006 <tdat4>
+80000184: ffc09f03 lh t5,-4(ra)
+80000188: f0000e93 li t4,-256
+8000018c: 00700193 li gp,7
+80000190: 1ddf1c63 bne t5,t4,80000368 <fail>
+
+80000194 <test_8>:
+80000194: 00002097 auipc ra,0x2
+80000198: e7208093 addi ra,ra,-398 # 80002006 <tdat4>
+8000019c: ffe09f03 lh t5,-2(ra)
+800001a0: 00001eb7 lui t4,0x1
+800001a4: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+800001a8: 00800193 li gp,8
+800001ac: 1bdf1e63 bne t5,t4,80000368 <fail>
+
+800001b0 <test_9>:
+800001b0: 00002097 auipc ra,0x2
+800001b4: e5608093 addi ra,ra,-426 # 80002006 <tdat4>
+800001b8: 00009f03 lh t5,0(ra)
+800001bc: fffffeb7 lui t4,0xfffff
+800001c0: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff>
+800001c4: 00900193 li gp,9
+800001c8: 1bdf1063 bne t5,t4,80000368 <fail>
+
+800001cc <test_10>:
+800001cc: 00002097 auipc ra,0x2
+800001d0: e3408093 addi ra,ra,-460 # 80002000 <begin_signature>
+800001d4: fe008093 addi ra,ra,-32
+800001d8: 02009283 lh t0,32(ra)
+800001dc: 0ff00e93 li t4,255
+800001e0: 00a00193 li gp,10
+800001e4: 19d29263 bne t0,t4,80000368 <fail>
+
+800001e8 <test_11>:
+800001e8: 00002097 auipc ra,0x2
+800001ec: e1808093 addi ra,ra,-488 # 80002000 <begin_signature>
+800001f0: ffb08093 addi ra,ra,-5
+800001f4: 00709283 lh t0,7(ra)
+800001f8: f0000e93 li t4,-256
+800001fc: 00b00193 li gp,11
+80000200: 17d29463 bne t0,t4,80000368 <fail>
+
+80000204 <test_12>:
+80000204: 00c00193 li gp,12
+80000208: 00000213 li tp,0
+8000020c: 00002097 auipc ra,0x2
+80000210: df608093 addi ra,ra,-522 # 80002002 <tdat2>
+80000214: 00209f03 lh t5,2(ra)
+80000218: 000f0313 mv t1,t5
+8000021c: 00001eb7 lui t4,0x1
+80000220: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80000224: 15d31263 bne t1,t4,80000368 <fail>
+80000228: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000022c: 00200293 li t0,2
+80000230: fc521ee3 bne tp,t0,8000020c <test_12+0x8>
+
+80000234 <test_13>:
+80000234: 00d00193 li gp,13
+80000238: 00000213 li tp,0
+8000023c: 00002097 auipc ra,0x2
+80000240: dc808093 addi ra,ra,-568 # 80002004 <tdat3>
+80000244: 00209f03 lh t5,2(ra)
+80000248: 00000013 nop
+8000024c: 000f0313 mv t1,t5
+80000250: fffffeb7 lui t4,0xfffff
+80000254: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff>
+80000258: 11d31863 bne t1,t4,80000368 <fail>
+8000025c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000260: 00200293 li t0,2
+80000264: fc521ce3 bne tp,t0,8000023c <test_13+0x8>
+
+80000268 <test_14>:
+80000268: 00e00193 li gp,14
+8000026c: 00000213 li tp,0
+80000270: 00002097 auipc ra,0x2
+80000274: d9008093 addi ra,ra,-624 # 80002000 <begin_signature>
+80000278: 00209f03 lh t5,2(ra)
+8000027c: 00000013 nop
+80000280: 00000013 nop
+80000284: 000f0313 mv t1,t5
+80000288: f0000e93 li t4,-256
+8000028c: 0dd31e63 bne t1,t4,80000368 <fail>
+80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000294: 00200293 li t0,2
+80000298: fc521ce3 bne tp,t0,80000270 <test_14+0x8>
+
+8000029c <test_15>:
+8000029c: 00f00193 li gp,15
+800002a0: 00000213 li tp,0
+800002a4: 00002097 auipc ra,0x2
+800002a8: d5e08093 addi ra,ra,-674 # 80002002 <tdat2>
+800002ac: 00209f03 lh t5,2(ra)
+800002b0: 00001eb7 lui t4,0x1
+800002b4: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+800002b8: 0bdf1863 bne t5,t4,80000368 <fail>
+800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c0: 00200293 li t0,2
+800002c4: fe5210e3 bne tp,t0,800002a4 <test_15+0x8>
+
+800002c8 <test_16>:
+800002c8: 01000193 li gp,16
+800002cc: 00000213 li tp,0
+800002d0: 00002097 auipc ra,0x2
+800002d4: d3408093 addi ra,ra,-716 # 80002004 <tdat3>
+800002d8: 00000013 nop
+800002dc: 00209f03 lh t5,2(ra)
+800002e0: fffffeb7 lui t4,0xfffff
+800002e4: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fffcfff>
+800002e8: 09df1063 bne t5,t4,80000368 <fail>
+800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f0: 00200293 li t0,2
+800002f4: fc521ee3 bne tp,t0,800002d0 <test_16+0x8>
+
+800002f8 <test_17>:
+800002f8: 01100193 li gp,17
+800002fc: 00000213 li tp,0
+80000300: 00002097 auipc ra,0x2
+80000304: d0008093 addi ra,ra,-768 # 80002000 <begin_signature>
+80000308: 00000013 nop
+8000030c: 00000013 nop
+80000310: 00209f03 lh t5,2(ra)
+80000314: f0000e93 li t4,-256
+80000318: 05df1863 bne t5,t4,80000368 <fail>
+8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000320: 00200293 li t0,2
+80000324: fc521ee3 bne tp,t0,80000300 <test_17+0x8>
+
+80000328 <test_18>:
+80000328: 00002297 auipc t0,0x2
+8000032c: cd828293 addi t0,t0,-808 # 80002000 <begin_signature>
+80000330: 00029103 lh sp,0(t0)
+80000334: 00200113 li sp,2
+80000338: 00200e93 li t4,2
+8000033c: 01200193 li gp,18
+80000340: 03d11463 bne sp,t4,80000368 <fail>
+
+80000344 <test_19>:
+80000344: 00002297 auipc t0,0x2
+80000348: cbc28293 addi t0,t0,-836 # 80002000 <begin_signature>
+8000034c: 00029103 lh sp,0(t0)
+80000350: 00000013 nop
+80000354: 00200113 li sp,2
+80000358: 00200e93 li t4,2
+8000035c: 01300193 li gp,19
+80000360: 01d11463 bne sp,t4,80000368 <fail>
+80000364: 00301c63 bne zero,gp,8000037c <pass>
+
+80000368 <fail>:
+80000368: 0ff0000f fence
+8000036c: 00018063 beqz gp,8000036c <fail+0x4>
+80000370: 00119193 slli gp,gp,0x1
+80000374: 0011e193 ori gp,gp,1
+80000378: 00000073 ecall
+
+8000037c <pass>:
+8000037c: 0ff0000f fence
+80000380: 00100193 li gp,1
+80000384: 00000073 ecall
+80000388: c0001073 unimp
+8000038c: 0000 unimp
+8000038e: 0000 unimp
+80000390: 0000 unimp
+80000392: 0000 unimp
+80000394: 0000 unimp
+80000396: 0000 unimp
+80000398: 0000 unimp
+8000039a: 0000 unimp
+8000039c: 0000 unimp
+8000039e: 0000 unimp
+800003a0: 0000 unimp
+800003a2: 0000 unimp
+800003a4: 0000 unimp
+800003a6: 0000 unimp
+800003a8: 0000 unimp
+800003aa: 0000 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 00ff 0xff
+
+80002002 <tdat2>:
+80002002: ff00 fsw fs0,56(a4)
+
+80002004 <tdat3>:
+80002004: 0ff0 addi a2,sp,988
+
+80002006 <tdat4>:
+80002006: 0000f00f 0xf00f
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-lh.elf b/test/riscv-tests/rv32ui-p-lh.elf
new file mode 100644
index 0000000..348fa06
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lh.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-lhu.dump b/test/riscv-tests/rv32ui-p-lhu.dump
new file mode 100644
index 0000000..2457f63
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lhu.dump
@@ -0,0 +1,322 @@
+
+rv32ui-p-lhu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 0000df03 lhu t5,0(ra)
+80000108: 0ff00e93 li t4,255
+8000010c: 00200193 li gp,2
+80000110: 27df1663 bne t5,t4,8000037c <fail>
+
+80000114 <test_3>:
+80000114: 00002097 auipc ra,0x2
+80000118: eec08093 addi ra,ra,-276 # 80002000 <begin_signature>
+8000011c: 0020df03 lhu t5,2(ra)
+80000120: 00010eb7 lui t4,0x10
+80000124: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80000128: 00300193 li gp,3
+8000012c: 25df1863 bne t5,t4,8000037c <fail>
+
+80000130 <test_4>:
+80000130: 00002097 auipc ra,0x2
+80000134: ed008093 addi ra,ra,-304 # 80002000 <begin_signature>
+80000138: 0040df03 lhu t5,4(ra)
+8000013c: 00001eb7 lui t4,0x1
+80000140: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80000144: 00400193 li gp,4
+80000148: 23df1a63 bne t5,t4,8000037c <fail>
+
+8000014c <test_5>:
+8000014c: 00002097 auipc ra,0x2
+80000150: eb408093 addi ra,ra,-332 # 80002000 <begin_signature>
+80000154: 0060df03 lhu t5,6(ra)
+80000158: 0000feb7 lui t4,0xf
+8000015c: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+80000160: 00500193 li gp,5
+80000164: 21df1c63 bne t5,t4,8000037c <fail>
+
+80000168 <test_6>:
+80000168: 00002097 auipc ra,0x2
+8000016c: e9e08093 addi ra,ra,-354 # 80002006 <tdat4>
+80000170: ffa0df03 lhu t5,-6(ra)
+80000174: 0ff00e93 li t4,255
+80000178: 00600193 li gp,6
+8000017c: 21df1063 bne t5,t4,8000037c <fail>
+
+80000180 <test_7>:
+80000180: 00002097 auipc ra,0x2
+80000184: e8608093 addi ra,ra,-378 # 80002006 <tdat4>
+80000188: ffc0df03 lhu t5,-4(ra)
+8000018c: 00010eb7 lui t4,0x10
+80000190: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80000194: 00700193 li gp,7
+80000198: 1fdf1263 bne t5,t4,8000037c <fail>
+
+8000019c <test_8>:
+8000019c: 00002097 auipc ra,0x2
+800001a0: e6a08093 addi ra,ra,-406 # 80002006 <tdat4>
+800001a4: ffe0df03 lhu t5,-2(ra)
+800001a8: 00001eb7 lui t4,0x1
+800001ac: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+800001b0: 00800193 li gp,8
+800001b4: 1ddf1463 bne t5,t4,8000037c <fail>
+
+800001b8 <test_9>:
+800001b8: 00002097 auipc ra,0x2
+800001bc: e4e08093 addi ra,ra,-434 # 80002006 <tdat4>
+800001c0: 0000df03 lhu t5,0(ra)
+800001c4: 0000feb7 lui t4,0xf
+800001c8: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+800001cc: 00900193 li gp,9
+800001d0: 1bdf1663 bne t5,t4,8000037c <fail>
+
+800001d4 <test_10>:
+800001d4: 00002097 auipc ra,0x2
+800001d8: e2c08093 addi ra,ra,-468 # 80002000 <begin_signature>
+800001dc: fe008093 addi ra,ra,-32
+800001e0: 0200d283 lhu t0,32(ra)
+800001e4: 0ff00e93 li t4,255
+800001e8: 00a00193 li gp,10
+800001ec: 19d29863 bne t0,t4,8000037c <fail>
+
+800001f0 <test_11>:
+800001f0: 00002097 auipc ra,0x2
+800001f4: e1008093 addi ra,ra,-496 # 80002000 <begin_signature>
+800001f8: ffb08093 addi ra,ra,-5
+800001fc: 0070d283 lhu t0,7(ra)
+80000200: 00010eb7 lui t4,0x10
+80000204: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80000208: 00b00193 li gp,11
+8000020c: 17d29863 bne t0,t4,8000037c <fail>
+
+80000210 <test_12>:
+80000210: 00c00193 li gp,12
+80000214: 00000213 li tp,0
+80000218: 00002097 auipc ra,0x2
+8000021c: dea08093 addi ra,ra,-534 # 80002002 <tdat2>
+80000220: 0020df03 lhu t5,2(ra)
+80000224: 000f0313 mv t1,t5
+80000228: 00001eb7 lui t4,0x1
+8000022c: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80000230: 15d31663 bne t1,t4,8000037c <fail>
+80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000238: 00200293 li t0,2
+8000023c: fc521ee3 bne tp,t0,80000218 <test_12+0x8>
+
+80000240 <test_13>:
+80000240: 00d00193 li gp,13
+80000244: 00000213 li tp,0
+80000248: 00002097 auipc ra,0x2
+8000024c: dbc08093 addi ra,ra,-580 # 80002004 <tdat3>
+80000250: 0020df03 lhu t5,2(ra)
+80000254: 00000013 nop
+80000258: 000f0313 mv t1,t5
+8000025c: 0000feb7 lui t4,0xf
+80000260: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+80000264: 11d31c63 bne t1,t4,8000037c <fail>
+80000268: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000026c: 00200293 li t0,2
+80000270: fc521ce3 bne tp,t0,80000248 <test_13+0x8>
+
+80000274 <test_14>:
+80000274: 00e00193 li gp,14
+80000278: 00000213 li tp,0
+8000027c: 00002097 auipc ra,0x2
+80000280: d8408093 addi ra,ra,-636 # 80002000 <begin_signature>
+80000284: 0020df03 lhu t5,2(ra)
+80000288: 00000013 nop
+8000028c: 00000013 nop
+80000290: 000f0313 mv t1,t5
+80000294: 00010eb7 lui t4,0x10
+80000298: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+8000029c: 0fd31063 bne t1,t4,8000037c <fail>
+800002a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002a4: 00200293 li t0,2
+800002a8: fc521ae3 bne tp,t0,8000027c <test_14+0x8>
+
+800002ac <test_15>:
+800002ac: 00f00193 li gp,15
+800002b0: 00000213 li tp,0
+800002b4: 00002097 auipc ra,0x2
+800002b8: d4e08093 addi ra,ra,-690 # 80002002 <tdat2>
+800002bc: 0020df03 lhu t5,2(ra)
+800002c0: 00001eb7 lui t4,0x1
+800002c4: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+800002c8: 0bdf1a63 bne t5,t4,8000037c <fail>
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5210e3 bne tp,t0,800002b4 <test_15+0x8>
+
+800002d8 <test_16>:
+800002d8: 01000193 li gp,16
+800002dc: 00000213 li tp,0
+800002e0: 00002097 auipc ra,0x2
+800002e4: d2408093 addi ra,ra,-732 # 80002004 <tdat3>
+800002e8: 00000013 nop
+800002ec: 0020df03 lhu t5,2(ra)
+800002f0: 0000feb7 lui t4,0xf
+800002f4: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+800002f8: 09df1263 bne t5,t4,8000037c <fail>
+800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000300: 00200293 li t0,2
+80000304: fc521ee3 bne tp,t0,800002e0 <test_16+0x8>
+
+80000308 <test_17>:
+80000308: 01100193 li gp,17
+8000030c: 00000213 li tp,0
+80000310: 00002097 auipc ra,0x2
+80000314: cf008093 addi ra,ra,-784 # 80002000 <begin_signature>
+80000318: 00000013 nop
+8000031c: 00000013 nop
+80000320: 0020df03 lhu t5,2(ra)
+80000324: 00010eb7 lui t4,0x10
+80000328: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+8000032c: 05df1863 bne t5,t4,8000037c <fail>
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fc521ce3 bne tp,t0,80000310 <test_17+0x8>
+
+8000033c <test_18>:
+8000033c: 00002297 auipc t0,0x2
+80000340: cc428293 addi t0,t0,-828 # 80002000 <begin_signature>
+80000344: 0002d103 lhu sp,0(t0)
+80000348: 00200113 li sp,2
+8000034c: 00200e93 li t4,2
+80000350: 01200193 li gp,18
+80000354: 03d11463 bne sp,t4,8000037c <fail>
+
+80000358 <test_19>:
+80000358: 00002297 auipc t0,0x2
+8000035c: ca828293 addi t0,t0,-856 # 80002000 <begin_signature>
+80000360: 0002d103 lhu sp,0(t0)
+80000364: 00000013 nop
+80000368: 00200113 li sp,2
+8000036c: 00200e93 li t4,2
+80000370: 01300193 li gp,19
+80000374: 01d11463 bne sp,t4,8000037c <fail>
+80000378: 00301c63 bne zero,gp,80000390 <pass>
+
+8000037c <fail>:
+8000037c: 0ff0000f fence
+80000380: 00018063 beqz gp,80000380 <fail+0x4>
+80000384: 00119193 slli gp,gp,0x1
+80000388: 0011e193 ori gp,gp,1
+8000038c: 00000073 ecall
+
+80000390 <pass>:
+80000390: 0ff0000f fence
+80000394: 00100193 li gp,1
+80000398: 00000073 ecall
+8000039c: c0001073 unimp
+800003a0: 0000 unimp
+800003a2: 0000 unimp
+800003a4: 0000 unimp
+800003a6: 0000 unimp
+800003a8: 0000 unimp
+800003aa: 0000 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 00ff 0xff
+
+80002002 <tdat2>:
+80002002: ff00 fsw fs0,56(a4)
+
+80002004 <tdat3>:
+80002004: 0ff0 addi a2,sp,988
+
+80002006 <tdat4>:
+80002006: 0000f00f 0xf00f
+8000200a: 0000 unimp
+8000200c: 0000 unimp
+8000200e: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-lhu.elf b/test/riscv-tests/rv32ui-p-lhu.elf
new file mode 100644
index 0000000..2849a58
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-lui.dump b/test/riscv-tests/rv32ui-p-lui.dump
new file mode 100644
index 0000000..380c8e1
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lui.dump
@@ -0,0 +1,127 @@
+
+rv32ui-p-lui: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 000000b7 lui ra,0x0
+80000100: 00000e93 li t4,0
+80000104: 00200193 li gp,2
+80000108: 05d09a63 bne ra,t4,8000015c <fail>
+
+8000010c <test_3>:
+8000010c: fffff0b7 lui ra,0xfffff
+80000110: 4010d093 srai ra,ra,0x1
+80000114: 80000e93 li t4,-2048
+80000118: 00300193 li gp,3
+8000011c: 05d09063 bne ra,t4,8000015c <fail>
+
+80000120 <test_4>:
+80000120: 7ffff0b7 lui ra,0x7ffff
+80000124: 4140d093 srai ra,ra,0x14
+80000128: 7ff00e93 li t4,2047
+8000012c: 00400193 li gp,4
+80000130: 03d09663 bne ra,t4,8000015c <fail>
+
+80000134 <test_5>:
+80000134: 800000b7 lui ra,0x80000
+80000138: 4140d093 srai ra,ra,0x14
+8000013c: 80000e93 li t4,-2048
+80000140: 00500193 li gp,5
+80000144: 01d09c63 bne ra,t4,8000015c <fail>
+
+80000148 <test_6>:
+80000148: 80000037 lui zero,0x80000
+8000014c: 00000e93 li t4,0
+80000150: 00600193 li gp,6
+80000154: 01d01463 bne zero,t4,8000015c <fail>
+80000158: 00301c63 bne zero,gp,80000170 <pass>
+
+8000015c <fail>:
+8000015c: 0ff0000f fence
+80000160: 00018063 beqz gp,80000160 <fail+0x4>
+80000164: 00119193 slli gp,gp,0x1
+80000168: 0011e193 ori gp,gp,1
+8000016c: 00000073 ecall
+
+80000170 <pass>:
+80000170: 0ff0000f fence
+80000174: 00100193 li gp,1
+80000178: 00000073 ecall
+8000017c: c0001073 unimp
+80000180: 0000 unimp
+80000182: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-lui.elf b/test/riscv-tests/rv32ui-p-lui.elf
new file mode 100644
index 0000000..c38c7f2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lui.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-lw.dump b/test/riscv-tests/rv32ui-p-lw.dump
new file mode 100644
index 0000000..031df75
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lw.dump
@@ -0,0 +1,319 @@
+
+rv32ui-p-lw: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 0000af03 lw t5,0(ra)
+80000108: 00ff0eb7 lui t4,0xff0
+8000010c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80000110: 00200193 li gp,2
+80000114: 27df1a63 bne t5,t4,80000388 <fail>
+
+80000118 <test_3>:
+80000118: 00002097 auipc ra,0x2
+8000011c: ee808093 addi ra,ra,-280 # 80002000 <begin_signature>
+80000120: 0040af03 lw t5,4(ra)
+80000124: ff010eb7 lui t4,0xff010
+80000128: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0>
+8000012c: 00300193 li gp,3
+80000130: 25df1c63 bne t5,t4,80000388 <fail>
+
+80000134 <test_4>:
+80000134: 00002097 auipc ra,0x2
+80000138: ecc08093 addi ra,ra,-308 # 80002000 <begin_signature>
+8000013c: 0080af03 lw t5,8(ra)
+80000140: 0ff01eb7 lui t4,0xff01
+80000144: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000148: 00400193 li gp,4
+8000014c: 23df1e63 bne t5,t4,80000388 <fail>
+
+80000150 <test_5>:
+80000150: 00002097 auipc ra,0x2
+80000154: eb008093 addi ra,ra,-336 # 80002000 <begin_signature>
+80000158: 00c0af03 lw t5,12(ra)
+8000015c: f00ffeb7 lui t4,0xf00ff
+80000160: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff>
+80000164: 00500193 li gp,5
+80000168: 23df1063 bne t5,t4,80000388 <fail>
+
+8000016c <test_6>:
+8000016c: 00002097 auipc ra,0x2
+80000170: ea008093 addi ra,ra,-352 # 8000200c <tdat4>
+80000174: ff40af03 lw t5,-12(ra)
+80000178: 00ff0eb7 lui t4,0xff0
+8000017c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80000180: 00600193 li gp,6
+80000184: 21df1263 bne t5,t4,80000388 <fail>
+
+80000188 <test_7>:
+80000188: 00002097 auipc ra,0x2
+8000018c: e8408093 addi ra,ra,-380 # 8000200c <tdat4>
+80000190: ff80af03 lw t5,-8(ra)
+80000194: ff010eb7 lui t4,0xff010
+80000198: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0>
+8000019c: 00700193 li gp,7
+800001a0: 1fdf1463 bne t5,t4,80000388 <fail>
+
+800001a4 <test_8>:
+800001a4: 00002097 auipc ra,0x2
+800001a8: e6808093 addi ra,ra,-408 # 8000200c <tdat4>
+800001ac: ffc0af03 lw t5,-4(ra)
+800001b0: 0ff01eb7 lui t4,0xff01
+800001b4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+800001b8: 00800193 li gp,8
+800001bc: 1ddf1663 bne t5,t4,80000388 <fail>
+
+800001c0 <test_9>:
+800001c0: 00002097 auipc ra,0x2
+800001c4: e4c08093 addi ra,ra,-436 # 8000200c <tdat4>
+800001c8: 0000af03 lw t5,0(ra)
+800001cc: f00ffeb7 lui t4,0xf00ff
+800001d0: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff>
+800001d4: 00900193 li gp,9
+800001d8: 1bdf1863 bne t5,t4,80000388 <fail>
+
+800001dc <test_10>:
+800001dc: 00002097 auipc ra,0x2
+800001e0: e2408093 addi ra,ra,-476 # 80002000 <begin_signature>
+800001e4: fe008093 addi ra,ra,-32
+800001e8: 0200a283 lw t0,32(ra)
+800001ec: 00ff0eb7 lui t4,0xff0
+800001f0: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+800001f4: 00a00193 li gp,10
+800001f8: 19d29863 bne t0,t4,80000388 <fail>
+
+800001fc <test_11>:
+800001fc: 00002097 auipc ra,0x2
+80000200: e0408093 addi ra,ra,-508 # 80002000 <begin_signature>
+80000204: ffd08093 addi ra,ra,-3
+80000208: 0070a283 lw t0,7(ra)
+8000020c: ff010eb7 lui t4,0xff010
+80000210: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0>
+80000214: 00b00193 li gp,11
+80000218: 17d29863 bne t0,t4,80000388 <fail>
+
+8000021c <test_12>:
+8000021c: 00c00193 li gp,12
+80000220: 00000213 li tp,0
+80000224: 00002097 auipc ra,0x2
+80000228: de008093 addi ra,ra,-544 # 80002004 <tdat2>
+8000022c: 0040af03 lw t5,4(ra)
+80000230: 000f0313 mv t1,t5
+80000234: 0ff01eb7 lui t4,0xff01
+80000238: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+8000023c: 15d31663 bne t1,t4,80000388 <fail>
+80000240: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000244: 00200293 li t0,2
+80000248: fc521ee3 bne tp,t0,80000224 <test_12+0x8>
+
+8000024c <test_13>:
+8000024c: 00d00193 li gp,13
+80000250: 00000213 li tp,0
+80000254: 00002097 auipc ra,0x2
+80000258: db408093 addi ra,ra,-588 # 80002008 <tdat3>
+8000025c: 0040af03 lw t5,4(ra)
+80000260: 00000013 nop
+80000264: 000f0313 mv t1,t5
+80000268: f00ffeb7 lui t4,0xf00ff
+8000026c: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff>
+80000270: 11d31c63 bne t1,t4,80000388 <fail>
+80000274: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000278: 00200293 li t0,2
+8000027c: fc521ce3 bne tp,t0,80000254 <test_13+0x8>
+
+80000280 <test_14>:
+80000280: 00e00193 li gp,14
+80000284: 00000213 li tp,0
+80000288: 00002097 auipc ra,0x2
+8000028c: d7808093 addi ra,ra,-648 # 80002000 <begin_signature>
+80000290: 0040af03 lw t5,4(ra)
+80000294: 00000013 nop
+80000298: 00000013 nop
+8000029c: 000f0313 mv t1,t5
+800002a0: ff010eb7 lui t4,0xff010
+800002a4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0>
+800002a8: 0fd31063 bne t1,t4,80000388 <fail>
+800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002b0: 00200293 li t0,2
+800002b4: fc521ae3 bne tp,t0,80000288 <test_14+0x8>
+
+800002b8 <test_15>:
+800002b8: 00f00193 li gp,15
+800002bc: 00000213 li tp,0
+800002c0: 00002097 auipc ra,0x2
+800002c4: d4408093 addi ra,ra,-700 # 80002004 <tdat2>
+800002c8: 0040af03 lw t5,4(ra)
+800002cc: 0ff01eb7 lui t4,0xff01
+800002d0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+800002d4: 0bdf1a63 bne t5,t4,80000388 <fail>
+800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002dc: 00200293 li t0,2
+800002e0: fe5210e3 bne tp,t0,800002c0 <test_15+0x8>
+
+800002e4 <test_16>:
+800002e4: 01000193 li gp,16
+800002e8: 00000213 li tp,0
+800002ec: 00002097 auipc ra,0x2
+800002f0: d1c08093 addi ra,ra,-740 # 80002008 <tdat3>
+800002f4: 00000013 nop
+800002f8: 0040af03 lw t5,4(ra)
+800002fc: f00ffeb7 lui t4,0xf00ff
+80000300: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fcfff>
+80000304: 09df1263 bne t5,t4,80000388 <fail>
+80000308: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000030c: 00200293 li t0,2
+80000310: fc521ee3 bne tp,t0,800002ec <test_16+0x8>
+
+80000314 <test_17>:
+80000314: 01100193 li gp,17
+80000318: 00000213 li tp,0
+8000031c: 00002097 auipc ra,0x2
+80000320: ce408093 addi ra,ra,-796 # 80002000 <begin_signature>
+80000324: 00000013 nop
+80000328: 00000013 nop
+8000032c: 0040af03 lw t5,4(ra)
+80000330: ff010eb7 lui t4,0xff010
+80000334: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00def0>
+80000338: 05df1863 bne t5,t4,80000388 <fail>
+8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000340: 00200293 li t0,2
+80000344: fc521ce3 bne tp,t0,8000031c <test_17+0x8>
+
+80000348 <test_18>:
+80000348: 00002297 auipc t0,0x2
+8000034c: cb828293 addi t0,t0,-840 # 80002000 <begin_signature>
+80000350: 0002a103 lw sp,0(t0)
+80000354: 00200113 li sp,2
+80000358: 00200e93 li t4,2
+8000035c: 01200193 li gp,18
+80000360: 03d11463 bne sp,t4,80000388 <fail>
+
+80000364 <test_19>:
+80000364: 00002297 auipc t0,0x2
+80000368: c9c28293 addi t0,t0,-868 # 80002000 <begin_signature>
+8000036c: 0002a103 lw sp,0(t0)
+80000370: 00000013 nop
+80000374: 00200113 li sp,2
+80000378: 00200e93 li t4,2
+8000037c: 01300193 li gp,19
+80000380: 01d11463 bne sp,t4,80000388 <fail>
+80000384: 00301c63 bne zero,gp,8000039c <pass>
+
+80000388 <fail>:
+80000388: 0ff0000f fence
+8000038c: 00018063 beqz gp,8000038c <fail+0x4>
+80000390: 00119193 slli gp,gp,0x1
+80000394: 0011e193 ori gp,gp,1
+80000398: 00000073 ecall
+
+8000039c <pass>:
+8000039c: 0ff0000f fence
+800003a0: 00100193 li gp,1
+800003a4: 00000073 ecall
+800003a8: c0001073 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: 00ff 0xff
+80002002: 00ff 0xff
+
+80002004 <tdat2>:
+80002004: ff00 fsw fs0,56(a4)
+80002006: ff00 fsw fs0,56(a4)
+
+80002008 <tdat3>:
+80002008: 0ff0 addi a2,sp,988
+8000200a: 0ff0 addi a2,sp,988
+
+8000200c <tdat4>:
+8000200c: f00ff00f 0xf00ff00f
diff --git a/test/riscv-tests/rv32ui-p-lw.elf b/test/riscv-tests/rv32ui-p-lw.elf
new file mode 100644
index 0000000..d28a7f2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-lw.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-or.dump b/test/riscv-tests/rv32ui-p-or.dump
new file mode 100644
index 0000000..5d8d60a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-or.dump
@@ -0,0 +1,464 @@
+
+rv32ui-p-or: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: ff0100b7 lui ra,0xff010
+80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000104: 0f0f1137 lui sp,0xf0f1
+80000108: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+8000010c: 0020ef33 or t5,ra,sp
+80000110: ff100eb7 lui t4,0xff100
+80000114: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+80000118: 00200193 li gp,2
+8000011c: 4bdf1263 bne t5,t4,800005c0 <fail>
+
+80000120 <test_3>:
+80000120: 0ff010b7 lui ra,0xff01
+80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000128: f0f0f137 lui sp,0xf0f0f
+8000012c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000130: 0020ef33 or t5,ra,sp
+80000134: fff10eb7 lui t4,0xfff10
+80000138: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0>
+8000013c: 00300193 li gp,3
+80000140: 49df1063 bne t5,t4,800005c0 <fail>
+
+80000144 <test_4>:
+80000144: 00ff00b7 lui ra,0xff0
+80000148: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000014c: 0f0f1137 lui sp,0xf0f1
+80000150: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000154: 0020ef33 or t5,ra,sp
+80000158: 0fff1eb7 lui t4,0xfff1
+8000015c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80000160: 00400193 li gp,4
+80000164: 45df1e63 bne t5,t4,800005c0 <fail>
+
+80000168 <test_5>:
+80000168: f00ff0b7 lui ra,0xf00ff
+8000016c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000170: f0f0f137 lui sp,0xf0f0f
+80000174: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000178: 0020ef33 or t5,ra,sp
+8000017c: f0fffeb7 lui t4,0xf0fff
+80000180: 0ffe8e93 addi t4,t4,255 # f0fff0ff <_end+0x70ffd0ff>
+80000184: 00500193 li gp,5
+80000188: 43df1c63 bne t5,t4,800005c0 <fail>
+
+8000018c <test_6>:
+8000018c: ff0100b7 lui ra,0xff010
+80000190: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000194: 0f0f1137 lui sp,0xf0f1
+80000198: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+8000019c: 0020e0b3 or ra,ra,sp
+800001a0: ff100eb7 lui t4,0xff100
+800001a4: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+800001a8: 00600193 li gp,6
+800001ac: 41d09a63 bne ra,t4,800005c0 <fail>
+
+800001b0 <test_7>:
+800001b0: ff0100b7 lui ra,0xff010
+800001b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001b8: 0f0f1137 lui sp,0xf0f1
+800001bc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800001c0: 0020e133 or sp,ra,sp
+800001c4: ff100eb7 lui t4,0xff100
+800001c8: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+800001cc: 00700193 li gp,7
+800001d0: 3fd11863 bne sp,t4,800005c0 <fail>
+
+800001d4 <test_8>:
+800001d4: ff0100b7 lui ra,0xff010
+800001d8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001dc: 0010e0b3 or ra,ra,ra
+800001e0: ff010eb7 lui t4,0xff010
+800001e4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+800001e8: 00800193 li gp,8
+800001ec: 3dd09a63 bne ra,t4,800005c0 <fail>
+
+800001f0 <test_9>:
+800001f0: 00000213 li tp,0
+800001f4: ff0100b7 lui ra,0xff010
+800001f8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001fc: 0f0f1137 lui sp,0xf0f1
+80000200: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000204: 0020ef33 or t5,ra,sp
+80000208: 000f0313 mv t1,t5
+8000020c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000210: 00200293 li t0,2
+80000214: fe5210e3 bne tp,t0,800001f4 <test_9+0x4>
+80000218: ff100eb7 lui t4,0xff100
+8000021c: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+80000220: 00900193 li gp,9
+80000224: 39d31e63 bne t1,t4,800005c0 <fail>
+
+80000228 <test_10>:
+80000228: 00000213 li tp,0
+8000022c: 0ff010b7 lui ra,0xff01
+80000230: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000234: f0f0f137 lui sp,0xf0f0f
+80000238: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+8000023c: 0020ef33 or t5,ra,sp
+80000240: 00000013 nop
+80000244: 000f0313 mv t1,t5
+80000248: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000024c: 00200293 li t0,2
+80000250: fc521ee3 bne tp,t0,8000022c <test_10+0x4>
+80000254: fff10eb7 lui t4,0xfff10
+80000258: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0>
+8000025c: 00a00193 li gp,10
+80000260: 37d31063 bne t1,t4,800005c0 <fail>
+
+80000264 <test_11>:
+80000264: 00000213 li tp,0
+80000268: 00ff00b7 lui ra,0xff0
+8000026c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000270: 0f0f1137 lui sp,0xf0f1
+80000274: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000278: 0020ef33 or t5,ra,sp
+8000027c: 00000013 nop
+80000280: 00000013 nop
+80000284: 000f0313 mv t1,t5
+80000288: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000028c: 00200293 li t0,2
+80000290: fc521ce3 bne tp,t0,80000268 <test_11+0x4>
+80000294: 0fff1eb7 lui t4,0xfff1
+80000298: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+8000029c: 00b00193 li gp,11
+800002a0: 33d31063 bne t1,t4,800005c0 <fail>
+
+800002a4 <test_12>:
+800002a4: 00000213 li tp,0
+800002a8: ff0100b7 lui ra,0xff010
+800002ac: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800002b0: 0f0f1137 lui sp,0xf0f1
+800002b4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800002b8: 0020ef33 or t5,ra,sp
+800002bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c0: 00200293 li t0,2
+800002c4: fe5212e3 bne tp,t0,800002a8 <test_12+0x4>
+800002c8: ff100eb7 lui t4,0xff100
+800002cc: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+800002d0: 00c00193 li gp,12
+800002d4: 2fdf1663 bne t5,t4,800005c0 <fail>
+
+800002d8 <test_13>:
+800002d8: 00000213 li tp,0
+800002dc: 0ff010b7 lui ra,0xff01
+800002e0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800002e4: f0f0f137 lui sp,0xf0f0f
+800002e8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800002ec: 00000013 nop
+800002f0: 0020ef33 or t5,ra,sp
+800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f8: 00200293 li t0,2
+800002fc: fe5210e3 bne tp,t0,800002dc <test_13+0x4>
+80000300: fff10eb7 lui t4,0xfff10
+80000304: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0>
+80000308: 00d00193 li gp,13
+8000030c: 2bdf1a63 bne t5,t4,800005c0 <fail>
+
+80000310 <test_14>:
+80000310: 00000213 li tp,0
+80000314: 00ff00b7 lui ra,0xff0
+80000318: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000031c: 0f0f1137 lui sp,0xf0f1
+80000320: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000324: 00000013 nop
+80000328: 00000013 nop
+8000032c: 0020ef33 or t5,ra,sp
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fc521ee3 bne tp,t0,80000314 <test_14+0x4>
+8000033c: 0fff1eb7 lui t4,0xfff1
+80000340: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80000344: 00e00193 li gp,14
+80000348: 27df1c63 bne t5,t4,800005c0 <fail>
+
+8000034c <test_15>:
+8000034c: 00000213 li tp,0
+80000350: ff0100b7 lui ra,0xff010
+80000354: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000358: 00000013 nop
+8000035c: 0f0f1137 lui sp,0xf0f1
+80000360: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000364: 0020ef33 or t5,ra,sp
+80000368: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000036c: 00200293 li t0,2
+80000370: fe5210e3 bne tp,t0,80000350 <test_15+0x4>
+80000374: ff100eb7 lui t4,0xff100
+80000378: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+8000037c: 00f00193 li gp,15
+80000380: 25df1063 bne t5,t4,800005c0 <fail>
+
+80000384 <test_16>:
+80000384: 00000213 li tp,0
+80000388: 0ff010b7 lui ra,0xff01
+8000038c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000390: 00000013 nop
+80000394: f0f0f137 lui sp,0xf0f0f
+80000398: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+8000039c: 00000013 nop
+800003a0: 0020ef33 or t5,ra,sp
+800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003a8: 00200293 li t0,2
+800003ac: fc521ee3 bne tp,t0,80000388 <test_16+0x4>
+800003b0: fff10eb7 lui t4,0xfff10
+800003b4: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0>
+800003b8: 01000193 li gp,16
+800003bc: 21df1263 bne t5,t4,800005c0 <fail>
+
+800003c0 <test_17>:
+800003c0: 00000213 li tp,0
+800003c4: 00ff00b7 lui ra,0xff0
+800003c8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800003cc: 00000013 nop
+800003d0: 00000013 nop
+800003d4: 0f0f1137 lui sp,0xf0f1
+800003d8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800003dc: 0020ef33 or t5,ra,sp
+800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003e4: 00200293 li t0,2
+800003e8: fc521ee3 bne tp,t0,800003c4 <test_17+0x4>
+800003ec: 0fff1eb7 lui t4,0xfff1
+800003f0: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+800003f4: 01100193 li gp,17
+800003f8: 1ddf1463 bne t5,t4,800005c0 <fail>
+
+800003fc <test_18>:
+800003fc: 00000213 li tp,0
+80000400: 0f0f1137 lui sp,0xf0f1
+80000404: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000408: ff0100b7 lui ra,0xff010
+8000040c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000410: 0020ef33 or t5,ra,sp
+80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000418: 00200293 li t0,2
+8000041c: fe5212e3 bne tp,t0,80000400 <test_18+0x4>
+80000420: ff100eb7 lui t4,0xff100
+80000424: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+80000428: 01200193 li gp,18
+8000042c: 19df1a63 bne t5,t4,800005c0 <fail>
+
+80000430 <test_19>:
+80000430: 00000213 li tp,0
+80000434: f0f0f137 lui sp,0xf0f0f
+80000438: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+8000043c: 0ff010b7 lui ra,0xff01
+80000440: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000444: 00000013 nop
+80000448: 0020ef33 or t5,ra,sp
+8000044c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000450: 00200293 li t0,2
+80000454: fe5210e3 bne tp,t0,80000434 <test_19+0x4>
+80000458: fff10eb7 lui t4,0xfff10
+8000045c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0>
+80000460: 01300193 li gp,19
+80000464: 15df1e63 bne t5,t4,800005c0 <fail>
+
+80000468 <test_20>:
+80000468: 00000213 li tp,0
+8000046c: 0f0f1137 lui sp,0xf0f1
+80000470: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000474: 00ff00b7 lui ra,0xff0
+80000478: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000047c: 00000013 nop
+80000480: 00000013 nop
+80000484: 0020ef33 or t5,ra,sp
+80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000048c: 00200293 li t0,2
+80000490: fc521ee3 bne tp,t0,8000046c <test_20+0x4>
+80000494: 0fff1eb7 lui t4,0xfff1
+80000498: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+8000049c: 01400193 li gp,20
+800004a0: 13df1063 bne t5,t4,800005c0 <fail>
+
+800004a4 <test_21>:
+800004a4: 00000213 li tp,0
+800004a8: 0f0f1137 lui sp,0xf0f1
+800004ac: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800004b0: 00000013 nop
+800004b4: ff0100b7 lui ra,0xff010
+800004b8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800004bc: 0020ef33 or t5,ra,sp
+800004c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c4: 00200293 li t0,2
+800004c8: fe5210e3 bne tp,t0,800004a8 <test_21+0x4>
+800004cc: ff100eb7 lui t4,0xff100
+800004d0: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0fdf0f>
+800004d4: 01500193 li gp,21
+800004d8: 0fdf1463 bne t5,t4,800005c0 <fail>
+
+800004dc <test_22>:
+800004dc: 00000213 li tp,0
+800004e0: f0f0f137 lui sp,0xf0f0f
+800004e4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800004e8: 00000013 nop
+800004ec: 0ff010b7 lui ra,0xff01
+800004f0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800004f4: 00000013 nop
+800004f8: 0020ef33 or t5,ra,sp
+800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000500: 00200293 li t0,2
+80000504: fc521ee3 bne tp,t0,800004e0 <test_22+0x4>
+80000508: fff10eb7 lui t4,0xfff10
+8000050c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff0dff0>
+80000510: 01600193 li gp,22
+80000514: 0bdf1663 bne t5,t4,800005c0 <fail>
+
+80000518 <test_23>:
+80000518: 00000213 li tp,0
+8000051c: 0f0f1137 lui sp,0xf0f1
+80000520: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000524: 00000013 nop
+80000528: 00000013 nop
+8000052c: 00ff00b7 lui ra,0xff0
+80000530: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000534: 0020ef33 or t5,ra,sp
+80000538: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000053c: 00200293 li t0,2
+80000540: fc521ee3 bne tp,t0,8000051c <test_23+0x4>
+80000544: 0fff1eb7 lui t4,0xfff1
+80000548: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+8000054c: 01700193 li gp,23
+80000550: 07df1863 bne t5,t4,800005c0 <fail>
+
+80000554 <test_24>:
+80000554: ff0100b7 lui ra,0xff010
+80000558: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+8000055c: 00106133 or sp,zero,ra
+80000560: ff010eb7 lui t4,0xff010
+80000564: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+80000568: 01800193 li gp,24
+8000056c: 05d11a63 bne sp,t4,800005c0 <fail>
+
+80000570 <test_25>:
+80000570: 00ff00b7 lui ra,0xff0
+80000574: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000578: 0000e133 or sp,ra,zero
+8000057c: 00ff0eb7 lui t4,0xff0
+80000580: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80000584: 01900193 li gp,25
+80000588: 03d11c63 bne sp,t4,800005c0 <fail>
+
+8000058c <test_26>:
+8000058c: 000060b3 or ra,zero,zero
+80000590: 00000e93 li t4,0
+80000594: 01a00193 li gp,26
+80000598: 03d09463 bne ra,t4,800005c0 <fail>
+
+8000059c <test_27>:
+8000059c: 111110b7 lui ra,0x11111
+800005a0: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef>
+800005a4: 22222137 lui sp,0x22222
+800005a8: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde>
+800005ac: 0020e033 or zero,ra,sp
+800005b0: 00000e93 li t4,0
+800005b4: 01b00193 li gp,27
+800005b8: 01d01463 bne zero,t4,800005c0 <fail>
+800005bc: 00301c63 bne zero,gp,800005d4 <pass>
+
+800005c0 <fail>:
+800005c0: 0ff0000f fence
+800005c4: 00018063 beqz gp,800005c4 <fail+0x4>
+800005c8: 00119193 slli gp,gp,0x1
+800005cc: 0011e193 ori gp,gp,1
+800005d0: 00000073 ecall
+
+800005d4 <pass>:
+800005d4: 0ff0000f fence
+800005d8: 00100193 li gp,1
+800005dc: 00000073 ecall
+800005e0: c0001073 unimp
+800005e4: 0000 unimp
+800005e6: 0000 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-or.elf b/test/riscv-tests/rv32ui-p-or.elf
new file mode 100644
index 0000000..0f505c0
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-or.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-ori.dump b/test/riscv-tests/rv32ui-p-ori.dump
new file mode 100644
index 0000000..a6a5ed8
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-ori.dump
@@ -0,0 +1,240 @@
+
+rv32ui-p-ori: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: ff0100b7 lui ra,0xff010
+80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000104: f0f0ef13 ori t5,ra,-241
+80000108: f0f00e93 li t4,-241
+8000010c: 00200193 li gp,2
+80000110: 1ddf1463 bne t5,t4,800002d8 <fail>
+
+80000114 <test_3>:
+80000114: 0ff010b7 lui ra,0xff01
+80000118: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+8000011c: 0f00ef13 ori t5,ra,240
+80000120: 0ff01eb7 lui t4,0xff01
+80000124: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000128: 00300193 li gp,3
+8000012c: 1bdf1663 bne t5,t4,800002d8 <fail>
+
+80000130 <test_4>:
+80000130: 00ff00b7 lui ra,0xff0
+80000134: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000138: 70f0ef13 ori t5,ra,1807
+8000013c: 00ff0eb7 lui t4,0xff0
+80000140: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801>
+80000144: 00400193 li gp,4
+80000148: 19df1863 bne t5,t4,800002d8 <fail>
+
+8000014c <test_5>:
+8000014c: f00ff0b7 lui ra,0xf00ff
+80000150: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000154: 0f00ef13 ori t5,ra,240
+80000158: f00ffeb7 lui t4,0xf00ff
+8000015c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff>
+80000160: 00500193 li gp,5
+80000164: 17df1a63 bne t5,t4,800002d8 <fail>
+
+80000168 <test_6>:
+80000168: ff0100b7 lui ra,0xff010
+8000016c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000170: 0f00e093 ori ra,ra,240
+80000174: ff010eb7 lui t4,0xff010
+80000178: ff0e8e93 addi t4,t4,-16 # ff00fff0 <_end+0x7f00dff0>
+8000017c: 00600193 li gp,6
+80000180: 15d09c63 bne ra,t4,800002d8 <fail>
+
+80000184 <test_7>:
+80000184: 00000213 li tp,0
+80000188: 0ff010b7 lui ra,0xff01
+8000018c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000190: 0f00ef13 ori t5,ra,240
+80000194: 000f0313 mv t1,t5
+80000198: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000019c: 00200293 li t0,2
+800001a0: fe5214e3 bne tp,t0,80000188 <test_7+0x4>
+800001a4: 0ff01eb7 lui t4,0xff01
+800001a8: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+800001ac: 00700193 li gp,7
+800001b0: 13d31463 bne t1,t4,800002d8 <fail>
+
+800001b4 <test_8>:
+800001b4: 00000213 li tp,0
+800001b8: 00ff00b7 lui ra,0xff0
+800001bc: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800001c0: 70f0ef13 ori t5,ra,1807
+800001c4: 00000013 nop
+800001c8: 000f0313 mv t1,t5
+800001cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001d0: 00200293 li t0,2
+800001d4: fe5212e3 bne tp,t0,800001b8 <test_8+0x4>
+800001d8: 00ff0eb7 lui t4,0xff0
+800001dc: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801>
+800001e0: 00800193 li gp,8
+800001e4: 0fd31a63 bne t1,t4,800002d8 <fail>
+
+800001e8 <test_9>:
+800001e8: 00000213 li tp,0
+800001ec: f00ff0b7 lui ra,0xf00ff
+800001f0: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+800001f4: 0f00ef13 ori t5,ra,240
+800001f8: 00000013 nop
+800001fc: 00000013 nop
+80000200: 000f0313 mv t1,t5
+80000204: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000208: 00200293 li t0,2
+8000020c: fe5210e3 bne tp,t0,800001ec <test_9+0x4>
+80000210: f00ffeb7 lui t4,0xf00ff
+80000214: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff>
+80000218: 00900193 li gp,9
+8000021c: 0bd31e63 bne t1,t4,800002d8 <fail>
+
+80000220 <test_10>:
+80000220: 00000213 li tp,0
+80000224: 0ff010b7 lui ra,0xff01
+80000228: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+8000022c: 0f00ef13 ori t5,ra,240
+80000230: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000234: 00200293 li t0,2
+80000238: fe5216e3 bne tp,t0,80000224 <test_10+0x4>
+8000023c: 0ff01eb7 lui t4,0xff01
+80000240: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000244: 00a00193 li gp,10
+80000248: 09df1863 bne t5,t4,800002d8 <fail>
+
+8000024c <test_11>:
+8000024c: 00000213 li tp,0
+80000250: 00ff00b7 lui ra,0xff0
+80000254: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000258: 00000013 nop
+8000025c: f0f0ef13 ori t5,ra,-241
+80000260: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000264: 00200293 li t0,2
+80000268: fe5214e3 bne tp,t0,80000250 <test_11+0x4>
+8000026c: fff00e93 li t4,-1
+80000270: 00b00193 li gp,11
+80000274: 07df1263 bne t5,t4,800002d8 <fail>
+
+80000278 <test_12>:
+80000278: 00000213 li tp,0
+8000027c: f00ff0b7 lui ra,0xf00ff
+80000280: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000284: 00000013 nop
+80000288: 00000013 nop
+8000028c: 0f00ef13 ori t5,ra,240
+80000290: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000294: 00200293 li t0,2
+80000298: fe5212e3 bne tp,t0,8000027c <test_12+0x4>
+8000029c: f00ffeb7 lui t4,0xf00ff
+800002a0: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff>
+800002a4: 00c00193 li gp,12
+800002a8: 03df1863 bne t5,t4,800002d8 <fail>
+
+800002ac <test_13>:
+800002ac: 0f006093 ori ra,zero,240
+800002b0: 0f000e93 li t4,240
+800002b4: 00d00193 li gp,13
+800002b8: 03d09063 bne ra,t4,800002d8 <fail>
+
+800002bc <test_14>:
+800002bc: 00ff00b7 lui ra,0xff0
+800002c0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800002c4: 70f0e013 ori zero,ra,1807
+800002c8: 00000e93 li t4,0
+800002cc: 00e00193 li gp,14
+800002d0: 01d01463 bne zero,t4,800002d8 <fail>
+800002d4: 00301c63 bne zero,gp,800002ec <pass>
+
+800002d8 <fail>:
+800002d8: 0ff0000f fence
+800002dc: 00018063 beqz gp,800002dc <fail+0x4>
+800002e0: 00119193 slli gp,gp,0x1
+800002e4: 0011e193 ori gp,gp,1
+800002e8: 00000073 ecall
+
+800002ec <pass>:
+800002ec: 0ff0000f fence
+800002f0: 00100193 li gp,1
+800002f4: 00000073 ecall
+800002f8: c0001073 unimp
+800002fc: 0000 unimp
+800002fe: 0000 unimp
+80000300: 0000 unimp
+80000302: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-ori.elf b/test/riscv-tests/rv32ui-p-ori.elf
new file mode 100644
index 0000000..eb13ca2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-ori.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sb.dump b/test/riscv-tests/rv32ui-p-sb.dump
new file mode 100644
index 0000000..d0a187a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sb.dump
@@ -0,0 +1,447 @@
+
+rv32ui-p-sb: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: faa00113 li sp,-86
+80000108: 00208023 sb sp,0(ra)
+8000010c: 00008f03 lb t5,0(ra)
+80000110: faa00e93 li t4,-86
+80000114: 00200193 li gp,2
+80000118: 3ddf1c63 bne t5,t4,800004f0 <fail>
+
+8000011c <test_3>:
+8000011c: 00002097 auipc ra,0x2
+80000120: ee408093 addi ra,ra,-284 # 80002000 <begin_signature>
+80000124: 00000113 li sp,0
+80000128: 002080a3 sb sp,1(ra)
+8000012c: 00108f03 lb t5,1(ra)
+80000130: 00000e93 li t4,0
+80000134: 00300193 li gp,3
+80000138: 3bdf1c63 bne t5,t4,800004f0 <fail>
+
+8000013c <test_4>:
+8000013c: 00002097 auipc ra,0x2
+80000140: ec408093 addi ra,ra,-316 # 80002000 <begin_signature>
+80000144: fffff137 lui sp,0xfffff
+80000148: fa010113 addi sp,sp,-96 # ffffefa0 <_end+0x7fffcf90>
+8000014c: 00208123 sb sp,2(ra)
+80000150: 00209f03 lh t5,2(ra)
+80000154: fffffeb7 lui t4,0xfffff
+80000158: fa0e8e93 addi t4,t4,-96 # ffffefa0 <_end+0x7fffcf90>
+8000015c: 00400193 li gp,4
+80000160: 39df1863 bne t5,t4,800004f0 <fail>
+
+80000164 <test_5>:
+80000164: 00002097 auipc ra,0x2
+80000168: e9c08093 addi ra,ra,-356 # 80002000 <begin_signature>
+8000016c: 00a00113 li sp,10
+80000170: 002081a3 sb sp,3(ra)
+80000174: 00308f03 lb t5,3(ra)
+80000178: 00a00e93 li t4,10
+8000017c: 00500193 li gp,5
+80000180: 37df1863 bne t5,t4,800004f0 <fail>
+
+80000184 <test_6>:
+80000184: 00002097 auipc ra,0x2
+80000188: e8308093 addi ra,ra,-381 # 80002007 <tdat8>
+8000018c: faa00113 li sp,-86
+80000190: fe208ea3 sb sp,-3(ra)
+80000194: ffd08f03 lb t5,-3(ra)
+80000198: faa00e93 li t4,-86
+8000019c: 00600193 li gp,6
+800001a0: 35df1863 bne t5,t4,800004f0 <fail>
+
+800001a4 <test_7>:
+800001a4: 00002097 auipc ra,0x2
+800001a8: e6308093 addi ra,ra,-413 # 80002007 <tdat8>
+800001ac: 00000113 li sp,0
+800001b0: fe208f23 sb sp,-2(ra)
+800001b4: ffe08f03 lb t5,-2(ra)
+800001b8: 00000e93 li t4,0
+800001bc: 00700193 li gp,7
+800001c0: 33df1863 bne t5,t4,800004f0 <fail>
+
+800001c4 <test_8>:
+800001c4: 00002097 auipc ra,0x2
+800001c8: e4308093 addi ra,ra,-445 # 80002007 <tdat8>
+800001cc: fa000113 li sp,-96
+800001d0: fe208fa3 sb sp,-1(ra)
+800001d4: fff08f03 lb t5,-1(ra)
+800001d8: fa000e93 li t4,-96
+800001dc: 00800193 li gp,8
+800001e0: 31df1863 bne t5,t4,800004f0 <fail>
+
+800001e4 <test_9>:
+800001e4: 00002097 auipc ra,0x2
+800001e8: e2308093 addi ra,ra,-477 # 80002007 <tdat8>
+800001ec: 00a00113 li sp,10
+800001f0: 00208023 sb sp,0(ra)
+800001f4: 00008f03 lb t5,0(ra)
+800001f8: 00a00e93 li t4,10
+800001fc: 00900193 li gp,9
+80000200: 2fdf1863 bne t5,t4,800004f0 <fail>
+
+80000204 <test_10>:
+80000204: 00002097 auipc ra,0x2
+80000208: e0408093 addi ra,ra,-508 # 80002008 <tdat9>
+8000020c: 12345137 lui sp,0x12345
+80000210: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988>
+80000214: fe008213 addi tp,ra,-32
+80000218: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0>
+8000021c: 00008283 lb t0,0(ra)
+80000220: 07800e93 li t4,120
+80000224: 00a00193 li gp,10
+80000228: 2dd29463 bne t0,t4,800004f0 <fail>
+
+8000022c <test_11>:
+8000022c: 00002097 auipc ra,0x2
+80000230: ddc08093 addi ra,ra,-548 # 80002008 <tdat9>
+80000234: 00003137 lui sp,0x3
+80000238: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68>
+8000023c: ffa08093 addi ra,ra,-6
+80000240: 002083a3 sb sp,7(ra)
+80000244: 00002217 auipc tp,0x2
+80000248: dc520213 addi tp,tp,-571 # 80002009 <tdat10>
+8000024c: 00020283 lb t0,0(tp) # 0 <_start-0x80000000>
+80000250: f9800e93 li t4,-104
+80000254: 00b00193 li gp,11
+80000258: 29d29c63 bne t0,t4,800004f0 <fail>
+
+8000025c <test_12>:
+8000025c: 00c00193 li gp,12
+80000260: 00000213 li tp,0
+80000264: fdd00093 li ra,-35
+80000268: 00002117 auipc sp,0x2
+8000026c: d9810113 addi sp,sp,-616 # 80002000 <begin_signature>
+80000270: 00110023 sb ra,0(sp)
+80000274: 00010f03 lb t5,0(sp)
+80000278: fdd00e93 li t4,-35
+8000027c: 27df1a63 bne t5,t4,800004f0 <fail>
+80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000284: 00200293 li t0,2
+80000288: fc521ee3 bne tp,t0,80000264 <test_12+0x8>
+
+8000028c <test_13>:
+8000028c: 00d00193 li gp,13
+80000290: 00000213 li tp,0
+80000294: fcd00093 li ra,-51
+80000298: 00002117 auipc sp,0x2
+8000029c: d6810113 addi sp,sp,-664 # 80002000 <begin_signature>
+800002a0: 00000013 nop
+800002a4: 001100a3 sb ra,1(sp)
+800002a8: 00110f03 lb t5,1(sp)
+800002ac: fcd00e93 li t4,-51
+800002b0: 25df1063 bne t5,t4,800004f0 <fail>
+800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002b8: 00200293 li t0,2
+800002bc: fc521ce3 bne tp,t0,80000294 <test_13+0x8>
+
+800002c0 <test_14>:
+800002c0: 00e00193 li gp,14
+800002c4: 00000213 li tp,0
+800002c8: fcc00093 li ra,-52
+800002cc: 00002117 auipc sp,0x2
+800002d0: d3410113 addi sp,sp,-716 # 80002000 <begin_signature>
+800002d4: 00000013 nop
+800002d8: 00000013 nop
+800002dc: 00110123 sb ra,2(sp)
+800002e0: 00210f03 lb t5,2(sp)
+800002e4: fcc00e93 li t4,-52
+800002e8: 21df1463 bne t5,t4,800004f0 <fail>
+800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f0: 00200293 li t0,2
+800002f4: fc521ae3 bne tp,t0,800002c8 <test_14+0x8>
+
+800002f8 <test_15>:
+800002f8: 00f00193 li gp,15
+800002fc: 00000213 li tp,0
+80000300: fbc00093 li ra,-68
+80000304: 00000013 nop
+80000308: 00002117 auipc sp,0x2
+8000030c: cf810113 addi sp,sp,-776 # 80002000 <begin_signature>
+80000310: 001101a3 sb ra,3(sp)
+80000314: 00310f03 lb t5,3(sp)
+80000318: fbc00e93 li t4,-68
+8000031c: 1ddf1a63 bne t5,t4,800004f0 <fail>
+80000320: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000324: 00200293 li t0,2
+80000328: fc521ce3 bne tp,t0,80000300 <test_15+0x8>
+
+8000032c <test_16>:
+8000032c: 01000193 li gp,16
+80000330: 00000213 li tp,0
+80000334: fbb00093 li ra,-69
+80000338: 00000013 nop
+8000033c: 00002117 auipc sp,0x2
+80000340: cc410113 addi sp,sp,-828 # 80002000 <begin_signature>
+80000344: 00000013 nop
+80000348: 00110223 sb ra,4(sp)
+8000034c: 00410f03 lb t5,4(sp)
+80000350: fbb00e93 li t4,-69
+80000354: 19df1e63 bne t5,t4,800004f0 <fail>
+80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000035c: 00200293 li t0,2
+80000360: fc521ae3 bne tp,t0,80000334 <test_16+0x8>
+
+80000364 <test_17>:
+80000364: 01100193 li gp,17
+80000368: 00000213 li tp,0
+8000036c: fab00093 li ra,-85
+80000370: 00000013 nop
+80000374: 00000013 nop
+80000378: 00002117 auipc sp,0x2
+8000037c: c8810113 addi sp,sp,-888 # 80002000 <begin_signature>
+80000380: 001102a3 sb ra,5(sp)
+80000384: 00510f03 lb t5,5(sp)
+80000388: fab00e93 li t4,-85
+8000038c: 17df1263 bne t5,t4,800004f0 <fail>
+80000390: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000394: 00200293 li t0,2
+80000398: fc521ae3 bne tp,t0,8000036c <test_17+0x8>
+
+8000039c <test_18>:
+8000039c: 01200193 li gp,18
+800003a0: 00000213 li tp,0
+800003a4: 00002117 auipc sp,0x2
+800003a8: c5c10113 addi sp,sp,-932 # 80002000 <begin_signature>
+800003ac: 03300093 li ra,51
+800003b0: 00110023 sb ra,0(sp)
+800003b4: 00010f03 lb t5,0(sp)
+800003b8: 03300e93 li t4,51
+800003bc: 13df1a63 bne t5,t4,800004f0 <fail>
+800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c4: 00200293 li t0,2
+800003c8: fc521ee3 bne tp,t0,800003a4 <test_18+0x8>
+
+800003cc <test_19>:
+800003cc: 01300193 li gp,19
+800003d0: 00000213 li tp,0
+800003d4: 00002117 auipc sp,0x2
+800003d8: c2c10113 addi sp,sp,-980 # 80002000 <begin_signature>
+800003dc: 02300093 li ra,35
+800003e0: 00000013 nop
+800003e4: 001100a3 sb ra,1(sp)
+800003e8: 00110f03 lb t5,1(sp)
+800003ec: 02300e93 li t4,35
+800003f0: 11df1063 bne t5,t4,800004f0 <fail>
+800003f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003f8: 00200293 li t0,2
+800003fc: fc521ce3 bne tp,t0,800003d4 <test_19+0x8>
+
+80000400 <test_20>:
+80000400: 01400193 li gp,20
+80000404: 00000213 li tp,0
+80000408: 00002117 auipc sp,0x2
+8000040c: bf810113 addi sp,sp,-1032 # 80002000 <begin_signature>
+80000410: 02200093 li ra,34
+80000414: 00000013 nop
+80000418: 00000013 nop
+8000041c: 00110123 sb ra,2(sp)
+80000420: 00210f03 lb t5,2(sp)
+80000424: 02200e93 li t4,34
+80000428: 0ddf1463 bne t5,t4,800004f0 <fail>
+8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000430: 00200293 li t0,2
+80000434: fc521ae3 bne tp,t0,80000408 <test_20+0x8>
+
+80000438 <test_21>:
+80000438: 01500193 li gp,21
+8000043c: 00000213 li tp,0
+80000440: 00002117 auipc sp,0x2
+80000444: bc010113 addi sp,sp,-1088 # 80002000 <begin_signature>
+80000448: 00000013 nop
+8000044c: 01200093 li ra,18
+80000450: 001101a3 sb ra,3(sp)
+80000454: 00310f03 lb t5,3(sp)
+80000458: 01200e93 li t4,18
+8000045c: 09df1a63 bne t5,t4,800004f0 <fail>
+80000460: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000464: 00200293 li t0,2
+80000468: fc521ce3 bne tp,t0,80000440 <test_21+0x8>
+
+8000046c <test_22>:
+8000046c: 01600193 li gp,22
+80000470: 00000213 li tp,0
+80000474: 00002117 auipc sp,0x2
+80000478: b8c10113 addi sp,sp,-1140 # 80002000 <begin_signature>
+8000047c: 00000013 nop
+80000480: 01100093 li ra,17
+80000484: 00000013 nop
+80000488: 00110223 sb ra,4(sp)
+8000048c: 00410f03 lb t5,4(sp)
+80000490: 01100e93 li t4,17
+80000494: 05df1e63 bne t5,t4,800004f0 <fail>
+80000498: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000049c: 00200293 li t0,2
+800004a0: fc521ae3 bne tp,t0,80000474 <test_22+0x8>
+
+800004a4 <test_23>:
+800004a4: 01700193 li gp,23
+800004a8: 00000213 li tp,0
+800004ac: 00002117 auipc sp,0x2
+800004b0: b5410113 addi sp,sp,-1196 # 80002000 <begin_signature>
+800004b4: 00000013 nop
+800004b8: 00000013 nop
+800004bc: 00100093 li ra,1
+800004c0: 001102a3 sb ra,5(sp)
+800004c4: 00510f03 lb t5,5(sp)
+800004c8: 00100e93 li t4,1
+800004cc: 03df1263 bne t5,t4,800004f0 <fail>
+800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004d4: 00200293 li t0,2
+800004d8: fc521ae3 bne tp,t0,800004ac <test_23+0x8>
+800004dc: 0ef00513 li a0,239
+800004e0: 00002597 auipc a1,0x2
+800004e4: b2058593 addi a1,a1,-1248 # 80002000 <begin_signature>
+800004e8: 00a581a3 sb a0,3(a1)
+800004ec: 00301c63 bne zero,gp,80000504 <pass>
+
+800004f0 <fail>:
+800004f0: 0ff0000f fence
+800004f4: 00018063 beqz gp,800004f4 <fail+0x4>
+800004f8: 00119193 slli gp,gp,0x1
+800004fc: 0011e193 ori gp,gp,1
+80000500: 00000073 ecall
+
+80000504 <pass>:
+80000504: 0ff0000f fence
+80000508: 00100193 li gp,1
+8000050c: 00000073 ecall
+80000510: c0001073 unimp
+80000514: 0000 unimp
+80000516: 0000 unimp
+80000518: 0000 unimp
+8000051a: 0000 unimp
+8000051c: 0000 unimp
+8000051e: 0000 unimp
+80000520: 0000 unimp
+80000522: 0000 unimp
+80000524: 0000 unimp
+80000526: 0000 unimp
+80000528: 0000 unimp
+8000052a: 0000 unimp
+8000052c: 0000 unimp
+8000052e: 0000 unimp
+80000530: 0000 unimp
+80000532: 0000 unimp
+80000534: 0000 unimp
+80000536: 0000 unimp
+80000538: 0000 unimp
+8000053a: 0000 unimp
+8000053c: 0000 unimp
+8000053e: 0000 unimp
+80000540: 0000 unimp
+80000542: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: jal t6,800006fe <pass+0x1fa>
+
+80002001 <tdat2>:
+80002001: jal t6,800006ff <pass+0x1fb>
+
+80002002 <tdat3>:
+80002002: jal t6,80000700 <pass+0x1fc>
+
+80002003 <tdat4>:
+80002003: jal t6,80000701 <pass+0x1fd>
+
+80002004 <tdat5>:
+80002004: jal t6,80000702 <pass+0x1fe>
+
+80002005 <tdat6>:
+80002005: jal t6,80000703 <pass+0x1ff>
+
+80002006 <tdat7>:
+80002006: jal t6,80000704 <pass+0x200>
+
+80002007 <tdat8>:
+80002007: jal t6,80100015 <_end+0xfe005>
+
+80002008 <tdat9>:
+80002008: jal t6,80010008 <_end+0xdff8>
+
+80002009 <tdat10>:
+80002009: 000000ef jal ra,80002009 <tdat10>
+8000200d: 0000 unimp
+8000200f: 00 Address 0x000000008000200f is out of bounds.
+
diff --git a/test/riscv-tests/rv32ui-p-sb.elf b/test/riscv-tests/rv32ui-p-sb.elf
new file mode 100644
index 0000000..f51313b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sb.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sh.dump b/test/riscv-tests/rv32ui-p-sh.dump
new file mode 100644
index 0000000..d4bbbcb
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sh.dump
@@ -0,0 +1,480 @@
+
+rv32ui-p-sh: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 0aa00113 li sp,170
+80000108: 00209023 sh sp,0(ra)
+8000010c: 00009f03 lh t5,0(ra)
+80000110: 0aa00e93 li t4,170
+80000114: 00200193 li gp,2
+80000118: 45df1e63 bne t5,t4,80000574 <fail>
+
+8000011c <test_3>:
+8000011c: 00002097 auipc ra,0x2
+80000120: ee408093 addi ra,ra,-284 # 80002000 <begin_signature>
+80000124: ffffb137 lui sp,0xffffb
+80000128: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff89e0>
+8000012c: 00209123 sh sp,2(ra)
+80000130: 00209f03 lh t5,2(ra)
+80000134: ffffbeb7 lui t4,0xffffb
+80000138: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff89e0>
+8000013c: 00300193 li gp,3
+80000140: 43df1a63 bne t5,t4,80000574 <fail>
+
+80000144 <test_4>:
+80000144: 00002097 auipc ra,0x2
+80000148: ebc08093 addi ra,ra,-324 # 80002000 <begin_signature>
+8000014c: beef1137 lui sp,0xbeef1
+80000150: aa010113 addi sp,sp,-1376 # beef0aa0 <_end+0x3eeeea80>
+80000154: 00209223 sh sp,4(ra)
+80000158: 0040af03 lw t5,4(ra)
+8000015c: beef1eb7 lui t4,0xbeef1
+80000160: aa0e8e93 addi t4,t4,-1376 # beef0aa0 <_end+0x3eeeea80>
+80000164: 00400193 li gp,4
+80000168: 41df1663 bne t5,t4,80000574 <fail>
+
+8000016c <test_5>:
+8000016c: 00002097 auipc ra,0x2
+80000170: e9408093 addi ra,ra,-364 # 80002000 <begin_signature>
+80000174: ffffa137 lui sp,0xffffa
+80000178: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff7fea>
+8000017c: 00209323 sh sp,6(ra)
+80000180: 00609f03 lh t5,6(ra)
+80000184: ffffaeb7 lui t4,0xffffa
+80000188: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff7fea>
+8000018c: 00500193 li gp,5
+80000190: 3fdf1263 bne t5,t4,80000574 <fail>
+
+80000194 <test_6>:
+80000194: 00002097 auipc ra,0x2
+80000198: e7a08093 addi ra,ra,-390 # 8000200e <tdat8>
+8000019c: 0aa00113 li sp,170
+800001a0: fe209d23 sh sp,-6(ra)
+800001a4: ffa09f03 lh t5,-6(ra)
+800001a8: 0aa00e93 li t4,170
+800001ac: 00600193 li gp,6
+800001b0: 3ddf1263 bne t5,t4,80000574 <fail>
+
+800001b4 <test_7>:
+800001b4: 00002097 auipc ra,0x2
+800001b8: e5a08093 addi ra,ra,-422 # 8000200e <tdat8>
+800001bc: ffffb137 lui sp,0xffffb
+800001c0: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff89e0>
+800001c4: fe209e23 sh sp,-4(ra)
+800001c8: ffc09f03 lh t5,-4(ra)
+800001cc: ffffbeb7 lui t4,0xffffb
+800001d0: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff89e0>
+800001d4: 00700193 li gp,7
+800001d8: 39df1e63 bne t5,t4,80000574 <fail>
+
+800001dc <test_8>:
+800001dc: 00002097 auipc ra,0x2
+800001e0: e3208093 addi ra,ra,-462 # 8000200e <tdat8>
+800001e4: 00001137 lui sp,0x1
+800001e8: aa010113 addi sp,sp,-1376 # aa0 <_start-0x7ffff560>
+800001ec: fe209f23 sh sp,-2(ra)
+800001f0: ffe09f03 lh t5,-2(ra)
+800001f4: 00001eb7 lui t4,0x1
+800001f8: aa0e8e93 addi t4,t4,-1376 # aa0 <_start-0x7ffff560>
+800001fc: 00800193 li gp,8
+80000200: 37df1a63 bne t5,t4,80000574 <fail>
+
+80000204 <test_9>:
+80000204: 00002097 auipc ra,0x2
+80000208: e0a08093 addi ra,ra,-502 # 8000200e <tdat8>
+8000020c: ffffa137 lui sp,0xffffa
+80000210: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff7fea>
+80000214: 00209023 sh sp,0(ra)
+80000218: 00009f03 lh t5,0(ra)
+8000021c: ffffaeb7 lui t4,0xffffa
+80000220: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff7fea>
+80000224: 00900193 li gp,9
+80000228: 35df1663 bne t5,t4,80000574 <fail>
+
+8000022c <test_10>:
+8000022c: 00002097 auipc ra,0x2
+80000230: de408093 addi ra,ra,-540 # 80002010 <tdat9>
+80000234: 12345137 lui sp,0x12345
+80000238: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988>
+8000023c: fe008213 addi tp,ra,-32
+80000240: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0>
+80000244: 00009283 lh t0,0(ra)
+80000248: 00005eb7 lui t4,0x5
+8000024c: 678e8e93 addi t4,t4,1656 # 5678 <_start-0x7fffa988>
+80000250: 00a00193 li gp,10
+80000254: 33d29063 bne t0,t4,80000574 <fail>
+
+80000258 <test_11>:
+80000258: 00002097 auipc ra,0x2
+8000025c: db808093 addi ra,ra,-584 # 80002010 <tdat9>
+80000260: 00003137 lui sp,0x3
+80000264: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68>
+80000268: ffb08093 addi ra,ra,-5
+8000026c: 002093a3 sh sp,7(ra)
+80000270: 00002217 auipc tp,0x2
+80000274: da220213 addi tp,tp,-606 # 80002012 <tdat10>
+80000278: 00021283 lh t0,0(tp) # 0 <_start-0x80000000>
+8000027c: 00003eb7 lui t4,0x3
+80000280: 098e8e93 addi t4,t4,152 # 3098 <_start-0x7fffcf68>
+80000284: 00b00193 li gp,11
+80000288: 2fd29663 bne t0,t4,80000574 <fail>
+
+8000028c <test_12>:
+8000028c: 00c00193 li gp,12
+80000290: 00000213 li tp,0
+80000294: ffffd0b7 lui ra,0xffffd
+80000298: cdd08093 addi ra,ra,-803 # ffffccdd <_end+0x7fffacbd>
+8000029c: 00002117 auipc sp,0x2
+800002a0: d6410113 addi sp,sp,-668 # 80002000 <begin_signature>
+800002a4: 00111023 sh ra,0(sp)
+800002a8: 00011f03 lh t5,0(sp)
+800002ac: ffffdeb7 lui t4,0xffffd
+800002b0: cdde8e93 addi t4,t4,-803 # ffffccdd <_end+0x7fffacbd>
+800002b4: 2ddf1063 bne t5,t4,80000574 <fail>
+800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002bc: 00200293 li t0,2
+800002c0: fc521ae3 bne tp,t0,80000294 <test_12+0x8>
+
+800002c4 <test_13>:
+800002c4: 00d00193 li gp,13
+800002c8: 00000213 li tp,0
+800002cc: ffffc0b7 lui ra,0xffffc
+800002d0: ccd08093 addi ra,ra,-819 # ffffbccd <_end+0x7fff9cad>
+800002d4: 00002117 auipc sp,0x2
+800002d8: d2c10113 addi sp,sp,-724 # 80002000 <begin_signature>
+800002dc: 00000013 nop
+800002e0: 00111123 sh ra,2(sp)
+800002e4: 00211f03 lh t5,2(sp)
+800002e8: ffffceb7 lui t4,0xffffc
+800002ec: ccde8e93 addi t4,t4,-819 # ffffbccd <_end+0x7fff9cad>
+800002f0: 29df1263 bne t5,t4,80000574 <fail>
+800002f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f8: 00200293 li t0,2
+800002fc: fc5218e3 bne tp,t0,800002cc <test_13+0x8>
+
+80000300 <test_14>:
+80000300: 00e00193 li gp,14
+80000304: 00000213 li tp,0
+80000308: ffffc0b7 lui ra,0xffffc
+8000030c: bcc08093 addi ra,ra,-1076 # ffffbbcc <_end+0x7fff9bac>
+80000310: 00002117 auipc sp,0x2
+80000314: cf010113 addi sp,sp,-784 # 80002000 <begin_signature>
+80000318: 00000013 nop
+8000031c: 00000013 nop
+80000320: 00111223 sh ra,4(sp)
+80000324: 00411f03 lh t5,4(sp)
+80000328: ffffceb7 lui t4,0xffffc
+8000032c: bcce8e93 addi t4,t4,-1076 # ffffbbcc <_end+0x7fff9bac>
+80000330: 25df1263 bne t5,t4,80000574 <fail>
+80000334: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000338: 00200293 li t0,2
+8000033c: fc5216e3 bne tp,t0,80000308 <test_14+0x8>
+
+80000340 <test_15>:
+80000340: 00f00193 li gp,15
+80000344: 00000213 li tp,0
+80000348: ffffb0b7 lui ra,0xffffb
+8000034c: bbc08093 addi ra,ra,-1092 # ffffabbc <_end+0x7fff8b9c>
+80000350: 00000013 nop
+80000354: 00002117 auipc sp,0x2
+80000358: cac10113 addi sp,sp,-852 # 80002000 <begin_signature>
+8000035c: 00111323 sh ra,6(sp)
+80000360: 00611f03 lh t5,6(sp)
+80000364: ffffbeb7 lui t4,0xffffb
+80000368: bbce8e93 addi t4,t4,-1092 # ffffabbc <_end+0x7fff8b9c>
+8000036c: 21df1463 bne t5,t4,80000574 <fail>
+80000370: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000374: 00200293 li t0,2
+80000378: fc5218e3 bne tp,t0,80000348 <test_15+0x8>
+
+8000037c <test_16>:
+8000037c: 01000193 li gp,16
+80000380: 00000213 li tp,0
+80000384: ffffb0b7 lui ra,0xffffb
+80000388: abb08093 addi ra,ra,-1349 # ffffaabb <_end+0x7fff8a9b>
+8000038c: 00000013 nop
+80000390: 00002117 auipc sp,0x2
+80000394: c7010113 addi sp,sp,-912 # 80002000 <begin_signature>
+80000398: 00000013 nop
+8000039c: 00111423 sh ra,8(sp)
+800003a0: 00811f03 lh t5,8(sp)
+800003a4: ffffbeb7 lui t4,0xffffb
+800003a8: abbe8e93 addi t4,t4,-1349 # ffffaabb <_end+0x7fff8a9b>
+800003ac: 1ddf1463 bne t5,t4,80000574 <fail>
+800003b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003b4: 00200293 li t0,2
+800003b8: fc5216e3 bne tp,t0,80000384 <test_16+0x8>
+
+800003bc <test_17>:
+800003bc: 01100193 li gp,17
+800003c0: 00000213 li tp,0
+800003c4: ffffe0b7 lui ra,0xffffe
+800003c8: aab08093 addi ra,ra,-1365 # ffffdaab <_end+0x7fffba8b>
+800003cc: 00000013 nop
+800003d0: 00000013 nop
+800003d4: 00002117 auipc sp,0x2
+800003d8: c2c10113 addi sp,sp,-980 # 80002000 <begin_signature>
+800003dc: 00111523 sh ra,10(sp)
+800003e0: 00a11f03 lh t5,10(sp)
+800003e4: ffffeeb7 lui t4,0xffffe
+800003e8: aabe8e93 addi t4,t4,-1365 # ffffdaab <_end+0x7fffba8b>
+800003ec: 19df1463 bne t5,t4,80000574 <fail>
+800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003f4: 00200293 li t0,2
+800003f8: fc5216e3 bne tp,t0,800003c4 <test_17+0x8>
+
+800003fc <test_18>:
+800003fc: 01200193 li gp,18
+80000400: 00000213 li tp,0
+80000404: 00002117 auipc sp,0x2
+80000408: bfc10113 addi sp,sp,-1028 # 80002000 <begin_signature>
+8000040c: 000020b7 lui ra,0x2
+80000410: 23308093 addi ra,ra,563 # 2233 <_start-0x7fffddcd>
+80000414: 00111023 sh ra,0(sp)
+80000418: 00011f03 lh t5,0(sp)
+8000041c: 00002eb7 lui t4,0x2
+80000420: 233e8e93 addi t4,t4,563 # 2233 <_start-0x7fffddcd>
+80000424: 15df1863 bne t5,t4,80000574 <fail>
+80000428: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000042c: 00200293 li t0,2
+80000430: fc521ae3 bne tp,t0,80000404 <test_18+0x8>
+
+80000434 <test_19>:
+80000434: 01300193 li gp,19
+80000438: 00000213 li tp,0
+8000043c: 00002117 auipc sp,0x2
+80000440: bc410113 addi sp,sp,-1084 # 80002000 <begin_signature>
+80000444: 000010b7 lui ra,0x1
+80000448: 22308093 addi ra,ra,547 # 1223 <_start-0x7fffeddd>
+8000044c: 00000013 nop
+80000450: 00111123 sh ra,2(sp)
+80000454: 00211f03 lh t5,2(sp)
+80000458: 00001eb7 lui t4,0x1
+8000045c: 223e8e93 addi t4,t4,547 # 1223 <_start-0x7fffeddd>
+80000460: 11df1a63 bne t5,t4,80000574 <fail>
+80000464: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000468: 00200293 li t0,2
+8000046c: fc5218e3 bne tp,t0,8000043c <test_19+0x8>
+
+80000470 <test_20>:
+80000470: 01400193 li gp,20
+80000474: 00000213 li tp,0
+80000478: 00002117 auipc sp,0x2
+8000047c: b8810113 addi sp,sp,-1144 # 80002000 <begin_signature>
+80000480: 000010b7 lui ra,0x1
+80000484: 12208093 addi ra,ra,290 # 1122 <_start-0x7fffeede>
+80000488: 00000013 nop
+8000048c: 00000013 nop
+80000490: 00111223 sh ra,4(sp)
+80000494: 00411f03 lh t5,4(sp)
+80000498: 00001eb7 lui t4,0x1
+8000049c: 122e8e93 addi t4,t4,290 # 1122 <_start-0x7fffeede>
+800004a0: 0ddf1a63 bne t5,t4,80000574 <fail>
+800004a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004a8: 00200293 li t0,2
+800004ac: fc5216e3 bne tp,t0,80000478 <test_20+0x8>
+
+800004b0 <test_21>:
+800004b0: 01500193 li gp,21
+800004b4: 00000213 li tp,0
+800004b8: 00002117 auipc sp,0x2
+800004bc: b4810113 addi sp,sp,-1208 # 80002000 <begin_signature>
+800004c0: 00000013 nop
+800004c4: 11200093 li ra,274
+800004c8: 00111323 sh ra,6(sp)
+800004cc: 00611f03 lh t5,6(sp)
+800004d0: 11200e93 li t4,274
+800004d4: 0bdf1063 bne t5,t4,80000574 <fail>
+800004d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004dc: 00200293 li t0,2
+800004e0: fc521ce3 bne tp,t0,800004b8 <test_21+0x8>
+
+800004e4 <test_22>:
+800004e4: 01600193 li gp,22
+800004e8: 00000213 li tp,0
+800004ec: 00002117 auipc sp,0x2
+800004f0: b1410113 addi sp,sp,-1260 # 80002000 <begin_signature>
+800004f4: 00000013 nop
+800004f8: 01100093 li ra,17
+800004fc: 00000013 nop
+80000500: 00111423 sh ra,8(sp)
+80000504: 00811f03 lh t5,8(sp)
+80000508: 01100e93 li t4,17
+8000050c: 07df1463 bne t5,t4,80000574 <fail>
+80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000514: 00200293 li t0,2
+80000518: fc521ae3 bne tp,t0,800004ec <test_22+0x8>
+
+8000051c <test_23>:
+8000051c: 01700193 li gp,23
+80000520: 00000213 li tp,0
+80000524: 00002117 auipc sp,0x2
+80000528: adc10113 addi sp,sp,-1316 # 80002000 <begin_signature>
+8000052c: 00000013 nop
+80000530: 00000013 nop
+80000534: 000030b7 lui ra,0x3
+80000538: 00108093 addi ra,ra,1 # 3001 <_start-0x7fffcfff>
+8000053c: 00111523 sh ra,10(sp)
+80000540: 00a11f03 lh t5,10(sp)
+80000544: 00003eb7 lui t4,0x3
+80000548: 001e8e93 addi t4,t4,1 # 3001 <_start-0x7fffcfff>
+8000054c: 03df1463 bne t5,t4,80000574 <fail>
+80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000554: 00200293 li t0,2
+80000558: fc5216e3 bne tp,t0,80000524 <test_23+0x8>
+8000055c: 0000c537 lui a0,0xc
+80000560: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111>
+80000564: 00002597 auipc a1,0x2
+80000568: a9c58593 addi a1,a1,-1380 # 80002000 <begin_signature>
+8000056c: 00a59323 sh a0,6(a1)
+80000570: 00301c63 bne zero,gp,80000588 <pass>
+
+80000574 <fail>:
+80000574: 0ff0000f fence
+80000578: 00018063 beqz gp,80000578 <fail+0x4>
+8000057c: 00119193 slli gp,gp,0x1
+80000580: 0011e193 ori gp,gp,1
+80000584: 00000073 ecall
+
+80000588 <pass>:
+80000588: 0ff0000f fence
+8000058c: 00100193 li gp,1
+80000590: 00000073 ecall
+80000594: c0001073 unimp
+80000598: 0000 unimp
+8000059a: 0000 unimp
+8000059c: 0000 unimp
+8000059e: 0000 unimp
+800005a0: 0000 unimp
+800005a2: 0000 unimp
+800005a4: 0000 unimp
+800005a6: 0000 unimp
+800005a8: 0000 unimp
+800005aa: 0000 unimp
+800005ac: 0000 unimp
+800005ae: 0000 unimp
+800005b0: 0000 unimp
+800005b2: 0000 unimp
+800005b4: 0000 unimp
+800005b6: 0000 unimp
+800005b8: 0000 unimp
+800005ba: 0000 unimp
+800005bc: 0000 unimp
+800005be: 0000 unimp
+800005c0: 0000 unimp
+800005c2: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: jal t4,7fffd3ee <_start-0x2c12>
+
+80002002 <tdat2>:
+80002002: jal t4,7fffd3f0 <_start-0x2c10>
+
+80002004 <tdat3>:
+80002004: jal t4,7fffd3f2 <_start-0x2c0e>
+
+80002006 <tdat4>:
+80002006: jal t4,7fffd3f4 <_start-0x2c0c>
+
+80002008 <tdat5>:
+80002008: jal t4,7fffd3f6 <_start-0x2c0a>
+
+8000200a <tdat6>:
+8000200a: jal t4,7fffd3f8 <_start-0x2c08>
+
+8000200c <tdat7>:
+8000200c: jal t4,7fffd3fa <_start-0x2c06>
+
+8000200e <tdat8>:
+8000200e: jal t4,7fffd3fc <_start-0x2c04>
+
+80002010 <tdat9>:
+80002010: jal t4,7fffd3fe <_start-0x2c02>
+
+80002012 <tdat10>:
+80002012: 0000beef jal t4,8000d012 <_end+0xaff2>
+80002016: 0000 unimp
+80002018: 0000 unimp
+8000201a: 0000 unimp
+8000201c: 0000 unimp
+8000201e: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sh.elf b/test/riscv-tests/rv32ui-p-sh.elf
new file mode 100644
index 0000000..5d8c244
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sh.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-simple.dump b/test/riscv-tests/rv32ui-p-simple.dump
new file mode 100644
index 0000000..3ab5134
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-simple.dump
@@ -0,0 +1,110 @@
+
+rv32ui-p-simple: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <reset_vector+0xb0>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+800000fc: 0ff0000f fence
+80000100: 00100193 li gp,1
+80000104: 00000073 ecall
+80000108: c0001073 unimp
+8000010c: 0000 unimp
+8000010e: 0000 unimp
+80000110: 0000 unimp
+80000112: 0000 unimp
+80000114: 0000 unimp
+80000116: 0000 unimp
+80000118: 0000 unimp
+8000011a: 0000 unimp
+8000011c: 0000 unimp
+8000011e: 0000 unimp
+80000120: 0000 unimp
+80000122: 0000 unimp
+80000124: 0000 unimp
+80000126: 0000 unimp
+80000128: 0000 unimp
+8000012a: 0000 unimp
+8000012c: 0000 unimp
+8000012e: 0000 unimp
+80000130: 0000 unimp
+80000132: 0000 unimp
+80000134: 0000 unimp
+80000136: 0000 unimp
+80000138: 0000 unimp
+8000013a: 0000 unimp
+8000013c: 0000 unimp
+8000013e: 0000 unimp
+80000140: 0000 unimp
+80000142: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-simple.elf b/test/riscv-tests/rv32ui-p-simple.elf
new file mode 100644
index 0000000..5880ead
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-simple.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sll.dump b/test/riscv-tests/rv32ui-p-sll.dump
new file mode 100644
index 0000000..b1bd1b6
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sll.dump
@@ -0,0 +1,523 @@
+
+rv32ui-p-sll: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00100093 li ra,1
+80000100: 00000113 li sp,0
+80000104: 00209f33 sll t5,ra,sp
+80000108: 00100e93 li t4,1
+8000010c: 00200193 li gp,2
+80000110: 53df1e63 bne t5,t4,8000064c <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 00209f33 sll t5,ra,sp
+80000120: 00200e93 li t4,2
+80000124: 00300193 li gp,3
+80000128: 53df1263 bne t5,t4,8000064c <fail>
+
+8000012c <test_4>:
+8000012c: 00100093 li ra,1
+80000130: 00700113 li sp,7
+80000134: 00209f33 sll t5,ra,sp
+80000138: 08000e93 li t4,128
+8000013c: 00400193 li gp,4
+80000140: 51df1663 bne t5,t4,8000064c <fail>
+
+80000144 <test_5>:
+80000144: 00100093 li ra,1
+80000148: 00e00113 li sp,14
+8000014c: 00209f33 sll t5,ra,sp
+80000150: 00004eb7 lui t4,0x4
+80000154: 00500193 li gp,5
+80000158: 4fdf1a63 bne t5,t4,8000064c <fail>
+
+8000015c <test_6>:
+8000015c: 00100093 li ra,1
+80000160: 01f00113 li sp,31
+80000164: 00209f33 sll t5,ra,sp
+80000168: 80000eb7 lui t4,0x80000
+8000016c: 00600193 li gp,6
+80000170: 4ddf1e63 bne t5,t4,8000064c <fail>
+
+80000174 <test_7>:
+80000174: fff00093 li ra,-1
+80000178: 00000113 li sp,0
+8000017c: 00209f33 sll t5,ra,sp
+80000180: fff00e93 li t4,-1
+80000184: 00700193 li gp,7
+80000188: 4ddf1263 bne t5,t4,8000064c <fail>
+
+8000018c <test_8>:
+8000018c: fff00093 li ra,-1
+80000190: 00100113 li sp,1
+80000194: 00209f33 sll t5,ra,sp
+80000198: ffe00e93 li t4,-2
+8000019c: 00800193 li gp,8
+800001a0: 4bdf1663 bne t5,t4,8000064c <fail>
+
+800001a4 <test_9>:
+800001a4: fff00093 li ra,-1
+800001a8: 00700113 li sp,7
+800001ac: 00209f33 sll t5,ra,sp
+800001b0: f8000e93 li t4,-128
+800001b4: 00900193 li gp,9
+800001b8: 49df1a63 bne t5,t4,8000064c <fail>
+
+800001bc <test_10>:
+800001bc: fff00093 li ra,-1
+800001c0: 00e00113 li sp,14
+800001c4: 00209f33 sll t5,ra,sp
+800001c8: ffffceb7 lui t4,0xffffc
+800001cc: 00a00193 li gp,10
+800001d0: 47df1e63 bne t5,t4,8000064c <fail>
+
+800001d4 <test_11>:
+800001d4: fff00093 li ra,-1
+800001d8: 01f00113 li sp,31
+800001dc: 00209f33 sll t5,ra,sp
+800001e0: 80000eb7 lui t4,0x80000
+800001e4: 00b00193 li gp,11
+800001e8: 47df1263 bne t5,t4,8000064c <fail>
+
+800001ec <test_12>:
+800001ec: 212120b7 lui ra,0x21212
+800001f0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800001f4: 00000113 li sp,0
+800001f8: 00209f33 sll t5,ra,sp
+800001fc: 21212eb7 lui t4,0x21212
+80000200: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80000204: 00c00193 li gp,12
+80000208: 45df1263 bne t5,t4,8000064c <fail>
+
+8000020c <test_13>:
+8000020c: 212120b7 lui ra,0x21212
+80000210: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000214: 00100113 li sp,1
+80000218: 00209f33 sll t5,ra,sp
+8000021c: 42424eb7 lui t4,0x42424
+80000220: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe>
+80000224: 00d00193 li gp,13
+80000228: 43df1263 bne t5,t4,8000064c <fail>
+
+8000022c <test_14>:
+8000022c: 212120b7 lui ra,0x21212
+80000230: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000234: 00700113 li sp,7
+80000238: 00209f33 sll t5,ra,sp
+8000023c: 90909eb7 lui t4,0x90909
+80000240: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080>
+80000244: 00e00193 li gp,14
+80000248: 41df1263 bne t5,t4,8000064c <fail>
+
+8000024c <test_15>:
+8000024c: 212120b7 lui ra,0x21212
+80000250: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000254: 00e00113 li sp,14
+80000258: 00209f33 sll t5,ra,sp
+8000025c: 48484eb7 lui t4,0x48484
+80000260: 00f00193 li gp,15
+80000264: 3fdf1463 bne t5,t4,8000064c <fail>
+
+80000268 <test_16>:
+80000268: 212120b7 lui ra,0x21212
+8000026c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000270: 01f00113 li sp,31
+80000274: 00209f33 sll t5,ra,sp
+80000278: 80000eb7 lui t4,0x80000
+8000027c: 01000193 li gp,16
+80000280: 3ddf1663 bne t5,t4,8000064c <fail>
+
+80000284 <test_17>:
+80000284: 212120b7 lui ra,0x21212
+80000288: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+8000028c: fc000113 li sp,-64
+80000290: 00209f33 sll t5,ra,sp
+80000294: 21212eb7 lui t4,0x21212
+80000298: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+8000029c: 01100193 li gp,17
+800002a0: 3bdf1663 bne t5,t4,8000064c <fail>
+
+800002a4 <test_18>:
+800002a4: 212120b7 lui ra,0x21212
+800002a8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800002ac: fc100113 li sp,-63
+800002b0: 00209f33 sll t5,ra,sp
+800002b4: 42424eb7 lui t4,0x42424
+800002b8: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe>
+800002bc: 01200193 li gp,18
+800002c0: 39df1663 bne t5,t4,8000064c <fail>
+
+800002c4 <test_19>:
+800002c4: 212120b7 lui ra,0x21212
+800002c8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800002cc: fc700113 li sp,-57
+800002d0: 00209f33 sll t5,ra,sp
+800002d4: 90909eb7 lui t4,0x90909
+800002d8: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080>
+800002dc: 01300193 li gp,19
+800002e0: 37df1663 bne t5,t4,8000064c <fail>
+
+800002e4 <test_20>:
+800002e4: 212120b7 lui ra,0x21212
+800002e8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800002ec: fce00113 li sp,-50
+800002f0: 00209f33 sll t5,ra,sp
+800002f4: 48484eb7 lui t4,0x48484
+800002f8: 01400193 li gp,20
+800002fc: 35df1863 bne t5,t4,8000064c <fail>
+
+80000300 <test_22>:
+80000300: 00100093 li ra,1
+80000304: 00700113 li sp,7
+80000308: 002090b3 sll ra,ra,sp
+8000030c: 08000e93 li t4,128
+80000310: 01600193 li gp,22
+80000314: 33d09c63 bne ra,t4,8000064c <fail>
+
+80000318 <test_23>:
+80000318: 00100093 li ra,1
+8000031c: 00e00113 li sp,14
+80000320: 00209133 sll sp,ra,sp
+80000324: 00004eb7 lui t4,0x4
+80000328: 01700193 li gp,23
+8000032c: 33d11063 bne sp,t4,8000064c <fail>
+
+80000330 <test_24>:
+80000330: 00300093 li ra,3
+80000334: 001090b3 sll ra,ra,ra
+80000338: 01800e93 li t4,24
+8000033c: 01800193 li gp,24
+80000340: 31d09663 bne ra,t4,8000064c <fail>
+
+80000344 <test_25>:
+80000344: 00000213 li tp,0
+80000348: 00100093 li ra,1
+8000034c: 00700113 li sp,7
+80000350: 00209f33 sll t5,ra,sp
+80000354: 000f0313 mv t1,t5
+80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000035c: 00200293 li t0,2
+80000360: fe5214e3 bne tp,t0,80000348 <test_25+0x4>
+80000364: 08000e93 li t4,128
+80000368: 01900193 li gp,25
+8000036c: 2fd31063 bne t1,t4,8000064c <fail>
+
+80000370 <test_26>:
+80000370: 00000213 li tp,0
+80000374: 00100093 li ra,1
+80000378: 00e00113 li sp,14
+8000037c: 00209f33 sll t5,ra,sp
+80000380: 00000013 nop
+80000384: 000f0313 mv t1,t5
+80000388: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000038c: 00200293 li t0,2
+80000390: fe5212e3 bne tp,t0,80000374 <test_26+0x4>
+80000394: 00004eb7 lui t4,0x4
+80000398: 01a00193 li gp,26
+8000039c: 2bd31863 bne t1,t4,8000064c <fail>
+
+800003a0 <test_27>:
+800003a0: 00000213 li tp,0
+800003a4: 00100093 li ra,1
+800003a8: 01f00113 li sp,31
+800003ac: 00209f33 sll t5,ra,sp
+800003b0: 00000013 nop
+800003b4: 00000013 nop
+800003b8: 000f0313 mv t1,t5
+800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c0: 00200293 li t0,2
+800003c4: fe5210e3 bne tp,t0,800003a4 <test_27+0x4>
+800003c8: 80000eb7 lui t4,0x80000
+800003cc: 01b00193 li gp,27
+800003d0: 27d31e63 bne t1,t4,8000064c <fail>
+
+800003d4 <test_28>:
+800003d4: 00000213 li tp,0
+800003d8: 00100093 li ra,1
+800003dc: 00700113 li sp,7
+800003e0: 00209f33 sll t5,ra,sp
+800003e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003e8: 00200293 li t0,2
+800003ec: fe5216e3 bne tp,t0,800003d8 <test_28+0x4>
+800003f0: 08000e93 li t4,128
+800003f4: 01c00193 li gp,28
+800003f8: 25df1a63 bne t5,t4,8000064c <fail>
+
+800003fc <test_29>:
+800003fc: 00000213 li tp,0
+80000400: 00100093 li ra,1
+80000404: 00e00113 li sp,14
+80000408: 00000013 nop
+8000040c: 00209f33 sll t5,ra,sp
+80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000414: 00200293 li t0,2
+80000418: fe5214e3 bne tp,t0,80000400 <test_29+0x4>
+8000041c: 00004eb7 lui t4,0x4
+80000420: 01d00193 li gp,29
+80000424: 23df1463 bne t5,t4,8000064c <fail>
+
+80000428 <test_30>:
+80000428: 00000213 li tp,0
+8000042c: 00100093 li ra,1
+80000430: 01f00113 li sp,31
+80000434: 00000013 nop
+80000438: 00000013 nop
+8000043c: 00209f33 sll t5,ra,sp
+80000440: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000444: 00200293 li t0,2
+80000448: fe5212e3 bne tp,t0,8000042c <test_30+0x4>
+8000044c: 80000eb7 lui t4,0x80000
+80000450: 01e00193 li gp,30
+80000454: 1fdf1c63 bne t5,t4,8000064c <fail>
+
+80000458 <test_31>:
+80000458: 00000213 li tp,0
+8000045c: 00100093 li ra,1
+80000460: 00000013 nop
+80000464: 00700113 li sp,7
+80000468: 00209f33 sll t5,ra,sp
+8000046c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000470: 00200293 li t0,2
+80000474: fe5214e3 bne tp,t0,8000045c <test_31+0x4>
+80000478: 08000e93 li t4,128
+8000047c: 01f00193 li gp,31
+80000480: 1ddf1663 bne t5,t4,8000064c <fail>
+
+80000484 <test_32>:
+80000484: 00000213 li tp,0
+80000488: 00100093 li ra,1
+8000048c: 00000013 nop
+80000490: 00e00113 li sp,14
+80000494: 00000013 nop
+80000498: 00209f33 sll t5,ra,sp
+8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004a0: 00200293 li t0,2
+800004a4: fe5212e3 bne tp,t0,80000488 <test_32+0x4>
+800004a8: 00004eb7 lui t4,0x4
+800004ac: 02000193 li gp,32
+800004b0: 19df1e63 bne t5,t4,8000064c <fail>
+
+800004b4 <test_33>:
+800004b4: 00000213 li tp,0
+800004b8: 00100093 li ra,1
+800004bc: 00000013 nop
+800004c0: 00000013 nop
+800004c4: 01f00113 li sp,31
+800004c8: 00209f33 sll t5,ra,sp
+800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004d0: 00200293 li t0,2
+800004d4: fe5212e3 bne tp,t0,800004b8 <test_33+0x4>
+800004d8: 80000eb7 lui t4,0x80000
+800004dc: 02100193 li gp,33
+800004e0: 17df1663 bne t5,t4,8000064c <fail>
+
+800004e4 <test_34>:
+800004e4: 00000213 li tp,0
+800004e8: 00700113 li sp,7
+800004ec: 00100093 li ra,1
+800004f0: 00209f33 sll t5,ra,sp
+800004f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004f8: 00200293 li t0,2
+800004fc: fe5216e3 bne tp,t0,800004e8 <test_34+0x4>
+80000500: 08000e93 li t4,128
+80000504: 02200193 li gp,34
+80000508: 15df1263 bne t5,t4,8000064c <fail>
+
+8000050c <test_35>:
+8000050c: 00000213 li tp,0
+80000510: 00e00113 li sp,14
+80000514: 00100093 li ra,1
+80000518: 00000013 nop
+8000051c: 00209f33 sll t5,ra,sp
+80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000524: 00200293 li t0,2
+80000528: fe5214e3 bne tp,t0,80000510 <test_35+0x4>
+8000052c: 00004eb7 lui t4,0x4
+80000530: 02300193 li gp,35
+80000534: 11df1c63 bne t5,t4,8000064c <fail>
+
+80000538 <test_36>:
+80000538: 00000213 li tp,0
+8000053c: 01f00113 li sp,31
+80000540: 00100093 li ra,1
+80000544: 00000013 nop
+80000548: 00000013 nop
+8000054c: 00209f33 sll t5,ra,sp
+80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000554: 00200293 li t0,2
+80000558: fe5212e3 bne tp,t0,8000053c <test_36+0x4>
+8000055c: 80000eb7 lui t4,0x80000
+80000560: 02400193 li gp,36
+80000564: 0fdf1463 bne t5,t4,8000064c <fail>
+
+80000568 <test_37>:
+80000568: 00000213 li tp,0
+8000056c: 00700113 li sp,7
+80000570: 00000013 nop
+80000574: 00100093 li ra,1
+80000578: 00209f33 sll t5,ra,sp
+8000057c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000580: 00200293 li t0,2
+80000584: fe5214e3 bne tp,t0,8000056c <test_37+0x4>
+80000588: 08000e93 li t4,128
+8000058c: 02500193 li gp,37
+80000590: 0bdf1e63 bne t5,t4,8000064c <fail>
+
+80000594 <test_38>:
+80000594: 00000213 li tp,0
+80000598: 00e00113 li sp,14
+8000059c: 00000013 nop
+800005a0: 00100093 li ra,1
+800005a4: 00000013 nop
+800005a8: 00209f33 sll t5,ra,sp
+800005ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005b0: 00200293 li t0,2
+800005b4: fe5212e3 bne tp,t0,80000598 <test_38+0x4>
+800005b8: 00004eb7 lui t4,0x4
+800005bc: 02600193 li gp,38
+800005c0: 09df1663 bne t5,t4,8000064c <fail>
+
+800005c4 <test_39>:
+800005c4: 00000213 li tp,0
+800005c8: 01f00113 li sp,31
+800005cc: 00000013 nop
+800005d0: 00000013 nop
+800005d4: 00100093 li ra,1
+800005d8: 00209f33 sll t5,ra,sp
+800005dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005e0: 00200293 li t0,2
+800005e4: fe5212e3 bne tp,t0,800005c8 <test_39+0x4>
+800005e8: 80000eb7 lui t4,0x80000
+800005ec: 02700193 li gp,39
+800005f0: 05df1e63 bne t5,t4,8000064c <fail>
+
+800005f4 <test_40>:
+800005f4: 00f00093 li ra,15
+800005f8: 00101133 sll sp,zero,ra
+800005fc: 00000e93 li t4,0
+80000600: 02800193 li gp,40
+80000604: 05d11463 bne sp,t4,8000064c <fail>
+
+80000608 <test_41>:
+80000608: 02000093 li ra,32
+8000060c: 00009133 sll sp,ra,zero
+80000610: 02000e93 li t4,32
+80000614: 02900193 li gp,41
+80000618: 03d11a63 bne sp,t4,8000064c <fail>
+
+8000061c <test_42>:
+8000061c: 000010b3 sll ra,zero,zero
+80000620: 00000e93 li t4,0
+80000624: 02a00193 li gp,42
+80000628: 03d09263 bne ra,t4,8000064c <fail>
+
+8000062c <test_43>:
+8000062c: 40000093 li ra,1024
+80000630: 00001137 lui sp,0x1
+80000634: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800>
+80000638: 00209033 sll zero,ra,sp
+8000063c: 00000e93 li t4,0
+80000640: 02b00193 li gp,43
+80000644: 01d01463 bne zero,t4,8000064c <fail>
+80000648: 00301c63 bne zero,gp,80000660 <pass>
+
+8000064c <fail>:
+8000064c: 0ff0000f fence
+80000650: 00018063 beqz gp,80000650 <fail+0x4>
+80000654: 00119193 slli gp,gp,0x1
+80000658: 0011e193 ori gp,gp,1
+8000065c: 00000073 ecall
+
+80000660 <pass>:
+80000660: 0ff0000f fence
+80000664: 00100193 li gp,1
+80000668: 00000073 ecall
+8000066c: c0001073 unimp
+80000670: 0000 unimp
+80000672: 0000 unimp
+80000674: 0000 unimp
+80000676: 0000 unimp
+80000678: 0000 unimp
+8000067a: 0000 unimp
+8000067c: 0000 unimp
+8000067e: 0000 unimp
+80000680: 0000 unimp
+80000682: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sll.elf b/test/riscv-tests/rv32ui-p-sll.elf
new file mode 100644
index 0000000..eb8029f
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sll.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-slli.dump b/test/riscv-tests/rv32ui-p-slli.dump
new file mode 100644
index 0000000..0408e2e
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-slli.dump
@@ -0,0 +1,316 @@
+
+rv32ui-p-slli: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00100093 li ra,1
+80000100: 00009f13 slli t5,ra,0x0
+80000104: 00100e93 li t4,1
+80000108: 00200193 li gp,2
+8000010c: 27df1a63 bne t5,t4,80000380 <fail>
+
+80000110 <test_3>:
+80000110: 00100093 li ra,1
+80000114: 00109f13 slli t5,ra,0x1
+80000118: 00200e93 li t4,2
+8000011c: 00300193 li gp,3
+80000120: 27df1063 bne t5,t4,80000380 <fail>
+
+80000124 <test_4>:
+80000124: 00100093 li ra,1
+80000128: 00709f13 slli t5,ra,0x7
+8000012c: 08000e93 li t4,128
+80000130: 00400193 li gp,4
+80000134: 25df1663 bne t5,t4,80000380 <fail>
+
+80000138 <test_5>:
+80000138: 00100093 li ra,1
+8000013c: 00e09f13 slli t5,ra,0xe
+80000140: 00004eb7 lui t4,0x4
+80000144: 00500193 li gp,5
+80000148: 23df1c63 bne t5,t4,80000380 <fail>
+
+8000014c <test_6>:
+8000014c: 00100093 li ra,1
+80000150: 01f09f13 slli t5,ra,0x1f
+80000154: 80000eb7 lui t4,0x80000
+80000158: 00600193 li gp,6
+8000015c: 23df1263 bne t5,t4,80000380 <fail>
+
+80000160 <test_7>:
+80000160: fff00093 li ra,-1
+80000164: 00009f13 slli t5,ra,0x0
+80000168: fff00e93 li t4,-1
+8000016c: 00700193 li gp,7
+80000170: 21df1863 bne t5,t4,80000380 <fail>
+
+80000174 <test_8>:
+80000174: fff00093 li ra,-1
+80000178: 00109f13 slli t5,ra,0x1
+8000017c: ffe00e93 li t4,-2
+80000180: 00800193 li gp,8
+80000184: 1fdf1e63 bne t5,t4,80000380 <fail>
+
+80000188 <test_9>:
+80000188: fff00093 li ra,-1
+8000018c: 00709f13 slli t5,ra,0x7
+80000190: f8000e93 li t4,-128
+80000194: 00900193 li gp,9
+80000198: 1fdf1463 bne t5,t4,80000380 <fail>
+
+8000019c <test_10>:
+8000019c: fff00093 li ra,-1
+800001a0: 00e09f13 slli t5,ra,0xe
+800001a4: ffffceb7 lui t4,0xffffc
+800001a8: 00a00193 li gp,10
+800001ac: 1ddf1a63 bne t5,t4,80000380 <fail>
+
+800001b0 <test_11>:
+800001b0: fff00093 li ra,-1
+800001b4: 01f09f13 slli t5,ra,0x1f
+800001b8: 80000eb7 lui t4,0x80000
+800001bc: 00b00193 li gp,11
+800001c0: 1ddf1063 bne t5,t4,80000380 <fail>
+
+800001c4 <test_12>:
+800001c4: 212120b7 lui ra,0x21212
+800001c8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800001cc: 00009f13 slli t5,ra,0x0
+800001d0: 21212eb7 lui t4,0x21212
+800001d4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+800001d8: 00c00193 li gp,12
+800001dc: 1bdf1263 bne t5,t4,80000380 <fail>
+
+800001e0 <test_13>:
+800001e0: 212120b7 lui ra,0x21212
+800001e4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800001e8: 00109f13 slli t5,ra,0x1
+800001ec: 42424eb7 lui t4,0x42424
+800001f0: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe>
+800001f4: 00d00193 li gp,13
+800001f8: 19df1463 bne t5,t4,80000380 <fail>
+
+800001fc <test_14>:
+800001fc: 212120b7 lui ra,0x21212
+80000200: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000204: 00709f13 slli t5,ra,0x7
+80000208: 90909eb7 lui t4,0x90909
+8000020c: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10907080>
+80000210: 00e00193 li gp,14
+80000214: 17df1663 bne t5,t4,80000380 <fail>
+
+80000218 <test_15>:
+80000218: 212120b7 lui ra,0x21212
+8000021c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000220: 00e09f13 slli t5,ra,0xe
+80000224: 48484eb7 lui t4,0x48484
+80000228: 00f00193 li gp,15
+8000022c: 15df1a63 bne t5,t4,80000380 <fail>
+
+80000230 <test_16>:
+80000230: 212120b7 lui ra,0x21212
+80000234: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000238: 01f09f13 slli t5,ra,0x1f
+8000023c: 80000eb7 lui t4,0x80000
+80000240: 01000193 li gp,16
+80000244: 13df1e63 bne t5,t4,80000380 <fail>
+
+80000248 <test_17>:
+80000248: 00100093 li ra,1
+8000024c: 00709093 slli ra,ra,0x7
+80000250: 08000e93 li t4,128
+80000254: 01100193 li gp,17
+80000258: 13d09463 bne ra,t4,80000380 <fail>
+
+8000025c <test_18>:
+8000025c: 00000213 li tp,0
+80000260: 00100093 li ra,1
+80000264: 00709f13 slli t5,ra,0x7
+80000268: 000f0313 mv t1,t5
+8000026c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000270: 00200293 li t0,2
+80000274: fe5216e3 bne tp,t0,80000260 <test_18+0x4>
+80000278: 08000e93 li t4,128
+8000027c: 01200193 li gp,18
+80000280: 11d31063 bne t1,t4,80000380 <fail>
+
+80000284 <test_19>:
+80000284: 00000213 li tp,0
+80000288: 00100093 li ra,1
+8000028c: 00e09f13 slli t5,ra,0xe
+80000290: 00000013 nop
+80000294: 000f0313 mv t1,t5
+80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000029c: 00200293 li t0,2
+800002a0: fe5214e3 bne tp,t0,80000288 <test_19+0x4>
+800002a4: 00004eb7 lui t4,0x4
+800002a8: 01300193 li gp,19
+800002ac: 0dd31a63 bne t1,t4,80000380 <fail>
+
+800002b0 <test_20>:
+800002b0: 00000213 li tp,0
+800002b4: 00100093 li ra,1
+800002b8: 01f09f13 slli t5,ra,0x1f
+800002bc: 00000013 nop
+800002c0: 00000013 nop
+800002c4: 000f0313 mv t1,t5
+800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002cc: 00200293 li t0,2
+800002d0: fe5212e3 bne tp,t0,800002b4 <test_20+0x4>
+800002d4: 80000eb7 lui t4,0x80000
+800002d8: 01400193 li gp,20
+800002dc: 0bd31263 bne t1,t4,80000380 <fail>
+
+800002e0 <test_21>:
+800002e0: 00000213 li tp,0
+800002e4: 00100093 li ra,1
+800002e8: 00709f13 slli t5,ra,0x7
+800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f0: 00200293 li t0,2
+800002f4: fe5218e3 bne tp,t0,800002e4 <test_21+0x4>
+800002f8: 08000e93 li t4,128
+800002fc: 01500193 li gp,21
+80000300: 09df1063 bne t5,t4,80000380 <fail>
+
+80000304 <test_22>:
+80000304: 00000213 li tp,0
+80000308: 00100093 li ra,1
+8000030c: 00000013 nop
+80000310: 00e09f13 slli t5,ra,0xe
+80000314: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000318: 00200293 li t0,2
+8000031c: fe5216e3 bne tp,t0,80000308 <test_22+0x4>
+80000320: 00004eb7 lui t4,0x4
+80000324: 01600193 li gp,22
+80000328: 05df1c63 bne t5,t4,80000380 <fail>
+
+8000032c <test_23>:
+8000032c: 00000213 li tp,0
+80000330: 00100093 li ra,1
+80000334: 00000013 nop
+80000338: 00000013 nop
+8000033c: 01f09f13 slli t5,ra,0x1f
+80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000344: 00200293 li t0,2
+80000348: fe5214e3 bne tp,t0,80000330 <test_23+0x4>
+8000034c: 80000eb7 lui t4,0x80000
+80000350: 01700193 li gp,23
+80000354: 03df1663 bne t5,t4,80000380 <fail>
+
+80000358 <test_24>:
+80000358: 01f01093 slli ra,zero,0x1f
+8000035c: 00000e93 li t4,0
+80000360: 01800193 li gp,24
+80000364: 01d09e63 bne ra,t4,80000380 <fail>
+
+80000368 <test_25>:
+80000368: 02100093 li ra,33
+8000036c: 01409013 slli zero,ra,0x14
+80000370: 00000e93 li t4,0
+80000374: 01900193 li gp,25
+80000378: 01d01463 bne zero,t4,80000380 <fail>
+8000037c: 00301c63 bne zero,gp,80000394 <pass>
+
+80000380 <fail>:
+80000380: 0ff0000f fence
+80000384: 00018063 beqz gp,80000384 <fail+0x4>
+80000388: 00119193 slli gp,gp,0x1
+8000038c: 0011e193 ori gp,gp,1
+80000390: 00000073 ecall
+
+80000394 <pass>:
+80000394: 0ff0000f fence
+80000398: 00100193 li gp,1
+8000039c: 00000073 ecall
+800003a0: c0001073 unimp
+800003a4: 0000 unimp
+800003a6: 0000 unimp
+800003a8: 0000 unimp
+800003aa: 0000 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-slli.elf b/test/riscv-tests/rv32ui-p-slli.elf
new file mode 100644
index 0000000..fdaf7c2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-slli.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-slt.dump b/test/riscv-tests/rv32ui-p-slt.dump
new file mode 100644
index 0000000..115adee
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-slt.dump
@@ -0,0 +1,485 @@
+
+rv32ui-p-slt: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 0020af33 slt t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 0020af33 slt t5,ra,sp
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 49df1e63 bne t5,t4,800005c4 <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 0020af33 slt t5,ra,sp
+80000138: 00100e93 li t4,1
+8000013c: 00400193 li gp,4
+80000140: 49df1263 bne t5,t4,800005c4 <fail>
+
+80000144 <test_5>:
+80000144: 00700093 li ra,7
+80000148: 00300113 li sp,3
+8000014c: 0020af33 slt t5,ra,sp
+80000150: 00000e93 li t4,0
+80000154: 00500193 li gp,5
+80000158: 47df1663 bne t5,t4,800005c4 <fail>
+
+8000015c <test_6>:
+8000015c: 00000093 li ra,0
+80000160: ffff8137 lui sp,0xffff8
+80000164: 0020af33 slt t5,ra,sp
+80000168: 00000e93 li t4,0
+8000016c: 00600193 li gp,6
+80000170: 45df1a63 bne t5,t4,800005c4 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: 00000113 li sp,0
+8000017c: 0020af33 slt t5,ra,sp
+80000180: 00100e93 li t4,1
+80000184: 00700193 li gp,7
+80000188: 43df1e63 bne t5,t4,800005c4 <fail>
+
+8000018c <test_8>:
+8000018c: 800000b7 lui ra,0x80000
+80000190: ffff8137 lui sp,0xffff8
+80000194: 0020af33 slt t5,ra,sp
+80000198: 00100e93 li t4,1
+8000019c: 00800193 li gp,8
+800001a0: 43df1263 bne t5,t4,800005c4 <fail>
+
+800001a4 <test_9>:
+800001a4: 00000093 li ra,0
+800001a8: 00008137 lui sp,0x8
+800001ac: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001b0: 0020af33 slt t5,ra,sp
+800001b4: 00100e93 li t4,1
+800001b8: 00900193 li gp,9
+800001bc: 41df1463 bne t5,t4,800005c4 <fail>
+
+800001c0 <test_10>:
+800001c0: 800000b7 lui ra,0x80000
+800001c4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001c8: 00000113 li sp,0
+800001cc: 0020af33 slt t5,ra,sp
+800001d0: 00000e93 li t4,0
+800001d4: 00a00193 li gp,10
+800001d8: 3fdf1663 bne t5,t4,800005c4 <fail>
+
+800001dc <test_11>:
+800001dc: 800000b7 lui ra,0x80000
+800001e0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001e4: 00008137 lui sp,0x8
+800001e8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001ec: 0020af33 slt t5,ra,sp
+800001f0: 00000e93 li t4,0
+800001f4: 00b00193 li gp,11
+800001f8: 3ddf1663 bne t5,t4,800005c4 <fail>
+
+800001fc <test_12>:
+800001fc: 800000b7 lui ra,0x80000
+80000200: 00008137 lui sp,0x8
+80000204: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80000208: 0020af33 slt t5,ra,sp
+8000020c: 00100e93 li t4,1
+80000210: 00c00193 li gp,12
+80000214: 3bdf1863 bne t5,t4,800005c4 <fail>
+
+80000218 <test_13>:
+80000218: 800000b7 lui ra,0x80000
+8000021c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000220: ffff8137 lui sp,0xffff8
+80000224: 0020af33 slt t5,ra,sp
+80000228: 00000e93 li t4,0
+8000022c: 00d00193 li gp,13
+80000230: 39df1a63 bne t5,t4,800005c4 <fail>
+
+80000234 <test_14>:
+80000234: 00000093 li ra,0
+80000238: fff00113 li sp,-1
+8000023c: 0020af33 slt t5,ra,sp
+80000240: 00000e93 li t4,0
+80000244: 00e00193 li gp,14
+80000248: 37df1e63 bne t5,t4,800005c4 <fail>
+
+8000024c <test_15>:
+8000024c: fff00093 li ra,-1
+80000250: 00100113 li sp,1
+80000254: 0020af33 slt t5,ra,sp
+80000258: 00100e93 li t4,1
+8000025c: 00f00193 li gp,15
+80000260: 37df1263 bne t5,t4,800005c4 <fail>
+
+80000264 <test_16>:
+80000264: fff00093 li ra,-1
+80000268: fff00113 li sp,-1
+8000026c: 0020af33 slt t5,ra,sp
+80000270: 00000e93 li t4,0
+80000274: 01000193 li gp,16
+80000278: 35df1663 bne t5,t4,800005c4 <fail>
+
+8000027c <test_17>:
+8000027c: 00e00093 li ra,14
+80000280: 00d00113 li sp,13
+80000284: 0020a0b3 slt ra,ra,sp
+80000288: 00000e93 li t4,0
+8000028c: 01100193 li gp,17
+80000290: 33d09a63 bne ra,t4,800005c4 <fail>
+
+80000294 <test_18>:
+80000294: 00b00093 li ra,11
+80000298: 00d00113 li sp,13
+8000029c: 0020a133 slt sp,ra,sp
+800002a0: 00100e93 li t4,1
+800002a4: 01200193 li gp,18
+800002a8: 31d11e63 bne sp,t4,800005c4 <fail>
+
+800002ac <test_19>:
+800002ac: 00d00093 li ra,13
+800002b0: 0010a0b3 slt ra,ra,ra
+800002b4: 00000e93 li t4,0
+800002b8: 01300193 li gp,19
+800002bc: 31d09463 bne ra,t4,800005c4 <fail>
+
+800002c0 <test_20>:
+800002c0: 00000213 li tp,0
+800002c4: 00b00093 li ra,11
+800002c8: 00d00113 li sp,13
+800002cc: 0020af33 slt t5,ra,sp
+800002d0: 000f0313 mv t1,t5
+800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d8: 00200293 li t0,2
+800002dc: fe5214e3 bne tp,t0,800002c4 <test_20+0x4>
+800002e0: 00100e93 li t4,1
+800002e4: 01400193 li gp,20
+800002e8: 2dd31e63 bne t1,t4,800005c4 <fail>
+
+800002ec <test_21>:
+800002ec: 00000213 li tp,0
+800002f0: 00e00093 li ra,14
+800002f4: 00d00113 li sp,13
+800002f8: 0020af33 slt t5,ra,sp
+800002fc: 00000013 nop
+80000300: 000f0313 mv t1,t5
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5212e3 bne tp,t0,800002f0 <test_21+0x4>
+80000310: 00000e93 li t4,0
+80000314: 01500193 li gp,21
+80000318: 2bd31663 bne t1,t4,800005c4 <fail>
+
+8000031c <test_22>:
+8000031c: 00000213 li tp,0
+80000320: 00c00093 li ra,12
+80000324: 00d00113 li sp,13
+80000328: 0020af33 slt t5,ra,sp
+8000032c: 00000013 nop
+80000330: 00000013 nop
+80000334: 000f0313 mv t1,t5
+80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000033c: 00200293 li t0,2
+80000340: fe5210e3 bne tp,t0,80000320 <test_22+0x4>
+80000344: 00100e93 li t4,1
+80000348: 01600193 li gp,22
+8000034c: 27d31c63 bne t1,t4,800005c4 <fail>
+
+80000350 <test_23>:
+80000350: 00000213 li tp,0
+80000354: 00e00093 li ra,14
+80000358: 00d00113 li sp,13
+8000035c: 0020af33 slt t5,ra,sp
+80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000364: 00200293 li t0,2
+80000368: fe5216e3 bne tp,t0,80000354 <test_23+0x4>
+8000036c: 00000e93 li t4,0
+80000370: 01700193 li gp,23
+80000374: 25df1863 bne t5,t4,800005c4 <fail>
+
+80000378 <test_24>:
+80000378: 00000213 li tp,0
+8000037c: 00b00093 li ra,11
+80000380: 00d00113 li sp,13
+80000384: 00000013 nop
+80000388: 0020af33 slt t5,ra,sp
+8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000390: 00200293 li t0,2
+80000394: fe5214e3 bne tp,t0,8000037c <test_24+0x4>
+80000398: 00100e93 li t4,1
+8000039c: 01800193 li gp,24
+800003a0: 23df1263 bne t5,t4,800005c4 <fail>
+
+800003a4 <test_25>:
+800003a4: 00000213 li tp,0
+800003a8: 00f00093 li ra,15
+800003ac: 00d00113 li sp,13
+800003b0: 00000013 nop
+800003b4: 00000013 nop
+800003b8: 0020af33 slt t5,ra,sp
+800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c0: 00200293 li t0,2
+800003c4: fe5212e3 bne tp,t0,800003a8 <test_25+0x4>
+800003c8: 00000e93 li t4,0
+800003cc: 01900193 li gp,25
+800003d0: 1fdf1a63 bne t5,t4,800005c4 <fail>
+
+800003d4 <test_26>:
+800003d4: 00000213 li tp,0
+800003d8: 00a00093 li ra,10
+800003dc: 00000013 nop
+800003e0: 00d00113 li sp,13
+800003e4: 0020af33 slt t5,ra,sp
+800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003ec: 00200293 li t0,2
+800003f0: fe5214e3 bne tp,t0,800003d8 <test_26+0x4>
+800003f4: 00100e93 li t4,1
+800003f8: 01a00193 li gp,26
+800003fc: 1ddf1463 bne t5,t4,800005c4 <fail>
+
+80000400 <test_27>:
+80000400: 00000213 li tp,0
+80000404: 01000093 li ra,16
+80000408: 00000013 nop
+8000040c: 00d00113 li sp,13
+80000410: 00000013 nop
+80000414: 0020af33 slt t5,ra,sp
+80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000041c: 00200293 li t0,2
+80000420: fe5212e3 bne tp,t0,80000404 <test_27+0x4>
+80000424: 00000e93 li t4,0
+80000428: 01b00193 li gp,27
+8000042c: 19df1c63 bne t5,t4,800005c4 <fail>
+
+80000430 <test_28>:
+80000430: 00000213 li tp,0
+80000434: 00900093 li ra,9
+80000438: 00000013 nop
+8000043c: 00000013 nop
+80000440: 00d00113 li sp,13
+80000444: 0020af33 slt t5,ra,sp
+80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000044c: 00200293 li t0,2
+80000450: fe5212e3 bne tp,t0,80000434 <test_28+0x4>
+80000454: 00100e93 li t4,1
+80000458: 01c00193 li gp,28
+8000045c: 17df1463 bne t5,t4,800005c4 <fail>
+
+80000460 <test_29>:
+80000460: 00000213 li tp,0
+80000464: 00d00113 li sp,13
+80000468: 01100093 li ra,17
+8000046c: 0020af33 slt t5,ra,sp
+80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000474: 00200293 li t0,2
+80000478: fe5216e3 bne tp,t0,80000464 <test_29+0x4>
+8000047c: 00000e93 li t4,0
+80000480: 01d00193 li gp,29
+80000484: 15df1063 bne t5,t4,800005c4 <fail>
+
+80000488 <test_30>:
+80000488: 00000213 li tp,0
+8000048c: 00d00113 li sp,13
+80000490: 00800093 li ra,8
+80000494: 00000013 nop
+80000498: 0020af33 slt t5,ra,sp
+8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004a0: 00200293 li t0,2
+800004a4: fe5214e3 bne tp,t0,8000048c <test_30+0x4>
+800004a8: 00100e93 li t4,1
+800004ac: 01e00193 li gp,30
+800004b0: 11df1a63 bne t5,t4,800005c4 <fail>
+
+800004b4 <test_31>:
+800004b4: 00000213 li tp,0
+800004b8: 00d00113 li sp,13
+800004bc: 01200093 li ra,18
+800004c0: 00000013 nop
+800004c4: 00000013 nop
+800004c8: 0020af33 slt t5,ra,sp
+800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004d0: 00200293 li t0,2
+800004d4: fe5212e3 bne tp,t0,800004b8 <test_31+0x4>
+800004d8: 00000e93 li t4,0
+800004dc: 01f00193 li gp,31
+800004e0: 0fdf1263 bne t5,t4,800005c4 <fail>
+
+800004e4 <test_32>:
+800004e4: 00000213 li tp,0
+800004e8: 00d00113 li sp,13
+800004ec: 00000013 nop
+800004f0: 00700093 li ra,7
+800004f4: 0020af33 slt t5,ra,sp
+800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004fc: 00200293 li t0,2
+80000500: fe5214e3 bne tp,t0,800004e8 <test_32+0x4>
+80000504: 00100e93 li t4,1
+80000508: 02000193 li gp,32
+8000050c: 0bdf1c63 bne t5,t4,800005c4 <fail>
+
+80000510 <test_33>:
+80000510: 00000213 li tp,0
+80000514: 00d00113 li sp,13
+80000518: 00000013 nop
+8000051c: 01300093 li ra,19
+80000520: 00000013 nop
+80000524: 0020af33 slt t5,ra,sp
+80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000052c: 00200293 li t0,2
+80000530: fe5212e3 bne tp,t0,80000514 <test_33+0x4>
+80000534: 00000e93 li t4,0
+80000538: 02100193 li gp,33
+8000053c: 09df1463 bne t5,t4,800005c4 <fail>
+
+80000540 <test_34>:
+80000540: 00000213 li tp,0
+80000544: 00d00113 li sp,13
+80000548: 00000013 nop
+8000054c: 00000013 nop
+80000550: 00600093 li ra,6
+80000554: 0020af33 slt t5,ra,sp
+80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000055c: 00200293 li t0,2
+80000560: fe5212e3 bne tp,t0,80000544 <test_34+0x4>
+80000564: 00100e93 li t4,1
+80000568: 02200193 li gp,34
+8000056c: 05df1c63 bne t5,t4,800005c4 <fail>
+
+80000570 <test_35>:
+80000570: fff00093 li ra,-1
+80000574: 00102133 sgtz sp,ra
+80000578: 00000e93 li t4,0
+8000057c: 02300193 li gp,35
+80000580: 05d11263 bne sp,t4,800005c4 <fail>
+
+80000584 <test_36>:
+80000584: fff00093 li ra,-1
+80000588: 0000a133 sltz sp,ra
+8000058c: 00100e93 li t4,1
+80000590: 02400193 li gp,36
+80000594: 03d11863 bne sp,t4,800005c4 <fail>
+
+80000598 <test_37>:
+80000598: 000020b3 sltz ra,zero
+8000059c: 00000e93 li t4,0
+800005a0: 02500193 li gp,37
+800005a4: 03d09063 bne ra,t4,800005c4 <fail>
+
+800005a8 <test_38>:
+800005a8: 01000093 li ra,16
+800005ac: 01e00113 li sp,30
+800005b0: 0020a033 slt zero,ra,sp
+800005b4: 00000e93 li t4,0
+800005b8: 02600193 li gp,38
+800005bc: 01d01463 bne zero,t4,800005c4 <fail>
+800005c0: 00301c63 bne zero,gp,800005d8 <pass>
+
+800005c4 <fail>:
+800005c4: 0ff0000f fence
+800005c8: 00018063 beqz gp,800005c8 <fail+0x4>
+800005cc: 00119193 slli gp,gp,0x1
+800005d0: 0011e193 ori gp,gp,1
+800005d4: 00000073 ecall
+
+800005d8 <pass>:
+800005d8: 0ff0000f fence
+800005dc: 00100193 li gp,1
+800005e0: 00000073 ecall
+800005e4: c0001073 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-slt.elf b/test/riscv-tests/rv32ui-p-slt.elf
new file mode 100644
index 0000000..844410a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-slt.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-slti.dump b/test/riscv-tests/rv32ui-p-slti.dump
new file mode 100644
index 0000000..522eb49
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-slti.dump
@@ -0,0 +1,320 @@
+
+rv32ui-p-slti: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 0000af13 slti t5,ra,0
+80000104: 00000e93 li t4,0
+80000108: 00200193 li gp,2
+8000010c: 27df1263 bne t5,t4,80000370 <fail>
+
+80000110 <test_3>:
+80000110: 00100093 li ra,1
+80000114: 0010af13 slti t5,ra,1
+80000118: 00000e93 li t4,0
+8000011c: 00300193 li gp,3
+80000120: 25df1863 bne t5,t4,80000370 <fail>
+
+80000124 <test_4>:
+80000124: 00300093 li ra,3
+80000128: 0070af13 slti t5,ra,7
+8000012c: 00100e93 li t4,1
+80000130: 00400193 li gp,4
+80000134: 23df1e63 bne t5,t4,80000370 <fail>
+
+80000138 <test_5>:
+80000138: 00700093 li ra,7
+8000013c: 0030af13 slti t5,ra,3
+80000140: 00000e93 li t4,0
+80000144: 00500193 li gp,5
+80000148: 23df1463 bne t5,t4,80000370 <fail>
+
+8000014c <test_6>:
+8000014c: 00000093 li ra,0
+80000150: 8000af13 slti t5,ra,-2048
+80000154: 00000e93 li t4,0
+80000158: 00600193 li gp,6
+8000015c: 21df1a63 bne t5,t4,80000370 <fail>
+
+80000160 <test_7>:
+80000160: 800000b7 lui ra,0x80000
+80000164: 0000af13 slti t5,ra,0
+80000168: 00100e93 li t4,1
+8000016c: 00700193 li gp,7
+80000170: 21df1063 bne t5,t4,80000370 <fail>
+
+80000174 <test_8>:
+80000174: 800000b7 lui ra,0x80000
+80000178: 8000af13 slti t5,ra,-2048
+8000017c: 00100e93 li t4,1
+80000180: 00800193 li gp,8
+80000184: 1fdf1663 bne t5,t4,80000370 <fail>
+
+80000188 <test_9>:
+80000188: 00000093 li ra,0
+8000018c: 7ff0af13 slti t5,ra,2047
+80000190: 00100e93 li t4,1
+80000194: 00900193 li gp,9
+80000198: 1ddf1c63 bne t5,t4,80000370 <fail>
+
+8000019c <test_10>:
+8000019c: 800000b7 lui ra,0x80000
+800001a0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001a4: 0000af13 slti t5,ra,0
+800001a8: 00000e93 li t4,0
+800001ac: 00a00193 li gp,10
+800001b0: 1ddf1063 bne t5,t4,80000370 <fail>
+
+800001b4 <test_11>:
+800001b4: 800000b7 lui ra,0x80000
+800001b8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001bc: 7ff0af13 slti t5,ra,2047
+800001c0: 00000e93 li t4,0
+800001c4: 00b00193 li gp,11
+800001c8: 1bdf1463 bne t5,t4,80000370 <fail>
+
+800001cc <test_12>:
+800001cc: 800000b7 lui ra,0x80000
+800001d0: 7ff0af13 slti t5,ra,2047
+800001d4: 00100e93 li t4,1
+800001d8: 00c00193 li gp,12
+800001dc: 19df1a63 bne t5,t4,80000370 <fail>
+
+800001e0 <test_13>:
+800001e0: 800000b7 lui ra,0x80000
+800001e4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001e8: 8000af13 slti t5,ra,-2048
+800001ec: 00000e93 li t4,0
+800001f0: 00d00193 li gp,13
+800001f4: 17df1e63 bne t5,t4,80000370 <fail>
+
+800001f8 <test_14>:
+800001f8: 00000093 li ra,0
+800001fc: fff0af13 slti t5,ra,-1
+80000200: 00000e93 li t4,0
+80000204: 00e00193 li gp,14
+80000208: 17df1463 bne t5,t4,80000370 <fail>
+
+8000020c <test_15>:
+8000020c: fff00093 li ra,-1
+80000210: 0010af13 slti t5,ra,1
+80000214: 00100e93 li t4,1
+80000218: 00f00193 li gp,15
+8000021c: 15df1a63 bne t5,t4,80000370 <fail>
+
+80000220 <test_16>:
+80000220: fff00093 li ra,-1
+80000224: fff0af13 slti t5,ra,-1
+80000228: 00000e93 li t4,0
+8000022c: 01000193 li gp,16
+80000230: 15df1063 bne t5,t4,80000370 <fail>
+
+80000234 <test_17>:
+80000234: 00b00093 li ra,11
+80000238: 00d0a093 slti ra,ra,13
+8000023c: 00100e93 li t4,1
+80000240: 01100193 li gp,17
+80000244: 13d09663 bne ra,t4,80000370 <fail>
+
+80000248 <test_18>:
+80000248: 00000213 li tp,0
+8000024c: 00f00093 li ra,15
+80000250: 00a0af13 slti t5,ra,10
+80000254: 000f0313 mv t1,t5
+80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000025c: 00200293 li t0,2
+80000260: fe5216e3 bne tp,t0,8000024c <test_18+0x4>
+80000264: 00000e93 li t4,0
+80000268: 01200193 li gp,18
+8000026c: 11d31263 bne t1,t4,80000370 <fail>
+
+80000270 <test_19>:
+80000270: 00000213 li tp,0
+80000274: 00a00093 li ra,10
+80000278: 0100af13 slti t5,ra,16
+8000027c: 00000013 nop
+80000280: 000f0313 mv t1,t5
+80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000288: 00200293 li t0,2
+8000028c: fe5214e3 bne tp,t0,80000274 <test_19+0x4>
+80000290: 00100e93 li t4,1
+80000294: 01300193 li gp,19
+80000298: 0dd31c63 bne t1,t4,80000370 <fail>
+
+8000029c <test_20>:
+8000029c: 00000213 li tp,0
+800002a0: 01000093 li ra,16
+800002a4: 0090af13 slti t5,ra,9
+800002a8: 00000013 nop
+800002ac: 00000013 nop
+800002b0: 000f0313 mv t1,t5
+800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002b8: 00200293 li t0,2
+800002bc: fe5212e3 bne tp,t0,800002a0 <test_20+0x4>
+800002c0: 00000e93 li t4,0
+800002c4: 01400193 li gp,20
+800002c8: 0bd31463 bne t1,t4,80000370 <fail>
+
+800002cc <test_21>:
+800002cc: 00000213 li tp,0
+800002d0: 00b00093 li ra,11
+800002d4: 00f0af13 slti t5,ra,15
+800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002dc: 00200293 li t0,2
+800002e0: fe5218e3 bne tp,t0,800002d0 <test_21+0x4>
+800002e4: 00100e93 li t4,1
+800002e8: 01500193 li gp,21
+800002ec: 09df1263 bne t5,t4,80000370 <fail>
+
+800002f0 <test_22>:
+800002f0: 00000213 li tp,0
+800002f4: 01100093 li ra,17
+800002f8: 00000013 nop
+800002fc: 0080af13 slti t5,ra,8
+80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000304: 00200293 li t0,2
+80000308: fe5216e3 bne tp,t0,800002f4 <test_22+0x4>
+8000030c: 00000e93 li t4,0
+80000310: 01600193 li gp,22
+80000314: 05df1e63 bne t5,t4,80000370 <fail>
+
+80000318 <test_23>:
+80000318: 00000213 li tp,0
+8000031c: 00c00093 li ra,12
+80000320: 00000013 nop
+80000324: 00000013 nop
+80000328: 00e0af13 slti t5,ra,14
+8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000330: 00200293 li t0,2
+80000334: fe5214e3 bne tp,t0,8000031c <test_23+0x4>
+80000338: 00100e93 li t4,1
+8000033c: 01700193 li gp,23
+80000340: 03df1863 bne t5,t4,80000370 <fail>
+
+80000344 <test_24>:
+80000344: fff02093 slti ra,zero,-1
+80000348: 00000e93 li t4,0
+8000034c: 01800193 li gp,24
+80000350: 03d09063 bne ra,t4,80000370 <fail>
+
+80000354 <test_25>:
+80000354: 00ff00b7 lui ra,0xff0
+80000358: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000035c: fff0a013 slti zero,ra,-1
+80000360: 00000e93 li t4,0
+80000364: 01900193 li gp,25
+80000368: 01d01463 bne zero,t4,80000370 <fail>
+8000036c: 00301c63 bne zero,gp,80000384 <pass>
+
+80000370 <fail>:
+80000370: 0ff0000f fence
+80000374: 00018063 beqz gp,80000374 <fail+0x4>
+80000378: 00119193 slli gp,gp,0x1
+8000037c: 0011e193 ori gp,gp,1
+80000380: 00000073 ecall
+
+80000384 <pass>:
+80000384: 0ff0000f fence
+80000388: 00100193 li gp,1
+8000038c: 00000073 ecall
+80000390: c0001073 unimp
+80000394: 0000 unimp
+80000396: 0000 unimp
+80000398: 0000 unimp
+8000039a: 0000 unimp
+8000039c: 0000 unimp
+8000039e: 0000 unimp
+800003a0: 0000 unimp
+800003a2: 0000 unimp
+800003a4: 0000 unimp
+800003a6: 0000 unimp
+800003a8: 0000 unimp
+800003aa: 0000 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-slti.elf b/test/riscv-tests/rv32ui-p-slti.elf
new file mode 100644
index 0000000..faccd51
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-slti.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sltiu.dump b/test/riscv-tests/rv32ui-p-sltiu.dump
new file mode 100644
index 0000000..7055814
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sltiu.dump
@@ -0,0 +1,320 @@
+
+rv32ui-p-sltiu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 0000bf13 sltiu t5,ra,0
+80000104: 00000e93 li t4,0
+80000108: 00200193 li gp,2
+8000010c: 27df1263 bne t5,t4,80000370 <fail>
+
+80000110 <test_3>:
+80000110: 00100093 li ra,1
+80000114: 0010bf13 seqz t5,ra
+80000118: 00000e93 li t4,0
+8000011c: 00300193 li gp,3
+80000120: 25df1863 bne t5,t4,80000370 <fail>
+
+80000124 <test_4>:
+80000124: 00300093 li ra,3
+80000128: 0070bf13 sltiu t5,ra,7
+8000012c: 00100e93 li t4,1
+80000130: 00400193 li gp,4
+80000134: 23df1e63 bne t5,t4,80000370 <fail>
+
+80000138 <test_5>:
+80000138: 00700093 li ra,7
+8000013c: 0030bf13 sltiu t5,ra,3
+80000140: 00000e93 li t4,0
+80000144: 00500193 li gp,5
+80000148: 23df1463 bne t5,t4,80000370 <fail>
+
+8000014c <test_6>:
+8000014c: 00000093 li ra,0
+80000150: 8000bf13 sltiu t5,ra,-2048
+80000154: 00100e93 li t4,1
+80000158: 00600193 li gp,6
+8000015c: 21df1a63 bne t5,t4,80000370 <fail>
+
+80000160 <test_7>:
+80000160: 800000b7 lui ra,0x80000
+80000164: 0000bf13 sltiu t5,ra,0
+80000168: 00000e93 li t4,0
+8000016c: 00700193 li gp,7
+80000170: 21df1063 bne t5,t4,80000370 <fail>
+
+80000174 <test_8>:
+80000174: 800000b7 lui ra,0x80000
+80000178: 8000bf13 sltiu t5,ra,-2048
+8000017c: 00100e93 li t4,1
+80000180: 00800193 li gp,8
+80000184: 1fdf1663 bne t5,t4,80000370 <fail>
+
+80000188 <test_9>:
+80000188: 00000093 li ra,0
+8000018c: 7ff0bf13 sltiu t5,ra,2047
+80000190: 00100e93 li t4,1
+80000194: 00900193 li gp,9
+80000198: 1ddf1c63 bne t5,t4,80000370 <fail>
+
+8000019c <test_10>:
+8000019c: 800000b7 lui ra,0x80000
+800001a0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001a4: 0000bf13 sltiu t5,ra,0
+800001a8: 00000e93 li t4,0
+800001ac: 00a00193 li gp,10
+800001b0: 1ddf1063 bne t5,t4,80000370 <fail>
+
+800001b4 <test_11>:
+800001b4: 800000b7 lui ra,0x80000
+800001b8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001bc: 7ff0bf13 sltiu t5,ra,2047
+800001c0: 00000e93 li t4,0
+800001c4: 00b00193 li gp,11
+800001c8: 1bdf1463 bne t5,t4,80000370 <fail>
+
+800001cc <test_12>:
+800001cc: 800000b7 lui ra,0x80000
+800001d0: 7ff0bf13 sltiu t5,ra,2047
+800001d4: 00000e93 li t4,0
+800001d8: 00c00193 li gp,12
+800001dc: 19df1a63 bne t5,t4,80000370 <fail>
+
+800001e0 <test_13>:
+800001e0: 800000b7 lui ra,0x80000
+800001e4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001e8: 8000bf13 sltiu t5,ra,-2048
+800001ec: 00100e93 li t4,1
+800001f0: 00d00193 li gp,13
+800001f4: 17df1e63 bne t5,t4,80000370 <fail>
+
+800001f8 <test_14>:
+800001f8: 00000093 li ra,0
+800001fc: fff0bf13 sltiu t5,ra,-1
+80000200: 00100e93 li t4,1
+80000204: 00e00193 li gp,14
+80000208: 17df1463 bne t5,t4,80000370 <fail>
+
+8000020c <test_15>:
+8000020c: fff00093 li ra,-1
+80000210: 0010bf13 seqz t5,ra
+80000214: 00000e93 li t4,0
+80000218: 00f00193 li gp,15
+8000021c: 15df1a63 bne t5,t4,80000370 <fail>
+
+80000220 <test_16>:
+80000220: fff00093 li ra,-1
+80000224: fff0bf13 sltiu t5,ra,-1
+80000228: 00000e93 li t4,0
+8000022c: 01000193 li gp,16
+80000230: 15df1063 bne t5,t4,80000370 <fail>
+
+80000234 <test_17>:
+80000234: 00b00093 li ra,11
+80000238: 00d0b093 sltiu ra,ra,13
+8000023c: 00100e93 li t4,1
+80000240: 01100193 li gp,17
+80000244: 13d09663 bne ra,t4,80000370 <fail>
+
+80000248 <test_18>:
+80000248: 00000213 li tp,0
+8000024c: 00f00093 li ra,15
+80000250: 00a0bf13 sltiu t5,ra,10
+80000254: 000f0313 mv t1,t5
+80000258: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000025c: 00200293 li t0,2
+80000260: fe5216e3 bne tp,t0,8000024c <test_18+0x4>
+80000264: 00000e93 li t4,0
+80000268: 01200193 li gp,18
+8000026c: 11d31263 bne t1,t4,80000370 <fail>
+
+80000270 <test_19>:
+80000270: 00000213 li tp,0
+80000274: 00a00093 li ra,10
+80000278: 0100bf13 sltiu t5,ra,16
+8000027c: 00000013 nop
+80000280: 000f0313 mv t1,t5
+80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000288: 00200293 li t0,2
+8000028c: fe5214e3 bne tp,t0,80000274 <test_19+0x4>
+80000290: 00100e93 li t4,1
+80000294: 01300193 li gp,19
+80000298: 0dd31c63 bne t1,t4,80000370 <fail>
+
+8000029c <test_20>:
+8000029c: 00000213 li tp,0
+800002a0: 01000093 li ra,16
+800002a4: 0090bf13 sltiu t5,ra,9
+800002a8: 00000013 nop
+800002ac: 00000013 nop
+800002b0: 000f0313 mv t1,t5
+800002b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002b8: 00200293 li t0,2
+800002bc: fe5212e3 bne tp,t0,800002a0 <test_20+0x4>
+800002c0: 00000e93 li t4,0
+800002c4: 01400193 li gp,20
+800002c8: 0bd31463 bne t1,t4,80000370 <fail>
+
+800002cc <test_21>:
+800002cc: 00000213 li tp,0
+800002d0: 00b00093 li ra,11
+800002d4: 00f0bf13 sltiu t5,ra,15
+800002d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002dc: 00200293 li t0,2
+800002e0: fe5218e3 bne tp,t0,800002d0 <test_21+0x4>
+800002e4: 00100e93 li t4,1
+800002e8: 01500193 li gp,21
+800002ec: 09df1263 bne t5,t4,80000370 <fail>
+
+800002f0 <test_22>:
+800002f0: 00000213 li tp,0
+800002f4: 01100093 li ra,17
+800002f8: 00000013 nop
+800002fc: 0080bf13 sltiu t5,ra,8
+80000300: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000304: 00200293 li t0,2
+80000308: fe5216e3 bne tp,t0,800002f4 <test_22+0x4>
+8000030c: 00000e93 li t4,0
+80000310: 01600193 li gp,22
+80000314: 05df1e63 bne t5,t4,80000370 <fail>
+
+80000318 <test_23>:
+80000318: 00000213 li tp,0
+8000031c: 00c00093 li ra,12
+80000320: 00000013 nop
+80000324: 00000013 nop
+80000328: 00e0bf13 sltiu t5,ra,14
+8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000330: 00200293 li t0,2
+80000334: fe5214e3 bne tp,t0,8000031c <test_23+0x4>
+80000338: 00100e93 li t4,1
+8000033c: 01700193 li gp,23
+80000340: 03df1863 bne t5,t4,80000370 <fail>
+
+80000344 <test_24>:
+80000344: fff03093 sltiu ra,zero,-1
+80000348: 00100e93 li t4,1
+8000034c: 01800193 li gp,24
+80000350: 03d09063 bne ra,t4,80000370 <fail>
+
+80000354 <test_25>:
+80000354: 00ff00b7 lui ra,0xff0
+80000358: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000035c: fff0b013 sltiu zero,ra,-1
+80000360: 00000e93 li t4,0
+80000364: 01900193 li gp,25
+80000368: 01d01463 bne zero,t4,80000370 <fail>
+8000036c: 00301c63 bne zero,gp,80000384 <pass>
+
+80000370 <fail>:
+80000370: 0ff0000f fence
+80000374: 00018063 beqz gp,80000374 <fail+0x4>
+80000378: 00119193 slli gp,gp,0x1
+8000037c: 0011e193 ori gp,gp,1
+80000380: 00000073 ecall
+
+80000384 <pass>:
+80000384: 0ff0000f fence
+80000388: 00100193 li gp,1
+8000038c: 00000073 ecall
+80000390: c0001073 unimp
+80000394: 0000 unimp
+80000396: 0000 unimp
+80000398: 0000 unimp
+8000039a: 0000 unimp
+8000039c: 0000 unimp
+8000039e: 0000 unimp
+800003a0: 0000 unimp
+800003a2: 0000 unimp
+800003a4: 0000 unimp
+800003a6: 0000 unimp
+800003a8: 0000 unimp
+800003aa: 0000 unimp
+800003ac: 0000 unimp
+800003ae: 0000 unimp
+800003b0: 0000 unimp
+800003b2: 0000 unimp
+800003b4: 0000 unimp
+800003b6: 0000 unimp
+800003b8: 0000 unimp
+800003ba: 0000 unimp
+800003bc: 0000 unimp
+800003be: 0000 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sltiu.elf b/test/riscv-tests/rv32ui-p-sltiu.elf
new file mode 100644
index 0000000..ada45e2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sltiu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sltu.dump b/test/riscv-tests/rv32ui-p-sltu.dump
new file mode 100644
index 0000000..35979f4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sltu.dump
@@ -0,0 +1,485 @@
+
+rv32ui-p-sltu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 0020bf33 sltu t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 0020bf33 sltu t5,ra,sp
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 49df1e63 bne t5,t4,800005c4 <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 0020bf33 sltu t5,ra,sp
+80000138: 00100e93 li t4,1
+8000013c: 00400193 li gp,4
+80000140: 49df1263 bne t5,t4,800005c4 <fail>
+
+80000144 <test_5>:
+80000144: 00700093 li ra,7
+80000148: 00300113 li sp,3
+8000014c: 0020bf33 sltu t5,ra,sp
+80000150: 00000e93 li t4,0
+80000154: 00500193 li gp,5
+80000158: 47df1663 bne t5,t4,800005c4 <fail>
+
+8000015c <test_6>:
+8000015c: 00000093 li ra,0
+80000160: ffff8137 lui sp,0xffff8
+80000164: 0020bf33 sltu t5,ra,sp
+80000168: 00100e93 li t4,1
+8000016c: 00600193 li gp,6
+80000170: 45df1a63 bne t5,t4,800005c4 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: 00000113 li sp,0
+8000017c: 0020bf33 sltu t5,ra,sp
+80000180: 00000e93 li t4,0
+80000184: 00700193 li gp,7
+80000188: 43df1e63 bne t5,t4,800005c4 <fail>
+
+8000018c <test_8>:
+8000018c: 800000b7 lui ra,0x80000
+80000190: ffff8137 lui sp,0xffff8
+80000194: 0020bf33 sltu t5,ra,sp
+80000198: 00100e93 li t4,1
+8000019c: 00800193 li gp,8
+800001a0: 43df1263 bne t5,t4,800005c4 <fail>
+
+800001a4 <test_9>:
+800001a4: 00000093 li ra,0
+800001a8: 00008137 lui sp,0x8
+800001ac: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001b0: 0020bf33 sltu t5,ra,sp
+800001b4: 00100e93 li t4,1
+800001b8: 00900193 li gp,9
+800001bc: 41df1463 bne t5,t4,800005c4 <fail>
+
+800001c0 <test_10>:
+800001c0: 800000b7 lui ra,0x80000
+800001c4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001c8: 00000113 li sp,0
+800001cc: 0020bf33 sltu t5,ra,sp
+800001d0: 00000e93 li t4,0
+800001d4: 00a00193 li gp,10
+800001d8: 3fdf1663 bne t5,t4,800005c4 <fail>
+
+800001dc <test_11>:
+800001dc: 800000b7 lui ra,0x80000
+800001e0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001e4: 00008137 lui sp,0x8
+800001e8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001ec: 0020bf33 sltu t5,ra,sp
+800001f0: 00000e93 li t4,0
+800001f4: 00b00193 li gp,11
+800001f8: 3ddf1663 bne t5,t4,800005c4 <fail>
+
+800001fc <test_12>:
+800001fc: 800000b7 lui ra,0x80000
+80000200: 00008137 lui sp,0x8
+80000204: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80000208: 0020bf33 sltu t5,ra,sp
+8000020c: 00000e93 li t4,0
+80000210: 00c00193 li gp,12
+80000214: 3bdf1863 bne t5,t4,800005c4 <fail>
+
+80000218 <test_13>:
+80000218: 800000b7 lui ra,0x80000
+8000021c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000220: ffff8137 lui sp,0xffff8
+80000224: 0020bf33 sltu t5,ra,sp
+80000228: 00100e93 li t4,1
+8000022c: 00d00193 li gp,13
+80000230: 39df1a63 bne t5,t4,800005c4 <fail>
+
+80000234 <test_14>:
+80000234: 00000093 li ra,0
+80000238: fff00113 li sp,-1
+8000023c: 0020bf33 sltu t5,ra,sp
+80000240: 00100e93 li t4,1
+80000244: 00e00193 li gp,14
+80000248: 37df1e63 bne t5,t4,800005c4 <fail>
+
+8000024c <test_15>:
+8000024c: fff00093 li ra,-1
+80000250: 00100113 li sp,1
+80000254: 0020bf33 sltu t5,ra,sp
+80000258: 00000e93 li t4,0
+8000025c: 00f00193 li gp,15
+80000260: 37df1263 bne t5,t4,800005c4 <fail>
+
+80000264 <test_16>:
+80000264: fff00093 li ra,-1
+80000268: fff00113 li sp,-1
+8000026c: 0020bf33 sltu t5,ra,sp
+80000270: 00000e93 li t4,0
+80000274: 01000193 li gp,16
+80000278: 35df1663 bne t5,t4,800005c4 <fail>
+
+8000027c <test_17>:
+8000027c: 00e00093 li ra,14
+80000280: 00d00113 li sp,13
+80000284: 0020b0b3 sltu ra,ra,sp
+80000288: 00000e93 li t4,0
+8000028c: 01100193 li gp,17
+80000290: 33d09a63 bne ra,t4,800005c4 <fail>
+
+80000294 <test_18>:
+80000294: 00b00093 li ra,11
+80000298: 00d00113 li sp,13
+8000029c: 0020b133 sltu sp,ra,sp
+800002a0: 00100e93 li t4,1
+800002a4: 01200193 li gp,18
+800002a8: 31d11e63 bne sp,t4,800005c4 <fail>
+
+800002ac <test_19>:
+800002ac: 00d00093 li ra,13
+800002b0: 0010b0b3 sltu ra,ra,ra
+800002b4: 00000e93 li t4,0
+800002b8: 01300193 li gp,19
+800002bc: 31d09463 bne ra,t4,800005c4 <fail>
+
+800002c0 <test_20>:
+800002c0: 00000213 li tp,0
+800002c4: 00b00093 li ra,11
+800002c8: 00d00113 li sp,13
+800002cc: 0020bf33 sltu t5,ra,sp
+800002d0: 000f0313 mv t1,t5
+800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d8: 00200293 li t0,2
+800002dc: fe5214e3 bne tp,t0,800002c4 <test_20+0x4>
+800002e0: 00100e93 li t4,1
+800002e4: 01400193 li gp,20
+800002e8: 2dd31e63 bne t1,t4,800005c4 <fail>
+
+800002ec <test_21>:
+800002ec: 00000213 li tp,0
+800002f0: 00e00093 li ra,14
+800002f4: 00d00113 li sp,13
+800002f8: 0020bf33 sltu t5,ra,sp
+800002fc: 00000013 nop
+80000300: 000f0313 mv t1,t5
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5212e3 bne tp,t0,800002f0 <test_21+0x4>
+80000310: 00000e93 li t4,0
+80000314: 01500193 li gp,21
+80000318: 2bd31663 bne t1,t4,800005c4 <fail>
+
+8000031c <test_22>:
+8000031c: 00000213 li tp,0
+80000320: 00c00093 li ra,12
+80000324: 00d00113 li sp,13
+80000328: 0020bf33 sltu t5,ra,sp
+8000032c: 00000013 nop
+80000330: 00000013 nop
+80000334: 000f0313 mv t1,t5
+80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000033c: 00200293 li t0,2
+80000340: fe5210e3 bne tp,t0,80000320 <test_22+0x4>
+80000344: 00100e93 li t4,1
+80000348: 01600193 li gp,22
+8000034c: 27d31c63 bne t1,t4,800005c4 <fail>
+
+80000350 <test_23>:
+80000350: 00000213 li tp,0
+80000354: 00e00093 li ra,14
+80000358: 00d00113 li sp,13
+8000035c: 0020bf33 sltu t5,ra,sp
+80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000364: 00200293 li t0,2
+80000368: fe5216e3 bne tp,t0,80000354 <test_23+0x4>
+8000036c: 00000e93 li t4,0
+80000370: 01700193 li gp,23
+80000374: 25df1863 bne t5,t4,800005c4 <fail>
+
+80000378 <test_24>:
+80000378: 00000213 li tp,0
+8000037c: 00b00093 li ra,11
+80000380: 00d00113 li sp,13
+80000384: 00000013 nop
+80000388: 0020bf33 sltu t5,ra,sp
+8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000390: 00200293 li t0,2
+80000394: fe5214e3 bne tp,t0,8000037c <test_24+0x4>
+80000398: 00100e93 li t4,1
+8000039c: 01800193 li gp,24
+800003a0: 23df1263 bne t5,t4,800005c4 <fail>
+
+800003a4 <test_25>:
+800003a4: 00000213 li tp,0
+800003a8: 00f00093 li ra,15
+800003ac: 00d00113 li sp,13
+800003b0: 00000013 nop
+800003b4: 00000013 nop
+800003b8: 0020bf33 sltu t5,ra,sp
+800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c0: 00200293 li t0,2
+800003c4: fe5212e3 bne tp,t0,800003a8 <test_25+0x4>
+800003c8: 00000e93 li t4,0
+800003cc: 01900193 li gp,25
+800003d0: 1fdf1a63 bne t5,t4,800005c4 <fail>
+
+800003d4 <test_26>:
+800003d4: 00000213 li tp,0
+800003d8: 00a00093 li ra,10
+800003dc: 00000013 nop
+800003e0: 00d00113 li sp,13
+800003e4: 0020bf33 sltu t5,ra,sp
+800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003ec: 00200293 li t0,2
+800003f0: fe5214e3 bne tp,t0,800003d8 <test_26+0x4>
+800003f4: 00100e93 li t4,1
+800003f8: 01a00193 li gp,26
+800003fc: 1ddf1463 bne t5,t4,800005c4 <fail>
+
+80000400 <test_27>:
+80000400: 00000213 li tp,0
+80000404: 01000093 li ra,16
+80000408: 00000013 nop
+8000040c: 00d00113 li sp,13
+80000410: 00000013 nop
+80000414: 0020bf33 sltu t5,ra,sp
+80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000041c: 00200293 li t0,2
+80000420: fe5212e3 bne tp,t0,80000404 <test_27+0x4>
+80000424: 00000e93 li t4,0
+80000428: 01b00193 li gp,27
+8000042c: 19df1c63 bne t5,t4,800005c4 <fail>
+
+80000430 <test_28>:
+80000430: 00000213 li tp,0
+80000434: 00900093 li ra,9
+80000438: 00000013 nop
+8000043c: 00000013 nop
+80000440: 00d00113 li sp,13
+80000444: 0020bf33 sltu t5,ra,sp
+80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000044c: 00200293 li t0,2
+80000450: fe5212e3 bne tp,t0,80000434 <test_28+0x4>
+80000454: 00100e93 li t4,1
+80000458: 01c00193 li gp,28
+8000045c: 17df1463 bne t5,t4,800005c4 <fail>
+
+80000460 <test_29>:
+80000460: 00000213 li tp,0
+80000464: 00d00113 li sp,13
+80000468: 01100093 li ra,17
+8000046c: 0020bf33 sltu t5,ra,sp
+80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000474: 00200293 li t0,2
+80000478: fe5216e3 bne tp,t0,80000464 <test_29+0x4>
+8000047c: 00000e93 li t4,0
+80000480: 01d00193 li gp,29
+80000484: 15df1063 bne t5,t4,800005c4 <fail>
+
+80000488 <test_30>:
+80000488: 00000213 li tp,0
+8000048c: 00d00113 li sp,13
+80000490: 00800093 li ra,8
+80000494: 00000013 nop
+80000498: 0020bf33 sltu t5,ra,sp
+8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004a0: 00200293 li t0,2
+800004a4: fe5214e3 bne tp,t0,8000048c <test_30+0x4>
+800004a8: 00100e93 li t4,1
+800004ac: 01e00193 li gp,30
+800004b0: 11df1a63 bne t5,t4,800005c4 <fail>
+
+800004b4 <test_31>:
+800004b4: 00000213 li tp,0
+800004b8: 00d00113 li sp,13
+800004bc: 01200093 li ra,18
+800004c0: 00000013 nop
+800004c4: 00000013 nop
+800004c8: 0020bf33 sltu t5,ra,sp
+800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004d0: 00200293 li t0,2
+800004d4: fe5212e3 bne tp,t0,800004b8 <test_31+0x4>
+800004d8: 00000e93 li t4,0
+800004dc: 01f00193 li gp,31
+800004e0: 0fdf1263 bne t5,t4,800005c4 <fail>
+
+800004e4 <test_32>:
+800004e4: 00000213 li tp,0
+800004e8: 00d00113 li sp,13
+800004ec: 00000013 nop
+800004f0: 00700093 li ra,7
+800004f4: 0020bf33 sltu t5,ra,sp
+800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004fc: 00200293 li t0,2
+80000500: fe5214e3 bne tp,t0,800004e8 <test_32+0x4>
+80000504: 00100e93 li t4,1
+80000508: 02000193 li gp,32
+8000050c: 0bdf1c63 bne t5,t4,800005c4 <fail>
+
+80000510 <test_33>:
+80000510: 00000213 li tp,0
+80000514: 00d00113 li sp,13
+80000518: 00000013 nop
+8000051c: 01300093 li ra,19
+80000520: 00000013 nop
+80000524: 0020bf33 sltu t5,ra,sp
+80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000052c: 00200293 li t0,2
+80000530: fe5212e3 bne tp,t0,80000514 <test_33+0x4>
+80000534: 00000e93 li t4,0
+80000538: 02100193 li gp,33
+8000053c: 09df1463 bne t5,t4,800005c4 <fail>
+
+80000540 <test_34>:
+80000540: 00000213 li tp,0
+80000544: 00d00113 li sp,13
+80000548: 00000013 nop
+8000054c: 00000013 nop
+80000550: 00600093 li ra,6
+80000554: 0020bf33 sltu t5,ra,sp
+80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000055c: 00200293 li t0,2
+80000560: fe5212e3 bne tp,t0,80000544 <test_34+0x4>
+80000564: 00100e93 li t4,1
+80000568: 02200193 li gp,34
+8000056c: 05df1c63 bne t5,t4,800005c4 <fail>
+
+80000570 <test_35>:
+80000570: fff00093 li ra,-1
+80000574: 00103133 snez sp,ra
+80000578: 00100e93 li t4,1
+8000057c: 02300193 li gp,35
+80000580: 05d11263 bne sp,t4,800005c4 <fail>
+
+80000584 <test_36>:
+80000584: fff00093 li ra,-1
+80000588: 0000b133 sltu sp,ra,zero
+8000058c: 00000e93 li t4,0
+80000590: 02400193 li gp,36
+80000594: 03d11863 bne sp,t4,800005c4 <fail>
+
+80000598 <test_37>:
+80000598: 000030b3 snez ra,zero
+8000059c: 00000e93 li t4,0
+800005a0: 02500193 li gp,37
+800005a4: 03d09063 bne ra,t4,800005c4 <fail>
+
+800005a8 <test_38>:
+800005a8: 01000093 li ra,16
+800005ac: 01e00113 li sp,30
+800005b0: 0020b033 sltu zero,ra,sp
+800005b4: 00000e93 li t4,0
+800005b8: 02600193 li gp,38
+800005bc: 01d01463 bne zero,t4,800005c4 <fail>
+800005c0: 00301c63 bne zero,gp,800005d8 <pass>
+
+800005c4 <fail>:
+800005c4: 0ff0000f fence
+800005c8: 00018063 beqz gp,800005c8 <fail+0x4>
+800005cc: 00119193 slli gp,gp,0x1
+800005d0: 0011e193 ori gp,gp,1
+800005d4: 00000073 ecall
+
+800005d8 <pass>:
+800005d8: 0ff0000f fence
+800005dc: 00100193 li gp,1
+800005e0: 00000073 ecall
+800005e4: c0001073 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sltu.elf b/test/riscv-tests/rv32ui-p-sltu.elf
new file mode 100644
index 0000000..893aeb4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sra.dump b/test/riscv-tests/rv32ui-p-sra.dump
new file mode 100644
index 0000000..60535a4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sra.dump
@@ -0,0 +1,538 @@
+
+rv32ui-p-sra: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 800000b7 lui ra,0x80000
+80000100: 00000113 li sp,0
+80000104: 4020df33 sra t5,ra,sp
+80000108: 80000eb7 lui t4,0x80000
+8000010c: 00200193 li gp,2
+80000110: 59df1463 bne t5,t4,80000698 <fail>
+
+80000114 <test_3>:
+80000114: 800000b7 lui ra,0x80000
+80000118: 00100113 li sp,1
+8000011c: 4020df33 sra t5,ra,sp
+80000120: c0000eb7 lui t4,0xc0000
+80000124: 00300193 li gp,3
+80000128: 57df1863 bne t5,t4,80000698 <fail>
+
+8000012c <test_4>:
+8000012c: 800000b7 lui ra,0x80000
+80000130: 00700113 li sp,7
+80000134: 4020df33 sra t5,ra,sp
+80000138: ff000eb7 lui t4,0xff000
+8000013c: 00400193 li gp,4
+80000140: 55df1c63 bne t5,t4,80000698 <fail>
+
+80000144 <test_5>:
+80000144: 800000b7 lui ra,0x80000
+80000148: 00e00113 li sp,14
+8000014c: 4020df33 sra t5,ra,sp
+80000150: fffe0eb7 lui t4,0xfffe0
+80000154: 00500193 li gp,5
+80000158: 55df1063 bne t5,t4,80000698 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+80000164: 01f00113 li sp,31
+80000168: 4020df33 sra t5,ra,sp
+8000016c: fff00e93 li t4,-1
+80000170: 00600193 li gp,6
+80000174: 53df1263 bne t5,t4,80000698 <fail>
+
+80000178 <test_7>:
+80000178: 800000b7 lui ra,0x80000
+8000017c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000180: 00000113 li sp,0
+80000184: 4020df33 sra t5,ra,sp
+80000188: 80000eb7 lui t4,0x80000
+8000018c: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+80000190: 00700193 li gp,7
+80000194: 51df1263 bne t5,t4,80000698 <fail>
+
+80000198 <test_8>:
+80000198: 800000b7 lui ra,0x80000
+8000019c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001a0: 00100113 li sp,1
+800001a4: 4020df33 sra t5,ra,sp
+800001a8: 40000eb7 lui t4,0x40000
+800001ac: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001>
+800001b0: 00800193 li gp,8
+800001b4: 4fdf1263 bne t5,t4,80000698 <fail>
+
+800001b8 <test_9>:
+800001b8: 800000b7 lui ra,0x80000
+800001bc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001c0: 00700113 li sp,7
+800001c4: 4020df33 sra t5,ra,sp
+800001c8: 01000eb7 lui t4,0x1000
+800001cc: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001>
+800001d0: 00900193 li gp,9
+800001d4: 4ddf1263 bne t5,t4,80000698 <fail>
+
+800001d8 <test_10>:
+800001d8: 800000b7 lui ra,0x80000
+800001dc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001e0: 00e00113 li sp,14
+800001e4: 4020df33 sra t5,ra,sp
+800001e8: 00020eb7 lui t4,0x20
+800001ec: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001>
+800001f0: 00a00193 li gp,10
+800001f4: 4bdf1263 bne t5,t4,80000698 <fail>
+
+800001f8 <test_11>:
+800001f8: 800000b7 lui ra,0x80000
+800001fc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000200: 01f00113 li sp,31
+80000204: 4020df33 sra t5,ra,sp
+80000208: 00000e93 li t4,0
+8000020c: 00b00193 li gp,11
+80000210: 49df1463 bne t5,t4,80000698 <fail>
+
+80000214 <test_12>:
+80000214: 818180b7 lui ra,0x81818
+80000218: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+8000021c: 00000113 li sp,0
+80000220: 4020df33 sra t5,ra,sp
+80000224: 81818eb7 lui t4,0x81818
+80000228: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181>
+8000022c: 00c00193 li gp,12
+80000230: 47df1463 bne t5,t4,80000698 <fail>
+
+80000234 <test_13>:
+80000234: 818180b7 lui ra,0x81818
+80000238: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+8000023c: 00100113 li sp,1
+80000240: 4020df33 sra t5,ra,sp
+80000244: c0c0ceb7 lui t4,0xc0c0c
+80000248: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0>
+8000024c: 00d00193 li gp,13
+80000250: 45df1463 bne t5,t4,80000698 <fail>
+
+80000254 <test_14>:
+80000254: 818180b7 lui ra,0x81818
+80000258: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+8000025c: 00700113 li sp,7
+80000260: 4020df33 sra t5,ra,sp
+80000264: ff030eb7 lui t4,0xff030
+80000268: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303>
+8000026c: 00e00193 li gp,14
+80000270: 43df1463 bne t5,t4,80000698 <fail>
+
+80000274 <test_15>:
+80000274: 818180b7 lui ra,0x81818
+80000278: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+8000027c: 00e00113 li sp,14
+80000280: 4020df33 sra t5,ra,sp
+80000284: fffe0eb7 lui t4,0xfffe0
+80000288: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606>
+8000028c: 00f00193 li gp,15
+80000290: 41df1463 bne t5,t4,80000698 <fail>
+
+80000294 <test_16>:
+80000294: 818180b7 lui ra,0x81818
+80000298: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+8000029c: 01f00113 li sp,31
+800002a0: 4020df33 sra t5,ra,sp
+800002a4: fff00e93 li t4,-1
+800002a8: 01000193 li gp,16
+800002ac: 3fdf1663 bne t5,t4,80000698 <fail>
+
+800002b0 <test_17>:
+800002b0: 818180b7 lui ra,0x81818
+800002b4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+800002b8: fc000113 li sp,-64
+800002bc: 4020df33 sra t5,ra,sp
+800002c0: 81818eb7 lui t4,0x81818
+800002c4: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181>
+800002c8: 01100193 li gp,17
+800002cc: 3ddf1663 bne t5,t4,80000698 <fail>
+
+800002d0 <test_18>:
+800002d0: 818180b7 lui ra,0x81818
+800002d4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+800002d8: fc100113 li sp,-63
+800002dc: 4020df33 sra t5,ra,sp
+800002e0: c0c0ceb7 lui t4,0xc0c0c
+800002e4: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0>
+800002e8: 01200193 li gp,18
+800002ec: 3bdf1663 bne t5,t4,80000698 <fail>
+
+800002f0 <test_19>:
+800002f0: 818180b7 lui ra,0x81818
+800002f4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+800002f8: fc700113 li sp,-57
+800002fc: 4020df33 sra t5,ra,sp
+80000300: ff030eb7 lui t4,0xff030
+80000304: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303>
+80000308: 01300193 li gp,19
+8000030c: 39df1663 bne t5,t4,80000698 <fail>
+
+80000310 <test_20>:
+80000310: 818180b7 lui ra,0x81818
+80000314: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+80000318: fce00113 li sp,-50
+8000031c: 4020df33 sra t5,ra,sp
+80000320: fffe0eb7 lui t4,0xfffe0
+80000324: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606>
+80000328: 01400193 li gp,20
+8000032c: 37df1663 bne t5,t4,80000698 <fail>
+
+80000330 <test_21>:
+80000330: 818180b7 lui ra,0x81818
+80000334: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+80000338: fff00113 li sp,-1
+8000033c: 4020df33 sra t5,ra,sp
+80000340: fff00e93 li t4,-1
+80000344: 01500193 li gp,21
+80000348: 35df1863 bne t5,t4,80000698 <fail>
+
+8000034c <test_22>:
+8000034c: 800000b7 lui ra,0x80000
+80000350: 00700113 li sp,7
+80000354: 4020d0b3 sra ra,ra,sp
+80000358: ff000eb7 lui t4,0xff000
+8000035c: 01600193 li gp,22
+80000360: 33d09c63 bne ra,t4,80000698 <fail>
+
+80000364 <test_23>:
+80000364: 800000b7 lui ra,0x80000
+80000368: 00e00113 li sp,14
+8000036c: 4020d133 sra sp,ra,sp
+80000370: fffe0eb7 lui t4,0xfffe0
+80000374: 01700193 li gp,23
+80000378: 33d11063 bne sp,t4,80000698 <fail>
+
+8000037c <test_24>:
+8000037c: 00700093 li ra,7
+80000380: 4010d0b3 sra ra,ra,ra
+80000384: 00000e93 li t4,0
+80000388: 01800193 li gp,24
+8000038c: 31d09663 bne ra,t4,80000698 <fail>
+
+80000390 <test_25>:
+80000390: 00000213 li tp,0
+80000394: 800000b7 lui ra,0x80000
+80000398: 00700113 li sp,7
+8000039c: 4020df33 sra t5,ra,sp
+800003a0: 000f0313 mv t1,t5
+800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003a8: 00200293 li t0,2
+800003ac: fe5214e3 bne tp,t0,80000394 <test_25+0x4>
+800003b0: ff000eb7 lui t4,0xff000
+800003b4: 01900193 li gp,25
+800003b8: 2fd31063 bne t1,t4,80000698 <fail>
+
+800003bc <test_26>:
+800003bc: 00000213 li tp,0
+800003c0: 800000b7 lui ra,0x80000
+800003c4: 00e00113 li sp,14
+800003c8: 4020df33 sra t5,ra,sp
+800003cc: 00000013 nop
+800003d0: 000f0313 mv t1,t5
+800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003d8: 00200293 li t0,2
+800003dc: fe5212e3 bne tp,t0,800003c0 <test_26+0x4>
+800003e0: fffe0eb7 lui t4,0xfffe0
+800003e4: 01a00193 li gp,26
+800003e8: 2bd31863 bne t1,t4,80000698 <fail>
+
+800003ec <test_27>:
+800003ec: 00000213 li tp,0
+800003f0: 800000b7 lui ra,0x80000
+800003f4: 01f00113 li sp,31
+800003f8: 4020df33 sra t5,ra,sp
+800003fc: 00000013 nop
+80000400: 00000013 nop
+80000404: 000f0313 mv t1,t5
+80000408: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000040c: 00200293 li t0,2
+80000410: fe5210e3 bne tp,t0,800003f0 <test_27+0x4>
+80000414: fff00e93 li t4,-1
+80000418: 01b00193 li gp,27
+8000041c: 27d31e63 bne t1,t4,80000698 <fail>
+
+80000420 <test_28>:
+80000420: 00000213 li tp,0
+80000424: 800000b7 lui ra,0x80000
+80000428: 00700113 li sp,7
+8000042c: 4020df33 sra t5,ra,sp
+80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000434: 00200293 li t0,2
+80000438: fe5216e3 bne tp,t0,80000424 <test_28+0x4>
+8000043c: ff000eb7 lui t4,0xff000
+80000440: 01c00193 li gp,28
+80000444: 25df1a63 bne t5,t4,80000698 <fail>
+
+80000448 <test_29>:
+80000448: 00000213 li tp,0
+8000044c: 800000b7 lui ra,0x80000
+80000450: 00e00113 li sp,14
+80000454: 00000013 nop
+80000458: 4020df33 sra t5,ra,sp
+8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000460: 00200293 li t0,2
+80000464: fe5214e3 bne tp,t0,8000044c <test_29+0x4>
+80000468: fffe0eb7 lui t4,0xfffe0
+8000046c: 01d00193 li gp,29
+80000470: 23df1463 bne t5,t4,80000698 <fail>
+
+80000474 <test_30>:
+80000474: 00000213 li tp,0
+80000478: 800000b7 lui ra,0x80000
+8000047c: 01f00113 li sp,31
+80000480: 00000013 nop
+80000484: 00000013 nop
+80000488: 4020df33 sra t5,ra,sp
+8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000490: 00200293 li t0,2
+80000494: fe5212e3 bne tp,t0,80000478 <test_30+0x4>
+80000498: fff00e93 li t4,-1
+8000049c: 01e00193 li gp,30
+800004a0: 1fdf1c63 bne t5,t4,80000698 <fail>
+
+800004a4 <test_31>:
+800004a4: 00000213 li tp,0
+800004a8: 800000b7 lui ra,0x80000
+800004ac: 00000013 nop
+800004b0: 00700113 li sp,7
+800004b4: 4020df33 sra t5,ra,sp
+800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004bc: 00200293 li t0,2
+800004c0: fe5214e3 bne tp,t0,800004a8 <test_31+0x4>
+800004c4: ff000eb7 lui t4,0xff000
+800004c8: 01f00193 li gp,31
+800004cc: 1ddf1663 bne t5,t4,80000698 <fail>
+
+800004d0 <test_32>:
+800004d0: 00000213 li tp,0
+800004d4: 800000b7 lui ra,0x80000
+800004d8: 00000013 nop
+800004dc: 00e00113 li sp,14
+800004e0: 00000013 nop
+800004e4: 4020df33 sra t5,ra,sp
+800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004ec: 00200293 li t0,2
+800004f0: fe5212e3 bne tp,t0,800004d4 <test_32+0x4>
+800004f4: fffe0eb7 lui t4,0xfffe0
+800004f8: 02000193 li gp,32
+800004fc: 19df1e63 bne t5,t4,80000698 <fail>
+
+80000500 <test_33>:
+80000500: 00000213 li tp,0
+80000504: 800000b7 lui ra,0x80000
+80000508: 00000013 nop
+8000050c: 00000013 nop
+80000510: 01f00113 li sp,31
+80000514: 4020df33 sra t5,ra,sp
+80000518: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000051c: 00200293 li t0,2
+80000520: fe5212e3 bne tp,t0,80000504 <test_33+0x4>
+80000524: fff00e93 li t4,-1
+80000528: 02100193 li gp,33
+8000052c: 17df1663 bne t5,t4,80000698 <fail>
+
+80000530 <test_34>:
+80000530: 00000213 li tp,0
+80000534: 00700113 li sp,7
+80000538: 800000b7 lui ra,0x80000
+8000053c: 4020df33 sra t5,ra,sp
+80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000544: 00200293 li t0,2
+80000548: fe5216e3 bne tp,t0,80000534 <test_34+0x4>
+8000054c: ff000eb7 lui t4,0xff000
+80000550: 02200193 li gp,34
+80000554: 15df1263 bne t5,t4,80000698 <fail>
+
+80000558 <test_35>:
+80000558: 00000213 li tp,0
+8000055c: 00e00113 li sp,14
+80000560: 800000b7 lui ra,0x80000
+80000564: 00000013 nop
+80000568: 4020df33 sra t5,ra,sp
+8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000570: 00200293 li t0,2
+80000574: fe5214e3 bne tp,t0,8000055c <test_35+0x4>
+80000578: fffe0eb7 lui t4,0xfffe0
+8000057c: 02300193 li gp,35
+80000580: 11df1c63 bne t5,t4,80000698 <fail>
+
+80000584 <test_36>:
+80000584: 00000213 li tp,0
+80000588: 01f00113 li sp,31
+8000058c: 800000b7 lui ra,0x80000
+80000590: 00000013 nop
+80000594: 00000013 nop
+80000598: 4020df33 sra t5,ra,sp
+8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005a0: 00200293 li t0,2
+800005a4: fe5212e3 bne tp,t0,80000588 <test_36+0x4>
+800005a8: fff00e93 li t4,-1
+800005ac: 02400193 li gp,36
+800005b0: 0fdf1463 bne t5,t4,80000698 <fail>
+
+800005b4 <test_37>:
+800005b4: 00000213 li tp,0
+800005b8: 00700113 li sp,7
+800005bc: 00000013 nop
+800005c0: 800000b7 lui ra,0x80000
+800005c4: 4020df33 sra t5,ra,sp
+800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005cc: 00200293 li t0,2
+800005d0: fe5214e3 bne tp,t0,800005b8 <test_37+0x4>
+800005d4: ff000eb7 lui t4,0xff000
+800005d8: 02500193 li gp,37
+800005dc: 0bdf1e63 bne t5,t4,80000698 <fail>
+
+800005e0 <test_38>:
+800005e0: 00000213 li tp,0
+800005e4: 00e00113 li sp,14
+800005e8: 00000013 nop
+800005ec: 800000b7 lui ra,0x80000
+800005f0: 00000013 nop
+800005f4: 4020df33 sra t5,ra,sp
+800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005fc: 00200293 li t0,2
+80000600: fe5212e3 bne tp,t0,800005e4 <test_38+0x4>
+80000604: fffe0eb7 lui t4,0xfffe0
+80000608: 02600193 li gp,38
+8000060c: 09df1663 bne t5,t4,80000698 <fail>
+
+80000610 <test_39>:
+80000610: 00000213 li tp,0
+80000614: 01f00113 li sp,31
+80000618: 00000013 nop
+8000061c: 00000013 nop
+80000620: 800000b7 lui ra,0x80000
+80000624: 4020df33 sra t5,ra,sp
+80000628: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000062c: 00200293 li t0,2
+80000630: fe5212e3 bne tp,t0,80000614 <test_39+0x4>
+80000634: fff00e93 li t4,-1
+80000638: 02700193 li gp,39
+8000063c: 05df1e63 bne t5,t4,80000698 <fail>
+
+80000640 <test_40>:
+80000640: 00f00093 li ra,15
+80000644: 40105133 sra sp,zero,ra
+80000648: 00000e93 li t4,0
+8000064c: 02800193 li gp,40
+80000650: 05d11463 bne sp,t4,80000698 <fail>
+
+80000654 <test_41>:
+80000654: 02000093 li ra,32
+80000658: 4000d133 sra sp,ra,zero
+8000065c: 02000e93 li t4,32
+80000660: 02900193 li gp,41
+80000664: 03d11a63 bne sp,t4,80000698 <fail>
+
+80000668 <test_42>:
+80000668: 400050b3 sra ra,zero,zero
+8000066c: 00000e93 li t4,0
+80000670: 02a00193 li gp,42
+80000674: 03d09263 bne ra,t4,80000698 <fail>
+
+80000678 <test_43>:
+80000678: 40000093 li ra,1024
+8000067c: 00001137 lui sp,0x1
+80000680: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800>
+80000684: 4020d033 sra zero,ra,sp
+80000688: 00000e93 li t4,0
+8000068c: 02b00193 li gp,43
+80000690: 01d01463 bne zero,t4,80000698 <fail>
+80000694: 00301c63 bne zero,gp,800006ac <pass>
+
+80000698 <fail>:
+80000698: 0ff0000f fence
+8000069c: 00018063 beqz gp,8000069c <fail+0x4>
+800006a0: 00119193 slli gp,gp,0x1
+800006a4: 0011e193 ori gp,gp,1
+800006a8: 00000073 ecall
+
+800006ac <pass>:
+800006ac: 0ff0000f fence
+800006b0: 00100193 li gp,1
+800006b4: 00000073 ecall
+800006b8: c0001073 unimp
+800006bc: 0000 unimp
+800006be: 0000 unimp
+800006c0: 0000 unimp
+800006c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sra.elf b/test/riscv-tests/rv32ui-p-sra.elf
new file mode 100644
index 0000000..ab4e4fb
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sra.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-srai.dump b/test/riscv-tests/rv32ui-p-srai.dump
new file mode 100644
index 0000000..8ed40d7
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-srai.dump
@@ -0,0 +1,335 @@
+
+rv32ui-p-srai: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 4000df13 srai t5,ra,0x0
+80000104: 00000e93 li t4,0
+80000108: 00200193 li gp,2
+8000010c: 2bdf1463 bne t5,t4,800003b4 <fail>
+
+80000110 <test_3>:
+80000110: 800000b7 lui ra,0x80000
+80000114: 4010df13 srai t5,ra,0x1
+80000118: c0000eb7 lui t4,0xc0000
+8000011c: 00300193 li gp,3
+80000120: 29df1a63 bne t5,t4,800003b4 <fail>
+
+80000124 <test_4>:
+80000124: 800000b7 lui ra,0x80000
+80000128: 4070df13 srai t5,ra,0x7
+8000012c: ff000eb7 lui t4,0xff000
+80000130: 00400193 li gp,4
+80000134: 29df1063 bne t5,t4,800003b4 <fail>
+
+80000138 <test_5>:
+80000138: 800000b7 lui ra,0x80000
+8000013c: 40e0df13 srai t5,ra,0xe
+80000140: fffe0eb7 lui t4,0xfffe0
+80000144: 00500193 li gp,5
+80000148: 27df1663 bne t5,t4,800003b4 <fail>
+
+8000014c <test_6>:
+8000014c: 800000b7 lui ra,0x80000
+80000150: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+80000154: 41f0df13 srai t5,ra,0x1f
+80000158: fff00e93 li t4,-1
+8000015c: 00600193 li gp,6
+80000160: 25df1a63 bne t5,t4,800003b4 <fail>
+
+80000164 <test_7>:
+80000164: 800000b7 lui ra,0x80000
+80000168: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+8000016c: 4000df13 srai t5,ra,0x0
+80000170: 80000eb7 lui t4,0x80000
+80000174: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+80000178: 00700193 li gp,7
+8000017c: 23df1c63 bne t5,t4,800003b4 <fail>
+
+80000180 <test_8>:
+80000180: 800000b7 lui ra,0x80000
+80000184: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000188: 4010df13 srai t5,ra,0x1
+8000018c: 40000eb7 lui t4,0x40000
+80000190: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001>
+80000194: 00800193 li gp,8
+80000198: 21df1e63 bne t5,t4,800003b4 <fail>
+
+8000019c <test_9>:
+8000019c: 800000b7 lui ra,0x80000
+800001a0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001a4: 4070df13 srai t5,ra,0x7
+800001a8: 01000eb7 lui t4,0x1000
+800001ac: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001>
+800001b0: 00900193 li gp,9
+800001b4: 21df1063 bne t5,t4,800003b4 <fail>
+
+800001b8 <test_10>:
+800001b8: 800000b7 lui ra,0x80000
+800001bc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001c0: 40e0df13 srai t5,ra,0xe
+800001c4: 00020eb7 lui t4,0x20
+800001c8: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001>
+800001cc: 00a00193 li gp,10
+800001d0: 1fdf1263 bne t5,t4,800003b4 <fail>
+
+800001d4 <test_11>:
+800001d4: 800000b7 lui ra,0x80000
+800001d8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001dc: 41f0df13 srai t5,ra,0x1f
+800001e0: 00000e93 li t4,0
+800001e4: 00b00193 li gp,11
+800001e8: 1ddf1663 bne t5,t4,800003b4 <fail>
+
+800001ec <test_12>:
+800001ec: 818180b7 lui ra,0x81818
+800001f0: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+800001f4: 4000df13 srai t5,ra,0x0
+800001f8: 81818eb7 lui t4,0x81818
+800001fc: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1816181>
+80000200: 00c00193 li gp,12
+80000204: 1bdf1863 bne t5,t4,800003b4 <fail>
+
+80000208 <test_13>:
+80000208: 818180b7 lui ra,0x81818
+8000020c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+80000210: 4010df13 srai t5,ra,0x1
+80000214: c0c0ceb7 lui t4,0xc0c0c
+80000218: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c0a0c0>
+8000021c: 00d00193 li gp,13
+80000220: 19df1a63 bne t5,t4,800003b4 <fail>
+
+80000224 <test_14>:
+80000224: 818180b7 lui ra,0x81818
+80000228: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+8000022c: 4070df13 srai t5,ra,0x7
+80000230: ff030eb7 lui t4,0xff030
+80000234: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f02e303>
+80000238: 00e00193 li gp,14
+8000023c: 17df1c63 bne t5,t4,800003b4 <fail>
+
+80000240 <test_15>:
+80000240: 818180b7 lui ra,0x81818
+80000244: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+80000248: 40e0df13 srai t5,ra,0xe
+8000024c: fffe0eb7 lui t4,0xfffe0
+80000250: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffde606>
+80000254: 00f00193 li gp,15
+80000258: 15df1e63 bne t5,t4,800003b4 <fail>
+
+8000025c <test_16>:
+8000025c: 818180b7 lui ra,0x81818
+80000260: 18108093 addi ra,ra,385 # 81818181 <_end+0x1816181>
+80000264: 41f0df13 srai t5,ra,0x1f
+80000268: fff00e93 li t4,-1
+8000026c: 01000193 li gp,16
+80000270: 15df1263 bne t5,t4,800003b4 <fail>
+
+80000274 <test_17>:
+80000274: 800000b7 lui ra,0x80000
+80000278: 4070d093 srai ra,ra,0x7
+8000027c: ff000eb7 lui t4,0xff000
+80000280: 01100193 li gp,17
+80000284: 13d09863 bne ra,t4,800003b4 <fail>
+
+80000288 <test_18>:
+80000288: 00000213 li tp,0
+8000028c: 800000b7 lui ra,0x80000
+80000290: 4070df13 srai t5,ra,0x7
+80000294: 000f0313 mv t1,t5
+80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000029c: 00200293 li t0,2
+800002a0: fe5216e3 bne tp,t0,8000028c <test_18+0x4>
+800002a4: ff000eb7 lui t4,0xff000
+800002a8: 01200193 li gp,18
+800002ac: 11d31463 bne t1,t4,800003b4 <fail>
+
+800002b0 <test_19>:
+800002b0: 00000213 li tp,0
+800002b4: 800000b7 lui ra,0x80000
+800002b8: 40e0df13 srai t5,ra,0xe
+800002bc: 00000013 nop
+800002c0: 000f0313 mv t1,t5
+800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002c8: 00200293 li t0,2
+800002cc: fe5214e3 bne tp,t0,800002b4 <test_19+0x4>
+800002d0: fffe0eb7 lui t4,0xfffe0
+800002d4: 01300193 li gp,19
+800002d8: 0dd31e63 bne t1,t4,800003b4 <fail>
+
+800002dc <test_20>:
+800002dc: 00000213 li tp,0
+800002e0: 800000b7 lui ra,0x80000
+800002e4: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+800002e8: 41f0df13 srai t5,ra,0x1f
+800002ec: 00000013 nop
+800002f0: 00000013 nop
+800002f4: 000f0313 mv t1,t5
+800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002fc: 00200293 li t0,2
+80000300: fe5210e3 bne tp,t0,800002e0 <test_20+0x4>
+80000304: fff00e93 li t4,-1
+80000308: 01400193 li gp,20
+8000030c: 0bd31463 bne t1,t4,800003b4 <fail>
+
+80000310 <test_21>:
+80000310: 00000213 li tp,0
+80000314: 800000b7 lui ra,0x80000
+80000318: 4070df13 srai t5,ra,0x7
+8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000320: 00200293 li t0,2
+80000324: fe5218e3 bne tp,t0,80000314 <test_21+0x4>
+80000328: ff000eb7 lui t4,0xff000
+8000032c: 01500193 li gp,21
+80000330: 09df1263 bne t5,t4,800003b4 <fail>
+
+80000334 <test_22>:
+80000334: 00000213 li tp,0
+80000338: 800000b7 lui ra,0x80000
+8000033c: 00000013 nop
+80000340: 40e0df13 srai t5,ra,0xe
+80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000348: 00200293 li t0,2
+8000034c: fe5216e3 bne tp,t0,80000338 <test_22+0x4>
+80000350: fffe0eb7 lui t4,0xfffe0
+80000354: 01600193 li gp,22
+80000358: 05df1e63 bne t5,t4,800003b4 <fail>
+
+8000035c <test_23>:
+8000035c: 00000213 li tp,0
+80000360: 800000b7 lui ra,0x80000
+80000364: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+80000368: 00000013 nop
+8000036c: 00000013 nop
+80000370: 41f0df13 srai t5,ra,0x1f
+80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000378: 00200293 li t0,2
+8000037c: fe5212e3 bne tp,t0,80000360 <test_23+0x4>
+80000380: fff00e93 li t4,-1
+80000384: 01700193 li gp,23
+80000388: 03df1663 bne t5,t4,800003b4 <fail>
+
+8000038c <test_24>:
+8000038c: 40405093 srai ra,zero,0x4
+80000390: 00000e93 li t4,0
+80000394: 01800193 li gp,24
+80000398: 01d09e63 bne ra,t4,800003b4 <fail>
+
+8000039c <test_25>:
+8000039c: 02100093 li ra,33
+800003a0: 40a0d013 srai zero,ra,0xa
+800003a4: 00000e93 li t4,0
+800003a8: 01900193 li gp,25
+800003ac: 01d01463 bne zero,t4,800003b4 <fail>
+800003b0: 00301c63 bne zero,gp,800003c8 <pass>
+
+800003b4 <fail>:
+800003b4: 0ff0000f fence
+800003b8: 00018063 beqz gp,800003b8 <fail+0x4>
+800003bc: 00119193 slli gp,gp,0x1
+800003c0: 0011e193 ori gp,gp,1
+800003c4: 00000073 ecall
+
+800003c8 <pass>:
+800003c8: 0ff0000f fence
+800003cc: 00100193 li gp,1
+800003d0: 00000073 ecall
+800003d4: c0001073 unimp
+800003d8: 0000 unimp
+800003da: 0000 unimp
+800003dc: 0000 unimp
+800003de: 0000 unimp
+800003e0: 0000 unimp
+800003e2: 0000 unimp
+800003e4: 0000 unimp
+800003e6: 0000 unimp
+800003e8: 0000 unimp
+800003ea: 0000 unimp
+800003ec: 0000 unimp
+800003ee: 0000 unimp
+800003f0: 0000 unimp
+800003f2: 0000 unimp
+800003f4: 0000 unimp
+800003f6: 0000 unimp
+800003f8: 0000 unimp
+800003fa: 0000 unimp
+800003fc: 0000 unimp
+800003fe: 0000 unimp
+80000400: 0000 unimp
+80000402: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-srai.elf b/test/riscv-tests/rv32ui-p-srai.elf
new file mode 100644
index 0000000..9a21c35
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-srai.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-srl.dump b/test/riscv-tests/rv32ui-p-srl.dump
new file mode 100644
index 0000000..25f9240
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-srl.dump
@@ -0,0 +1,544 @@
+
+rv32ui-p-srl: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 800000b7 lui ra,0x80000
+80000100: 00000113 li sp,0
+80000104: 0020df33 srl t5,ra,sp
+80000108: 80000eb7 lui t4,0x80000
+8000010c: 00200193 li gp,2
+80000110: 57df1863 bne t5,t4,80000680 <fail>
+
+80000114 <test_3>:
+80000114: 800000b7 lui ra,0x80000
+80000118: 00100113 li sp,1
+8000011c: 0020df33 srl t5,ra,sp
+80000120: 40000eb7 lui t4,0x40000
+80000124: 00300193 li gp,3
+80000128: 55df1c63 bne t5,t4,80000680 <fail>
+
+8000012c <test_4>:
+8000012c: 800000b7 lui ra,0x80000
+80000130: 00700113 li sp,7
+80000134: 0020df33 srl t5,ra,sp
+80000138: 01000eb7 lui t4,0x1000
+8000013c: 00400193 li gp,4
+80000140: 55df1063 bne t5,t4,80000680 <fail>
+
+80000144 <test_5>:
+80000144: 800000b7 lui ra,0x80000
+80000148: 00e00113 li sp,14
+8000014c: 0020df33 srl t5,ra,sp
+80000150: 00020eb7 lui t4,0x20
+80000154: 00500193 li gp,5
+80000158: 53df1463 bne t5,t4,80000680 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+80000164: 01f00113 li sp,31
+80000168: 0020df33 srl t5,ra,sp
+8000016c: 00100e93 li t4,1
+80000170: 00600193 li gp,6
+80000174: 51df1663 bne t5,t4,80000680 <fail>
+
+80000178 <test_7>:
+80000178: fff00093 li ra,-1
+8000017c: 00000113 li sp,0
+80000180: 0020df33 srl t5,ra,sp
+80000184: fff00e93 li t4,-1
+80000188: 00700193 li gp,7
+8000018c: 4fdf1a63 bne t5,t4,80000680 <fail>
+
+80000190 <test_8>:
+80000190: fff00093 li ra,-1
+80000194: 00100113 li sp,1
+80000198: 0020df33 srl t5,ra,sp
+8000019c: 80000eb7 lui t4,0x80000
+800001a0: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+800001a4: 00800193 li gp,8
+800001a8: 4ddf1c63 bne t5,t4,80000680 <fail>
+
+800001ac <test_9>:
+800001ac: fff00093 li ra,-1
+800001b0: 00700113 li sp,7
+800001b4: 0020df33 srl t5,ra,sp
+800001b8: 02000eb7 lui t4,0x2000
+800001bc: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001>
+800001c0: 00900193 li gp,9
+800001c4: 4bdf1e63 bne t5,t4,80000680 <fail>
+
+800001c8 <test_10>:
+800001c8: fff00093 li ra,-1
+800001cc: 00e00113 li sp,14
+800001d0: 0020df33 srl t5,ra,sp
+800001d4: 00040eb7 lui t4,0x40
+800001d8: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001>
+800001dc: 00a00193 li gp,10
+800001e0: 4bdf1063 bne t5,t4,80000680 <fail>
+
+800001e4 <test_11>:
+800001e4: fff00093 li ra,-1
+800001e8: 01f00113 li sp,31
+800001ec: 0020df33 srl t5,ra,sp
+800001f0: 00100e93 li t4,1
+800001f4: 00b00193 li gp,11
+800001f8: 49df1463 bne t5,t4,80000680 <fail>
+
+800001fc <test_12>:
+800001fc: 212120b7 lui ra,0x21212
+80000200: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000204: 00000113 li sp,0
+80000208: 0020df33 srl t5,ra,sp
+8000020c: 21212eb7 lui t4,0x21212
+80000210: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80000214: 00c00193 li gp,12
+80000218: 47df1463 bne t5,t4,80000680 <fail>
+
+8000021c <test_13>:
+8000021c: 212120b7 lui ra,0x21212
+80000220: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000224: 00100113 li sp,1
+80000228: 0020df33 srl t5,ra,sp
+8000022c: 10909eb7 lui t4,0x10909
+80000230: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70>
+80000234: 00d00193 li gp,13
+80000238: 45df1463 bne t5,t4,80000680 <fail>
+
+8000023c <test_14>:
+8000023c: 212120b7 lui ra,0x21212
+80000240: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000244: 00700113 li sp,7
+80000248: 0020df33 srl t5,ra,sp
+8000024c: 00424eb7 lui t4,0x424
+80000250: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe>
+80000254: 00e00193 li gp,14
+80000258: 43df1463 bne t5,t4,80000680 <fail>
+
+8000025c <test_15>:
+8000025c: 212120b7 lui ra,0x21212
+80000260: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000264: 00e00113 li sp,14
+80000268: 0020df33 srl t5,ra,sp
+8000026c: 00008eb7 lui t4,0x8
+80000270: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c>
+80000274: 00f00193 li gp,15
+80000278: 41df1463 bne t5,t4,80000680 <fail>
+
+8000027c <test_16>:
+8000027c: 212120b7 lui ra,0x21212
+80000280: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000284: 01f00113 li sp,31
+80000288: 0020df33 srl t5,ra,sp
+8000028c: 00000e93 li t4,0
+80000290: 01000193 li gp,16
+80000294: 3fdf1663 bne t5,t4,80000680 <fail>
+
+80000298 <test_17>:
+80000298: 212120b7 lui ra,0x21212
+8000029c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800002a0: fc000113 li sp,-64
+800002a4: 0020df33 srl t5,ra,sp
+800002a8: 21212eb7 lui t4,0x21212
+800002ac: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+800002b0: 01100193 li gp,17
+800002b4: 3ddf1663 bne t5,t4,80000680 <fail>
+
+800002b8 <test_18>:
+800002b8: 212120b7 lui ra,0x21212
+800002bc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800002c0: fc100113 li sp,-63
+800002c4: 0020df33 srl t5,ra,sp
+800002c8: 10909eb7 lui t4,0x10909
+800002cc: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70>
+800002d0: 01200193 li gp,18
+800002d4: 3bdf1663 bne t5,t4,80000680 <fail>
+
+800002d8 <test_19>:
+800002d8: 212120b7 lui ra,0x21212
+800002dc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800002e0: fc700113 li sp,-57
+800002e4: 0020df33 srl t5,ra,sp
+800002e8: 00424eb7 lui t4,0x424
+800002ec: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe>
+800002f0: 01300193 li gp,19
+800002f4: 39df1663 bne t5,t4,80000680 <fail>
+
+800002f8 <test_20>:
+800002f8: 212120b7 lui ra,0x21212
+800002fc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000300: fce00113 li sp,-50
+80000304: 0020df33 srl t5,ra,sp
+80000308: 00008eb7 lui t4,0x8
+8000030c: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c>
+80000310: 01400193 li gp,20
+80000314: 37df1663 bne t5,t4,80000680 <fail>
+
+80000318 <test_21>:
+80000318: 212120b7 lui ra,0x21212
+8000031c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000320: fff00113 li sp,-1
+80000324: 0020df33 srl t5,ra,sp
+80000328: 00000e93 li t4,0
+8000032c: 01500193 li gp,21
+80000330: 35df1863 bne t5,t4,80000680 <fail>
+
+80000334 <test_22>:
+80000334: 800000b7 lui ra,0x80000
+80000338: 00700113 li sp,7
+8000033c: 0020d0b3 srl ra,ra,sp
+80000340: 01000eb7 lui t4,0x1000
+80000344: 01600193 li gp,22
+80000348: 33d09c63 bne ra,t4,80000680 <fail>
+
+8000034c <test_23>:
+8000034c: 800000b7 lui ra,0x80000
+80000350: 00e00113 li sp,14
+80000354: 0020d133 srl sp,ra,sp
+80000358: 00020eb7 lui t4,0x20
+8000035c: 01700193 li gp,23
+80000360: 33d11063 bne sp,t4,80000680 <fail>
+
+80000364 <test_24>:
+80000364: 00700093 li ra,7
+80000368: 0010d0b3 srl ra,ra,ra
+8000036c: 00000e93 li t4,0
+80000370: 01800193 li gp,24
+80000374: 31d09663 bne ra,t4,80000680 <fail>
+
+80000378 <test_25>:
+80000378: 00000213 li tp,0
+8000037c: 800000b7 lui ra,0x80000
+80000380: 00700113 li sp,7
+80000384: 0020df33 srl t5,ra,sp
+80000388: 000f0313 mv t1,t5
+8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000390: 00200293 li t0,2
+80000394: fe5214e3 bne tp,t0,8000037c <test_25+0x4>
+80000398: 01000eb7 lui t4,0x1000
+8000039c: 01900193 li gp,25
+800003a0: 2fd31063 bne t1,t4,80000680 <fail>
+
+800003a4 <test_26>:
+800003a4: 00000213 li tp,0
+800003a8: 800000b7 lui ra,0x80000
+800003ac: 00e00113 li sp,14
+800003b0: 0020df33 srl t5,ra,sp
+800003b4: 00000013 nop
+800003b8: 000f0313 mv t1,t5
+800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c0: 00200293 li t0,2
+800003c4: fe5212e3 bne tp,t0,800003a8 <test_26+0x4>
+800003c8: 00020eb7 lui t4,0x20
+800003cc: 01a00193 li gp,26
+800003d0: 2bd31863 bne t1,t4,80000680 <fail>
+
+800003d4 <test_27>:
+800003d4: 00000213 li tp,0
+800003d8: 800000b7 lui ra,0x80000
+800003dc: 01f00113 li sp,31
+800003e0: 0020df33 srl t5,ra,sp
+800003e4: 00000013 nop
+800003e8: 00000013 nop
+800003ec: 000f0313 mv t1,t5
+800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003f4: 00200293 li t0,2
+800003f8: fe5210e3 bne tp,t0,800003d8 <test_27+0x4>
+800003fc: 00100e93 li t4,1
+80000400: 01b00193 li gp,27
+80000404: 27d31e63 bne t1,t4,80000680 <fail>
+
+80000408 <test_28>:
+80000408: 00000213 li tp,0
+8000040c: 800000b7 lui ra,0x80000
+80000410: 00700113 li sp,7
+80000414: 0020df33 srl t5,ra,sp
+80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000041c: 00200293 li t0,2
+80000420: fe5216e3 bne tp,t0,8000040c <test_28+0x4>
+80000424: 01000eb7 lui t4,0x1000
+80000428: 01c00193 li gp,28
+8000042c: 25df1a63 bne t5,t4,80000680 <fail>
+
+80000430 <test_29>:
+80000430: 00000213 li tp,0
+80000434: 800000b7 lui ra,0x80000
+80000438: 00e00113 li sp,14
+8000043c: 00000013 nop
+80000440: 0020df33 srl t5,ra,sp
+80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000448: 00200293 li t0,2
+8000044c: fe5214e3 bne tp,t0,80000434 <test_29+0x4>
+80000450: 00020eb7 lui t4,0x20
+80000454: 01d00193 li gp,29
+80000458: 23df1463 bne t5,t4,80000680 <fail>
+
+8000045c <test_30>:
+8000045c: 00000213 li tp,0
+80000460: 800000b7 lui ra,0x80000
+80000464: 01f00113 li sp,31
+80000468: 00000013 nop
+8000046c: 00000013 nop
+80000470: 0020df33 srl t5,ra,sp
+80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000478: 00200293 li t0,2
+8000047c: fe5212e3 bne tp,t0,80000460 <test_30+0x4>
+80000480: 00100e93 li t4,1
+80000484: 01e00193 li gp,30
+80000488: 1fdf1c63 bne t5,t4,80000680 <fail>
+
+8000048c <test_31>:
+8000048c: 00000213 li tp,0
+80000490: 800000b7 lui ra,0x80000
+80000494: 00000013 nop
+80000498: 00700113 li sp,7
+8000049c: 0020df33 srl t5,ra,sp
+800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004a4: 00200293 li t0,2
+800004a8: fe5214e3 bne tp,t0,80000490 <test_31+0x4>
+800004ac: 01000eb7 lui t4,0x1000
+800004b0: 01f00193 li gp,31
+800004b4: 1ddf1663 bne t5,t4,80000680 <fail>
+
+800004b8 <test_32>:
+800004b8: 00000213 li tp,0
+800004bc: 800000b7 lui ra,0x80000
+800004c0: 00000013 nop
+800004c4: 00e00113 li sp,14
+800004c8: 00000013 nop
+800004cc: 0020df33 srl t5,ra,sp
+800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004d4: 00200293 li t0,2
+800004d8: fe5212e3 bne tp,t0,800004bc <test_32+0x4>
+800004dc: 00020eb7 lui t4,0x20
+800004e0: 02000193 li gp,32
+800004e4: 19df1e63 bne t5,t4,80000680 <fail>
+
+800004e8 <test_33>:
+800004e8: 00000213 li tp,0
+800004ec: 800000b7 lui ra,0x80000
+800004f0: 00000013 nop
+800004f4: 00000013 nop
+800004f8: 01f00113 li sp,31
+800004fc: 0020df33 srl t5,ra,sp
+80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000504: 00200293 li t0,2
+80000508: fe5212e3 bne tp,t0,800004ec <test_33+0x4>
+8000050c: 00100e93 li t4,1
+80000510: 02100193 li gp,33
+80000514: 17df1663 bne t5,t4,80000680 <fail>
+
+80000518 <test_34>:
+80000518: 00000213 li tp,0
+8000051c: 00700113 li sp,7
+80000520: 800000b7 lui ra,0x80000
+80000524: 0020df33 srl t5,ra,sp
+80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000052c: 00200293 li t0,2
+80000530: fe5216e3 bne tp,t0,8000051c <test_34+0x4>
+80000534: 01000eb7 lui t4,0x1000
+80000538: 02200193 li gp,34
+8000053c: 15df1263 bne t5,t4,80000680 <fail>
+
+80000540 <test_35>:
+80000540: 00000213 li tp,0
+80000544: 00e00113 li sp,14
+80000548: 800000b7 lui ra,0x80000
+8000054c: 00000013 nop
+80000550: 0020df33 srl t5,ra,sp
+80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000558: 00200293 li t0,2
+8000055c: fe5214e3 bne tp,t0,80000544 <test_35+0x4>
+80000560: 00020eb7 lui t4,0x20
+80000564: 02300193 li gp,35
+80000568: 11df1c63 bne t5,t4,80000680 <fail>
+
+8000056c <test_36>:
+8000056c: 00000213 li tp,0
+80000570: 01f00113 li sp,31
+80000574: 800000b7 lui ra,0x80000
+80000578: 00000013 nop
+8000057c: 00000013 nop
+80000580: 0020df33 srl t5,ra,sp
+80000584: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000588: 00200293 li t0,2
+8000058c: fe5212e3 bne tp,t0,80000570 <test_36+0x4>
+80000590: 00100e93 li t4,1
+80000594: 02400193 li gp,36
+80000598: 0fdf1463 bne t5,t4,80000680 <fail>
+
+8000059c <test_37>:
+8000059c: 00000213 li tp,0
+800005a0: 00700113 li sp,7
+800005a4: 00000013 nop
+800005a8: 800000b7 lui ra,0x80000
+800005ac: 0020df33 srl t5,ra,sp
+800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005b4: 00200293 li t0,2
+800005b8: fe5214e3 bne tp,t0,800005a0 <test_37+0x4>
+800005bc: 01000eb7 lui t4,0x1000
+800005c0: 02500193 li gp,37
+800005c4: 0bdf1e63 bne t5,t4,80000680 <fail>
+
+800005c8 <test_38>:
+800005c8: 00000213 li tp,0
+800005cc: 00e00113 li sp,14
+800005d0: 00000013 nop
+800005d4: 800000b7 lui ra,0x80000
+800005d8: 00000013 nop
+800005dc: 0020df33 srl t5,ra,sp
+800005e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800005e4: 00200293 li t0,2
+800005e8: fe5212e3 bne tp,t0,800005cc <test_38+0x4>
+800005ec: 00020eb7 lui t4,0x20
+800005f0: 02600193 li gp,38
+800005f4: 09df1663 bne t5,t4,80000680 <fail>
+
+800005f8 <test_39>:
+800005f8: 00000213 li tp,0
+800005fc: 01f00113 li sp,31
+80000600: 00000013 nop
+80000604: 00000013 nop
+80000608: 800000b7 lui ra,0x80000
+8000060c: 0020df33 srl t5,ra,sp
+80000610: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000614: 00200293 li t0,2
+80000618: fe5212e3 bne tp,t0,800005fc <test_39+0x4>
+8000061c: 00100e93 li t4,1
+80000620: 02700193 li gp,39
+80000624: 05df1e63 bne t5,t4,80000680 <fail>
+
+80000628 <test_40>:
+80000628: 00f00093 li ra,15
+8000062c: 00105133 srl sp,zero,ra
+80000630: 00000e93 li t4,0
+80000634: 02800193 li gp,40
+80000638: 05d11463 bne sp,t4,80000680 <fail>
+
+8000063c <test_41>:
+8000063c: 02000093 li ra,32
+80000640: 0000d133 srl sp,ra,zero
+80000644: 02000e93 li t4,32
+80000648: 02900193 li gp,41
+8000064c: 03d11a63 bne sp,t4,80000680 <fail>
+
+80000650 <test_42>:
+80000650: 000050b3 srl ra,zero,zero
+80000654: 00000e93 li t4,0
+80000658: 02a00193 li gp,42
+8000065c: 03d09263 bne ra,t4,80000680 <fail>
+
+80000660 <test_43>:
+80000660: 40000093 li ra,1024
+80000664: 00001137 lui sp,0x1
+80000668: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800>
+8000066c: 0020d033 srl zero,ra,sp
+80000670: 00000e93 li t4,0
+80000674: 02b00193 li gp,43
+80000678: 01d01463 bne zero,t4,80000680 <fail>
+8000067c: 00301c63 bne zero,gp,80000694 <pass>
+
+80000680 <fail>:
+80000680: 0ff0000f fence
+80000684: 00018063 beqz gp,80000684 <fail+0x4>
+80000688: 00119193 slli gp,gp,0x1
+8000068c: 0011e193 ori gp,gp,1
+80000690: 00000073 ecall
+
+80000694 <pass>:
+80000694: 0ff0000f fence
+80000698: 00100193 li gp,1
+8000069c: 00000073 ecall
+800006a0: c0001073 unimp
+800006a4: 0000 unimp
+800006a6: 0000 unimp
+800006a8: 0000 unimp
+800006aa: 0000 unimp
+800006ac: 0000 unimp
+800006ae: 0000 unimp
+800006b0: 0000 unimp
+800006b2: 0000 unimp
+800006b4: 0000 unimp
+800006b6: 0000 unimp
+800006b8: 0000 unimp
+800006ba: 0000 unimp
+800006bc: 0000 unimp
+800006be: 0000 unimp
+800006c0: 0000 unimp
+800006c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-srl.elf b/test/riscv-tests/rv32ui-p-srl.elf
new file mode 100644
index 0000000..996dc3b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-srl.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-srli.dump b/test/riscv-tests/rv32ui-p-srli.dump
new file mode 100644
index 0000000..8c3229f
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-srli.dump
@@ -0,0 +1,309 @@
+
+rv32ui-p-srli: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 800000b7 lui ra,0x80000
+80000100: 0000df13 srli t5,ra,0x0
+80000104: 80000eb7 lui t4,0x80000
+80000108: 00200193 li gp,2
+8000010c: 29df1863 bne t5,t4,8000039c <fail>
+
+80000110 <test_3>:
+80000110: 800000b7 lui ra,0x80000
+80000114: 0010df13 srli t5,ra,0x1
+80000118: 40000eb7 lui t4,0x40000
+8000011c: 00300193 li gp,3
+80000120: 27df1e63 bne t5,t4,8000039c <fail>
+
+80000124 <test_4>:
+80000124: 800000b7 lui ra,0x80000
+80000128: 0070df13 srli t5,ra,0x7
+8000012c: 01000eb7 lui t4,0x1000
+80000130: 00400193 li gp,4
+80000134: 27df1463 bne t5,t4,8000039c <fail>
+
+80000138 <test_5>:
+80000138: 800000b7 lui ra,0x80000
+8000013c: 00e0df13 srli t5,ra,0xe
+80000140: 00020eb7 lui t4,0x20
+80000144: 00500193 li gp,5
+80000148: 25df1a63 bne t5,t4,8000039c <fail>
+
+8000014c <test_6>:
+8000014c: 800000b7 lui ra,0x80000
+80000150: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+80000154: 01f0df13 srli t5,ra,0x1f
+80000158: 00100e93 li t4,1
+8000015c: 00600193 li gp,6
+80000160: 23df1e63 bne t5,t4,8000039c <fail>
+
+80000164 <test_7>:
+80000164: fff00093 li ra,-1
+80000168: 0000df13 srli t5,ra,0x0
+8000016c: fff00e93 li t4,-1
+80000170: 00700193 li gp,7
+80000174: 23df1463 bne t5,t4,8000039c <fail>
+
+80000178 <test_8>:
+80000178: fff00093 li ra,-1
+8000017c: 0010df13 srli t5,ra,0x1
+80000180: 80000eb7 lui t4,0x80000
+80000184: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+80000188: 00800193 li gp,8
+8000018c: 21df1863 bne t5,t4,8000039c <fail>
+
+80000190 <test_9>:
+80000190: fff00093 li ra,-1
+80000194: 0070df13 srli t5,ra,0x7
+80000198: 02000eb7 lui t4,0x2000
+8000019c: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001>
+800001a0: 00900193 li gp,9
+800001a4: 1fdf1c63 bne t5,t4,8000039c <fail>
+
+800001a8 <test_10>:
+800001a8: fff00093 li ra,-1
+800001ac: 00e0df13 srli t5,ra,0xe
+800001b0: 00040eb7 lui t4,0x40
+800001b4: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001>
+800001b8: 00a00193 li gp,10
+800001bc: 1fdf1063 bne t5,t4,8000039c <fail>
+
+800001c0 <test_11>:
+800001c0: fff00093 li ra,-1
+800001c4: 01f0df13 srli t5,ra,0x1f
+800001c8: 00100e93 li t4,1
+800001cc: 00b00193 li gp,11
+800001d0: 1ddf1663 bne t5,t4,8000039c <fail>
+
+800001d4 <test_12>:
+800001d4: 212120b7 lui ra,0x21212
+800001d8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800001dc: 0000df13 srli t5,ra,0x0
+800001e0: 21212eb7 lui t4,0x21212
+800001e4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+800001e8: 00c00193 li gp,12
+800001ec: 1bdf1863 bne t5,t4,8000039c <fail>
+
+800001f0 <test_13>:
+800001f0: 212120b7 lui ra,0x21212
+800001f4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+800001f8: 0010df13 srli t5,ra,0x1
+800001fc: 10909eb7 lui t4,0x10909
+80000200: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70>
+80000204: 00d00193 li gp,13
+80000208: 19df1a63 bne t5,t4,8000039c <fail>
+
+8000020c <test_14>:
+8000020c: 212120b7 lui ra,0x21212
+80000210: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000214: 0070df13 srli t5,ra,0x7
+80000218: 00424eb7 lui t4,0x424
+8000021c: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe>
+80000220: 00e00193 li gp,14
+80000224: 17df1c63 bne t5,t4,8000039c <fail>
+
+80000228 <test_15>:
+80000228: 212120b7 lui ra,0x21212
+8000022c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80000230: 00e0df13 srli t5,ra,0xe
+80000234: 00008eb7 lui t4,0x8
+80000238: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c>
+8000023c: 00f00193 li gp,15
+80000240: 15df1e63 bne t5,t4,8000039c <fail>
+
+80000244 <test_16>:
+80000244: 212120b7 lui ra,0x21212
+80000248: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+8000024c: 01f0df13 srli t5,ra,0x1f
+80000250: 00000e93 li t4,0
+80000254: 01000193 li gp,16
+80000258: 15df1263 bne t5,t4,8000039c <fail>
+
+8000025c <test_17>:
+8000025c: 800000b7 lui ra,0x80000
+80000260: 0070d093 srli ra,ra,0x7
+80000264: 01000eb7 lui t4,0x1000
+80000268: 01100193 li gp,17
+8000026c: 13d09863 bne ra,t4,8000039c <fail>
+
+80000270 <test_18>:
+80000270: 00000213 li tp,0
+80000274: 800000b7 lui ra,0x80000
+80000278: 0070df13 srli t5,ra,0x7
+8000027c: 000f0313 mv t1,t5
+80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000284: 00200293 li t0,2
+80000288: fe5216e3 bne tp,t0,80000274 <test_18+0x4>
+8000028c: 01000eb7 lui t4,0x1000
+80000290: 01200193 li gp,18
+80000294: 11d31463 bne t1,t4,8000039c <fail>
+
+80000298 <test_19>:
+80000298: 00000213 li tp,0
+8000029c: 800000b7 lui ra,0x80000
+800002a0: 00e0df13 srli t5,ra,0xe
+800002a4: 00000013 nop
+800002a8: 000f0313 mv t1,t5
+800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002b0: 00200293 li t0,2
+800002b4: fe5214e3 bne tp,t0,8000029c <test_19+0x4>
+800002b8: 00020eb7 lui t4,0x20
+800002bc: 01300193 li gp,19
+800002c0: 0dd31e63 bne t1,t4,8000039c <fail>
+
+800002c4 <test_20>:
+800002c4: 00000213 li tp,0
+800002c8: 800000b7 lui ra,0x80000
+800002cc: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+800002d0: 01f0df13 srli t5,ra,0x1f
+800002d4: 00000013 nop
+800002d8: 00000013 nop
+800002dc: 000f0313 mv t1,t5
+800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002e4: 00200293 li t0,2
+800002e8: fe5210e3 bne tp,t0,800002c8 <test_20+0x4>
+800002ec: 00100e93 li t4,1
+800002f0: 01400193 li gp,20
+800002f4: 0bd31463 bne t1,t4,8000039c <fail>
+
+800002f8 <test_21>:
+800002f8: 00000213 li tp,0
+800002fc: 800000b7 lui ra,0x80000
+80000300: 0070df13 srli t5,ra,0x7
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5218e3 bne tp,t0,800002fc <test_21+0x4>
+80000310: 01000eb7 lui t4,0x1000
+80000314: 01500193 li gp,21
+80000318: 09df1263 bne t5,t4,8000039c <fail>
+
+8000031c <test_22>:
+8000031c: 00000213 li tp,0
+80000320: 800000b7 lui ra,0x80000
+80000324: 00000013 nop
+80000328: 00e0df13 srli t5,ra,0xe
+8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000330: 00200293 li t0,2
+80000334: fe5216e3 bne tp,t0,80000320 <test_22+0x4>
+80000338: 00020eb7 lui t4,0x20
+8000033c: 01600193 li gp,22
+80000340: 05df1e63 bne t5,t4,8000039c <fail>
+
+80000344 <test_23>:
+80000344: 00000213 li tp,0
+80000348: 800000b7 lui ra,0x80000
+8000034c: 00108093 addi ra,ra,1 # 80000001 <_end+0xffffe001>
+80000350: 00000013 nop
+80000354: 00000013 nop
+80000358: 01f0df13 srli t5,ra,0x1f
+8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000360: 00200293 li t0,2
+80000364: fe5212e3 bne tp,t0,80000348 <test_23+0x4>
+80000368: 00100e93 li t4,1
+8000036c: 01700193 li gp,23
+80000370: 03df1663 bne t5,t4,8000039c <fail>
+
+80000374 <test_24>:
+80000374: 00405093 srli ra,zero,0x4
+80000378: 00000e93 li t4,0
+8000037c: 01800193 li gp,24
+80000380: 01d09e63 bne ra,t4,8000039c <fail>
+
+80000384 <test_25>:
+80000384: 02100093 li ra,33
+80000388: 00a0d013 srli zero,ra,0xa
+8000038c: 00000e93 li t4,0
+80000390: 01900193 li gp,25
+80000394: 01d01463 bne zero,t4,8000039c <fail>
+80000398: 00301c63 bne zero,gp,800003b0 <pass>
+
+8000039c <fail>:
+8000039c: 0ff0000f fence
+800003a0: 00018063 beqz gp,800003a0 <fail+0x4>
+800003a4: 00119193 slli gp,gp,0x1
+800003a8: 0011e193 ori gp,gp,1
+800003ac: 00000073 ecall
+
+800003b0 <pass>:
+800003b0: 0ff0000f fence
+800003b4: 00100193 li gp,1
+800003b8: 00000073 ecall
+800003bc: c0001073 unimp
+800003c0: 0000 unimp
+800003c2: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-srli.elf b/test/riscv-tests/rv32ui-p-srli.elf
new file mode 100644
index 0000000..19c5927
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-srli.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sub.dump b/test/riscv-tests/rv32ui-p-sub.dump
new file mode 100644
index 0000000..9f7bdae
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sub.dump
@@ -0,0 +1,485 @@
+
+rv32ui-p-sub: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 40208f33 sub t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4bdf1663 bne t5,t4,800005bc <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 40208f33 sub t5,ra,sp
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 49df1a63 bne t5,t4,800005bc <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 40208f33 sub t5,ra,sp
+80000138: ffc00e93 li t4,-4
+8000013c: 00400193 li gp,4
+80000140: 47df1e63 bne t5,t4,800005bc <fail>
+
+80000144 <test_5>:
+80000144: 00000093 li ra,0
+80000148: ffff8137 lui sp,0xffff8
+8000014c: 40208f33 sub t5,ra,sp
+80000150: 00008eb7 lui t4,0x8
+80000154: 00500193 li gp,5
+80000158: 47df1263 bne t5,t4,800005bc <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00000113 li sp,0
+80000164: 40208f33 sub t5,ra,sp
+80000168: 80000eb7 lui t4,0x80000
+8000016c: 00600193 li gp,6
+80000170: 45df1663 bne t5,t4,800005bc <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: ffff8137 lui sp,0xffff8
+8000017c: 40208f33 sub t5,ra,sp
+80000180: 80008eb7 lui t4,0x80008
+80000184: 00700193 li gp,7
+80000188: 43df1a63 bne t5,t4,800005bc <fail>
+
+8000018c <test_8>:
+8000018c: 00000093 li ra,0
+80000190: 00008137 lui sp,0x8
+80000194: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80000198: 40208f33 sub t5,ra,sp
+8000019c: ffff8eb7 lui t4,0xffff8
+800001a0: 001e8e93 addi t4,t4,1 # ffff8001 <_end+0x7fff6001>
+800001a4: 00800193 li gp,8
+800001a8: 41df1a63 bne t5,t4,800005bc <fail>
+
+800001ac <test_9>:
+800001ac: 800000b7 lui ra,0x80000
+800001b0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001b4: 00000113 li sp,0
+800001b8: 40208f33 sub t5,ra,sp
+800001bc: 80000eb7 lui t4,0x80000
+800001c0: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffffdfff>
+800001c4: 00900193 li gp,9
+800001c8: 3fdf1a63 bne t5,t4,800005bc <fail>
+
+800001cc <test_10>:
+800001cc: 800000b7 lui ra,0x80000
+800001d0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+800001d4: 00008137 lui sp,0x8
+800001d8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001dc: 40208f33 sub t5,ra,sp
+800001e0: 7fff8eb7 lui t4,0x7fff8
+800001e4: 00a00193 li gp,10
+800001e8: 3ddf1a63 bne t5,t4,800005bc <fail>
+
+800001ec <test_11>:
+800001ec: 800000b7 lui ra,0x80000
+800001f0: 00008137 lui sp,0x8
+800001f4: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+800001f8: 40208f33 sub t5,ra,sp
+800001fc: 7fff8eb7 lui t4,0x7fff8
+80000200: 001e8e93 addi t4,t4,1 # 7fff8001 <_start-0x7fff>
+80000204: 00b00193 li gp,11
+80000208: 3bdf1a63 bne t5,t4,800005bc <fail>
+
+8000020c <test_12>:
+8000020c: 800000b7 lui ra,0x80000
+80000210: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffffdfff>
+80000214: ffff8137 lui sp,0xffff8
+80000218: 40208f33 sub t5,ra,sp
+8000021c: 80008eb7 lui t4,0x80008
+80000220: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x5fff>
+80000224: 00c00193 li gp,12
+80000228: 39df1a63 bne t5,t4,800005bc <fail>
+
+8000022c <test_13>:
+8000022c: 00000093 li ra,0
+80000230: fff00113 li sp,-1
+80000234: 40208f33 sub t5,ra,sp
+80000238: 00100e93 li t4,1
+8000023c: 00d00193 li gp,13
+80000240: 37df1e63 bne t5,t4,800005bc <fail>
+
+80000244 <test_14>:
+80000244: fff00093 li ra,-1
+80000248: 00100113 li sp,1
+8000024c: 40208f33 sub t5,ra,sp
+80000250: ffe00e93 li t4,-2
+80000254: 00e00193 li gp,14
+80000258: 37df1263 bne t5,t4,800005bc <fail>
+
+8000025c <test_15>:
+8000025c: fff00093 li ra,-1
+80000260: fff00113 li sp,-1
+80000264: 40208f33 sub t5,ra,sp
+80000268: 00000e93 li t4,0
+8000026c: 00f00193 li gp,15
+80000270: 35df1663 bne t5,t4,800005bc <fail>
+
+80000274 <test_16>:
+80000274: 00d00093 li ra,13
+80000278: 00b00113 li sp,11
+8000027c: 402080b3 sub ra,ra,sp
+80000280: 00200e93 li t4,2
+80000284: 01000193 li gp,16
+80000288: 33d09a63 bne ra,t4,800005bc <fail>
+
+8000028c <test_17>:
+8000028c: 00e00093 li ra,14
+80000290: 00b00113 li sp,11
+80000294: 40208133 sub sp,ra,sp
+80000298: 00300e93 li t4,3
+8000029c: 01100193 li gp,17
+800002a0: 31d11e63 bne sp,t4,800005bc <fail>
+
+800002a4 <test_18>:
+800002a4: 00d00093 li ra,13
+800002a8: 401080b3 sub ra,ra,ra
+800002ac: 00000e93 li t4,0
+800002b0: 01200193 li gp,18
+800002b4: 31d09463 bne ra,t4,800005bc <fail>
+
+800002b8 <test_19>:
+800002b8: 00000213 li tp,0
+800002bc: 00d00093 li ra,13
+800002c0: 00b00113 li sp,11
+800002c4: 40208f33 sub t5,ra,sp
+800002c8: 000f0313 mv t1,t5
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5214e3 bne tp,t0,800002bc <test_19+0x4>
+800002d8: 00200e93 li t4,2
+800002dc: 01300193 li gp,19
+800002e0: 2dd31e63 bne t1,t4,800005bc <fail>
+
+800002e4 <test_20>:
+800002e4: 00000213 li tp,0
+800002e8: 00e00093 li ra,14
+800002ec: 00b00113 li sp,11
+800002f0: 40208f33 sub t5,ra,sp
+800002f4: 00000013 nop
+800002f8: 000f0313 mv t1,t5
+800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000300: 00200293 li t0,2
+80000304: fe5212e3 bne tp,t0,800002e8 <test_20+0x4>
+80000308: 00300e93 li t4,3
+8000030c: 01400193 li gp,20
+80000310: 2bd31663 bne t1,t4,800005bc <fail>
+
+80000314 <test_21>:
+80000314: 00000213 li tp,0
+80000318: 00f00093 li ra,15
+8000031c: 00b00113 li sp,11
+80000320: 40208f33 sub t5,ra,sp
+80000324: 00000013 nop
+80000328: 00000013 nop
+8000032c: 000f0313 mv t1,t5
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fe5210e3 bne tp,t0,80000318 <test_21+0x4>
+8000033c: 00400e93 li t4,4
+80000340: 01500193 li gp,21
+80000344: 27d31c63 bne t1,t4,800005bc <fail>
+
+80000348 <test_22>:
+80000348: 00000213 li tp,0
+8000034c: 00d00093 li ra,13
+80000350: 00b00113 li sp,11
+80000354: 40208f33 sub t5,ra,sp
+80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000035c: 00200293 li t0,2
+80000360: fe5216e3 bne tp,t0,8000034c <test_22+0x4>
+80000364: 00200e93 li t4,2
+80000368: 01600193 li gp,22
+8000036c: 25df1863 bne t5,t4,800005bc <fail>
+
+80000370 <test_23>:
+80000370: 00000213 li tp,0
+80000374: 00e00093 li ra,14
+80000378: 00b00113 li sp,11
+8000037c: 00000013 nop
+80000380: 40208f33 sub t5,ra,sp
+80000384: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000388: 00200293 li t0,2
+8000038c: fe5214e3 bne tp,t0,80000374 <test_23+0x4>
+80000390: 00300e93 li t4,3
+80000394: 01700193 li gp,23
+80000398: 23df1263 bne t5,t4,800005bc <fail>
+
+8000039c <test_24>:
+8000039c: 00000213 li tp,0
+800003a0: 00f00093 li ra,15
+800003a4: 00b00113 li sp,11
+800003a8: 00000013 nop
+800003ac: 00000013 nop
+800003b0: 40208f33 sub t5,ra,sp
+800003b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003b8: 00200293 li t0,2
+800003bc: fe5212e3 bne tp,t0,800003a0 <test_24+0x4>
+800003c0: 00400e93 li t4,4
+800003c4: 01800193 li gp,24
+800003c8: 1fdf1a63 bne t5,t4,800005bc <fail>
+
+800003cc <test_25>:
+800003cc: 00000213 li tp,0
+800003d0: 00d00093 li ra,13
+800003d4: 00000013 nop
+800003d8: 00b00113 li sp,11
+800003dc: 40208f33 sub t5,ra,sp
+800003e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003e4: 00200293 li t0,2
+800003e8: fe5214e3 bne tp,t0,800003d0 <test_25+0x4>
+800003ec: 00200e93 li t4,2
+800003f0: 01900193 li gp,25
+800003f4: 1ddf1463 bne t5,t4,800005bc <fail>
+
+800003f8 <test_26>:
+800003f8: 00000213 li tp,0
+800003fc: 00e00093 li ra,14
+80000400: 00000013 nop
+80000404: 00b00113 li sp,11
+80000408: 00000013 nop
+8000040c: 40208f33 sub t5,ra,sp
+80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000414: 00200293 li t0,2
+80000418: fe5212e3 bne tp,t0,800003fc <test_26+0x4>
+8000041c: 00300e93 li t4,3
+80000420: 01a00193 li gp,26
+80000424: 19df1c63 bne t5,t4,800005bc <fail>
+
+80000428 <test_27>:
+80000428: 00000213 li tp,0
+8000042c: 00f00093 li ra,15
+80000430: 00000013 nop
+80000434: 00000013 nop
+80000438: 00b00113 li sp,11
+8000043c: 40208f33 sub t5,ra,sp
+80000440: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000444: 00200293 li t0,2
+80000448: fe5212e3 bne tp,t0,8000042c <test_27+0x4>
+8000044c: 00400e93 li t4,4
+80000450: 01b00193 li gp,27
+80000454: 17df1463 bne t5,t4,800005bc <fail>
+
+80000458 <test_28>:
+80000458: 00000213 li tp,0
+8000045c: 00b00113 li sp,11
+80000460: 00d00093 li ra,13
+80000464: 40208f33 sub t5,ra,sp
+80000468: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000046c: 00200293 li t0,2
+80000470: fe5216e3 bne tp,t0,8000045c <test_28+0x4>
+80000474: 00200e93 li t4,2
+80000478: 01c00193 li gp,28
+8000047c: 15df1063 bne t5,t4,800005bc <fail>
+
+80000480 <test_29>:
+80000480: 00000213 li tp,0
+80000484: 00b00113 li sp,11
+80000488: 00e00093 li ra,14
+8000048c: 00000013 nop
+80000490: 40208f33 sub t5,ra,sp
+80000494: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000498: 00200293 li t0,2
+8000049c: fe5214e3 bne tp,t0,80000484 <test_29+0x4>
+800004a0: 00300e93 li t4,3
+800004a4: 01d00193 li gp,29
+800004a8: 11df1a63 bne t5,t4,800005bc <fail>
+
+800004ac <test_30>:
+800004ac: 00000213 li tp,0
+800004b0: 00b00113 li sp,11
+800004b4: 00f00093 li ra,15
+800004b8: 00000013 nop
+800004bc: 00000013 nop
+800004c0: 40208f33 sub t5,ra,sp
+800004c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c8: 00200293 li t0,2
+800004cc: fe5212e3 bne tp,t0,800004b0 <test_30+0x4>
+800004d0: 00400e93 li t4,4
+800004d4: 01e00193 li gp,30
+800004d8: 0fdf1263 bne t5,t4,800005bc <fail>
+
+800004dc <test_31>:
+800004dc: 00000213 li tp,0
+800004e0: 00b00113 li sp,11
+800004e4: 00000013 nop
+800004e8: 00d00093 li ra,13
+800004ec: 40208f33 sub t5,ra,sp
+800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004f4: 00200293 li t0,2
+800004f8: fe5214e3 bne tp,t0,800004e0 <test_31+0x4>
+800004fc: 00200e93 li t4,2
+80000500: 01f00193 li gp,31
+80000504: 0bdf1c63 bne t5,t4,800005bc <fail>
+
+80000508 <test_32>:
+80000508: 00000213 li tp,0
+8000050c: 00b00113 li sp,11
+80000510: 00000013 nop
+80000514: 00e00093 li ra,14
+80000518: 00000013 nop
+8000051c: 40208f33 sub t5,ra,sp
+80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000524: 00200293 li t0,2
+80000528: fe5212e3 bne tp,t0,8000050c <test_32+0x4>
+8000052c: 00300e93 li t4,3
+80000530: 02000193 li gp,32
+80000534: 09df1463 bne t5,t4,800005bc <fail>
+
+80000538 <test_33>:
+80000538: 00000213 li tp,0
+8000053c: 00b00113 li sp,11
+80000540: 00000013 nop
+80000544: 00000013 nop
+80000548: 00f00093 li ra,15
+8000054c: 40208f33 sub t5,ra,sp
+80000550: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000554: 00200293 li t0,2
+80000558: fe5212e3 bne tp,t0,8000053c <test_33+0x4>
+8000055c: 00400e93 li t4,4
+80000560: 02100193 li gp,33
+80000564: 05df1c63 bne t5,t4,800005bc <fail>
+
+80000568 <test_34>:
+80000568: ff100093 li ra,-15
+8000056c: 40100133 neg sp,ra
+80000570: 00f00e93 li t4,15
+80000574: 02200193 li gp,34
+80000578: 05d11263 bne sp,t4,800005bc <fail>
+
+8000057c <test_35>:
+8000057c: 02000093 li ra,32
+80000580: 40008133 sub sp,ra,zero
+80000584: 02000e93 li t4,32
+80000588: 02300193 li gp,35
+8000058c: 03d11863 bne sp,t4,800005bc <fail>
+
+80000590 <test_36>:
+80000590: 400000b3 neg ra,zero
+80000594: 00000e93 li t4,0
+80000598: 02400193 li gp,36
+8000059c: 03d09063 bne ra,t4,800005bc <fail>
+
+800005a0 <test_37>:
+800005a0: 01000093 li ra,16
+800005a4: 01e00113 li sp,30
+800005a8: 40208033 sub zero,ra,sp
+800005ac: 00000e93 li t4,0
+800005b0: 02500193 li gp,37
+800005b4: 01d01463 bne zero,t4,800005bc <fail>
+800005b8: 00301c63 bne zero,gp,800005d0 <pass>
+
+800005bc <fail>:
+800005bc: 0ff0000f fence
+800005c0: 00018063 beqz gp,800005c0 <fail+0x4>
+800005c4: 00119193 slli gp,gp,0x1
+800005c8: 0011e193 ori gp,gp,1
+800005cc: 00000073 ecall
+
+800005d0 <pass>:
+800005d0: 0ff0000f fence
+800005d4: 00100193 li gp,1
+800005d8: 00000073 ecall
+800005dc: c0001073 unimp
+800005e0: 0000 unimp
+800005e2: 0000 unimp
+800005e4: 0000 unimp
+800005e6: 0000 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sub.elf b/test/riscv-tests/rv32ui-p-sub.elf
new file mode 100644
index 0000000..90ed554
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sub.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-sw.dump b/test/riscv-tests/rv32ui-p-sw.dump
new file mode 100644
index 0000000..acdccd9
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sw.dump
@@ -0,0 +1,476 @@
+
+rv32ui-p-sw: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00002097 auipc ra,0x2
+80000100: f0408093 addi ra,ra,-252 # 80002000 <begin_signature>
+80000104: 00aa0137 lui sp,0xaa0
+80000108: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56>
+8000010c: 0020a023 sw sp,0(ra)
+80000110: 0000af03 lw t5,0(ra)
+80000114: 00aa0eb7 lui t4,0xaa0
+80000118: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56>
+8000011c: 00200193 li gp,2
+80000120: 47df1063 bne t5,t4,80000580 <fail>
+
+80000124 <test_3>:
+80000124: 00002097 auipc ra,0x2
+80000128: edc08093 addi ra,ra,-292 # 80002000 <begin_signature>
+8000012c: aa00b137 lui sp,0xaa00b
+80000130: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a0089d0>
+80000134: 0020a223 sw sp,4(ra)
+80000138: 0040af03 lw t5,4(ra)
+8000013c: aa00beb7 lui t4,0xaa00b
+80000140: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a0089d0>
+80000144: 00300193 li gp,3
+80000148: 43df1c63 bne t5,t4,80000580 <fail>
+
+8000014c <test_4>:
+8000014c: 00002097 auipc ra,0x2
+80000150: eb408093 addi ra,ra,-332 # 80002000 <begin_signature>
+80000154: 0aa01137 lui sp,0xaa01
+80000158: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560>
+8000015c: 0020a423 sw sp,8(ra)
+80000160: 0080af03 lw t5,8(ra)
+80000164: 0aa01eb7 lui t4,0xaa01
+80000168: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560>
+8000016c: 00400193 li gp,4
+80000170: 41df1863 bne t5,t4,80000580 <fail>
+
+80000174 <test_5>:
+80000174: 00002097 auipc ra,0x2
+80000178: e8c08093 addi ra,ra,-372 # 80002000 <begin_signature>
+8000017c: a00aa137 lui sp,0xa00aa
+80000180: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a7fda>
+80000184: 0020a623 sw sp,12(ra)
+80000188: 00c0af03 lw t5,12(ra)
+8000018c: a00aaeb7 lui t4,0xa00aa
+80000190: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a7fda>
+80000194: 00500193 li gp,5
+80000198: 3fdf1463 bne t5,t4,80000580 <fail>
+
+8000019c <test_6>:
+8000019c: 00002097 auipc ra,0x2
+800001a0: e8008093 addi ra,ra,-384 # 8000201c <tdat8>
+800001a4: 00aa0137 lui sp,0xaa0
+800001a8: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56>
+800001ac: fe20aa23 sw sp,-12(ra)
+800001b0: ff40af03 lw t5,-12(ra)
+800001b4: 00aa0eb7 lui t4,0xaa0
+800001b8: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56>
+800001bc: 00600193 li gp,6
+800001c0: 3ddf1063 bne t5,t4,80000580 <fail>
+
+800001c4 <test_7>:
+800001c4: 00002097 auipc ra,0x2
+800001c8: e5808093 addi ra,ra,-424 # 8000201c <tdat8>
+800001cc: aa00b137 lui sp,0xaa00b
+800001d0: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a0089d0>
+800001d4: fe20ac23 sw sp,-8(ra)
+800001d8: ff80af03 lw t5,-8(ra)
+800001dc: aa00beb7 lui t4,0xaa00b
+800001e0: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a0089d0>
+800001e4: 00700193 li gp,7
+800001e8: 39df1c63 bne t5,t4,80000580 <fail>
+
+800001ec <test_8>:
+800001ec: 00002097 auipc ra,0x2
+800001f0: e3008093 addi ra,ra,-464 # 8000201c <tdat8>
+800001f4: 0aa01137 lui sp,0xaa01
+800001f8: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560>
+800001fc: fe20ae23 sw sp,-4(ra)
+80000200: ffc0af03 lw t5,-4(ra)
+80000204: 0aa01eb7 lui t4,0xaa01
+80000208: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560>
+8000020c: 00800193 li gp,8
+80000210: 37df1863 bne t5,t4,80000580 <fail>
+
+80000214 <test_9>:
+80000214: 00002097 auipc ra,0x2
+80000218: e0808093 addi ra,ra,-504 # 8000201c <tdat8>
+8000021c: a00aa137 lui sp,0xa00aa
+80000220: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a7fda>
+80000224: 0020a023 sw sp,0(ra)
+80000228: 0000af03 lw t5,0(ra)
+8000022c: a00aaeb7 lui t4,0xa00aa
+80000230: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a7fda>
+80000234: 00900193 li gp,9
+80000238: 35df1463 bne t5,t4,80000580 <fail>
+
+8000023c <test_10>:
+8000023c: 00002097 auipc ra,0x2
+80000240: de408093 addi ra,ra,-540 # 80002020 <tdat9>
+80000244: 12345137 lui sp,0x12345
+80000248: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988>
+8000024c: fe008213 addi tp,ra,-32
+80000250: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0>
+80000254: 0000a283 lw t0,0(ra)
+80000258: 12345eb7 lui t4,0x12345
+8000025c: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988>
+80000260: 00a00193 li gp,10
+80000264: 31d29e63 bne t0,t4,80000580 <fail>
+
+80000268 <test_11>:
+80000268: 00002097 auipc ra,0x2
+8000026c: db808093 addi ra,ra,-584 # 80002020 <tdat9>
+80000270: 58213137 lui sp,0x58213
+80000274: 09810113 addi sp,sp,152 # 58213098 <_start-0x27decf68>
+80000278: ffd08093 addi ra,ra,-3
+8000027c: 0020a3a3 sw sp,7(ra)
+80000280: 00002217 auipc tp,0x2
+80000284: da420213 addi tp,tp,-604 # 80002024 <tdat10>
+80000288: 00022283 lw t0,0(tp) # 0 <_start-0x80000000>
+8000028c: 58213eb7 lui t4,0x58213
+80000290: 098e8e93 addi t4,t4,152 # 58213098 <_start-0x27decf68>
+80000294: 00b00193 li gp,11
+80000298: 2fd29463 bne t0,t4,80000580 <fail>
+
+8000029c <test_12>:
+8000029c: 00c00193 li gp,12
+800002a0: 00000213 li tp,0
+800002a4: aabbd0b7 lui ra,0xaabbd
+800002a8: cdd08093 addi ra,ra,-803 # aabbccdd <_end+0x2abbacad>
+800002ac: 00002117 auipc sp,0x2
+800002b0: d5410113 addi sp,sp,-684 # 80002000 <begin_signature>
+800002b4: 00112023 sw ra,0(sp)
+800002b8: 00012f03 lw t5,0(sp)
+800002bc: aabbdeb7 lui t4,0xaabbd
+800002c0: cdde8e93 addi t4,t4,-803 # aabbccdd <_end+0x2abbacad>
+800002c4: 2bdf1e63 bne t5,t4,80000580 <fail>
+800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002cc: 00200293 li t0,2
+800002d0: fc521ae3 bne tp,t0,800002a4 <test_12+0x8>
+
+800002d4 <test_13>:
+800002d4: 00d00193 li gp,13
+800002d8: 00000213 li tp,0
+800002dc: daabc0b7 lui ra,0xdaabc
+800002e0: ccd08093 addi ra,ra,-819 # daabbccd <_end+0x5aab9c9d>
+800002e4: 00002117 auipc sp,0x2
+800002e8: d1c10113 addi sp,sp,-740 # 80002000 <begin_signature>
+800002ec: 00000013 nop
+800002f0: 00112223 sw ra,4(sp)
+800002f4: 00412f03 lw t5,4(sp)
+800002f8: daabceb7 lui t4,0xdaabc
+800002fc: ccde8e93 addi t4,t4,-819 # daabbccd <_end+0x5aab9c9d>
+80000300: 29df1063 bne t5,t4,80000580 <fail>
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fc5218e3 bne tp,t0,800002dc <test_13+0x8>
+
+80000310 <test_14>:
+80000310: 00e00193 li gp,14
+80000314: 00000213 li tp,0
+80000318: ddaac0b7 lui ra,0xddaac
+8000031c: bcc08093 addi ra,ra,-1076 # ddaabbcc <_end+0x5daa9b9c>
+80000320: 00002117 auipc sp,0x2
+80000324: ce010113 addi sp,sp,-800 # 80002000 <begin_signature>
+80000328: 00000013 nop
+8000032c: 00000013 nop
+80000330: 00112423 sw ra,8(sp)
+80000334: 00812f03 lw t5,8(sp)
+80000338: ddaaceb7 lui t4,0xddaac
+8000033c: bcce8e93 addi t4,t4,-1076 # ddaabbcc <_end+0x5daa9b9c>
+80000340: 25df1063 bne t5,t4,80000580 <fail>
+80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000348: 00200293 li t0,2
+8000034c: fc5216e3 bne tp,t0,80000318 <test_14+0x8>
+
+80000350 <test_15>:
+80000350: 00f00193 li gp,15
+80000354: 00000213 li tp,0
+80000358: cddab0b7 lui ra,0xcddab
+8000035c: bbc08093 addi ra,ra,-1092 # cddaabbc <_end+0x4dda8b8c>
+80000360: 00000013 nop
+80000364: 00002117 auipc sp,0x2
+80000368: c9c10113 addi sp,sp,-868 # 80002000 <begin_signature>
+8000036c: 00112623 sw ra,12(sp)
+80000370: 00c12f03 lw t5,12(sp)
+80000374: cddabeb7 lui t4,0xcddab
+80000378: bbce8e93 addi t4,t4,-1092 # cddaabbc <_end+0x4dda8b8c>
+8000037c: 21df1263 bne t5,t4,80000580 <fail>
+80000380: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000384: 00200293 li t0,2
+80000388: fc5218e3 bne tp,t0,80000358 <test_15+0x8>
+
+8000038c <test_16>:
+8000038c: 01000193 li gp,16
+80000390: 00000213 li tp,0
+80000394: ccddb0b7 lui ra,0xccddb
+80000398: abb08093 addi ra,ra,-1349 # ccddaabb <_end+0x4cdd8a8b>
+8000039c: 00000013 nop
+800003a0: 00002117 auipc sp,0x2
+800003a4: c6010113 addi sp,sp,-928 # 80002000 <begin_signature>
+800003a8: 00000013 nop
+800003ac: 00112823 sw ra,16(sp)
+800003b0: 01012f03 lw t5,16(sp)
+800003b4: ccddbeb7 lui t4,0xccddb
+800003b8: abbe8e93 addi t4,t4,-1349 # ccddaabb <_end+0x4cdd8a8b>
+800003bc: 1ddf1263 bne t5,t4,80000580 <fail>
+800003c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c4: 00200293 li t0,2
+800003c8: fc5216e3 bne tp,t0,80000394 <test_16+0x8>
+
+800003cc <test_17>:
+800003cc: 01100193 li gp,17
+800003d0: 00000213 li tp,0
+800003d4: bccde0b7 lui ra,0xbccde
+800003d8: aab08093 addi ra,ra,-1365 # bccddaab <_end+0x3ccdba7b>
+800003dc: 00000013 nop
+800003e0: 00000013 nop
+800003e4: 00002117 auipc sp,0x2
+800003e8: c1c10113 addi sp,sp,-996 # 80002000 <begin_signature>
+800003ec: 00112a23 sw ra,20(sp)
+800003f0: 01412f03 lw t5,20(sp)
+800003f4: bccdeeb7 lui t4,0xbccde
+800003f8: aabe8e93 addi t4,t4,-1365 # bccddaab <_end+0x3ccdba7b>
+800003fc: 19df1263 bne t5,t4,80000580 <fail>
+80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000404: 00200293 li t0,2
+80000408: fc5216e3 bne tp,t0,800003d4 <test_17+0x8>
+
+8000040c <test_18>:
+8000040c: 01200193 li gp,18
+80000410: 00000213 li tp,0
+80000414: 00002117 auipc sp,0x2
+80000418: bec10113 addi sp,sp,-1044 # 80002000 <begin_signature>
+8000041c: 001120b7 lui ra,0x112
+80000420: 23308093 addi ra,ra,563 # 112233 <_start-0x7feeddcd>
+80000424: 00112023 sw ra,0(sp)
+80000428: 00012f03 lw t5,0(sp)
+8000042c: 00112eb7 lui t4,0x112
+80000430: 233e8e93 addi t4,t4,563 # 112233 <_start-0x7feeddcd>
+80000434: 15df1663 bne t5,t4,80000580 <fail>
+80000438: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000043c: 00200293 li t0,2
+80000440: fc521ae3 bne tp,t0,80000414 <test_18+0x8>
+
+80000444 <test_19>:
+80000444: 01300193 li gp,19
+80000448: 00000213 li tp,0
+8000044c: 00002117 auipc sp,0x2
+80000450: bb410113 addi sp,sp,-1100 # 80002000 <begin_signature>
+80000454: 300110b7 lui ra,0x30011
+80000458: 22308093 addi ra,ra,547 # 30011223 <_start-0x4ffeeddd>
+8000045c: 00000013 nop
+80000460: 00112223 sw ra,4(sp)
+80000464: 00412f03 lw t5,4(sp)
+80000468: 30011eb7 lui t4,0x30011
+8000046c: 223e8e93 addi t4,t4,547 # 30011223 <_start-0x4ffeeddd>
+80000470: 11df1863 bne t5,t4,80000580 <fail>
+80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000478: 00200293 li t0,2
+8000047c: fc5218e3 bne tp,t0,8000044c <test_19+0x8>
+
+80000480 <test_20>:
+80000480: 01400193 li gp,20
+80000484: 00000213 li tp,0
+80000488: 00002117 auipc sp,0x2
+8000048c: b7810113 addi sp,sp,-1160 # 80002000 <begin_signature>
+80000490: 330010b7 lui ra,0x33001
+80000494: 12208093 addi ra,ra,290 # 33001122 <_start-0x4cffeede>
+80000498: 00000013 nop
+8000049c: 00000013 nop
+800004a0: 00112423 sw ra,8(sp)
+800004a4: 00812f03 lw t5,8(sp)
+800004a8: 33001eb7 lui t4,0x33001
+800004ac: 122e8e93 addi t4,t4,290 # 33001122 <_start-0x4cffeede>
+800004b0: 0ddf1863 bne t5,t4,80000580 <fail>
+800004b4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004b8: 00200293 li t0,2
+800004bc: fc5216e3 bne tp,t0,80000488 <test_20+0x8>
+
+800004c0 <test_21>:
+800004c0: 01500193 li gp,21
+800004c4: 00000213 li tp,0
+800004c8: 00002117 auipc sp,0x2
+800004cc: b3810113 addi sp,sp,-1224 # 80002000 <begin_signature>
+800004d0: 00000013 nop
+800004d4: 233000b7 lui ra,0x23300
+800004d8: 11208093 addi ra,ra,274 # 23300112 <_start-0x5ccffeee>
+800004dc: 00112623 sw ra,12(sp)
+800004e0: 00c12f03 lw t5,12(sp)
+800004e4: 23300eb7 lui t4,0x23300
+800004e8: 112e8e93 addi t4,t4,274 # 23300112 <_start-0x5ccffeee>
+800004ec: 09df1a63 bne t5,t4,80000580 <fail>
+800004f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004f4: 00200293 li t0,2
+800004f8: fc5218e3 bne tp,t0,800004c8 <test_21+0x8>
+
+800004fc <test_22>:
+800004fc: 01600193 li gp,22
+80000500: 00000213 li tp,0
+80000504: 00002117 auipc sp,0x2
+80000508: afc10113 addi sp,sp,-1284 # 80002000 <begin_signature>
+8000050c: 00000013 nop
+80000510: 223300b7 lui ra,0x22330
+80000514: 01108093 addi ra,ra,17 # 22330011 <_start-0x5dccffef>
+80000518: 00000013 nop
+8000051c: 00112823 sw ra,16(sp)
+80000520: 01012f03 lw t5,16(sp)
+80000524: 22330eb7 lui t4,0x22330
+80000528: 011e8e93 addi t4,t4,17 # 22330011 <_start-0x5dccffef>
+8000052c: 05df1a63 bne t5,t4,80000580 <fail>
+80000530: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000534: 00200293 li t0,2
+80000538: fc5216e3 bne tp,t0,80000504 <test_22+0x8>
+
+8000053c <test_23>:
+8000053c: 01700193 li gp,23
+80000540: 00000213 li tp,0
+80000544: 00002117 auipc sp,0x2
+80000548: abc10113 addi sp,sp,-1348 # 80002000 <begin_signature>
+8000054c: 00000013 nop
+80000550: 00000013 nop
+80000554: 122330b7 lui ra,0x12233
+80000558: 00108093 addi ra,ra,1 # 12233001 <_start-0x6ddccfff>
+8000055c: 00112a23 sw ra,20(sp)
+80000560: 01412f03 lw t5,20(sp)
+80000564: 12233eb7 lui t4,0x12233
+80000568: 001e8e93 addi t4,t4,1 # 12233001 <_start-0x6ddccfff>
+8000056c: 01df1a63 bne t5,t4,80000580 <fail>
+80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000574: 00200293 li t0,2
+80000578: fc5216e3 bne tp,t0,80000544 <test_23+0x8>
+8000057c: 00301c63 bne zero,gp,80000594 <pass>
+
+80000580 <fail>:
+80000580: 0ff0000f fence
+80000584: 00018063 beqz gp,80000584 <fail+0x4>
+80000588: 00119193 slli gp,gp,0x1
+8000058c: 0011e193 ori gp,gp,1
+80000590: 00000073 ecall
+
+80000594 <pass>:
+80000594: 0ff0000f fence
+80000598: 00100193 li gp,1
+8000059c: 00000073 ecall
+800005a0: c0001073 unimp
+800005a4: 0000 unimp
+800005a6: 0000 unimp
+800005a8: 0000 unimp
+800005aa: 0000 unimp
+800005ac: 0000 unimp
+800005ae: 0000 unimp
+800005b0: 0000 unimp
+800005b2: 0000 unimp
+800005b4: 0000 unimp
+800005b6: 0000 unimp
+800005b8: 0000 unimp
+800005ba: 0000 unimp
+800005bc: 0000 unimp
+800005be: 0000 unimp
+800005c0: 0000 unimp
+800005c2: 0000 unimp
+
+Disassembly of section .data:
+
+80002000 <begin_signature>:
+80002000: deadbeef jal t4,7ffdd5ea <_start-0x22a16>
+
+80002004 <tdat2>:
+80002004: deadbeef jal t4,7ffdd5ee <_start-0x22a12>
+
+80002008 <tdat3>:
+80002008: deadbeef jal t4,7ffdd5f2 <_start-0x22a0e>
+
+8000200c <tdat4>:
+8000200c: deadbeef jal t4,7ffdd5f6 <_start-0x22a0a>
+
+80002010 <tdat5>:
+80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06>
+
+80002014 <tdat6>:
+80002014: deadbeef jal t4,7ffdd5fe <_start-0x22a02>
+
+80002018 <tdat7>:
+80002018: deadbeef jal t4,7ffdd602 <_start-0x229fe>
+
+8000201c <tdat8>:
+8000201c: deadbeef jal t4,7ffdd606 <_start-0x229fa>
+
+80002020 <tdat9>:
+80002020: deadbeef jal t4,7ffdd60a <_start-0x229f6>
+
+80002024 <tdat10>:
+80002024: deadbeef jal t4,7ffdd60e <_start-0x229f2>
+80002028: 0000 unimp
+8000202a: 0000 unimp
+8000202c: 0000 unimp
+8000202e: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-sw.elf b/test/riscv-tests/rv32ui-p-sw.elf
new file mode 100644
index 0000000..eb1ae2b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-sw.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-xor.dump b/test/riscv-tests/rv32ui-p-xor.dump
new file mode 100644
index 0000000..e4d8ddb
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-xor.dump
@@ -0,0 +1,465 @@
+
+rv32ui-p-xor: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: ff0100b7 lui ra,0xff010
+80000100: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000104: 0f0f1137 lui sp,0xf0f1
+80000108: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+8000010c: 0020cf33 xor t5,ra,sp
+80000110: f00ffeb7 lui t4,0xf00ff
+80000114: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+80000118: 00200193 li gp,2
+8000011c: 4bdf1063 bne t5,t4,800005bc <fail>
+
+80000120 <test_3>:
+80000120: 0ff010b7 lui ra,0xff01
+80000124: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000128: f0f0f137 lui sp,0xf0f0f
+8000012c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000130: 0020cf33 xor t5,ra,sp
+80000134: ff010eb7 lui t4,0xff010
+80000138: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+8000013c: 00300193 li gp,3
+80000140: 47df1e63 bne t5,t4,800005bc <fail>
+
+80000144 <test_4>:
+80000144: 00ff00b7 lui ra,0xff0
+80000148: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000014c: 0f0f1137 lui sp,0xf0f1
+80000150: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000154: 0020cf33 xor t5,ra,sp
+80000158: 0ff01eb7 lui t4,0xff01
+8000015c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000160: 00400193 li gp,4
+80000164: 45df1c63 bne t5,t4,800005bc <fail>
+
+80000168 <test_5>:
+80000168: f00ff0b7 lui ra,0xf00ff
+8000016c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000170: f0f0f137 lui sp,0xf0f0f
+80000174: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000178: 0020cf33 xor t5,ra,sp
+8000017c: 00ff0eb7 lui t4,0xff0
+80000180: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80000184: 00500193 li gp,5
+80000188: 43df1a63 bne t5,t4,800005bc <fail>
+
+8000018c <test_6>:
+8000018c: ff0100b7 lui ra,0xff010
+80000190: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000194: 0f0f1137 lui sp,0xf0f1
+80000198: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+8000019c: 0020c0b3 xor ra,ra,sp
+800001a0: f00ffeb7 lui t4,0xf00ff
+800001a4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+800001a8: 00600193 li gp,6
+800001ac: 41d09863 bne ra,t4,800005bc <fail>
+
+800001b0 <test_7>:
+800001b0: ff0100b7 lui ra,0xff010
+800001b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001b8: 0f0f1137 lui sp,0xf0f1
+800001bc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800001c0: 0020c133 xor sp,ra,sp
+800001c4: f00ffeb7 lui t4,0xf00ff
+800001c8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+800001cc: 00700193 li gp,7
+800001d0: 3fd11663 bne sp,t4,800005bc <fail>
+
+800001d4 <test_8>:
+800001d4: ff0100b7 lui ra,0xff010
+800001d8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001dc: 0010c0b3 xor ra,ra,ra
+800001e0: 00000e93 li t4,0
+800001e4: 00800193 li gp,8
+800001e8: 3dd09a63 bne ra,t4,800005bc <fail>
+
+800001ec <test_9>:
+800001ec: 00000213 li tp,0
+800001f0: ff0100b7 lui ra,0xff010
+800001f4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800001f8: 0f0f1137 lui sp,0xf0f1
+800001fc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000200: 0020cf33 xor t5,ra,sp
+80000204: 000f0313 mv t1,t5
+80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000020c: 00200293 li t0,2
+80000210: fe5210e3 bne tp,t0,800001f0 <test_9+0x4>
+80000214: f00ffeb7 lui t4,0xf00ff
+80000218: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+8000021c: 00900193 li gp,9
+80000220: 39d31e63 bne t1,t4,800005bc <fail>
+
+80000224 <test_10>:
+80000224: 00000213 li tp,0
+80000228: 0ff010b7 lui ra,0xff01
+8000022c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000230: f0f0f137 lui sp,0xf0f0f
+80000234: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000238: 0020cf33 xor t5,ra,sp
+8000023c: 00000013 nop
+80000240: 000f0313 mv t1,t5
+80000244: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000248: 00200293 li t0,2
+8000024c: fc521ee3 bne tp,t0,80000228 <test_10+0x4>
+80000250: ff010eb7 lui t4,0xff010
+80000254: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+80000258: 00a00193 li gp,10
+8000025c: 37d31063 bne t1,t4,800005bc <fail>
+
+80000260 <test_11>:
+80000260: 00000213 li tp,0
+80000264: 00ff00b7 lui ra,0xff0
+80000268: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000026c: 0f0f1137 lui sp,0xf0f1
+80000270: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000274: 0020cf33 xor t5,ra,sp
+80000278: 00000013 nop
+8000027c: 00000013 nop
+80000280: 000f0313 mv t1,t5
+80000284: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000288: 00200293 li t0,2
+8000028c: fc521ce3 bne tp,t0,80000264 <test_11+0x4>
+80000290: 0ff01eb7 lui t4,0xff01
+80000294: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000298: 00b00193 li gp,11
+8000029c: 33d31063 bne t1,t4,800005bc <fail>
+
+800002a0 <test_12>:
+800002a0: 00000213 li tp,0
+800002a4: ff0100b7 lui ra,0xff010
+800002a8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800002ac: 0f0f1137 lui sp,0xf0f1
+800002b0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800002b4: 0020cf33 xor t5,ra,sp
+800002b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002bc: 00200293 li t0,2
+800002c0: fe5212e3 bne tp,t0,800002a4 <test_12+0x4>
+800002c4: f00ffeb7 lui t4,0xf00ff
+800002c8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+800002cc: 00c00193 li gp,12
+800002d0: 2fdf1663 bne t5,t4,800005bc <fail>
+
+800002d4 <test_13>:
+800002d4: 00000213 li tp,0
+800002d8: 0ff010b7 lui ra,0xff01
+800002dc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800002e0: f0f0f137 lui sp,0xf0f0f
+800002e4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800002e8: 00000013 nop
+800002ec: 0020cf33 xor t5,ra,sp
+800002f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002f4: 00200293 li t0,2
+800002f8: fe5210e3 bne tp,t0,800002d8 <test_13+0x4>
+800002fc: ff010eb7 lui t4,0xff010
+80000300: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+80000304: 00d00193 li gp,13
+80000308: 2bdf1a63 bne t5,t4,800005bc <fail>
+
+8000030c <test_14>:
+8000030c: 00000213 li tp,0
+80000310: 00ff00b7 lui ra,0xff0
+80000314: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000318: 0f0f1137 lui sp,0xf0f1
+8000031c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000320: 00000013 nop
+80000324: 00000013 nop
+80000328: 0020cf33 xor t5,ra,sp
+8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000330: 00200293 li t0,2
+80000334: fc521ee3 bne tp,t0,80000310 <test_14+0x4>
+80000338: 0ff01eb7 lui t4,0xff01
+8000033c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000340: 00e00193 li gp,14
+80000344: 27df1c63 bne t5,t4,800005bc <fail>
+
+80000348 <test_15>:
+80000348: 00000213 li tp,0
+8000034c: ff0100b7 lui ra,0xff010
+80000350: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000354: 00000013 nop
+80000358: 0f0f1137 lui sp,0xf0f1
+8000035c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000360: 0020cf33 xor t5,ra,sp
+80000364: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000368: 00200293 li t0,2
+8000036c: fe5210e3 bne tp,t0,8000034c <test_15+0x4>
+80000370: f00ffeb7 lui t4,0xf00ff
+80000374: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+80000378: 00f00193 li gp,15
+8000037c: 25df1063 bne t5,t4,800005bc <fail>
+
+80000380 <test_16>:
+80000380: 00000213 li tp,0
+80000384: 0ff010b7 lui ra,0xff01
+80000388: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+8000038c: 00000013 nop
+80000390: f0f0f137 lui sp,0xf0f0f
+80000394: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000398: 00000013 nop
+8000039c: 0020cf33 xor t5,ra,sp
+800003a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003a4: 00200293 li t0,2
+800003a8: fc521ee3 bne tp,t0,80000384 <test_16+0x4>
+800003ac: ff010eb7 lui t4,0xff010
+800003b0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+800003b4: 01000193 li gp,16
+800003b8: 21df1263 bne t5,t4,800005bc <fail>
+
+800003bc <test_17>:
+800003bc: 00000213 li tp,0
+800003c0: 00ff00b7 lui ra,0xff0
+800003c4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800003c8: 00000013 nop
+800003cc: 00000013 nop
+800003d0: 0f0f1137 lui sp,0xf0f1
+800003d4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800003d8: 0020cf33 xor t5,ra,sp
+800003dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003e0: 00200293 li t0,2
+800003e4: fc521ee3 bne tp,t0,800003c0 <test_17+0x4>
+800003e8: 0ff01eb7 lui t4,0xff01
+800003ec: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+800003f0: 01100193 li gp,17
+800003f4: 1ddf1463 bne t5,t4,800005bc <fail>
+
+800003f8 <test_18>:
+800003f8: 00000213 li tp,0
+800003fc: 0f0f1137 lui sp,0xf0f1
+80000400: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000404: ff0100b7 lui ra,0xff010
+80000408: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+8000040c: 0020cf33 xor t5,ra,sp
+80000410: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000414: 00200293 li t0,2
+80000418: fe5212e3 bne tp,t0,800003fc <test_18+0x4>
+8000041c: f00ffeb7 lui t4,0xf00ff
+80000420: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+80000424: 01200193 li gp,18
+80000428: 19df1a63 bne t5,t4,800005bc <fail>
+
+8000042c <test_19>:
+8000042c: 00000213 li tp,0
+80000430: f0f0f137 lui sp,0xf0f0f
+80000434: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+80000438: 0ff010b7 lui ra,0xff01
+8000043c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000440: 00000013 nop
+80000444: 0020cf33 xor t5,ra,sp
+80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000044c: 00200293 li t0,2
+80000450: fe5210e3 bne tp,t0,80000430 <test_19+0x4>
+80000454: ff010eb7 lui t4,0xff010
+80000458: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+8000045c: 01300193 li gp,19
+80000460: 15df1e63 bne t5,t4,800005bc <fail>
+
+80000464 <test_20>:
+80000464: 00000213 li tp,0
+80000468: 0f0f1137 lui sp,0xf0f1
+8000046c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000470: 00ff00b7 lui ra,0xff0
+80000474: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000478: 00000013 nop
+8000047c: 00000013 nop
+80000480: 0020cf33 xor t5,ra,sp
+80000484: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000488: 00200293 li t0,2
+8000048c: fc521ee3 bne tp,t0,80000468 <test_20+0x4>
+80000490: 0ff01eb7 lui t4,0xff01
+80000494: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000498: 01400193 li gp,20
+8000049c: 13df1063 bne t5,t4,800005bc <fail>
+
+800004a0 <test_21>:
+800004a0: 00000213 li tp,0
+800004a4: 0f0f1137 lui sp,0xf0f1
+800004a8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+800004ac: 00000013 nop
+800004b0: ff0100b7 lui ra,0xff010
+800004b4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+800004b8: 0020cf33 xor t5,ra,sp
+800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c0: 00200293 li t0,2
+800004c4: fe5210e3 bne tp,t0,800004a4 <test_21+0x4>
+800004c8: f00ffeb7 lui t4,0xf00ff
+800004cc: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700fd00f>
+800004d0: 01500193 li gp,21
+800004d4: 0fdf1463 bne t5,t4,800005bc <fail>
+
+800004d8 <test_22>:
+800004d8: 00000213 li tp,0
+800004dc: f0f0f137 lui sp,0xf0f0f
+800004e0: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f0d0f0>
+800004e4: 00000013 nop
+800004e8: 0ff010b7 lui ra,0xff01
+800004ec: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+800004f0: 00000013 nop
+800004f4: 0020cf33 xor t5,ra,sp
+800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004fc: 00200293 li t0,2
+80000500: fc521ee3 bne tp,t0,800004dc <test_22+0x4>
+80000504: ff010eb7 lui t4,0xff010
+80000508: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+8000050c: 01600193 li gp,22
+80000510: 0bdf1663 bne t5,t4,800005bc <fail>
+
+80000514 <test_23>:
+80000514: 00000213 li tp,0
+80000518: 0f0f1137 lui sp,0xf0f1
+8000051c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80000520: 00000013 nop
+80000524: 00000013 nop
+80000528: 00ff00b7 lui ra,0xff0
+8000052c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000530: 0020cf33 xor t5,ra,sp
+80000534: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000538: 00200293 li t0,2
+8000053c: fc521ee3 bne tp,t0,80000518 <test_23+0x4>
+80000540: 0ff01eb7 lui t4,0xff01
+80000544: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80000548: 01700193 li gp,23
+8000054c: 07df1863 bne t5,t4,800005bc <fail>
+
+80000550 <test_24>:
+80000550: ff0100b7 lui ra,0xff010
+80000554: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00df00>
+80000558: 00104133 xor sp,zero,ra
+8000055c: ff010eb7 lui t4,0xff010
+80000560: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00df00>
+80000564: 01800193 li gp,24
+80000568: 05d11a63 bne sp,t4,800005bc <fail>
+
+8000056c <test_25>:
+8000056c: 00ff00b7 lui ra,0xff0
+80000570: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80000574: 0000c133 xor sp,ra,zero
+80000578: 00ff0eb7 lui t4,0xff0
+8000057c: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80000580: 01900193 li gp,25
+80000584: 03d11c63 bne sp,t4,800005bc <fail>
+
+80000588 <test_26>:
+80000588: 000040b3 xor ra,zero,zero
+8000058c: 00000e93 li t4,0
+80000590: 01a00193 li gp,26
+80000594: 03d09463 bne ra,t4,800005bc <fail>
+
+80000598 <test_27>:
+80000598: 111110b7 lui ra,0x11111
+8000059c: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef>
+800005a0: 22222137 lui sp,0x22222
+800005a4: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde>
+800005a8: 0020c033 xor zero,ra,sp
+800005ac: 00000e93 li t4,0
+800005b0: 01b00193 li gp,27
+800005b4: 01d01463 bne zero,t4,800005bc <fail>
+800005b8: 00301c63 bne zero,gp,800005d0 <pass>
+
+800005bc <fail>:
+800005bc: 0ff0000f fence
+800005c0: 00018063 beqz gp,800005c0 <fail+0x4>
+800005c4: 00119193 slli gp,gp,0x1
+800005c8: 0011e193 ori gp,gp,1
+800005cc: 00000073 ecall
+
+800005d0 <pass>:
+800005d0: 0ff0000f fence
+800005d4: 00100193 li gp,1
+800005d8: 00000073 ecall
+800005dc: c0001073 unimp
+800005e0: 0000 unimp
+800005e2: 0000 unimp
+800005e4: 0000 unimp
+800005e6: 0000 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32ui-p-xor.elf b/test/riscv-tests/rv32ui-p-xor.elf
new file mode 100644
index 0000000..1fcbf5b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-xor.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-p-xori.dump b/test/riscv-tests/rv32ui-p-xori.dump
new file mode 100644
index 0000000..59e75ae
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-xori.dump
@@ -0,0 +1,238 @@
+
+rv32ui-p-xori: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00ff10b7 lui ra,0xff1
+80000100: f0008093 addi ra,ra,-256 # ff0f00 <_start-0x7f00f100>
+80000104: f0f0cf13 xori t5,ra,-241
+80000108: ff00feb7 lui t4,0xff00f
+8000010c: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f00d00f>
+80000110: 00200193 li gp,2
+80000114: 1ddf1663 bne t5,t4,800002e0 <fail>
+
+80000118 <test_3>:
+80000118: 0ff010b7 lui ra,0xff01
+8000011c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000120: 0f00cf13 xori t5,ra,240
+80000124: 0ff01eb7 lui t4,0xff01
+80000128: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100>
+8000012c: 00300193 li gp,3
+80000130: 1bdf1863 bne t5,t4,800002e0 <fail>
+
+80000134 <test_4>:
+80000134: 00ff10b7 lui ra,0xff1
+80000138: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701>
+8000013c: 70f0cf13 xori t5,ra,1807
+80000140: 00ff1eb7 lui t4,0xff1
+80000144: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010>
+80000148: 00400193 li gp,4
+8000014c: 19df1a63 bne t5,t4,800002e0 <fail>
+
+80000150 <test_5>:
+80000150: f00ff0b7 lui ra,0xf00ff
+80000154: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+80000158: 0f00cf13 xori t5,ra,240
+8000015c: f00ffeb7 lui t4,0xf00ff
+80000160: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff>
+80000164: 00500193 li gp,5
+80000168: 17df1c63 bne t5,t4,800002e0 <fail>
+
+8000016c <test_6>:
+8000016c: ff00f0b7 lui ra,0xff00f
+80000170: 70008093 addi ra,ra,1792 # ff00f700 <_end+0x7f00d700>
+80000174: 70f0c093 xori ra,ra,1807
+80000178: ff00feb7 lui t4,0xff00f
+8000017c: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f00d00f>
+80000180: 00600193 li gp,6
+80000184: 15d09e63 bne ra,t4,800002e0 <fail>
+
+80000188 <test_7>:
+80000188: 00000213 li tp,0
+8000018c: 0ff010b7 lui ra,0xff01
+80000190: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000194: 0f00cf13 xori t5,ra,240
+80000198: 000f0313 mv t1,t5
+8000019c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001a0: 00200293 li t0,2
+800001a4: fe5214e3 bne tp,t0,8000018c <test_7+0x4>
+800001a8: 0ff01eb7 lui t4,0xff01
+800001ac: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100>
+800001b0: 00700193 li gp,7
+800001b4: 13d31663 bne t1,t4,800002e0 <fail>
+
+800001b8 <test_8>:
+800001b8: 00000213 li tp,0
+800001bc: 00ff10b7 lui ra,0xff1
+800001c0: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701>
+800001c4: 70f0cf13 xori t5,ra,1807
+800001c8: 00000013 nop
+800001cc: 000f0313 mv t1,t5
+800001d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800001d4: 00200293 li t0,2
+800001d8: fe5212e3 bne tp,t0,800001bc <test_8+0x4>
+800001dc: 00ff1eb7 lui t4,0xff1
+800001e0: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010>
+800001e4: 00800193 li gp,8
+800001e8: 0fd31c63 bne t1,t4,800002e0 <fail>
+
+800001ec <test_9>:
+800001ec: 00000213 li tp,0
+800001f0: f00ff0b7 lui ra,0xf00ff
+800001f4: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+800001f8: 0f00cf13 xori t5,ra,240
+800001fc: 00000013 nop
+80000200: 00000013 nop
+80000204: 000f0313 mv t1,t5
+80000208: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000020c: 00200293 li t0,2
+80000210: fe5210e3 bne tp,t0,800001f0 <test_9+0x4>
+80000214: f00ffeb7 lui t4,0xf00ff
+80000218: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff>
+8000021c: 00900193 li gp,9
+80000220: 0dd31063 bne t1,t4,800002e0 <fail>
+
+80000224 <test_10>:
+80000224: 00000213 li tp,0
+80000228: 0ff010b7 lui ra,0xff01
+8000022c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80000230: 0f00cf13 xori t5,ra,240
+80000234: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000238: 00200293 li t0,2
+8000023c: fe5216e3 bne tp,t0,80000228 <test_10+0x4>
+80000240: 0ff01eb7 lui t4,0xff01
+80000244: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100>
+80000248: 00a00193 li gp,10
+8000024c: 09df1a63 bne t5,t4,800002e0 <fail>
+
+80000250 <test_11>:
+80000250: 00000213 li tp,0
+80000254: 00ff10b7 lui ra,0xff1
+80000258: fff08093 addi ra,ra,-1 # ff0fff <_start-0x7f00f001>
+8000025c: 00000013 nop
+80000260: 00f0cf13 xori t5,ra,15
+80000264: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000268: 00200293 li t0,2
+8000026c: fe5214e3 bne tp,t0,80000254 <test_11+0x4>
+80000270: 00ff1eb7 lui t4,0xff1
+80000274: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010>
+80000278: 00b00193 li gp,11
+8000027c: 07df1263 bne t5,t4,800002e0 <fail>
+
+80000280 <test_12>:
+80000280: 00000213 li tp,0
+80000284: f00ff0b7 lui ra,0xf00ff
+80000288: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700fd00f>
+8000028c: 00000013 nop
+80000290: 00000013 nop
+80000294: 0f00cf13 xori t5,ra,240
+80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000029c: 00200293 li t0,2
+800002a0: fe5212e3 bne tp,t0,80000284 <test_12+0x4>
+800002a4: f00ffeb7 lui t4,0xf00ff
+800002a8: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700fd0ff>
+800002ac: 00c00193 li gp,12
+800002b0: 03df1863 bne t5,t4,800002e0 <fail>
+
+800002b4 <test_13>:
+800002b4: 0f004093 xori ra,zero,240
+800002b8: 0f000e93 li t4,240
+800002bc: 00d00193 li gp,13
+800002c0: 03d09063 bne ra,t4,800002e0 <fail>
+
+800002c4 <test_14>:
+800002c4: 00ff00b7 lui ra,0xff0
+800002c8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+800002cc: 70f0c013 xori zero,ra,1807
+800002d0: 00000e93 li t4,0
+800002d4: 00e00193 li gp,14
+800002d8: 01d01463 bne zero,t4,800002e0 <fail>
+800002dc: 00301c63 bne zero,gp,800002f4 <pass>
+
+800002e0 <fail>:
+800002e0: 0ff0000f fence
+800002e4: 00018063 beqz gp,800002e4 <fail+0x4>
+800002e8: 00119193 slli gp,gp,0x1
+800002ec: 0011e193 ori gp,gp,1
+800002f0: 00000073 ecall
+
+800002f4 <pass>:
+800002f4: 0ff0000f fence
+800002f8: 00100193 li gp,1
+800002fc: 00000073 ecall
+80000300: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-p-xori.elf b/test/riscv-tests/rv32ui-p-xori.elf
new file mode 100644
index 0000000..34f8717
--- /dev/null
+++ b/test/riscv-tests/rv32ui-p-xori.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-add.dump b/test/riscv-tests/rv32ui-v-add.dump
new file mode 100644
index 0000000..50324a6
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-add.dump
@@ -0,0 +1,1294 @@
+
+rv32ui-v-add: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: c1458593 addi a1,a1,-1004 # 800030dc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c3058593 addi a1,a1,-976 # 80003168 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bdc58593 addi a1,a1,-1060 # 80003180 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: b1058593 addi a1,a1,-1264 # 80003120 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: b0058593 addi a1,a1,-1280 # 80003248 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a6858593 addi a1,a1,-1432 # 80003224 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 96460613 addi a2,a2,-1692 # 80003274 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 87460613 addi a2,a2,-1932 # 800031f0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7f460613 addi a2,a2,2036 # 800031bc <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03100793 li a5,49
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0db0b7b7 lui a5,0xdb0b
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 65278793 addi a5,a5,1618 # db0b652 <_start-0x724f49ae>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 00208f33 add t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4ddf1663 bne t5,t4,800030c0 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 00208f33 add t5,ra,sp
+80002c04: 00200e93 li t4,2
+80002c08: 00300193 li gp,3
+80002c0c: 4bdf1a63 bne t5,t4,800030c0 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 00208f33 add t5,ra,sp
+80002c1c: 00a00e93 li t4,10
+80002c20: 00400193 li gp,4
+80002c24: 49df1e63 bne t5,t4,800030c0 <fail>
+
+80002c28 <test_5>:
+80002c28: 00000093 li ra,0
+80002c2c: ffff8137 lui sp,0xffff8
+80002c30: 00208f33 add t5,ra,sp
+80002c34: ffff8eb7 lui t4,0xffff8
+80002c38: 00500193 li gp,5
+80002c3c: 49df1263 bne t5,t4,800030c0 <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00000113 li sp,0
+80002c48: 00208f33 add t5,ra,sp
+80002c4c: 80000eb7 lui t4,0x80000
+80002c50: 00600193 li gp,6
+80002c54: 47df1663 bne t5,t4,800030c0 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: ffff8137 lui sp,0xffff8
+80002c60: 00208f33 add t5,ra,sp
+80002c64: 7fff8eb7 lui t4,0x7fff8
+80002c68: 00700193 li gp,7
+80002c6c: 45df1a63 bne t5,t4,800030c0 <fail>
+
+80002c70 <test_8>:
+80002c70: 00000093 li ra,0
+80002c74: 00008137 lui sp,0x8
+80002c78: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002c7c: 00208f33 add t5,ra,sp
+80002c80: 00008eb7 lui t4,0x8
+80002c84: fffe8e93 addi t4,t4,-1 # 7fff <_start-0x7fff8001>
+80002c88: 00800193 li gp,8
+80002c8c: 43df1a63 bne t5,t4,800030c0 <fail>
+
+80002c90 <test_9>:
+80002c90: 800000b7 lui ra,0x80000
+80002c94: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c98: 00000113 li sp,0
+80002c9c: 00208f33 add t5,ra,sp
+80002ca0: 80000eb7 lui t4,0x80000
+80002ca4: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002ca8: 00900193 li gp,9
+80002cac: 41df1a63 bne t5,t4,800030c0 <fail>
+
+80002cb0 <test_10>:
+80002cb0: 800000b7 lui ra,0x80000
+80002cb4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cb8: 00008137 lui sp,0x8
+80002cbc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cc0: 00208f33 add t5,ra,sp
+80002cc4: 80008eb7 lui t4,0x80008
+80002cc8: ffee8e93 addi t4,t4,-2 # 80007ffe <_end+0x1c06>
+80002ccc: 00a00193 li gp,10
+80002cd0: 3fdf1863 bne t5,t4,800030c0 <fail>
+
+80002cd4 <test_11>:
+80002cd4: 800000b7 lui ra,0x80000
+80002cd8: 00008137 lui sp,0x8
+80002cdc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002ce0: 00208f33 add t5,ra,sp
+80002ce4: 80008eb7 lui t4,0x80008
+80002ce8: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x1c07>
+80002cec: 00b00193 li gp,11
+80002cf0: 3ddf1863 bne t5,t4,800030c0 <fail>
+
+80002cf4 <test_12>:
+80002cf4: 800000b7 lui ra,0x80000
+80002cf8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cfc: ffff8137 lui sp,0xffff8
+80002d00: 00208f33 add t5,ra,sp
+80002d04: 7fff8eb7 lui t4,0x7fff8
+80002d08: fffe8e93 addi t4,t4,-1 # 7fff7fff <_start-0x8001>
+80002d0c: 00c00193 li gp,12
+80002d10: 3bdf1863 bne t5,t4,800030c0 <fail>
+
+80002d14 <test_13>:
+80002d14: 00000093 li ra,0
+80002d18: fff00113 li sp,-1
+80002d1c: 00208f33 add t5,ra,sp
+80002d20: fff00e93 li t4,-1
+80002d24: 00d00193 li gp,13
+80002d28: 39df1c63 bne t5,t4,800030c0 <fail>
+
+80002d2c <test_14>:
+80002d2c: fff00093 li ra,-1
+80002d30: 00100113 li sp,1
+80002d34: 00208f33 add t5,ra,sp
+80002d38: 00000e93 li t4,0
+80002d3c: 00e00193 li gp,14
+80002d40: 39df1063 bne t5,t4,800030c0 <fail>
+
+80002d44 <test_15>:
+80002d44: fff00093 li ra,-1
+80002d48: fff00113 li sp,-1
+80002d4c: 00208f33 add t5,ra,sp
+80002d50: ffe00e93 li t4,-2
+80002d54: 00f00193 li gp,15
+80002d58: 37df1463 bne t5,t4,800030c0 <fail>
+
+80002d5c <test_16>:
+80002d5c: 00100093 li ra,1
+80002d60: 80000137 lui sp,0x80000
+80002d64: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffff9c07>
+80002d68: 00208f33 add t5,ra,sp
+80002d6c: 80000eb7 lui t4,0x80000
+80002d70: 01000193 li gp,16
+80002d74: 35df1663 bne t5,t4,800030c0 <fail>
+
+80002d78 <test_17>:
+80002d78: 00d00093 li ra,13
+80002d7c: 00b00113 li sp,11
+80002d80: 002080b3 add ra,ra,sp
+80002d84: 01800e93 li t4,24
+80002d88: 01100193 li gp,17
+80002d8c: 33d09a63 bne ra,t4,800030c0 <fail>
+
+80002d90 <test_18>:
+80002d90: 00e00093 li ra,14
+80002d94: 00b00113 li sp,11
+80002d98: 00208133 add sp,ra,sp
+80002d9c: 01900e93 li t4,25
+80002da0: 01200193 li gp,18
+80002da4: 31d11e63 bne sp,t4,800030c0 <fail>
+
+80002da8 <test_19>:
+80002da8: 00d00093 li ra,13
+80002dac: 001080b3 add ra,ra,ra
+80002db0: 01a00e93 li t4,26
+80002db4: 01300193 li gp,19
+80002db8: 31d09463 bne ra,t4,800030c0 <fail>
+
+80002dbc <test_20>:
+80002dbc: 00000213 li tp,0
+80002dc0: 00d00093 li ra,13
+80002dc4: 00b00113 li sp,11
+80002dc8: 00208f33 add t5,ra,sp
+80002dcc: 000f0313 mv t1,t5
+80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd4: 00200293 li t0,2
+80002dd8: fe5214e3 bne tp,t0,80002dc0 <test_20+0x4>
+80002ddc: 01800e93 li t4,24
+80002de0: 01400193 li gp,20
+80002de4: 2dd31e63 bne t1,t4,800030c0 <fail>
+
+80002de8 <test_21>:
+80002de8: 00000213 li tp,0
+80002dec: 00e00093 li ra,14
+80002df0: 00b00113 li sp,11
+80002df4: 00208f33 add t5,ra,sp
+80002df8: 00000013 nop
+80002dfc: 000f0313 mv t1,t5
+80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e04: 00200293 li t0,2
+80002e08: fe5212e3 bne tp,t0,80002dec <test_21+0x4>
+80002e0c: 01900e93 li t4,25
+80002e10: 01500193 li gp,21
+80002e14: 2bd31663 bne t1,t4,800030c0 <fail>
+
+80002e18 <test_22>:
+80002e18: 00000213 li tp,0
+80002e1c: 00f00093 li ra,15
+80002e20: 00b00113 li sp,11
+80002e24: 00208f33 add t5,ra,sp
+80002e28: 00000013 nop
+80002e2c: 00000013 nop
+80002e30: 000f0313 mv t1,t5
+80002e34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e38: 00200293 li t0,2
+80002e3c: fe5210e3 bne tp,t0,80002e1c <test_22+0x4>
+80002e40: 01a00e93 li t4,26
+80002e44: 01600193 li gp,22
+80002e48: 27d31c63 bne t1,t4,800030c0 <fail>
+
+80002e4c <test_23>:
+80002e4c: 00000213 li tp,0
+80002e50: 00d00093 li ra,13
+80002e54: 00b00113 li sp,11
+80002e58: 00208f33 add t5,ra,sp
+80002e5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e60: 00200293 li t0,2
+80002e64: fe5216e3 bne tp,t0,80002e50 <test_23+0x4>
+80002e68: 01800e93 li t4,24
+80002e6c: 01700193 li gp,23
+80002e70: 25df1863 bne t5,t4,800030c0 <fail>
+
+80002e74 <test_24>:
+80002e74: 00000213 li tp,0
+80002e78: 00e00093 li ra,14
+80002e7c: 00b00113 li sp,11
+80002e80: 00000013 nop
+80002e84: 00208f33 add t5,ra,sp
+80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e8c: 00200293 li t0,2
+80002e90: fe5214e3 bne tp,t0,80002e78 <test_24+0x4>
+80002e94: 01900e93 li t4,25
+80002e98: 01800193 li gp,24
+80002e9c: 23df1263 bne t5,t4,800030c0 <fail>
+
+80002ea0 <test_25>:
+80002ea0: 00000213 li tp,0
+80002ea4: 00f00093 li ra,15
+80002ea8: 00b00113 li sp,11
+80002eac: 00000013 nop
+80002eb0: 00000013 nop
+80002eb4: 00208f33 add t5,ra,sp
+80002eb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ebc: 00200293 li t0,2
+80002ec0: fe5212e3 bne tp,t0,80002ea4 <test_25+0x4>
+80002ec4: 01a00e93 li t4,26
+80002ec8: 01900193 li gp,25
+80002ecc: 1fdf1a63 bne t5,t4,800030c0 <fail>
+
+80002ed0 <test_26>:
+80002ed0: 00000213 li tp,0
+80002ed4: 00d00093 li ra,13
+80002ed8: 00000013 nop
+80002edc: 00b00113 li sp,11
+80002ee0: 00208f33 add t5,ra,sp
+80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ee8: 00200293 li t0,2
+80002eec: fe5214e3 bne tp,t0,80002ed4 <test_26+0x4>
+80002ef0: 01800e93 li t4,24
+80002ef4: 01a00193 li gp,26
+80002ef8: 1ddf1463 bne t5,t4,800030c0 <fail>
+
+80002efc <test_27>:
+80002efc: 00000213 li tp,0
+80002f00: 00e00093 li ra,14
+80002f04: 00000013 nop
+80002f08: 00b00113 li sp,11
+80002f0c: 00000013 nop
+80002f10: 00208f33 add t5,ra,sp
+80002f14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f18: 00200293 li t0,2
+80002f1c: fe5212e3 bne tp,t0,80002f00 <test_27+0x4>
+80002f20: 01900e93 li t4,25
+80002f24: 01b00193 li gp,27
+80002f28: 19df1c63 bne t5,t4,800030c0 <fail>
+
+80002f2c <test_28>:
+80002f2c: 00000213 li tp,0
+80002f30: 00f00093 li ra,15
+80002f34: 00000013 nop
+80002f38: 00000013 nop
+80002f3c: 00b00113 li sp,11
+80002f40: 00208f33 add t5,ra,sp
+80002f44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f48: 00200293 li t0,2
+80002f4c: fe5212e3 bne tp,t0,80002f30 <test_28+0x4>
+80002f50: 01a00e93 li t4,26
+80002f54: 01c00193 li gp,28
+80002f58: 17df1463 bne t5,t4,800030c0 <fail>
+
+80002f5c <test_29>:
+80002f5c: 00000213 li tp,0
+80002f60: 00b00113 li sp,11
+80002f64: 00d00093 li ra,13
+80002f68: 00208f33 add t5,ra,sp
+80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f70: 00200293 li t0,2
+80002f74: fe5216e3 bne tp,t0,80002f60 <test_29+0x4>
+80002f78: 01800e93 li t4,24
+80002f7c: 01d00193 li gp,29
+80002f80: 15df1063 bne t5,t4,800030c0 <fail>
+
+80002f84 <test_30>:
+80002f84: 00000213 li tp,0
+80002f88: 00b00113 li sp,11
+80002f8c: 00e00093 li ra,14
+80002f90: 00000013 nop
+80002f94: 00208f33 add t5,ra,sp
+80002f98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f9c: 00200293 li t0,2
+80002fa0: fe5214e3 bne tp,t0,80002f88 <test_30+0x4>
+80002fa4: 01900e93 li t4,25
+80002fa8: 01e00193 li gp,30
+80002fac: 11df1a63 bne t5,t4,800030c0 <fail>
+
+80002fb0 <test_31>:
+80002fb0: 00000213 li tp,0
+80002fb4: 00b00113 li sp,11
+80002fb8: 00f00093 li ra,15
+80002fbc: 00000013 nop
+80002fc0: 00000013 nop
+80002fc4: 00208f33 add t5,ra,sp
+80002fc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fcc: 00200293 li t0,2
+80002fd0: fe5212e3 bne tp,t0,80002fb4 <test_31+0x4>
+80002fd4: 01a00e93 li t4,26
+80002fd8: 01f00193 li gp,31
+80002fdc: 0fdf1263 bne t5,t4,800030c0 <fail>
+
+80002fe0 <test_32>:
+80002fe0: 00000213 li tp,0
+80002fe4: 00b00113 li sp,11
+80002fe8: 00000013 nop
+80002fec: 00d00093 li ra,13
+80002ff0: 00208f33 add t5,ra,sp
+80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ff8: 00200293 li t0,2
+80002ffc: fe5214e3 bne tp,t0,80002fe4 <test_32+0x4>
+80003000: 01800e93 li t4,24
+80003004: 02000193 li gp,32
+80003008: 0bdf1c63 bne t5,t4,800030c0 <fail>
+
+8000300c <test_33>:
+8000300c: 00000213 li tp,0
+80003010: 00b00113 li sp,11
+80003014: 00000013 nop
+80003018: 00e00093 li ra,14
+8000301c: 00000013 nop
+80003020: 00208f33 add t5,ra,sp
+80003024: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003028: 00200293 li t0,2
+8000302c: fe5212e3 bne tp,t0,80003010 <test_33+0x4>
+80003030: 01900e93 li t4,25
+80003034: 02100193 li gp,33
+80003038: 09df1463 bne t5,t4,800030c0 <fail>
+
+8000303c <test_34>:
+8000303c: 00000213 li tp,0
+80003040: 00b00113 li sp,11
+80003044: 00000013 nop
+80003048: 00000013 nop
+8000304c: 00f00093 li ra,15
+80003050: 00208f33 add t5,ra,sp
+80003054: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003058: 00200293 li t0,2
+8000305c: fe5212e3 bne tp,t0,80003040 <test_34+0x4>
+80003060: 01a00e93 li t4,26
+80003064: 02200193 li gp,34
+80003068: 05df1c63 bne t5,t4,800030c0 <fail>
+
+8000306c <test_35>:
+8000306c: 00f00093 li ra,15
+80003070: 00100133 add sp,zero,ra
+80003074: 00f00e93 li t4,15
+80003078: 02300193 li gp,35
+8000307c: 05d11263 bne sp,t4,800030c0 <fail>
+
+80003080 <test_36>:
+80003080: 02000093 li ra,32
+80003084: 00008133 add sp,ra,zero
+80003088: 02000e93 li t4,32
+8000308c: 02400193 li gp,36
+80003090: 03d11863 bne sp,t4,800030c0 <fail>
+
+80003094 <test_37>:
+80003094: 000000b3 add ra,zero,zero
+80003098: 00000e93 li t4,0
+8000309c: 02500193 li gp,37
+800030a0: 03d09063 bne ra,t4,800030c0 <fail>
+
+800030a4 <test_38>:
+800030a4: 01000093 li ra,16
+800030a8: 01e00113 li sp,30
+800030ac: 00208033 add zero,ra,sp
+800030b0: 00000e93 li t4,0
+800030b4: 02600193 li gp,38
+800030b8: 01d01463 bne zero,t4,800030c0 <fail>
+800030bc: 00301a63 bne zero,gp,800030d0 <pass>
+
+800030c0 <fail>:
+800030c0: 00119513 slli a0,gp,0x1
+800030c4: 00050063 beqz a0,800030c4 <fail+0x4>
+800030c8: 00156513 ori a0,a0,1
+800030cc: 00000073 ecall
+
+800030d0 <pass>:
+800030d0: 00100513 li a0,1
+800030d4: 00000073 ecall
+800030d8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-add.elf b/test/riscv-tests/rv32ui-v-add.elf
new file mode 100644
index 0000000..bb0f908
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-add.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-addi.dump b/test/riscv-tests/rv32ui-v-addi.dump
new file mode 100644
index 0000000..35b1348
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-addi.dump
@@ -0,0 +1,1118 @@
+
+rv32ui-v-addi: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9bc58593 addi a1,a1,-1604 # 80002e84 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9d858593 addi a1,a1,-1576 # 80002f10 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 98458593 addi a1,a1,-1660 # 80002f28 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8b858593 addi a1,a1,-1864 # 80002ec8 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8a858593 addi a1,a1,-1880 # 80002ff0 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 81058593 addi a1,a1,-2032 # 80002fcc <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 70c60613 addi a2,a2,1804 # 8000301c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 61c60613 addi a2,a2,1564 # 80002f98 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 59c60613 addi a2,a2,1436 # 80002f64 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00800793 li a5,8
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0d24a7b7 lui a5,0xd24a
+80002b9c: 00080637 lui a2,0x80
+80002ba0: c3678793 addi a5,a5,-970 # d249c36 <_start-0x72db63ca>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00008f13 mv t5,ra
+80002be8: 00000e93 li t4,0
+80002bec: 00200193 li gp,2
+80002bf0: 27df1c63 bne t5,t4,80002e68 <fail>
+
+80002bf4 <test_3>:
+80002bf4: 00100093 li ra,1
+80002bf8: 00108f13 addi t5,ra,1
+80002bfc: 00200e93 li t4,2
+80002c00: 00300193 li gp,3
+80002c04: 27df1263 bne t5,t4,80002e68 <fail>
+
+80002c08 <test_4>:
+80002c08: 00300093 li ra,3
+80002c0c: 00708f13 addi t5,ra,7
+80002c10: 00a00e93 li t4,10
+80002c14: 00400193 li gp,4
+80002c18: 25df1863 bne t5,t4,80002e68 <fail>
+
+80002c1c <test_5>:
+80002c1c: 00000093 li ra,0
+80002c20: 80008f13 addi t5,ra,-2048
+80002c24: 80000e93 li t4,-2048
+80002c28: 00500193 li gp,5
+80002c2c: 23df1e63 bne t5,t4,80002e68 <fail>
+
+80002c30 <test_6>:
+80002c30: 800000b7 lui ra,0x80000
+80002c34: 00008f13 mv t5,ra
+80002c38: 80000eb7 lui t4,0x80000
+80002c3c: 00600193 li gp,6
+80002c40: 23df1463 bne t5,t4,80002e68 <fail>
+
+80002c44 <test_7>:
+80002c44: 800000b7 lui ra,0x80000
+80002c48: 80008f13 addi t5,ra,-2048 # 7ffff800 <_end+0xffff9408>
+80002c4c: 80000eb7 lui t4,0x80000
+80002c50: 800e8e93 addi t4,t4,-2048 # 7ffff800 <_end+0xffff9408>
+80002c54: 00700193 li gp,7
+80002c58: 21df1863 bne t5,t4,80002e68 <fail>
+
+80002c5c <test_8>:
+80002c5c: 00000093 li ra,0
+80002c60: 7ff08f13 addi t5,ra,2047
+80002c64: 7ff00e93 li t4,2047
+80002c68: 00800193 li gp,8
+80002c6c: 1fdf1e63 bne t5,t4,80002e68 <fail>
+
+80002c70 <test_9>:
+80002c70: 800000b7 lui ra,0x80000
+80002c74: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c78: 00008f13 mv t5,ra
+80002c7c: 80000eb7 lui t4,0x80000
+80002c80: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002c84: 00900193 li gp,9
+80002c88: 1fdf1063 bne t5,t4,80002e68 <fail>
+
+80002c8c <test_10>:
+80002c8c: 800000b7 lui ra,0x80000
+80002c90: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c94: 7ff08f13 addi t5,ra,2047
+80002c98: 80000eb7 lui t4,0x80000
+80002c9c: 7fee8e93 addi t4,t4,2046 # 800007fe <_end+0xffffa406>
+80002ca0: 00a00193 li gp,10
+80002ca4: 1ddf1263 bne t5,t4,80002e68 <fail>
+
+80002ca8 <test_11>:
+80002ca8: 800000b7 lui ra,0x80000
+80002cac: 7ff08f13 addi t5,ra,2047 # 800007ff <_end+0xffffa407>
+80002cb0: 80000eb7 lui t4,0x80000
+80002cb4: 7ffe8e93 addi t4,t4,2047 # 800007ff <_end+0xffffa407>
+80002cb8: 00b00193 li gp,11
+80002cbc: 1bdf1663 bne t5,t4,80002e68 <fail>
+
+80002cc0 <test_12>:
+80002cc0: 800000b7 lui ra,0x80000
+80002cc4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cc8: 80008f13 addi t5,ra,-2048
+80002ccc: 7ffffeb7 lui t4,0x7ffff
+80002cd0: 7ffe8e93 addi t4,t4,2047 # 7ffff7ff <_start-0x801>
+80002cd4: 00c00193 li gp,12
+80002cd8: 19df1863 bne t5,t4,80002e68 <fail>
+
+80002cdc <test_13>:
+80002cdc: 00000093 li ra,0
+80002ce0: fff08f13 addi t5,ra,-1
+80002ce4: fff00e93 li t4,-1
+80002ce8: 00d00193 li gp,13
+80002cec: 17df1e63 bne t5,t4,80002e68 <fail>
+
+80002cf0 <test_14>:
+80002cf0: fff00093 li ra,-1
+80002cf4: 00108f13 addi t5,ra,1
+80002cf8: 00000e93 li t4,0
+80002cfc: 00e00193 li gp,14
+80002d00: 17df1463 bne t5,t4,80002e68 <fail>
+
+80002d04 <test_15>:
+80002d04: fff00093 li ra,-1
+80002d08: fff08f13 addi t5,ra,-1
+80002d0c: ffe00e93 li t4,-2
+80002d10: 00f00193 li gp,15
+80002d14: 15df1a63 bne t5,t4,80002e68 <fail>
+
+80002d18 <test_16>:
+80002d18: 800000b7 lui ra,0x80000
+80002d1c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002d20: 00108f13 addi t5,ra,1
+80002d24: 80000eb7 lui t4,0x80000
+80002d28: 01000193 li gp,16
+80002d2c: 13df1e63 bne t5,t4,80002e68 <fail>
+
+80002d30 <test_17>:
+80002d30: 00d00093 li ra,13
+80002d34: 00b08093 addi ra,ra,11
+80002d38: 01800e93 li t4,24
+80002d3c: 01100193 li gp,17
+80002d40: 13d09463 bne ra,t4,80002e68 <fail>
+
+80002d44 <test_18>:
+80002d44: 00000213 li tp,0
+80002d48: 00d00093 li ra,13
+80002d4c: 00b08f13 addi t5,ra,11
+80002d50: 000f0313 mv t1,t5
+80002d54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d58: 00200293 li t0,2
+80002d5c: fe5216e3 bne tp,t0,80002d48 <test_18+0x4>
+80002d60: 01800e93 li t4,24
+80002d64: 01200193 li gp,18
+80002d68: 11d31063 bne t1,t4,80002e68 <fail>
+
+80002d6c <test_19>:
+80002d6c: 00000213 li tp,0
+80002d70: 00d00093 li ra,13
+80002d74: 00a08f13 addi t5,ra,10
+80002d78: 00000013 nop
+80002d7c: 000f0313 mv t1,t5
+80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d84: 00200293 li t0,2
+80002d88: fe5214e3 bne tp,t0,80002d70 <test_19+0x4>
+80002d8c: 01700e93 li t4,23
+80002d90: 01300193 li gp,19
+80002d94: 0dd31a63 bne t1,t4,80002e68 <fail>
+
+80002d98 <test_20>:
+80002d98: 00000213 li tp,0
+80002d9c: 00d00093 li ra,13
+80002da0: 00908f13 addi t5,ra,9
+80002da4: 00000013 nop
+80002da8: 00000013 nop
+80002dac: 000f0313 mv t1,t5
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5212e3 bne tp,t0,80002d9c <test_20+0x4>
+80002dbc: 01600e93 li t4,22
+80002dc0: 01400193 li gp,20
+80002dc4: 0bd31263 bne t1,t4,80002e68 <fail>
+
+80002dc8 <test_21>:
+80002dc8: 00000213 li tp,0
+80002dcc: 00d00093 li ra,13
+80002dd0: 00b08f13 addi t5,ra,11
+80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd8: 00200293 li t0,2
+80002ddc: fe5218e3 bne tp,t0,80002dcc <test_21+0x4>
+80002de0: 01800e93 li t4,24
+80002de4: 01500193 li gp,21
+80002de8: 09df1063 bne t5,t4,80002e68 <fail>
+
+80002dec <test_22>:
+80002dec: 00000213 li tp,0
+80002df0: 00d00093 li ra,13
+80002df4: 00000013 nop
+80002df8: 00a08f13 addi t5,ra,10
+80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e00: 00200293 li t0,2
+80002e04: fe5216e3 bne tp,t0,80002df0 <test_22+0x4>
+80002e08: 01700e93 li t4,23
+80002e0c: 01600193 li gp,22
+80002e10: 05df1c63 bne t5,t4,80002e68 <fail>
+
+80002e14 <test_23>:
+80002e14: 00000213 li tp,0
+80002e18: 00d00093 li ra,13
+80002e1c: 00000013 nop
+80002e20: 00000013 nop
+80002e24: 00908f13 addi t5,ra,9
+80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e2c: 00200293 li t0,2
+80002e30: fe5214e3 bne tp,t0,80002e18 <test_23+0x4>
+80002e34: 01600e93 li t4,22
+80002e38: 01700193 li gp,23
+80002e3c: 03df1663 bne t5,t4,80002e68 <fail>
+
+80002e40 <test_24>:
+80002e40: 02000093 li ra,32
+80002e44: 02000e93 li t4,32
+80002e48: 01800193 li gp,24
+80002e4c: 01d09e63 bne ra,t4,80002e68 <fail>
+
+80002e50 <test_25>:
+80002e50: 02100093 li ra,33
+80002e54: 03208013 addi zero,ra,50
+80002e58: 00000e93 li t4,0
+80002e5c: 01900193 li gp,25
+80002e60: 01d01463 bne zero,t4,80002e68 <fail>
+80002e64: 00301a63 bne zero,gp,80002e78 <pass>
+
+80002e68 <fail>:
+80002e68: 00119513 slli a0,gp,0x1
+80002e6c: 00050063 beqz a0,80002e6c <fail+0x4>
+80002e70: 00156513 ori a0,a0,1
+80002e74: 00000073 ecall
+
+80002e78 <pass>:
+80002e78: 00100513 li a0,1
+80002e7c: 00000073 ecall
+80002e80: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-addi.elf b/test/riscv-tests/rv32ui-v-addi.elf
new file mode 100644
index 0000000..e948b74
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-addi.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-and.dump b/test/riscv-tests/rv32ui-v-and.dump
new file mode 100644
index 0000000..9e787f1
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-and.dump
@@ -0,0 +1,1262 @@
+
+rv32ui-v-and: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bec58593 addi a1,a1,-1044 # 800030b4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c0858593 addi a1,a1,-1016 # 80003140 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bb458593 addi a1,a1,-1100 # 80003158 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: ae858593 addi a1,a1,-1304 # 800030f8 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ad858593 addi a1,a1,-1320 # 80003220 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a4058593 addi a1,a1,-1472 # 800031fc <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 93c60613 addi a2,a2,-1732 # 8000324c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 84c60613 addi a2,a2,-1972 # 800031c8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7cc60613 addi a2,a2,1996 # 80003194 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00b00793 li a5,11
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 07c677b7 lui a5,0x7c67
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 35c78793 addi a5,a5,860 # 7c6735c <_start-0x78398ca4>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: ff0100b7 lui ra,0xff010
+80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002be8: 0f0f1137 lui sp,0xf0f1
+80002bec: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002bf0: 0020ff33 and t5,ra,sp
+80002bf4: 0f001eb7 lui t4,0xf001
+80002bf8: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002bfc: 00200193 li gp,2
+80002c00: 49df1c63 bne t5,t4,80003098 <fail>
+
+80002c04 <test_3>:
+80002c04: 0ff010b7 lui ra,0xff01
+80002c08: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c0c: f0f0f137 lui sp,0xf0f0f
+80002c10: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002c14: 0020ff33 and t5,ra,sp
+80002c18: 00f00eb7 lui t4,0xf00
+80002c1c: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002c20: 00300193 li gp,3
+80002c24: 47df1a63 bne t5,t4,80003098 <fail>
+
+80002c28 <test_4>:
+80002c28: 00ff00b7 lui ra,0xff0
+80002c2c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002c30: 0f0f1137 lui sp,0xf0f1
+80002c34: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002c38: 0020ff33 and t5,ra,sp
+80002c3c: 000f0eb7 lui t4,0xf0
+80002c40: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80002c44: 00400193 li gp,4
+80002c48: 45df1863 bne t5,t4,80003098 <fail>
+
+80002c4c <test_5>:
+80002c4c: f00ff0b7 lui ra,0xf00ff
+80002c50: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f8c17>
+80002c54: f0f0f137 lui sp,0xf0f0f
+80002c58: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002c5c: 0020ff33 and t5,ra,sp
+80002c60: f000feb7 lui t4,0xf000f
+80002c64: 00500193 li gp,5
+80002c68: 43df1863 bne t5,t4,80003098 <fail>
+
+80002c6c <test_6>:
+80002c6c: ff0100b7 lui ra,0xff010
+80002c70: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002c74: 0f0f1137 lui sp,0xf0f1
+80002c78: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002c7c: 0020f0b3 and ra,ra,sp
+80002c80: 0f001eb7 lui t4,0xf001
+80002c84: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002c88: 00600193 li gp,6
+80002c8c: 41d09663 bne ra,t4,80003098 <fail>
+
+80002c90 <test_7>:
+80002c90: 0ff010b7 lui ra,0xff01
+80002c94: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c98: f0f0f137 lui sp,0xf0f0f
+80002c9c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002ca0: 0020f133 and sp,ra,sp
+80002ca4: 00f00eb7 lui t4,0xf00
+80002ca8: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002cac: 00700193 li gp,7
+80002cb0: 3fd11463 bne sp,t4,80003098 <fail>
+
+80002cb4 <test_8>:
+80002cb4: ff0100b7 lui ra,0xff010
+80002cb8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002cbc: 0010f0b3 and ra,ra,ra
+80002cc0: ff010eb7 lui t4,0xff010
+80002cc4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002cc8: 00800193 li gp,8
+80002ccc: 3dd09663 bne ra,t4,80003098 <fail>
+
+80002cd0 <test_9>:
+80002cd0: 00000213 li tp,0
+80002cd4: ff0100b7 lui ra,0xff010
+80002cd8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002cdc: 0f0f1137 lui sp,0xf0f1
+80002ce0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ce4: 0020ff33 and t5,ra,sp
+80002ce8: 000f0313 mv t1,t5
+80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cf0: 00200293 li t0,2
+80002cf4: fe5210e3 bne tp,t0,80002cd4 <test_9+0x4>
+80002cf8: 0f001eb7 lui t4,0xf001
+80002cfc: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002d00: 00900193 li gp,9
+80002d04: 39d31a63 bne t1,t4,80003098 <fail>
+
+80002d08 <test_10>:
+80002d08: 00000213 li tp,0
+80002d0c: 0ff010b7 lui ra,0xff01
+80002d10: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002d14: f0f0f137 lui sp,0xf0f0f
+80002d18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002d1c: 0020ff33 and t5,ra,sp
+80002d20: 00000013 nop
+80002d24: 000f0313 mv t1,t5
+80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d2c: 00200293 li t0,2
+80002d30: fc521ee3 bne tp,t0,80002d0c <test_10+0x4>
+80002d34: 00f00eb7 lui t4,0xf00
+80002d38: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002d3c: 00a00193 li gp,10
+80002d40: 35d31c63 bne t1,t4,80003098 <fail>
+
+80002d44 <test_11>:
+80002d44: 00000213 li tp,0
+80002d48: 00ff00b7 lui ra,0xff0
+80002d4c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002d50: 0f0f1137 lui sp,0xf0f1
+80002d54: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002d58: 0020ff33 and t5,ra,sp
+80002d5c: 00000013 nop
+80002d60: 00000013 nop
+80002d64: 000f0313 mv t1,t5
+80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d6c: 00200293 li t0,2
+80002d70: fc521ce3 bne tp,t0,80002d48 <test_11+0x4>
+80002d74: 000f0eb7 lui t4,0xf0
+80002d78: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80002d7c: 00b00193 li gp,11
+80002d80: 31d31c63 bne t1,t4,80003098 <fail>
+
+80002d84 <test_12>:
+80002d84: 00000213 li tp,0
+80002d88: ff0100b7 lui ra,0xff010
+80002d8c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002d90: 0f0f1137 lui sp,0xf0f1
+80002d94: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002d98: 0020ff33 and t5,ra,sp
+80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da0: 00200293 li t0,2
+80002da4: fe5212e3 bne tp,t0,80002d88 <test_12+0x4>
+80002da8: 0f001eb7 lui t4,0xf001
+80002dac: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002db0: 00c00193 li gp,12
+80002db4: 2fdf1263 bne t5,t4,80003098 <fail>
+
+80002db8 <test_13>:
+80002db8: 00000213 li tp,0
+80002dbc: 0ff010b7 lui ra,0xff01
+80002dc0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002dc4: f0f0f137 lui sp,0xf0f0f
+80002dc8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002dcc: 00000013 nop
+80002dd0: 0020ff33 and t5,ra,sp
+80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd8: 00200293 li t0,2
+80002ddc: fe5210e3 bne tp,t0,80002dbc <test_13+0x4>
+80002de0: 00f00eb7 lui t4,0xf00
+80002de4: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002de8: 00d00193 li gp,13
+80002dec: 2bdf1663 bne t5,t4,80003098 <fail>
+
+80002df0 <test_14>:
+80002df0: 00000213 li tp,0
+80002df4: 00ff00b7 lui ra,0xff0
+80002df8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002dfc: 0f0f1137 lui sp,0xf0f1
+80002e00: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002e04: 00000013 nop
+80002e08: 00000013 nop
+80002e0c: 0020ff33 and t5,ra,sp
+80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e14: 00200293 li t0,2
+80002e18: fc521ee3 bne tp,t0,80002df4 <test_14+0x4>
+80002e1c: 000f0eb7 lui t4,0xf0
+80002e20: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80002e24: 00e00193 li gp,14
+80002e28: 27df1863 bne t5,t4,80003098 <fail>
+
+80002e2c <test_15>:
+80002e2c: 00000213 li tp,0
+80002e30: ff0100b7 lui ra,0xff010
+80002e34: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002e38: 00000013 nop
+80002e3c: 0f0f1137 lui sp,0xf0f1
+80002e40: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002e44: 0020ff33 and t5,ra,sp
+80002e48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e4c: 00200293 li t0,2
+80002e50: fe5210e3 bne tp,t0,80002e30 <test_15+0x4>
+80002e54: 0f001eb7 lui t4,0xf001
+80002e58: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002e5c: 00f00193 li gp,15
+80002e60: 23df1c63 bne t5,t4,80003098 <fail>
+
+80002e64 <test_16>:
+80002e64: 00000213 li tp,0
+80002e68: 0ff010b7 lui ra,0xff01
+80002e6c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002e70: 00000013 nop
+80002e74: f0f0f137 lui sp,0xf0f0f
+80002e78: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002e7c: 00000013 nop
+80002e80: 0020ff33 and t5,ra,sp
+80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e88: 00200293 li t0,2
+80002e8c: fc521ee3 bne tp,t0,80002e68 <test_16+0x4>
+80002e90: 00f00eb7 lui t4,0xf00
+80002e94: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002e98: 01000193 li gp,16
+80002e9c: 1fdf1e63 bne t5,t4,80003098 <fail>
+
+80002ea0 <test_17>:
+80002ea0: 00000213 li tp,0
+80002ea4: 00ff00b7 lui ra,0xff0
+80002ea8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002eac: 00000013 nop
+80002eb0: 00000013 nop
+80002eb4: 0f0f1137 lui sp,0xf0f1
+80002eb8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ebc: 0020ff33 and t5,ra,sp
+80002ec0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ec4: 00200293 li t0,2
+80002ec8: fc521ee3 bne tp,t0,80002ea4 <test_17+0x4>
+80002ecc: 000f0eb7 lui t4,0xf0
+80002ed0: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80002ed4: 01100193 li gp,17
+80002ed8: 1ddf1063 bne t5,t4,80003098 <fail>
+
+80002edc <test_18>:
+80002edc: 00000213 li tp,0
+80002ee0: 0f0f1137 lui sp,0xf0f1
+80002ee4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ee8: ff0100b7 lui ra,0xff010
+80002eec: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002ef0: 0020ff33 and t5,ra,sp
+80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ef8: 00200293 li t0,2
+80002efc: fe5212e3 bne tp,t0,80002ee0 <test_18+0x4>
+80002f00: 0f001eb7 lui t4,0xf001
+80002f04: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002f08: 01200193 li gp,18
+80002f0c: 19df1663 bne t5,t4,80003098 <fail>
+
+80002f10 <test_19>:
+80002f10: 00000213 li tp,0
+80002f14: f0f0f137 lui sp,0xf0f0f
+80002f18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002f1c: 0ff010b7 lui ra,0xff01
+80002f20: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002f24: 00000013 nop
+80002f28: 0020ff33 and t5,ra,sp
+80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f30: 00200293 li t0,2
+80002f34: fe5210e3 bne tp,t0,80002f14 <test_19+0x4>
+80002f38: 00f00eb7 lui t4,0xf00
+80002f3c: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002f40: 01300193 li gp,19
+80002f44: 15df1a63 bne t5,t4,80003098 <fail>
+
+80002f48 <test_20>:
+80002f48: 00000213 li tp,0
+80002f4c: 0f0f1137 lui sp,0xf0f1
+80002f50: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002f54: 00ff00b7 lui ra,0xff0
+80002f58: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002f5c: 00000013 nop
+80002f60: 00000013 nop
+80002f64: 0020ff33 and t5,ra,sp
+80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f6c: 00200293 li t0,2
+80002f70: fc521ee3 bne tp,t0,80002f4c <test_20+0x4>
+80002f74: 000f0eb7 lui t4,0xf0
+80002f78: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+80002f7c: 01400193 li gp,20
+80002f80: 11df1c63 bne t5,t4,80003098 <fail>
+
+80002f84 <test_21>:
+80002f84: 00000213 li tp,0
+80002f88: 0f0f1137 lui sp,0xf0f1
+80002f8c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002f90: 00000013 nop
+80002f94: ff0100b7 lui ra,0xff010
+80002f98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002f9c: 0020ff33 and t5,ra,sp
+80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa4: 00200293 li t0,2
+80002fa8: fe5210e3 bne tp,t0,80002f88 <test_21+0x4>
+80002fac: 0f001eb7 lui t4,0xf001
+80002fb0: f00e8e93 addi t4,t4,-256 # f000f00 <_start-0x70fff100>
+80002fb4: 01500193 li gp,21
+80002fb8: 0fdf1063 bne t5,t4,80003098 <fail>
+
+80002fbc <test_22>:
+80002fbc: 00000213 li tp,0
+80002fc0: f0f0f137 lui sp,0xf0f0f
+80002fc4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002fc8: 00000013 nop
+80002fcc: 0ff010b7 lui ra,0xff01
+80002fd0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002fd4: 00000013 nop
+80002fd8: 0020ff33 and t5,ra,sp
+80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe0: 00200293 li t0,2
+80002fe4: fc521ee3 bne tp,t0,80002fc0 <test_22+0x4>
+80002fe8: 00f00eb7 lui t4,0xf00
+80002fec: 0f0e8e93 addi t4,t4,240 # f000f0 <_start-0x7f0fff10>
+80002ff0: 01600193 li gp,22
+80002ff4: 0bdf1263 bne t5,t4,80003098 <fail>
+
+80002ff8 <test_23>:
+80002ff8: 00000213 li tp,0
+80002ffc: 0f0f1137 lui sp,0xf0f1
+80003000: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80003004: 00000013 nop
+80003008: 00000013 nop
+8000300c: 00ff00b7 lui ra,0xff0
+80003010: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80003014: 0020ff33 and t5,ra,sp
+80003018: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000301c: 00200293 li t0,2
+80003020: fc521ee3 bne tp,t0,80002ffc <test_23+0x4>
+80003024: 000f0eb7 lui t4,0xf0
+80003028: 00fe8e93 addi t4,t4,15 # f000f <_start-0x7ff0fff1>
+8000302c: 01700193 li gp,23
+80003030: 07df1463 bne t5,t4,80003098 <fail>
+
+80003034 <test_24>:
+80003034: ff0100b7 lui ra,0xff010
+80003038: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+8000303c: 00107133 and sp,zero,ra
+80003040: 00000e93 li t4,0
+80003044: 01800193 li gp,24
+80003048: 05d11863 bne sp,t4,80003098 <fail>
+
+8000304c <test_25>:
+8000304c: 00ff00b7 lui ra,0xff0
+80003050: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80003054: 0000f133 and sp,ra,zero
+80003058: 00000e93 li t4,0
+8000305c: 01900193 li gp,25
+80003060: 03d11c63 bne sp,t4,80003098 <fail>
+
+80003064 <test_26>:
+80003064: 000070b3 and ra,zero,zero
+80003068: 00000e93 li t4,0
+8000306c: 01a00193 li gp,26
+80003070: 03d09463 bne ra,t4,80003098 <fail>
+
+80003074 <test_27>:
+80003074: 111110b7 lui ra,0x11111
+80003078: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef>
+8000307c: 22222137 lui sp,0x22222
+80003080: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde>
+80003084: 0020f033 and zero,ra,sp
+80003088: 00000e93 li t4,0
+8000308c: 01b00193 li gp,27
+80003090: 01d01463 bne zero,t4,80003098 <fail>
+80003094: 00301a63 bne zero,gp,800030a8 <pass>
+
+80003098 <fail>:
+80003098: 00119513 slli a0,gp,0x1
+8000309c: 00050063 beqz a0,8000309c <fail+0x4>
+800030a0: 00156513 ori a0,a0,1
+800030a4: 00000073 ecall
+
+800030a8 <pass>:
+800030a8: 00100513 li a0,1
+800030ac: 00000073 ecall
+800030b0: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-and.elf b/test/riscv-tests/rv32ui-v-and.elf
new file mode 100644
index 0000000..b2f7c3a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-and.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-andi.dump b/test/riscv-tests/rv32ui-v-andi.dump
new file mode 100644
index 0000000..8f052f3
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-andi.dump
@@ -0,0 +1,1046 @@
+
+rv32ui-v-andi: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 8f458593 addi a1,a1,-1804 # 80002dbc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 91058593 addi a1,a1,-1776 # 80002e48 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 8bc58593 addi a1,a1,-1860 # 80002e60 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 7f058593 addi a1,a1,2032 # 80002e00 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 7e058593 addi a1,a1,2016 # 80002f28 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 74858593 addi a1,a1,1864 # 80002f04 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 64460613 addi a2,a2,1604 # 80002f54 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 55460613 addi a2,a2,1364 # 80002ed0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 4d460613 addi a2,a2,1236 # 80002e9c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 02d00793 li a5,45
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 06b087b7 lui a5,0x6b08
+80002b9c: 00080637 lui a2,0x80
+80002ba0: a8878793 addi a5,a5,-1400 # 6b07a88 <_start-0x794f8578>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: ff0100b7 lui ra,0xff010
+80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08>
+80002be8: f0f0ff13 andi t5,ra,-241
+80002bec: ff010eb7 lui t4,0xff010
+80002bf0: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f00ab08>
+80002bf4: 00200193 li gp,2
+80002bf8: 1bdf1463 bne t5,t4,80002da0 <fail>
+
+80002bfc <test_3>:
+80002bfc: 0ff010b7 lui ra,0xff01
+80002c00: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c04: 0f00ff13 andi t5,ra,240
+80002c08: 0f000e93 li t4,240
+80002c0c: 00300193 li gp,3
+80002c10: 19df1863 bne t5,t4,80002da0 <fail>
+
+80002c14 <test_4>:
+80002c14: 00ff00b7 lui ra,0xff0
+80002c18: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002c1c: 70f0ff13 andi t5,ra,1807
+80002c20: 00f00e93 li t4,15
+80002c24: 00400193 li gp,4
+80002c28: 17df1c63 bne t5,t4,80002da0 <fail>
+
+80002c2c <test_5>:
+80002c2c: f00ff0b7 lui ra,0xf00ff
+80002c30: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002c34: 0f00ff13 andi t5,ra,240
+80002c38: 00000e93 li t4,0
+80002c3c: 00500193 li gp,5
+80002c40: 17df1063 bne t5,t4,80002da0 <fail>
+
+80002c44 <test_6>:
+80002c44: ff0100b7 lui ra,0xff010
+80002c48: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08>
+80002c4c: 0f00f093 andi ra,ra,240
+80002c50: 00000e93 li t4,0
+80002c54: 00600193 li gp,6
+80002c58: 15d09463 bne ra,t4,80002da0 <fail>
+
+80002c5c <test_7>:
+80002c5c: 00000213 li tp,0
+80002c60: 0ff010b7 lui ra,0xff01
+80002c64: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c68: 70f0ff13 andi t5,ra,1807
+80002c6c: 000f0313 mv t1,t5
+80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002c74: 00200293 li t0,2
+80002c78: fe5214e3 bne tp,t0,80002c60 <test_7+0x4>
+80002c7c: 70000e93 li t4,1792
+80002c80: 00700193 li gp,7
+80002c84: 11d31e63 bne t1,t4,80002da0 <fail>
+
+80002c88 <test_8>:
+80002c88: 00000213 li tp,0
+80002c8c: 00ff00b7 lui ra,0xff0
+80002c90: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002c94: 0f00ff13 andi t5,ra,240
+80002c98: 00000013 nop
+80002c9c: 000f0313 mv t1,t5
+80002ca0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ca4: 00200293 li t0,2
+80002ca8: fe5212e3 bne tp,t0,80002c8c <test_8+0x4>
+80002cac: 0f000e93 li t4,240
+80002cb0: 00800193 li gp,8
+80002cb4: 0fd31663 bne t1,t4,80002da0 <fail>
+
+80002cb8 <test_9>:
+80002cb8: 00000213 li tp,0
+80002cbc: f00ff0b7 lui ra,0xf00ff
+80002cc0: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002cc4: f0f0ff13 andi t5,ra,-241
+80002cc8: 00000013 nop
+80002ccc: 00000013 nop
+80002cd0: 000f0313 mv t1,t5
+80002cd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cd8: 00200293 li t0,2
+80002cdc: fe5210e3 bne tp,t0,80002cbc <test_9+0x4>
+80002ce0: f00ffeb7 lui t4,0xf00ff
+80002ce4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f9c17>
+80002ce8: 00900193 li gp,9
+80002cec: 0bd31a63 bne t1,t4,80002da0 <fail>
+
+80002cf0 <test_10>:
+80002cf0: 00000213 li tp,0
+80002cf4: 0ff010b7 lui ra,0xff01
+80002cf8: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002cfc: 70f0ff13 andi t5,ra,1807
+80002d00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d04: 00200293 li t0,2
+80002d08: fe5216e3 bne tp,t0,80002cf4 <test_10+0x4>
+80002d0c: 70000e93 li t4,1792
+80002d10: 00a00193 li gp,10
+80002d14: 09df1663 bne t5,t4,80002da0 <fail>
+
+80002d18 <test_11>:
+80002d18: 00000213 li tp,0
+80002d1c: 00ff00b7 lui ra,0xff0
+80002d20: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002d24: 00000013 nop
+80002d28: 0f00ff13 andi t5,ra,240
+80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d30: 00200293 li t0,2
+80002d34: fe5214e3 bne tp,t0,80002d1c <test_11+0x4>
+80002d38: 0f000e93 li t4,240
+80002d3c: 00b00193 li gp,11
+80002d40: 07df1063 bne t5,t4,80002da0 <fail>
+
+80002d44 <test_12>:
+80002d44: 00000213 li tp,0
+80002d48: f00ff0b7 lui ra,0xf00ff
+80002d4c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002d50: 00000013 nop
+80002d54: 00000013 nop
+80002d58: 70f0ff13 andi t5,ra,1807
+80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d60: 00200293 li t0,2
+80002d64: fe5212e3 bne tp,t0,80002d48 <test_12+0x4>
+80002d68: 00f00e93 li t4,15
+80002d6c: 00c00193 li gp,12
+80002d70: 03df1863 bne t5,t4,80002da0 <fail>
+
+80002d74 <test_13>:
+80002d74: 0f007093 andi ra,zero,240
+80002d78: 00000e93 li t4,0
+80002d7c: 00d00193 li gp,13
+80002d80: 03d09063 bne ra,t4,80002da0 <fail>
+
+80002d84 <test_14>:
+80002d84: 00ff00b7 lui ra,0xff0
+80002d88: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002d8c: 70f0f013 andi zero,ra,1807
+80002d90: 00000e93 li t4,0
+80002d94: 00e00193 li gp,14
+80002d98: 01d01463 bne zero,t4,80002da0 <fail>
+80002d9c: 00301a63 bne zero,gp,80002db0 <pass>
+
+80002da0 <fail>:
+80002da0: 00119513 slli a0,gp,0x1
+80002da4: 00050063 beqz a0,80002da4 <fail+0x4>
+80002da8: 00156513 ori a0,a0,1
+80002dac: 00000073 ecall
+
+80002db0 <pass>:
+80002db0: 00100513 li a0,1
+80002db4: 00000073 ecall
+80002db8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-andi.elf b/test/riscv-tests/rv32ui-v-andi.elf
new file mode 100644
index 0000000..78db8c9
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-andi.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-auipc.dump b/test/riscv-tests/rv32ui-v-auipc.dump
new file mode 100644
index 0000000..83f7d90
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-auipc.dump
@@ -0,0 +1,929 @@
+
+rv32ui-v-auipc: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 77858593 addi a1,a1,1912 # 80002c40 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 79458593 addi a1,a1,1940 # 80002ccc <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 74058593 addi a1,a1,1856 # 80002ce4 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 67458593 addi a1,a1,1652 # 80002c84 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 66458593 addi a1,a1,1636 # 80002dac <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5cc58593 addi a1,a1,1484 # 80002d88 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4c860613 addi a2,a2,1224 # 80002dd8 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3d860613 addi a2,a2,984 # 80002d54 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 35860613 addi a2,a2,856 # 80002d20 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 02d00793 li a5,45
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0e9a97b7 lui a5,0xe9a9
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 47c78793 addi a5,a5,1148 # e9a947c <_start-0x71656b84>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00002517 auipc a0,0x2
+80002be4: 71c50513 addi a0,a0,1820 # 800052fc <user_mapping+0x104>
+80002be8: 004005ef jal a1,80002bec <userstart+0xc>
+80002bec: 40b50533 sub a0,a0,a1
+80002bf0: 00002eb7 lui t4,0x2
+80002bf4: 710e8e93 addi t4,t4,1808 # 2710 <_start-0x7fffd8f0>
+80002bf8: 00200193 li gp,2
+80002bfc: 03d51463 bne a0,t4,80002c24 <fail>
+
+80002c00 <test_3>:
+80002c00: ffffe517 auipc a0,0xffffe
+80002c04: 8fc50513 addi a0,a0,-1796 # 800004fc <trap_entry+0x438>
+80002c08: 004005ef jal a1,80002c0c <test_3+0xc>
+80002c0c: 40b50533 sub a0,a0,a1
+80002c10: ffffeeb7 lui t4,0xffffe
+80002c14: 8f0e8e93 addi t4,t4,-1808 # ffffd8f0 <_end+0x7fff84f8>
+80002c18: 00300193 li gp,3
+80002c1c: 01d51463 bne a0,t4,80002c24 <fail>
+80002c20: 00301a63 bne zero,gp,80002c34 <pass>
+
+80002c24 <fail>:
+80002c24: 00119513 slli a0,gp,0x1
+80002c28: 00050063 beqz a0,80002c28 <fail+0x4>
+80002c2c: 00156513 ori a0,a0,1
+80002c30: 00000073 ecall
+
+80002c34 <pass>:
+80002c34: 00100513 li a0,1
+80002c38: 00000073 ecall
+80002c3c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-auipc.elf b/test/riscv-tests/rv32ui-v-auipc.elf
new file mode 100644
index 0000000..9a35aed
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-auipc.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-beq.dump b/test/riscv-tests/rv32ui-v-beq.dump
new file mode 100644
index 0000000..79bc15e
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-beq.dump
@@ -0,0 +1,1124 @@
+
+rv32ui-v-beq: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9f458593 addi a1,a1,-1548 # 80002ebc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: a1058593 addi a1,a1,-1520 # 80002f48 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 9bc58593 addi a1,a1,-1604 # 80002f60 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8f058593 addi a1,a1,-1808 # 80002f00 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8e058593 addi a1,a1,-1824 # 80003028 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 84858593 addi a1,a1,-1976 # 80003004 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 74460613 addi a2,a2,1860 # 80003054 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 65460613 addi a2,a2,1620 # 80002fd0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 5d460613 addi a2,a2,1492 # 80002f9c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00100793 li a5,1
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 04e8f7b7 lui a5,0x4e8f
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 26878793 addi a5,a5,616 # 4e8f268 <_start-0x7b170d98>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 00000113 li sp,0
+80002bec: 00208663 beq ra,sp,80002bf8 <userstart+0x18>
+80002bf0: 2a301863 bne zero,gp,80002ea0 <fail>
+80002bf4: 00301663 bne zero,gp,80002c00 <test_3>
+80002bf8: fe208ee3 beq ra,sp,80002bf4 <userstart+0x14>
+80002bfc: 2a301263 bne zero,gp,80002ea0 <fail>
+
+80002c00 <test_3>:
+80002c00: 00300193 li gp,3
+80002c04: 00100093 li ra,1
+80002c08: 00100113 li sp,1
+80002c0c: 00208663 beq ra,sp,80002c18 <test_3+0x18>
+80002c10: 28301863 bne zero,gp,80002ea0 <fail>
+80002c14: 00301663 bne zero,gp,80002c20 <test_4>
+80002c18: fe208ee3 beq ra,sp,80002c14 <test_3+0x14>
+80002c1c: 28301263 bne zero,gp,80002ea0 <fail>
+
+80002c20 <test_4>:
+80002c20: 00400193 li gp,4
+80002c24: fff00093 li ra,-1
+80002c28: fff00113 li sp,-1
+80002c2c: 00208663 beq ra,sp,80002c38 <test_4+0x18>
+80002c30: 26301863 bne zero,gp,80002ea0 <fail>
+80002c34: 00301663 bne zero,gp,80002c40 <test_5>
+80002c38: fe208ee3 beq ra,sp,80002c34 <test_4+0x14>
+80002c3c: 26301263 bne zero,gp,80002ea0 <fail>
+
+80002c40 <test_5>:
+80002c40: 00500193 li gp,5
+80002c44: 00000093 li ra,0
+80002c48: 00100113 li sp,1
+80002c4c: 00208463 beq ra,sp,80002c54 <test_5+0x14>
+80002c50: 00301463 bne zero,gp,80002c58 <test_5+0x18>
+80002c54: 24301663 bne zero,gp,80002ea0 <fail>
+80002c58: fe208ee3 beq ra,sp,80002c54 <test_5+0x14>
+
+80002c5c <test_6>:
+80002c5c: 00600193 li gp,6
+80002c60: 00100093 li ra,1
+80002c64: 00000113 li sp,0
+80002c68: 00208463 beq ra,sp,80002c70 <test_6+0x14>
+80002c6c: 00301463 bne zero,gp,80002c74 <test_6+0x18>
+80002c70: 22301863 bne zero,gp,80002ea0 <fail>
+80002c74: fe208ee3 beq ra,sp,80002c70 <test_6+0x14>
+
+80002c78 <test_7>:
+80002c78: 00700193 li gp,7
+80002c7c: fff00093 li ra,-1
+80002c80: 00100113 li sp,1
+80002c84: 00208463 beq ra,sp,80002c8c <test_7+0x14>
+80002c88: 00301463 bne zero,gp,80002c90 <test_7+0x18>
+80002c8c: 20301a63 bne zero,gp,80002ea0 <fail>
+80002c90: fe208ee3 beq ra,sp,80002c8c <test_7+0x14>
+
+80002c94 <test_8>:
+80002c94: 00800193 li gp,8
+80002c98: 00100093 li ra,1
+80002c9c: fff00113 li sp,-1
+80002ca0: 00208463 beq ra,sp,80002ca8 <test_8+0x14>
+80002ca4: 00301463 bne zero,gp,80002cac <test_8+0x18>
+80002ca8: 1e301c63 bne zero,gp,80002ea0 <fail>
+80002cac: fe208ee3 beq ra,sp,80002ca8 <test_8+0x14>
+
+80002cb0 <test_9>:
+80002cb0: 00900193 li gp,9
+80002cb4: 00000213 li tp,0
+80002cb8: 00000093 li ra,0
+80002cbc: fff00113 li sp,-1
+80002cc0: 1e208063 beq ra,sp,80002ea0 <fail>
+80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cc8: 00200293 li t0,2
+80002ccc: fe5216e3 bne tp,t0,80002cb8 <test_9+0x8>
+
+80002cd0 <test_10>:
+80002cd0: 00a00193 li gp,10
+80002cd4: 00000213 li tp,0
+80002cd8: 00000093 li ra,0
+80002cdc: fff00113 li sp,-1
+80002ce0: 00000013 nop
+80002ce4: 1a208e63 beq ra,sp,80002ea0 <fail>
+80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cec: 00200293 li t0,2
+80002cf0: fe5214e3 bne tp,t0,80002cd8 <test_10+0x8>
+
+80002cf4 <test_11>:
+80002cf4: 00b00193 li gp,11
+80002cf8: 00000213 li tp,0
+80002cfc: 00000093 li ra,0
+80002d00: fff00113 li sp,-1
+80002d04: 00000013 nop
+80002d08: 00000013 nop
+80002d0c: 18208a63 beq ra,sp,80002ea0 <fail>
+80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d14: 00200293 li t0,2
+80002d18: fe5212e3 bne tp,t0,80002cfc <test_11+0x8>
+
+80002d1c <test_12>:
+80002d1c: 00c00193 li gp,12
+80002d20: 00000213 li tp,0
+80002d24: 00000093 li ra,0
+80002d28: 00000013 nop
+80002d2c: fff00113 li sp,-1
+80002d30: 16208863 beq ra,sp,80002ea0 <fail>
+80002d34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d38: 00200293 li t0,2
+80002d3c: fe5214e3 bne tp,t0,80002d24 <test_12+0x8>
+
+80002d40 <test_13>:
+80002d40: 00d00193 li gp,13
+80002d44: 00000213 li tp,0
+80002d48: 00000093 li ra,0
+80002d4c: 00000013 nop
+80002d50: fff00113 li sp,-1
+80002d54: 00000013 nop
+80002d58: 14208463 beq ra,sp,80002ea0 <fail>
+80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d60: 00200293 li t0,2
+80002d64: fe5212e3 bne tp,t0,80002d48 <test_13+0x8>
+
+80002d68 <test_14>:
+80002d68: 00e00193 li gp,14
+80002d6c: 00000213 li tp,0
+80002d70: 00000093 li ra,0
+80002d74: 00000013 nop
+80002d78: 00000013 nop
+80002d7c: fff00113 li sp,-1
+80002d80: 12208063 beq ra,sp,80002ea0 <fail>
+80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d88: 00200293 li t0,2
+80002d8c: fe5212e3 bne tp,t0,80002d70 <test_14+0x8>
+
+80002d90 <test_15>:
+80002d90: 00f00193 li gp,15
+80002d94: 00000213 li tp,0
+80002d98: 00000093 li ra,0
+80002d9c: fff00113 li sp,-1
+80002da0: 10208063 beq ra,sp,80002ea0 <fail>
+80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da8: 00200293 li t0,2
+80002dac: fe5216e3 bne tp,t0,80002d98 <test_15+0x8>
+
+80002db0 <test_16>:
+80002db0: 01000193 li gp,16
+80002db4: 00000213 li tp,0
+80002db8: 00000093 li ra,0
+80002dbc: fff00113 li sp,-1
+80002dc0: 00000013 nop
+80002dc4: 0c208e63 beq ra,sp,80002ea0 <fail>
+80002dc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dcc: 00200293 li t0,2
+80002dd0: fe5214e3 bne tp,t0,80002db8 <test_16+0x8>
+
+80002dd4 <test_17>:
+80002dd4: 01100193 li gp,17
+80002dd8: 00000213 li tp,0
+80002ddc: 00000093 li ra,0
+80002de0: fff00113 li sp,-1
+80002de4: 00000013 nop
+80002de8: 00000013 nop
+80002dec: 0a208a63 beq ra,sp,80002ea0 <fail>
+80002df0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002df4: 00200293 li t0,2
+80002df8: fe5212e3 bne tp,t0,80002ddc <test_17+0x8>
+
+80002dfc <test_18>:
+80002dfc: 01200193 li gp,18
+80002e00: 00000213 li tp,0
+80002e04: 00000093 li ra,0
+80002e08: 00000013 nop
+80002e0c: fff00113 li sp,-1
+80002e10: 08208863 beq ra,sp,80002ea0 <fail>
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fe5214e3 bne tp,t0,80002e04 <test_18+0x8>
+
+80002e20 <test_19>:
+80002e20: 01300193 li gp,19
+80002e24: 00000213 li tp,0
+80002e28: 00000093 li ra,0
+80002e2c: 00000013 nop
+80002e30: fff00113 li sp,-1
+80002e34: 00000013 nop
+80002e38: 06208463 beq ra,sp,80002ea0 <fail>
+80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e40: 00200293 li t0,2
+80002e44: fe5212e3 bne tp,t0,80002e28 <test_19+0x8>
+
+80002e48 <test_20>:
+80002e48: 01400193 li gp,20
+80002e4c: 00000213 li tp,0
+80002e50: 00000093 li ra,0
+80002e54: 00000013 nop
+80002e58: 00000013 nop
+80002e5c: fff00113 li sp,-1
+80002e60: 04208063 beq ra,sp,80002ea0 <fail>
+80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e68: 00200293 li t0,2
+80002e6c: fe5212e3 bne tp,t0,80002e50 <test_20+0x8>
+
+80002e70 <test_21>:
+80002e70: 00100093 li ra,1
+80002e74: 00000a63 beqz zero,80002e88 <test_21+0x18>
+80002e78: 00108093 addi ra,ra,1
+80002e7c: 00108093 addi ra,ra,1
+80002e80: 00108093 addi ra,ra,1
+80002e84: 00108093 addi ra,ra,1
+80002e88: 00108093 addi ra,ra,1
+80002e8c: 00108093 addi ra,ra,1
+80002e90: 00300e93 li t4,3
+80002e94: 01500193 li gp,21
+80002e98: 01d09463 bne ra,t4,80002ea0 <fail>
+80002e9c: 00301a63 bne zero,gp,80002eb0 <pass>
+
+80002ea0 <fail>:
+80002ea0: 00119513 slli a0,gp,0x1
+80002ea4: 00050063 beqz a0,80002ea4 <fail+0x4>
+80002ea8: 00156513 ori a0,a0,1
+80002eac: 00000073 ecall
+
+80002eb0 <pass>:
+80002eb0: 00100513 li a0,1
+80002eb4: 00000073 ecall
+80002eb8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-beq.elf b/test/riscv-tests/rv32ui-v-beq.elf
new file mode 100644
index 0000000..39ff6da
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-beq.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-bge.dump b/test/riscv-tests/rv32ui-v-bge.dump
new file mode 100644
index 0000000..a34abe0
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bge.dump
@@ -0,0 +1,1154 @@
+
+rv32ui-v-bge: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: a5458593 addi a1,a1,-1452 # 80002f1c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: a7058593 addi a1,a1,-1424 # 80002fa8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: a1c58593 addi a1,a1,-1508 # 80002fc0 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 95058593 addi a1,a1,-1712 # 80002f60 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 94058593 addi a1,a1,-1728 # 80003088 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 8a858593 addi a1,a1,-1880 # 80003064 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 7a460613 addi a2,a2,1956 # 800030b4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 6b460613 addi a2,a2,1716 # 80003030 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 63460613 addi a2,a2,1588 # 80002ffc <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 02a00793 li a5,42
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0635e7b7 lui a5,0x635e
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 3e878793 addi a5,a5,1000 # 635e3e8 <_start-0x79ca1c18>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 00000113 li sp,0
+80002bec: 0020d663 ble sp,ra,80002bf8 <userstart+0x18>
+80002bf0: 30301863 bne zero,gp,80002f00 <fail>
+80002bf4: 00301663 bne zero,gp,80002c00 <test_3>
+80002bf8: fe20dee3 ble sp,ra,80002bf4 <userstart+0x14>
+80002bfc: 30301263 bne zero,gp,80002f00 <fail>
+
+80002c00 <test_3>:
+80002c00: 00300193 li gp,3
+80002c04: 00100093 li ra,1
+80002c08: 00100113 li sp,1
+80002c0c: 0020d663 ble sp,ra,80002c18 <test_3+0x18>
+80002c10: 2e301863 bne zero,gp,80002f00 <fail>
+80002c14: 00301663 bne zero,gp,80002c20 <test_4>
+80002c18: fe20dee3 ble sp,ra,80002c14 <test_3+0x14>
+80002c1c: 2e301263 bne zero,gp,80002f00 <fail>
+
+80002c20 <test_4>:
+80002c20: 00400193 li gp,4
+80002c24: fff00093 li ra,-1
+80002c28: fff00113 li sp,-1
+80002c2c: 0020d663 ble sp,ra,80002c38 <test_4+0x18>
+80002c30: 2c301863 bne zero,gp,80002f00 <fail>
+80002c34: 00301663 bne zero,gp,80002c40 <test_5>
+80002c38: fe20dee3 ble sp,ra,80002c34 <test_4+0x14>
+80002c3c: 2c301263 bne zero,gp,80002f00 <fail>
+
+80002c40 <test_5>:
+80002c40: 00500193 li gp,5
+80002c44: 00100093 li ra,1
+80002c48: 00000113 li sp,0
+80002c4c: 0020d663 ble sp,ra,80002c58 <test_5+0x18>
+80002c50: 2a301863 bne zero,gp,80002f00 <fail>
+80002c54: 00301663 bne zero,gp,80002c60 <test_6>
+80002c58: fe20dee3 ble sp,ra,80002c54 <test_5+0x14>
+80002c5c: 2a301263 bne zero,gp,80002f00 <fail>
+
+80002c60 <test_6>:
+80002c60: 00600193 li gp,6
+80002c64: 00100093 li ra,1
+80002c68: fff00113 li sp,-1
+80002c6c: 0020d663 ble sp,ra,80002c78 <test_6+0x18>
+80002c70: 28301863 bne zero,gp,80002f00 <fail>
+80002c74: 00301663 bne zero,gp,80002c80 <test_7>
+80002c78: fe20dee3 ble sp,ra,80002c74 <test_6+0x14>
+80002c7c: 28301263 bne zero,gp,80002f00 <fail>
+
+80002c80 <test_7>:
+80002c80: 00700193 li gp,7
+80002c84: fff00093 li ra,-1
+80002c88: ffe00113 li sp,-2
+80002c8c: 0020d663 ble sp,ra,80002c98 <test_7+0x18>
+80002c90: 26301863 bne zero,gp,80002f00 <fail>
+80002c94: 00301663 bne zero,gp,80002ca0 <test_8>
+80002c98: fe20dee3 ble sp,ra,80002c94 <test_7+0x14>
+80002c9c: 26301263 bne zero,gp,80002f00 <fail>
+
+80002ca0 <test_8>:
+80002ca0: 00800193 li gp,8
+80002ca4: 00000093 li ra,0
+80002ca8: 00100113 li sp,1
+80002cac: 0020d463 ble sp,ra,80002cb4 <test_8+0x14>
+80002cb0: 00301463 bne zero,gp,80002cb8 <test_8+0x18>
+80002cb4: 24301663 bne zero,gp,80002f00 <fail>
+80002cb8: fe20dee3 ble sp,ra,80002cb4 <test_8+0x14>
+
+80002cbc <test_9>:
+80002cbc: 00900193 li gp,9
+80002cc0: fff00093 li ra,-1
+80002cc4: 00100113 li sp,1
+80002cc8: 0020d463 ble sp,ra,80002cd0 <test_9+0x14>
+80002ccc: 00301463 bne zero,gp,80002cd4 <test_9+0x18>
+80002cd0: 22301863 bne zero,gp,80002f00 <fail>
+80002cd4: fe20dee3 ble sp,ra,80002cd0 <test_9+0x14>
+
+80002cd8 <test_10>:
+80002cd8: 00a00193 li gp,10
+80002cdc: ffe00093 li ra,-2
+80002ce0: fff00113 li sp,-1
+80002ce4: 0020d463 ble sp,ra,80002cec <test_10+0x14>
+80002ce8: 00301463 bne zero,gp,80002cf0 <test_10+0x18>
+80002cec: 20301a63 bne zero,gp,80002f00 <fail>
+80002cf0: fe20dee3 ble sp,ra,80002cec <test_10+0x14>
+
+80002cf4 <test_11>:
+80002cf4: 00b00193 li gp,11
+80002cf8: ffe00093 li ra,-2
+80002cfc: 00100113 li sp,1
+80002d00: 0020d463 ble sp,ra,80002d08 <test_11+0x14>
+80002d04: 00301463 bne zero,gp,80002d0c <test_11+0x18>
+80002d08: 1e301c63 bne zero,gp,80002f00 <fail>
+80002d0c: fe20dee3 ble sp,ra,80002d08 <test_11+0x14>
+
+80002d10 <test_12>:
+80002d10: 00c00193 li gp,12
+80002d14: 00000213 li tp,0
+80002d18: fff00093 li ra,-1
+80002d1c: 00000113 li sp,0
+80002d20: 1e20d063 ble sp,ra,80002f00 <fail>
+80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d28: 00200293 li t0,2
+80002d2c: fe5216e3 bne tp,t0,80002d18 <test_12+0x8>
+
+80002d30 <test_13>:
+80002d30: 00d00193 li gp,13
+80002d34: 00000213 li tp,0
+80002d38: fff00093 li ra,-1
+80002d3c: 00000113 li sp,0
+80002d40: 00000013 nop
+80002d44: 1a20de63 ble sp,ra,80002f00 <fail>
+80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d4c: 00200293 li t0,2
+80002d50: fe5214e3 bne tp,t0,80002d38 <test_13+0x8>
+
+80002d54 <test_14>:
+80002d54: 00e00193 li gp,14
+80002d58: 00000213 li tp,0
+80002d5c: fff00093 li ra,-1
+80002d60: 00000113 li sp,0
+80002d64: 00000013 nop
+80002d68: 00000013 nop
+80002d6c: 1820da63 ble sp,ra,80002f00 <fail>
+80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d74: 00200293 li t0,2
+80002d78: fe5212e3 bne tp,t0,80002d5c <test_14+0x8>
+
+80002d7c <test_15>:
+80002d7c: 00f00193 li gp,15
+80002d80: 00000213 li tp,0
+80002d84: fff00093 li ra,-1
+80002d88: 00000013 nop
+80002d8c: 00000113 li sp,0
+80002d90: 1620d863 ble sp,ra,80002f00 <fail>
+80002d94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d98: 00200293 li t0,2
+80002d9c: fe5214e3 bne tp,t0,80002d84 <test_15+0x8>
+
+80002da0 <test_16>:
+80002da0: 01000193 li gp,16
+80002da4: 00000213 li tp,0
+80002da8: fff00093 li ra,-1
+80002dac: 00000013 nop
+80002db0: 00000113 li sp,0
+80002db4: 00000013 nop
+80002db8: 1420d463 ble sp,ra,80002f00 <fail>
+80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dc0: 00200293 li t0,2
+80002dc4: fe5212e3 bne tp,t0,80002da8 <test_16+0x8>
+
+80002dc8 <test_17>:
+80002dc8: 01100193 li gp,17
+80002dcc: 00000213 li tp,0
+80002dd0: fff00093 li ra,-1
+80002dd4: 00000013 nop
+80002dd8: 00000013 nop
+80002ddc: 00000113 li sp,0
+80002de0: 1220d063 ble sp,ra,80002f00 <fail>
+80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de8: 00200293 li t0,2
+80002dec: fe5212e3 bne tp,t0,80002dd0 <test_17+0x8>
+
+80002df0 <test_18>:
+80002df0: 01200193 li gp,18
+80002df4: 00000213 li tp,0
+80002df8: fff00093 li ra,-1
+80002dfc: 00000113 li sp,0
+80002e00: 1020d063 ble sp,ra,80002f00 <fail>
+80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e08: 00200293 li t0,2
+80002e0c: fe5216e3 bne tp,t0,80002df8 <test_18+0x8>
+
+80002e10 <test_19>:
+80002e10: 01300193 li gp,19
+80002e14: 00000213 li tp,0
+80002e18: fff00093 li ra,-1
+80002e1c: 00000113 li sp,0
+80002e20: 00000013 nop
+80002e24: 0c20de63 ble sp,ra,80002f00 <fail>
+80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e2c: 00200293 li t0,2
+80002e30: fe5214e3 bne tp,t0,80002e18 <test_19+0x8>
+
+80002e34 <test_20>:
+80002e34: 01400193 li gp,20
+80002e38: 00000213 li tp,0
+80002e3c: fff00093 li ra,-1
+80002e40: 00000113 li sp,0
+80002e44: 00000013 nop
+80002e48: 00000013 nop
+80002e4c: 0a20da63 ble sp,ra,80002f00 <fail>
+80002e50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e54: 00200293 li t0,2
+80002e58: fe5212e3 bne tp,t0,80002e3c <test_20+0x8>
+
+80002e5c <test_21>:
+80002e5c: 01500193 li gp,21
+80002e60: 00000213 li tp,0
+80002e64: fff00093 li ra,-1
+80002e68: 00000013 nop
+80002e6c: 00000113 li sp,0
+80002e70: 0820d863 ble sp,ra,80002f00 <fail>
+80002e74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e78: 00200293 li t0,2
+80002e7c: fe5214e3 bne tp,t0,80002e64 <test_21+0x8>
+
+80002e80 <test_22>:
+80002e80: 01600193 li gp,22
+80002e84: 00000213 li tp,0
+80002e88: fff00093 li ra,-1
+80002e8c: 00000013 nop
+80002e90: 00000113 li sp,0
+80002e94: 00000013 nop
+80002e98: 0620d463 ble sp,ra,80002f00 <fail>
+80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea0: 00200293 li t0,2
+80002ea4: fe5212e3 bne tp,t0,80002e88 <test_22+0x8>
+
+80002ea8 <test_23>:
+80002ea8: 01700193 li gp,23
+80002eac: 00000213 li tp,0
+80002eb0: fff00093 li ra,-1
+80002eb4: 00000013 nop
+80002eb8: 00000013 nop
+80002ebc: 00000113 li sp,0
+80002ec0: 0420d063 ble sp,ra,80002f00 <fail>
+80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ec8: 00200293 li t0,2
+80002ecc: fe5212e3 bne tp,t0,80002eb0 <test_23+0x8>
+
+80002ed0 <test_24>:
+80002ed0: 00100093 li ra,1
+80002ed4: 0000da63 bgez ra,80002ee8 <test_24+0x18>
+80002ed8: 00108093 addi ra,ra,1
+80002edc: 00108093 addi ra,ra,1
+80002ee0: 00108093 addi ra,ra,1
+80002ee4: 00108093 addi ra,ra,1
+80002ee8: 00108093 addi ra,ra,1
+80002eec: 00108093 addi ra,ra,1
+80002ef0: 00300e93 li t4,3
+80002ef4: 01800193 li gp,24
+80002ef8: 01d09463 bne ra,t4,80002f00 <fail>
+80002efc: 00301a63 bne zero,gp,80002f10 <pass>
+
+80002f00 <fail>:
+80002f00: 00119513 slli a0,gp,0x1
+80002f04: 00050063 beqz a0,80002f04 <fail+0x4>
+80002f08: 00156513 ori a0,a0,1
+80002f0c: 00000073 ecall
+
+80002f10 <pass>:
+80002f10: 00100513 li a0,1
+80002f14: 00000073 ecall
+80002f18: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-bge.elf b/test/riscv-tests/rv32ui-v-bge.elf
new file mode 100644
index 0000000..fe9d348
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bge.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-bgeu.dump b/test/riscv-tests/rv32ui-v-bgeu.dump
new file mode 100644
index 0000000..1383b12
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bgeu.dump
@@ -0,0 +1,1167 @@
+
+rv32ui-v-bgeu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: a8858593 addi a1,a1,-1400 # 80002f50 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: aa458593 addi a1,a1,-1372 # 80002fdc <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: a5058593 addi a1,a1,-1456 # 80002ff4 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 98458593 addi a1,a1,-1660 # 80002f94 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 97458593 addi a1,a1,-1676 # 800030bc <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 8dc58593 addi a1,a1,-1828 # 80003098 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 7d860613 addi a2,a2,2008 # 800030e8 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 6e860613 addi a2,a2,1768 # 80003064 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 66860613 addi a2,a2,1640 # 80003030 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01a00793 li a5,26
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0e56a7b7 lui a5,0xe56a
+80002b9c: 00080637 lui a2,0x80
+80002ba0: d9578793 addi a5,a5,-619 # e569d95 <_start-0x71a9626b>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 00000113 li sp,0
+80002bec: 0020f663 bleu sp,ra,80002bf8 <userstart+0x18>
+80002bf0: 34301263 bne zero,gp,80002f34 <fail>
+80002bf4: 00301663 bne zero,gp,80002c00 <test_3>
+80002bf8: fe20fee3 bleu sp,ra,80002bf4 <userstart+0x14>
+80002bfc: 32301c63 bne zero,gp,80002f34 <fail>
+
+80002c00 <test_3>:
+80002c00: 00300193 li gp,3
+80002c04: 00100093 li ra,1
+80002c08: 00100113 li sp,1
+80002c0c: 0020f663 bleu sp,ra,80002c18 <test_3+0x18>
+80002c10: 32301263 bne zero,gp,80002f34 <fail>
+80002c14: 00301663 bne zero,gp,80002c20 <test_4>
+80002c18: fe20fee3 bleu sp,ra,80002c14 <test_3+0x14>
+80002c1c: 30301c63 bne zero,gp,80002f34 <fail>
+
+80002c20 <test_4>:
+80002c20: 00400193 li gp,4
+80002c24: fff00093 li ra,-1
+80002c28: fff00113 li sp,-1
+80002c2c: 0020f663 bleu sp,ra,80002c38 <test_4+0x18>
+80002c30: 30301263 bne zero,gp,80002f34 <fail>
+80002c34: 00301663 bne zero,gp,80002c40 <test_5>
+80002c38: fe20fee3 bleu sp,ra,80002c34 <test_4+0x14>
+80002c3c: 2e301c63 bne zero,gp,80002f34 <fail>
+
+80002c40 <test_5>:
+80002c40: 00500193 li gp,5
+80002c44: 00100093 li ra,1
+80002c48: 00000113 li sp,0
+80002c4c: 0020f663 bleu sp,ra,80002c58 <test_5+0x18>
+80002c50: 2e301263 bne zero,gp,80002f34 <fail>
+80002c54: 00301663 bne zero,gp,80002c60 <test_6>
+80002c58: fe20fee3 bleu sp,ra,80002c54 <test_5+0x14>
+80002c5c: 2c301c63 bne zero,gp,80002f34 <fail>
+
+80002c60 <test_6>:
+80002c60: 00600193 li gp,6
+80002c64: fff00093 li ra,-1
+80002c68: ffe00113 li sp,-2
+80002c6c: 0020f663 bleu sp,ra,80002c78 <test_6+0x18>
+80002c70: 2c301263 bne zero,gp,80002f34 <fail>
+80002c74: 00301663 bne zero,gp,80002c80 <test_7>
+80002c78: fe20fee3 bleu sp,ra,80002c74 <test_6+0x14>
+80002c7c: 2a301c63 bne zero,gp,80002f34 <fail>
+
+80002c80 <test_7>:
+80002c80: 00700193 li gp,7
+80002c84: fff00093 li ra,-1
+80002c88: 00000113 li sp,0
+80002c8c: 0020f663 bleu sp,ra,80002c98 <test_7+0x18>
+80002c90: 2a301263 bne zero,gp,80002f34 <fail>
+80002c94: 00301663 bne zero,gp,80002ca0 <test_8>
+80002c98: fe20fee3 bleu sp,ra,80002c94 <test_7+0x14>
+80002c9c: 28301c63 bne zero,gp,80002f34 <fail>
+
+80002ca0 <test_8>:
+80002ca0: 00800193 li gp,8
+80002ca4: 00000093 li ra,0
+80002ca8: 00100113 li sp,1
+80002cac: 0020f463 bleu sp,ra,80002cb4 <test_8+0x14>
+80002cb0: 00301463 bne zero,gp,80002cb8 <test_8+0x18>
+80002cb4: 28301063 bne zero,gp,80002f34 <fail>
+80002cb8: fe20fee3 bleu sp,ra,80002cb4 <test_8+0x14>
+
+80002cbc <test_9>:
+80002cbc: 00900193 li gp,9
+80002cc0: ffe00093 li ra,-2
+80002cc4: fff00113 li sp,-1
+80002cc8: 0020f463 bleu sp,ra,80002cd0 <test_9+0x14>
+80002ccc: 00301463 bne zero,gp,80002cd4 <test_9+0x18>
+80002cd0: 26301263 bne zero,gp,80002f34 <fail>
+80002cd4: fe20fee3 bleu sp,ra,80002cd0 <test_9+0x14>
+
+80002cd8 <test_10>:
+80002cd8: 00a00193 li gp,10
+80002cdc: 00000093 li ra,0
+80002ce0: fff00113 li sp,-1
+80002ce4: 0020f463 bleu sp,ra,80002cec <test_10+0x14>
+80002ce8: 00301463 bne zero,gp,80002cf0 <test_10+0x18>
+80002cec: 24301463 bne zero,gp,80002f34 <fail>
+80002cf0: fe20fee3 bleu sp,ra,80002cec <test_10+0x14>
+
+80002cf4 <test_11>:
+80002cf4: 00b00193 li gp,11
+80002cf8: 800000b7 lui ra,0x80000
+80002cfc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002d00: 80000137 lui sp,0x80000
+80002d04: 0020f463 bleu sp,ra,80002d0c <test_11+0x18>
+80002d08: 00301463 bne zero,gp,80002d10 <test_11+0x1c>
+80002d0c: 22301463 bne zero,gp,80002f34 <fail>
+80002d10: fe20fee3 bleu sp,ra,80002d0c <test_11+0x18>
+
+80002d14 <test_12>:
+80002d14: 00c00193 li gp,12
+80002d18: 00000213 li tp,0
+80002d1c: f00000b7 lui ra,0xf0000
+80002d20: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002d24: f0000137 lui sp,0xf0000
+80002d28: 2020f663 bleu sp,ra,80002f34 <fail>
+80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d30: 00200293 li t0,2
+80002d34: fe5214e3 bne tp,t0,80002d1c <test_12+0x8>
+
+80002d38 <test_13>:
+80002d38: 00d00193 li gp,13
+80002d3c: 00000213 li tp,0
+80002d40: f00000b7 lui ra,0xf0000
+80002d44: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002d48: f0000137 lui sp,0xf0000
+80002d4c: 00000013 nop
+80002d50: 1e20f263 bleu sp,ra,80002f34 <fail>
+80002d54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d58: 00200293 li t0,2
+80002d5c: fe5212e3 bne tp,t0,80002d40 <test_13+0x8>
+
+80002d60 <test_14>:
+80002d60: 00e00193 li gp,14
+80002d64: 00000213 li tp,0
+80002d68: f00000b7 lui ra,0xf0000
+80002d6c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002d70: f0000137 lui sp,0xf0000
+80002d74: 00000013 nop
+80002d78: 00000013 nop
+80002d7c: 1a20fc63 bleu sp,ra,80002f34 <fail>
+80002d80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d84: 00200293 li t0,2
+80002d88: fe5210e3 bne tp,t0,80002d68 <test_14+0x8>
+
+80002d8c <test_15>:
+80002d8c: 00f00193 li gp,15
+80002d90: 00000213 li tp,0
+80002d94: f00000b7 lui ra,0xf0000
+80002d98: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002d9c: 00000013 nop
+80002da0: f0000137 lui sp,0xf0000
+80002da4: 1820f863 bleu sp,ra,80002f34 <fail>
+80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dac: 00200293 li t0,2
+80002db0: fe5212e3 bne tp,t0,80002d94 <test_15+0x8>
+
+80002db4 <test_16>:
+80002db4: 01000193 li gp,16
+80002db8: 00000213 li tp,0
+80002dbc: f00000b7 lui ra,0xf0000
+80002dc0: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002dc4: 00000013 nop
+80002dc8: f0000137 lui sp,0xf0000
+80002dcc: 00000013 nop
+80002dd0: 1620f263 bleu sp,ra,80002f34 <fail>
+80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd8: 00200293 li t0,2
+80002ddc: fe5210e3 bne tp,t0,80002dbc <test_16+0x8>
+
+80002de0 <test_17>:
+80002de0: 01100193 li gp,17
+80002de4: 00000213 li tp,0
+80002de8: f00000b7 lui ra,0xf0000
+80002dec: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002df0: 00000013 nop
+80002df4: 00000013 nop
+80002df8: f0000137 lui sp,0xf0000
+80002dfc: 1220fc63 bleu sp,ra,80002f34 <fail>
+80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e04: 00200293 li t0,2
+80002e08: fe5210e3 bne tp,t0,80002de8 <test_17+0x8>
+
+80002e0c <test_18>:
+80002e0c: 01200193 li gp,18
+80002e10: 00000213 li tp,0
+80002e14: f00000b7 lui ra,0xf0000
+80002e18: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002e1c: f0000137 lui sp,0xf0000
+80002e20: 1020fa63 bleu sp,ra,80002f34 <fail>
+80002e24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e28: 00200293 li t0,2
+80002e2c: fe5214e3 bne tp,t0,80002e14 <test_18+0x8>
+
+80002e30 <test_19>:
+80002e30: 01300193 li gp,19
+80002e34: 00000213 li tp,0
+80002e38: f00000b7 lui ra,0xf0000
+80002e3c: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002e40: f0000137 lui sp,0xf0000
+80002e44: 00000013 nop
+80002e48: 0e20f663 bleu sp,ra,80002f34 <fail>
+80002e4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e50: 00200293 li t0,2
+80002e54: fe5212e3 bne tp,t0,80002e38 <test_19+0x8>
+
+80002e58 <test_20>:
+80002e58: 01400193 li gp,20
+80002e5c: 00000213 li tp,0
+80002e60: f00000b7 lui ra,0xf0000
+80002e64: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002e68: f0000137 lui sp,0xf0000
+80002e6c: 00000013 nop
+80002e70: 00000013 nop
+80002e74: 0c20f063 bleu sp,ra,80002f34 <fail>
+80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e7c: 00200293 li t0,2
+80002e80: fe5210e3 bne tp,t0,80002e60 <test_20+0x8>
+
+80002e84 <test_21>:
+80002e84: 01500193 li gp,21
+80002e88: 00000213 li tp,0
+80002e8c: f00000b7 lui ra,0xf0000
+80002e90: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002e94: 00000013 nop
+80002e98: f0000137 lui sp,0xf0000
+80002e9c: 0820fc63 bleu sp,ra,80002f34 <fail>
+80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea4: 00200293 li t0,2
+80002ea8: fe5212e3 bne tp,t0,80002e8c <test_21+0x8>
+
+80002eac <test_22>:
+80002eac: 01600193 li gp,22
+80002eb0: 00000213 li tp,0
+80002eb4: f00000b7 lui ra,0xf0000
+80002eb8: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002ebc: 00000013 nop
+80002ec0: f0000137 lui sp,0xf0000
+80002ec4: 00000013 nop
+80002ec8: 0620f663 bleu sp,ra,80002f34 <fail>
+80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ed0: 00200293 li t0,2
+80002ed4: fe5210e3 bne tp,t0,80002eb4 <test_22+0x8>
+
+80002ed8 <test_23>:
+80002ed8: 01700193 li gp,23
+80002edc: 00000213 li tp,0
+80002ee0: f00000b7 lui ra,0xf0000
+80002ee4: fff08093 addi ra,ra,-1 # efffffff <_end+0x6fff9c07>
+80002ee8: 00000013 nop
+80002eec: 00000013 nop
+80002ef0: f0000137 lui sp,0xf0000
+80002ef4: 0420f063 bleu sp,ra,80002f34 <fail>
+80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002efc: 00200293 li t0,2
+80002f00: fe5210e3 bne tp,t0,80002ee0 <test_23+0x8>
+
+80002f04 <test_24>:
+80002f04: 00100093 li ra,1
+80002f08: 0000fa63 bleu zero,ra,80002f1c <test_24+0x18>
+80002f0c: 00108093 addi ra,ra,1
+80002f10: 00108093 addi ra,ra,1
+80002f14: 00108093 addi ra,ra,1
+80002f18: 00108093 addi ra,ra,1
+80002f1c: 00108093 addi ra,ra,1
+80002f20: 00108093 addi ra,ra,1
+80002f24: 00300e93 li t4,3
+80002f28: 01800193 li gp,24
+80002f2c: 01d09463 bne ra,t4,80002f34 <fail>
+80002f30: 00301a63 bne zero,gp,80002f44 <pass>
+
+80002f34 <fail>:
+80002f34: 00119513 slli a0,gp,0x1
+80002f38: 00050063 beqz a0,80002f38 <fail+0x4>
+80002f3c: 00156513 ori a0,a0,1
+80002f40: 00000073 ecall
+
+80002f44 <pass>:
+80002f44: 00100513 li a0,1
+80002f48: 00000073 ecall
+80002f4c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-bgeu.elf b/test/riscv-tests/rv32ui-v-bgeu.elf
new file mode 100644
index 0000000..5fd2761
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bgeu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-blt.dump b/test/riscv-tests/rv32ui-v-blt.dump
new file mode 100644
index 0000000..6d5652b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-blt.dump
@@ -0,0 +1,1124 @@
+
+rv32ui-v-blt: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9f458593 addi a1,a1,-1548 # 80002ebc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: a1058593 addi a1,a1,-1520 # 80002f48 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 9bc58593 addi a1,a1,-1604 # 80002f60 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8f058593 addi a1,a1,-1808 # 80002f00 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8e058593 addi a1,a1,-1824 # 80003028 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 84858593 addi a1,a1,-1976 # 80003004 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 74460613 addi a2,a2,1860 # 80003054 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 65460613 addi a2,a2,1620 # 80002fd0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 5d460613 addi a2,a2,1492 # 80002f9c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01200793 li a5,18
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 021ab7b7 lui a5,0x21ab
+80002b9c: 00080637 lui a2,0x80
+80002ba0: d6878793 addi a5,a5,-664 # 21aad68 <_start-0x7de55298>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 00100113 li sp,1
+80002bec: 0020c663 blt ra,sp,80002bf8 <userstart+0x18>
+80002bf0: 2a301863 bne zero,gp,80002ea0 <fail>
+80002bf4: 00301663 bne zero,gp,80002c00 <test_3>
+80002bf8: fe20cee3 blt ra,sp,80002bf4 <userstart+0x14>
+80002bfc: 2a301263 bne zero,gp,80002ea0 <fail>
+
+80002c00 <test_3>:
+80002c00: 00300193 li gp,3
+80002c04: fff00093 li ra,-1
+80002c08: 00100113 li sp,1
+80002c0c: 0020c663 blt ra,sp,80002c18 <test_3+0x18>
+80002c10: 28301863 bne zero,gp,80002ea0 <fail>
+80002c14: 00301663 bne zero,gp,80002c20 <test_4>
+80002c18: fe20cee3 blt ra,sp,80002c14 <test_3+0x14>
+80002c1c: 28301263 bne zero,gp,80002ea0 <fail>
+
+80002c20 <test_4>:
+80002c20: 00400193 li gp,4
+80002c24: ffe00093 li ra,-2
+80002c28: fff00113 li sp,-1
+80002c2c: 0020c663 blt ra,sp,80002c38 <test_4+0x18>
+80002c30: 26301863 bne zero,gp,80002ea0 <fail>
+80002c34: 00301663 bne zero,gp,80002c40 <test_5>
+80002c38: fe20cee3 blt ra,sp,80002c34 <test_4+0x14>
+80002c3c: 26301263 bne zero,gp,80002ea0 <fail>
+
+80002c40 <test_5>:
+80002c40: 00500193 li gp,5
+80002c44: 00100093 li ra,1
+80002c48: 00000113 li sp,0
+80002c4c: 0020c463 blt ra,sp,80002c54 <test_5+0x14>
+80002c50: 00301463 bne zero,gp,80002c58 <test_5+0x18>
+80002c54: 24301663 bne zero,gp,80002ea0 <fail>
+80002c58: fe20cee3 blt ra,sp,80002c54 <test_5+0x14>
+
+80002c5c <test_6>:
+80002c5c: 00600193 li gp,6
+80002c60: 00100093 li ra,1
+80002c64: fff00113 li sp,-1
+80002c68: 0020c463 blt ra,sp,80002c70 <test_6+0x14>
+80002c6c: 00301463 bne zero,gp,80002c74 <test_6+0x18>
+80002c70: 22301863 bne zero,gp,80002ea0 <fail>
+80002c74: fe20cee3 blt ra,sp,80002c70 <test_6+0x14>
+
+80002c78 <test_7>:
+80002c78: 00700193 li gp,7
+80002c7c: fff00093 li ra,-1
+80002c80: ffe00113 li sp,-2
+80002c84: 0020c463 blt ra,sp,80002c8c <test_7+0x14>
+80002c88: 00301463 bne zero,gp,80002c90 <test_7+0x18>
+80002c8c: 20301a63 bne zero,gp,80002ea0 <fail>
+80002c90: fe20cee3 blt ra,sp,80002c8c <test_7+0x14>
+
+80002c94 <test_8>:
+80002c94: 00800193 li gp,8
+80002c98: 00100093 li ra,1
+80002c9c: ffe00113 li sp,-2
+80002ca0: 0020c463 blt ra,sp,80002ca8 <test_8+0x14>
+80002ca4: 00301463 bne zero,gp,80002cac <test_8+0x18>
+80002ca8: 1e301c63 bne zero,gp,80002ea0 <fail>
+80002cac: fe20cee3 blt ra,sp,80002ca8 <test_8+0x14>
+
+80002cb0 <test_9>:
+80002cb0: 00900193 li gp,9
+80002cb4: 00000213 li tp,0
+80002cb8: 00000093 li ra,0
+80002cbc: fff00113 li sp,-1
+80002cc0: 1e20c063 blt ra,sp,80002ea0 <fail>
+80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cc8: 00200293 li t0,2
+80002ccc: fe5216e3 bne tp,t0,80002cb8 <test_9+0x8>
+
+80002cd0 <test_10>:
+80002cd0: 00a00193 li gp,10
+80002cd4: 00000213 li tp,0
+80002cd8: 00000093 li ra,0
+80002cdc: fff00113 li sp,-1
+80002ce0: 00000013 nop
+80002ce4: 1a20ce63 blt ra,sp,80002ea0 <fail>
+80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cec: 00200293 li t0,2
+80002cf0: fe5214e3 bne tp,t0,80002cd8 <test_10+0x8>
+
+80002cf4 <test_11>:
+80002cf4: 00b00193 li gp,11
+80002cf8: 00000213 li tp,0
+80002cfc: 00000093 li ra,0
+80002d00: fff00113 li sp,-1
+80002d04: 00000013 nop
+80002d08: 00000013 nop
+80002d0c: 1820ca63 blt ra,sp,80002ea0 <fail>
+80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d14: 00200293 li t0,2
+80002d18: fe5212e3 bne tp,t0,80002cfc <test_11+0x8>
+
+80002d1c <test_12>:
+80002d1c: 00c00193 li gp,12
+80002d20: 00000213 li tp,0
+80002d24: 00000093 li ra,0
+80002d28: 00000013 nop
+80002d2c: fff00113 li sp,-1
+80002d30: 1620c863 blt ra,sp,80002ea0 <fail>
+80002d34: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d38: 00200293 li t0,2
+80002d3c: fe5214e3 bne tp,t0,80002d24 <test_12+0x8>
+
+80002d40 <test_13>:
+80002d40: 00d00193 li gp,13
+80002d44: 00000213 li tp,0
+80002d48: 00000093 li ra,0
+80002d4c: 00000013 nop
+80002d50: fff00113 li sp,-1
+80002d54: 00000013 nop
+80002d58: 1420c463 blt ra,sp,80002ea0 <fail>
+80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d60: 00200293 li t0,2
+80002d64: fe5212e3 bne tp,t0,80002d48 <test_13+0x8>
+
+80002d68 <test_14>:
+80002d68: 00e00193 li gp,14
+80002d6c: 00000213 li tp,0
+80002d70: 00000093 li ra,0
+80002d74: 00000013 nop
+80002d78: 00000013 nop
+80002d7c: fff00113 li sp,-1
+80002d80: 1220c063 blt ra,sp,80002ea0 <fail>
+80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d88: 00200293 li t0,2
+80002d8c: fe5212e3 bne tp,t0,80002d70 <test_14+0x8>
+
+80002d90 <test_15>:
+80002d90: 00f00193 li gp,15
+80002d94: 00000213 li tp,0
+80002d98: 00000093 li ra,0
+80002d9c: fff00113 li sp,-1
+80002da0: 1020c063 blt ra,sp,80002ea0 <fail>
+80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da8: 00200293 li t0,2
+80002dac: fe5216e3 bne tp,t0,80002d98 <test_15+0x8>
+
+80002db0 <test_16>:
+80002db0: 01000193 li gp,16
+80002db4: 00000213 li tp,0
+80002db8: 00000093 li ra,0
+80002dbc: fff00113 li sp,-1
+80002dc0: 00000013 nop
+80002dc4: 0c20ce63 blt ra,sp,80002ea0 <fail>
+80002dc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dcc: 00200293 li t0,2
+80002dd0: fe5214e3 bne tp,t0,80002db8 <test_16+0x8>
+
+80002dd4 <test_17>:
+80002dd4: 01100193 li gp,17
+80002dd8: 00000213 li tp,0
+80002ddc: 00000093 li ra,0
+80002de0: fff00113 li sp,-1
+80002de4: 00000013 nop
+80002de8: 00000013 nop
+80002dec: 0a20ca63 blt ra,sp,80002ea0 <fail>
+80002df0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002df4: 00200293 li t0,2
+80002df8: fe5212e3 bne tp,t0,80002ddc <test_17+0x8>
+
+80002dfc <test_18>:
+80002dfc: 01200193 li gp,18
+80002e00: 00000213 li tp,0
+80002e04: 00000093 li ra,0
+80002e08: 00000013 nop
+80002e0c: fff00113 li sp,-1
+80002e10: 0820c863 blt ra,sp,80002ea0 <fail>
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fe5214e3 bne tp,t0,80002e04 <test_18+0x8>
+
+80002e20 <test_19>:
+80002e20: 01300193 li gp,19
+80002e24: 00000213 li tp,0
+80002e28: 00000093 li ra,0
+80002e2c: 00000013 nop
+80002e30: fff00113 li sp,-1
+80002e34: 00000013 nop
+80002e38: 0620c463 blt ra,sp,80002ea0 <fail>
+80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e40: 00200293 li t0,2
+80002e44: fe5212e3 bne tp,t0,80002e28 <test_19+0x8>
+
+80002e48 <test_20>:
+80002e48: 01400193 li gp,20
+80002e4c: 00000213 li tp,0
+80002e50: 00000093 li ra,0
+80002e54: 00000013 nop
+80002e58: 00000013 nop
+80002e5c: fff00113 li sp,-1
+80002e60: 0420c063 blt ra,sp,80002ea0 <fail>
+80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e68: 00200293 li t0,2
+80002e6c: fe5212e3 bne tp,t0,80002e50 <test_20+0x8>
+
+80002e70 <test_21>:
+80002e70: 00100093 li ra,1
+80002e74: 00104a63 bgtz ra,80002e88 <test_21+0x18>
+80002e78: 00108093 addi ra,ra,1
+80002e7c: 00108093 addi ra,ra,1
+80002e80: 00108093 addi ra,ra,1
+80002e84: 00108093 addi ra,ra,1
+80002e88: 00108093 addi ra,ra,1
+80002e8c: 00108093 addi ra,ra,1
+80002e90: 00300e93 li t4,3
+80002e94: 01500193 li gp,21
+80002e98: 01d09463 bne ra,t4,80002ea0 <fail>
+80002e9c: 00301a63 bne zero,gp,80002eb0 <pass>
+
+80002ea0 <fail>:
+80002ea0: 00119513 slli a0,gp,0x1
+80002ea4: 00050063 beqz a0,80002ea4 <fail+0x4>
+80002ea8: 00156513 ori a0,a0,1
+80002eac: 00000073 ecall
+
+80002eb0 <pass>:
+80002eb0: 00100513 li a0,1
+80002eb4: 00000073 ecall
+80002eb8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-blt.elf b/test/riscv-tests/rv32ui-v-blt.elf
new file mode 100644
index 0000000..9e6ffff
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-blt.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-bltu.dump b/test/riscv-tests/rv32ui-v-bltu.dump
new file mode 100644
index 0000000..b15436b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bltu.dump
@@ -0,0 +1,1137 @@
+
+rv32ui-v-bltu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: a2858593 addi a1,a1,-1496 # 80002ef0 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: a4458593 addi a1,a1,-1468 # 80002f7c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 9f058593 addi a1,a1,-1552 # 80002f94 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 92458593 addi a1,a1,-1756 # 80002f34 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 91458593 addi a1,a1,-1772 # 8000305c <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 87c58593 addi a1,a1,-1924 # 80003038 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 77860613 addi a2,a2,1912 # 80003088 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 68860613 addi a2,a2,1672 # 80003004 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 60860613 addi a2,a2,1544 # 80002fd0 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03b00793 li a5,59
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 096517b7 lui a5,0x9651
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 2bc78793 addi a5,a5,700 # 96512bc <_start-0x769aed44>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 00100113 li sp,1
+80002bec: 0020e663 bltu ra,sp,80002bf8 <userstart+0x18>
+80002bf0: 2e301263 bne zero,gp,80002ed4 <fail>
+80002bf4: 00301663 bne zero,gp,80002c00 <test_3>
+80002bf8: fe20eee3 bltu ra,sp,80002bf4 <userstart+0x14>
+80002bfc: 2c301c63 bne zero,gp,80002ed4 <fail>
+
+80002c00 <test_3>:
+80002c00: 00300193 li gp,3
+80002c04: ffe00093 li ra,-2
+80002c08: fff00113 li sp,-1
+80002c0c: 0020e663 bltu ra,sp,80002c18 <test_3+0x18>
+80002c10: 2c301263 bne zero,gp,80002ed4 <fail>
+80002c14: 00301663 bne zero,gp,80002c20 <test_4>
+80002c18: fe20eee3 bltu ra,sp,80002c14 <test_3+0x14>
+80002c1c: 2a301c63 bne zero,gp,80002ed4 <fail>
+
+80002c20 <test_4>:
+80002c20: 00400193 li gp,4
+80002c24: 00000093 li ra,0
+80002c28: fff00113 li sp,-1
+80002c2c: 0020e663 bltu ra,sp,80002c38 <test_4+0x18>
+80002c30: 2a301263 bne zero,gp,80002ed4 <fail>
+80002c34: 00301663 bne zero,gp,80002c40 <test_5>
+80002c38: fe20eee3 bltu ra,sp,80002c34 <test_4+0x14>
+80002c3c: 28301c63 bne zero,gp,80002ed4 <fail>
+
+80002c40 <test_5>:
+80002c40: 00500193 li gp,5
+80002c44: 00100093 li ra,1
+80002c48: 00000113 li sp,0
+80002c4c: 0020e463 bltu ra,sp,80002c54 <test_5+0x14>
+80002c50: 00301463 bne zero,gp,80002c58 <test_5+0x18>
+80002c54: 28301063 bne zero,gp,80002ed4 <fail>
+80002c58: fe20eee3 bltu ra,sp,80002c54 <test_5+0x14>
+
+80002c5c <test_6>:
+80002c5c: 00600193 li gp,6
+80002c60: fff00093 li ra,-1
+80002c64: ffe00113 li sp,-2
+80002c68: 0020e463 bltu ra,sp,80002c70 <test_6+0x14>
+80002c6c: 00301463 bne zero,gp,80002c74 <test_6+0x18>
+80002c70: 26301263 bne zero,gp,80002ed4 <fail>
+80002c74: fe20eee3 bltu ra,sp,80002c70 <test_6+0x14>
+
+80002c78 <test_7>:
+80002c78: 00700193 li gp,7
+80002c7c: fff00093 li ra,-1
+80002c80: 00000113 li sp,0
+80002c84: 0020e463 bltu ra,sp,80002c8c <test_7+0x14>
+80002c88: 00301463 bne zero,gp,80002c90 <test_7+0x18>
+80002c8c: 24301463 bne zero,gp,80002ed4 <fail>
+80002c90: fe20eee3 bltu ra,sp,80002c8c <test_7+0x14>
+
+80002c94 <test_8>:
+80002c94: 00800193 li gp,8
+80002c98: 800000b7 lui ra,0x80000
+80002c9c: 80000137 lui sp,0x80000
+80002ca0: fff10113 addi sp,sp,-1 # 7fffffff <_end+0xffff9c07>
+80002ca4: 0020e463 bltu ra,sp,80002cac <test_8+0x18>
+80002ca8: 00301463 bne zero,gp,80002cb0 <test_8+0x1c>
+80002cac: 22301463 bne zero,gp,80002ed4 <fail>
+80002cb0: fe20eee3 bltu ra,sp,80002cac <test_8+0x18>
+
+80002cb4 <test_9>:
+80002cb4: 00900193 li gp,9
+80002cb8: 00000213 li tp,0
+80002cbc: f00000b7 lui ra,0xf0000
+80002cc0: f0000137 lui sp,0xf0000
+80002cc4: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002cc8: 2020e663 bltu ra,sp,80002ed4 <fail>
+80002ccc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cd0: 00200293 li t0,2
+80002cd4: fe5214e3 bne tp,t0,80002cbc <test_9+0x8>
+
+80002cd8 <test_10>:
+80002cd8: 00a00193 li gp,10
+80002cdc: 00000213 li tp,0
+80002ce0: f00000b7 lui ra,0xf0000
+80002ce4: f0000137 lui sp,0xf0000
+80002ce8: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002cec: 00000013 nop
+80002cf0: 1e20e263 bltu ra,sp,80002ed4 <fail>
+80002cf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cf8: 00200293 li t0,2
+80002cfc: fe5212e3 bne tp,t0,80002ce0 <test_10+0x8>
+
+80002d00 <test_11>:
+80002d00: 00b00193 li gp,11
+80002d04: 00000213 li tp,0
+80002d08: f00000b7 lui ra,0xf0000
+80002d0c: f0000137 lui sp,0xf0000
+80002d10: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002d14: 00000013 nop
+80002d18: 00000013 nop
+80002d1c: 1a20ec63 bltu ra,sp,80002ed4 <fail>
+80002d20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d24: 00200293 li t0,2
+80002d28: fe5210e3 bne tp,t0,80002d08 <test_11+0x8>
+
+80002d2c <test_12>:
+80002d2c: 00c00193 li gp,12
+80002d30: 00000213 li tp,0
+80002d34: f00000b7 lui ra,0xf0000
+80002d38: 00000013 nop
+80002d3c: f0000137 lui sp,0xf0000
+80002d40: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002d44: 1820e863 bltu ra,sp,80002ed4 <fail>
+80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d4c: 00200293 li t0,2
+80002d50: fe5212e3 bne tp,t0,80002d34 <test_12+0x8>
+
+80002d54 <test_13>:
+80002d54: 00d00193 li gp,13
+80002d58: 00000213 li tp,0
+80002d5c: f00000b7 lui ra,0xf0000
+80002d60: 00000013 nop
+80002d64: f0000137 lui sp,0xf0000
+80002d68: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002d6c: 00000013 nop
+80002d70: 1620e263 bltu ra,sp,80002ed4 <fail>
+80002d74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d78: 00200293 li t0,2
+80002d7c: fe5210e3 bne tp,t0,80002d5c <test_13+0x8>
+
+80002d80 <test_14>:
+80002d80: 00e00193 li gp,14
+80002d84: 00000213 li tp,0
+80002d88: f00000b7 lui ra,0xf0000
+80002d8c: 00000013 nop
+80002d90: 00000013 nop
+80002d94: f0000137 lui sp,0xf0000
+80002d98: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002d9c: 1220ec63 bltu ra,sp,80002ed4 <fail>
+80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da4: 00200293 li t0,2
+80002da8: fe5210e3 bne tp,t0,80002d88 <test_14+0x8>
+
+80002dac <test_15>:
+80002dac: 00f00193 li gp,15
+80002db0: 00000213 li tp,0
+80002db4: f00000b7 lui ra,0xf0000
+80002db8: f0000137 lui sp,0xf0000
+80002dbc: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002dc0: 1020ea63 bltu ra,sp,80002ed4 <fail>
+80002dc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dc8: 00200293 li t0,2
+80002dcc: fe5214e3 bne tp,t0,80002db4 <test_15+0x8>
+
+80002dd0 <test_16>:
+80002dd0: 01000193 li gp,16
+80002dd4: 00000213 li tp,0
+80002dd8: f00000b7 lui ra,0xf0000
+80002ddc: f0000137 lui sp,0xf0000
+80002de0: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002de4: 00000013 nop
+80002de8: 0e20e663 bltu ra,sp,80002ed4 <fail>
+80002dec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002df0: 00200293 li t0,2
+80002df4: fe5212e3 bne tp,t0,80002dd8 <test_16+0x8>
+
+80002df8 <test_17>:
+80002df8: 01100193 li gp,17
+80002dfc: 00000213 li tp,0
+80002e00: f00000b7 lui ra,0xf0000
+80002e04: f0000137 lui sp,0xf0000
+80002e08: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002e0c: 00000013 nop
+80002e10: 00000013 nop
+80002e14: 0c20e063 bltu ra,sp,80002ed4 <fail>
+80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e1c: 00200293 li t0,2
+80002e20: fe5210e3 bne tp,t0,80002e00 <test_17+0x8>
+
+80002e24 <test_18>:
+80002e24: 01200193 li gp,18
+80002e28: 00000213 li tp,0
+80002e2c: f00000b7 lui ra,0xf0000
+80002e30: 00000013 nop
+80002e34: f0000137 lui sp,0xf0000
+80002e38: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002e3c: 0820ec63 bltu ra,sp,80002ed4 <fail>
+80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e44: 00200293 li t0,2
+80002e48: fe5212e3 bne tp,t0,80002e2c <test_18+0x8>
+
+80002e4c <test_19>:
+80002e4c: 01300193 li gp,19
+80002e50: 00000213 li tp,0
+80002e54: f00000b7 lui ra,0xf0000
+80002e58: 00000013 nop
+80002e5c: f0000137 lui sp,0xf0000
+80002e60: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002e64: 00000013 nop
+80002e68: 0620e663 bltu ra,sp,80002ed4 <fail>
+80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e70: 00200293 li t0,2
+80002e74: fe5210e3 bne tp,t0,80002e54 <test_19+0x8>
+
+80002e78 <test_20>:
+80002e78: 01400193 li gp,20
+80002e7c: 00000213 li tp,0
+80002e80: f00000b7 lui ra,0xf0000
+80002e84: 00000013 nop
+80002e88: 00000013 nop
+80002e8c: f0000137 lui sp,0xf0000
+80002e90: fff10113 addi sp,sp,-1 # efffffff <_end+0x6fff9c07>
+80002e94: 0420e063 bltu ra,sp,80002ed4 <fail>
+80002e98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e9c: 00200293 li t0,2
+80002ea0: fe5210e3 bne tp,t0,80002e80 <test_20+0x8>
+
+80002ea4 <test_21>:
+80002ea4: 00100093 li ra,1
+80002ea8: 00106a63 bltu zero,ra,80002ebc <test_21+0x18>
+80002eac: 00108093 addi ra,ra,1 # f0000001 <_end+0x6fff9c09>
+80002eb0: 00108093 addi ra,ra,1
+80002eb4: 00108093 addi ra,ra,1
+80002eb8: 00108093 addi ra,ra,1
+80002ebc: 00108093 addi ra,ra,1
+80002ec0: 00108093 addi ra,ra,1
+80002ec4: 00300e93 li t4,3
+80002ec8: 01500193 li gp,21
+80002ecc: 01d09463 bne ra,t4,80002ed4 <fail>
+80002ed0: 00301a63 bne zero,gp,80002ee4 <pass>
+
+80002ed4 <fail>:
+80002ed4: 00119513 slli a0,gp,0x1
+80002ed8: 00050063 beqz a0,80002ed8 <fail+0x4>
+80002edc: 00156513 ori a0,a0,1
+80002ee0: 00000073 ecall
+
+80002ee4 <pass>:
+80002ee4: 00100513 li a0,1
+80002ee8: 00000073 ecall
+80002eec: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-bltu.elf b/test/riscv-tests/rv32ui-v-bltu.elf
new file mode 100644
index 0000000..df3383e
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-bne.dump b/test/riscv-tests/rv32ui-v-bne.dump
new file mode 100644
index 0000000..50abbf4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bne.dump
@@ -0,0 +1,1125 @@
+
+rv32ui-v-bne: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9f858593 addi a1,a1,-1544 # 80002ec0 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: a1458593 addi a1,a1,-1516 # 80002f4c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 9c058593 addi a1,a1,-1600 # 80002f64 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8f458593 addi a1,a1,-1804 # 80002f04 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8e458593 addi a1,a1,-1820 # 8000302c <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 84c58593 addi a1,a1,-1972 # 80003008 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 74860613 addi a2,a2,1864 # 80003058 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 65860613 addi a2,a2,1624 # 80002fd4 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 5d860613 addi a2,a2,1496 # 80002fa0 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 02500793 li a5,37
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 039337b7 lui a5,0x3933
+80002b9c: 00080637 lui a2,0x80
+80002ba0: ade78793 addi a5,a5,-1314 # 3932ade <_start-0x7c6cd522>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 00100113 li sp,1
+80002bec: 00209663 bne ra,sp,80002bf8 <userstart+0x18>
+80002bf0: 2a301a63 bne zero,gp,80002ea4 <fail>
+80002bf4: 00301663 bne zero,gp,80002c00 <test_3>
+80002bf8: fe209ee3 bne ra,sp,80002bf4 <userstart+0x14>
+80002bfc: 2a301463 bne zero,gp,80002ea4 <fail>
+
+80002c00 <test_3>:
+80002c00: 00300193 li gp,3
+80002c04: 00100093 li ra,1
+80002c08: 00000113 li sp,0
+80002c0c: 00209663 bne ra,sp,80002c18 <test_3+0x18>
+80002c10: 28301a63 bne zero,gp,80002ea4 <fail>
+80002c14: 00301663 bne zero,gp,80002c20 <test_4>
+80002c18: fe209ee3 bne ra,sp,80002c14 <test_3+0x14>
+80002c1c: 28301463 bne zero,gp,80002ea4 <fail>
+
+80002c20 <test_4>:
+80002c20: 00400193 li gp,4
+80002c24: fff00093 li ra,-1
+80002c28: 00100113 li sp,1
+80002c2c: 00209663 bne ra,sp,80002c38 <test_4+0x18>
+80002c30: 26301a63 bne zero,gp,80002ea4 <fail>
+80002c34: 00301663 bne zero,gp,80002c40 <test_5>
+80002c38: fe209ee3 bne ra,sp,80002c34 <test_4+0x14>
+80002c3c: 26301463 bne zero,gp,80002ea4 <fail>
+
+80002c40 <test_5>:
+80002c40: 00500193 li gp,5
+80002c44: 00100093 li ra,1
+80002c48: fff00113 li sp,-1
+80002c4c: 00209663 bne ra,sp,80002c58 <test_5+0x18>
+80002c50: 24301a63 bne zero,gp,80002ea4 <fail>
+80002c54: 00301663 bne zero,gp,80002c60 <test_6>
+80002c58: fe209ee3 bne ra,sp,80002c54 <test_5+0x14>
+80002c5c: 24301463 bne zero,gp,80002ea4 <fail>
+
+80002c60 <test_6>:
+80002c60: 00600193 li gp,6
+80002c64: 00000093 li ra,0
+80002c68: 00000113 li sp,0
+80002c6c: 00209463 bne ra,sp,80002c74 <test_6+0x14>
+80002c70: 00301463 bne zero,gp,80002c78 <test_6+0x18>
+80002c74: 22301863 bne zero,gp,80002ea4 <fail>
+80002c78: fe209ee3 bne ra,sp,80002c74 <test_6+0x14>
+
+80002c7c <test_7>:
+80002c7c: 00700193 li gp,7
+80002c80: 00100093 li ra,1
+80002c84: 00100113 li sp,1
+80002c88: 00209463 bne ra,sp,80002c90 <test_7+0x14>
+80002c8c: 00301463 bne zero,gp,80002c94 <test_7+0x18>
+80002c90: 20301a63 bne zero,gp,80002ea4 <fail>
+80002c94: fe209ee3 bne ra,sp,80002c90 <test_7+0x14>
+
+80002c98 <test_8>:
+80002c98: 00800193 li gp,8
+80002c9c: fff00093 li ra,-1
+80002ca0: fff00113 li sp,-1
+80002ca4: 00209463 bne ra,sp,80002cac <test_8+0x14>
+80002ca8: 00301463 bne zero,gp,80002cb0 <test_8+0x18>
+80002cac: 1e301c63 bne zero,gp,80002ea4 <fail>
+80002cb0: fe209ee3 bne ra,sp,80002cac <test_8+0x14>
+
+80002cb4 <test_9>:
+80002cb4: 00900193 li gp,9
+80002cb8: 00000213 li tp,0
+80002cbc: 00000093 li ra,0
+80002cc0: 00000113 li sp,0
+80002cc4: 1e209063 bne ra,sp,80002ea4 <fail>
+80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ccc: 00200293 li t0,2
+80002cd0: fe5216e3 bne tp,t0,80002cbc <test_9+0x8>
+
+80002cd4 <test_10>:
+80002cd4: 00a00193 li gp,10
+80002cd8: 00000213 li tp,0
+80002cdc: 00000093 li ra,0
+80002ce0: 00000113 li sp,0
+80002ce4: 00000013 nop
+80002ce8: 1a209e63 bne ra,sp,80002ea4 <fail>
+80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cf0: 00200293 li t0,2
+80002cf4: fe5214e3 bne tp,t0,80002cdc <test_10+0x8>
+
+80002cf8 <test_11>:
+80002cf8: 00b00193 li gp,11
+80002cfc: 00000213 li tp,0
+80002d00: 00000093 li ra,0
+80002d04: 00000113 li sp,0
+80002d08: 00000013 nop
+80002d0c: 00000013 nop
+80002d10: 18209a63 bne ra,sp,80002ea4 <fail>
+80002d14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d18: 00200293 li t0,2
+80002d1c: fe5212e3 bne tp,t0,80002d00 <test_11+0x8>
+
+80002d20 <test_12>:
+80002d20: 00c00193 li gp,12
+80002d24: 00000213 li tp,0
+80002d28: 00000093 li ra,0
+80002d2c: 00000013 nop
+80002d30: 00000113 li sp,0
+80002d34: 16209863 bne ra,sp,80002ea4 <fail>
+80002d38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d3c: 00200293 li t0,2
+80002d40: fe5214e3 bne tp,t0,80002d28 <test_12+0x8>
+
+80002d44 <test_13>:
+80002d44: 00d00193 li gp,13
+80002d48: 00000213 li tp,0
+80002d4c: 00000093 li ra,0
+80002d50: 00000013 nop
+80002d54: 00000113 li sp,0
+80002d58: 00000013 nop
+80002d5c: 14209463 bne ra,sp,80002ea4 <fail>
+80002d60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d64: 00200293 li t0,2
+80002d68: fe5212e3 bne tp,t0,80002d4c <test_13+0x8>
+
+80002d6c <test_14>:
+80002d6c: 00e00193 li gp,14
+80002d70: 00000213 li tp,0
+80002d74: 00000093 li ra,0
+80002d78: 00000013 nop
+80002d7c: 00000013 nop
+80002d80: 00000113 li sp,0
+80002d84: 12209063 bne ra,sp,80002ea4 <fail>
+80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d8c: 00200293 li t0,2
+80002d90: fe5212e3 bne tp,t0,80002d74 <test_14+0x8>
+
+80002d94 <test_15>:
+80002d94: 00f00193 li gp,15
+80002d98: 00000213 li tp,0
+80002d9c: 00000093 li ra,0
+80002da0: 00000113 li sp,0
+80002da4: 10209063 bne ra,sp,80002ea4 <fail>
+80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dac: 00200293 li t0,2
+80002db0: fe5216e3 bne tp,t0,80002d9c <test_15+0x8>
+
+80002db4 <test_16>:
+80002db4: 01000193 li gp,16
+80002db8: 00000213 li tp,0
+80002dbc: 00000093 li ra,0
+80002dc0: 00000113 li sp,0
+80002dc4: 00000013 nop
+80002dc8: 0c209e63 bne ra,sp,80002ea4 <fail>
+80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd0: 00200293 li t0,2
+80002dd4: fe5214e3 bne tp,t0,80002dbc <test_16+0x8>
+
+80002dd8 <test_17>:
+80002dd8: 01100193 li gp,17
+80002ddc: 00000213 li tp,0
+80002de0: 00000093 li ra,0
+80002de4: 00000113 li sp,0
+80002de8: 00000013 nop
+80002dec: 00000013 nop
+80002df0: 0a209a63 bne ra,sp,80002ea4 <fail>
+80002df4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002df8: 00200293 li t0,2
+80002dfc: fe5212e3 bne tp,t0,80002de0 <test_17+0x8>
+
+80002e00 <test_18>:
+80002e00: 01200193 li gp,18
+80002e04: 00000213 li tp,0
+80002e08: 00000093 li ra,0
+80002e0c: 00000013 nop
+80002e10: 00000113 li sp,0
+80002e14: 08209863 bne ra,sp,80002ea4 <fail>
+80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e1c: 00200293 li t0,2
+80002e20: fe5214e3 bne tp,t0,80002e08 <test_18+0x8>
+
+80002e24 <test_19>:
+80002e24: 01300193 li gp,19
+80002e28: 00000213 li tp,0
+80002e2c: 00000093 li ra,0
+80002e30: 00000013 nop
+80002e34: 00000113 li sp,0
+80002e38: 00000013 nop
+80002e3c: 06209463 bne ra,sp,80002ea4 <fail>
+80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e44: 00200293 li t0,2
+80002e48: fe5212e3 bne tp,t0,80002e2c <test_19+0x8>
+
+80002e4c <test_20>:
+80002e4c: 01400193 li gp,20
+80002e50: 00000213 li tp,0
+80002e54: 00000093 li ra,0
+80002e58: 00000013 nop
+80002e5c: 00000013 nop
+80002e60: 00000113 li sp,0
+80002e64: 04209063 bne ra,sp,80002ea4 <fail>
+80002e68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e6c: 00200293 li t0,2
+80002e70: fe5212e3 bne tp,t0,80002e54 <test_20+0x8>
+
+80002e74 <test_21>:
+80002e74: 00100093 li ra,1
+80002e78: 00009a63 bnez ra,80002e8c <test_21+0x18>
+80002e7c: 00108093 addi ra,ra,1
+80002e80: 00108093 addi ra,ra,1
+80002e84: 00108093 addi ra,ra,1
+80002e88: 00108093 addi ra,ra,1
+80002e8c: 00108093 addi ra,ra,1
+80002e90: 00108093 addi ra,ra,1
+80002e94: 00300e93 li t4,3
+80002e98: 01500193 li gp,21
+80002e9c: 01d09463 bne ra,t4,80002ea4 <fail>
+80002ea0: 00301a63 bne zero,gp,80002eb4 <pass>
+
+80002ea4 <fail>:
+80002ea4: 00119513 slli a0,gp,0x1
+80002ea8: 00050063 beqz a0,80002ea8 <fail+0x4>
+80002eac: 00156513 ori a0,a0,1
+80002eb0: 00000073 ecall
+
+80002eb4 <pass>:
+80002eb4: 00100513 li a0,1
+80002eb8: 00000073 ecall
+80002ebc: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-bne.elf b/test/riscv-tests/rv32ui-v-bne.elf
new file mode 100644
index 0000000..6a62841
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-bne.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-fence_i.dump b/test/riscv-tests/rv32ui-v-fence_i.dump
new file mode 100644
index 0000000..b07b734
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-fence_i.dump
@@ -0,0 +1,1017 @@
+
+rv32ui-v-fence_i: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bd050513 addi a0,a0,-1072 # 80002c00 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 86458593 addi a1,a1,-1948 # 80002d2c <pass+0x44>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 88058593 addi a1,a1,-1920 # 80002db8 <pass+0xd0>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 82c58593 addi a1,a1,-2004 # 80002dd0 <pass+0xe8>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 76058593 addi a1,a1,1888 # 80002d70 <pass+0x88>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 75058593 addi a1,a1,1872 # 80002e98 <pass+0x1b0>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 6b858593 addi a1,a1,1720 # 80002e74 <pass+0x18c>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 5b460613 addi a2,a2,1460 # 80002ec4 <pass+0x1dc>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 4c460613 addi a2,a2,1220 # 80002e40 <pass+0x158>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 44460613 addi a2,a2,1092 # 80002e0c <pass+0x124>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00500793 li a5,5
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 08d6d7b7 lui a5,0x8d6d
+80002b9c: 00080637 lui a2,0x80
+80002ba0: e9e78793 addi a5,a5,-354 # 8d6ce9e <_start-0x77293162>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+80002be0: 0000 unimp
+80002be2: 0000 unimp
+80002be4: 0000 unimp
+80002be6: 0000 unimp
+80002be8: 0000 unimp
+80002bea: 0000 unimp
+80002bec: 0000 unimp
+80002bee: 0000 unimp
+80002bf0: 0000 unimp
+80002bf2: 0000 unimp
+80002bf4: 0000 unimp
+80002bf6: 0000 unimp
+80002bf8: 0000 unimp
+80002bfa: 0000 unimp
+80002bfc: 0000 unimp
+80002bfe: 0000 unimp
+
+80002c00 <userstart>:
+80002c00: 06f00693 li a3,111
+80002c04: 00000517 auipc a0,0x0
+80002c08: 3fc51503 lh a0,1020(a0) # 80003000 <begin_signature>
+80002c0c: 00000597 auipc a1,0x0
+80002c10: 3f659583 lh a1,1014(a1) # 80003002 <begin_signature+0x2>
+80002c14: 00000013 nop
+80002c18: 00000013 nop
+80002c1c: 00000013 nop
+80002c20: 00000013 nop
+80002c24: 00000013 nop
+80002c28: 00000013 nop
+80002c2c: 00000013 nop
+80002c30: 00000013 nop
+80002c34: 00000013 nop
+80002c38: 00000013 nop
+80002c3c: 00000013 nop
+80002c40: 00000297 auipc t0,0x0
+80002c44: 00a29a23 sh a0,20(t0) # 80002c54 <userstart+0x54>
+80002c48: 00000297 auipc t0,0x0
+80002c4c: 00b29723 sh a1,14(t0) # 80002c56 <userstart+0x56>
+80002c50: 0000100f fence.i
+80002c54: 0de68693 addi a3,a3,222
+
+80002c58 <test_2>:
+80002c58: 00000013 nop
+80002c5c: 1bc00e93 li t4,444
+80002c60: 00200193 li gp,2
+80002c64: 07d69a63 bne a3,t4,80002cd8 <fail>
+80002c68: 06400713 li a4,100
+80002c6c: fff70713 addi a4,a4,-1
+80002c70: fe071ee3 bnez a4,80002c6c <test_2+0x14>
+80002c74: 00000297 auipc t0,0x0
+80002c78: 04a29623 sh a0,76(t0) # 80002cc0 <test_2+0x68>
+80002c7c: 00000297 auipc t0,0x0
+80002c80: 04b29323 sh a1,70(t0) # 80002cc2 <test_2+0x6a>
+80002c84: 0000100f fence.i
+80002c88: 00000013 nop
+80002c8c: 00000013 nop
+80002c90: 00000013 nop
+80002c94: 00000013 nop
+80002c98: 00000013 nop
+80002c9c: 00000013 nop
+80002ca0: 00000013 nop
+80002ca4: 00000013 nop
+80002ca8: 00000013 nop
+80002cac: 00000013 nop
+80002cb0: 00000013 nop
+80002cb4: 00000013 nop
+80002cb8: 00000013 nop
+80002cbc: 00000013 nop
+80002cc0: 22b68693 addi a3,a3,555
+
+80002cc4 <test_3>:
+80002cc4: 00000013 nop
+80002cc8: 30900e93 li t4,777
+80002ccc: 00300193 li gp,3
+80002cd0: 01d69463 bne a3,t4,80002cd8 <fail>
+80002cd4: 00301a63 bne zero,gp,80002ce8 <pass>
+
+80002cd8 <fail>:
+80002cd8: 00119513 slli a0,gp,0x1
+80002cdc: 00050063 beqz a0,80002cdc <fail+0x4>
+80002ce0: 00156513 ori a0,a0,1
+80002ce4: 00000073 ecall
+
+80002ce8 <pass>:
+80002ce8: 00100513 li a0,1
+80002cec: 00000073 ecall
+80002cf0: c0001073 unimp
+80002cf4: 0000 unimp
+80002cf6: 0000 unimp
+80002cf8: 0000 unimp
+80002cfa: 0000 unimp
+80002cfc: 0000 unimp
+80002cfe: 0000 unimp
+80002d00: 0000 unimp
+80002d02: 0000 unimp
+80002d04: 0000 unimp
+80002d06: 0000 unimp
+80002d08: 0000 unimp
+80002d0a: 0000 unimp
+80002d0c: 0000 unimp
+80002d0e: 0000 unimp
+80002d10: 0000 unimp
+80002d12: 0000 unimp
+80002d14: 0000 unimp
+80002d16: 0000 unimp
+80002d18: 0000 unimp
+80002d1a: 0000 unimp
+80002d1c: 0000 unimp
+80002d1e: 0000 unimp
+80002d20: 0000 unimp
+80002d22: 0000 unimp
+80002d24: 0000 unimp
+80002d26: 0000 unimp
+80002d28: 0000 unimp
+80002d2a: 0000 unimp
+
+Disassembly of section .data:
+
+80003000 <begin_signature>:
+80003000: 14d68693 addi a3,a3,333
diff --git a/test/riscv-tests/rv32ui-v-fence_i.elf b/test/riscv-tests/rv32ui-v-fence_i.elf
new file mode 100644
index 0000000..25cc628
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-fence_i.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-jal.dump b/test/riscv-tests/rv32ui-v-jal.dump
new file mode 100644
index 0000000..9c9d229
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-jal.dump
@@ -0,0 +1,937 @@
+
+rv32ui-v-jal: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 78858593 addi a1,a1,1928 # 80002c50 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7a458593 addi a1,a1,1956 # 80002cdc <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75058593 addi a1,a1,1872 # 80002cf4 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 68458593 addi a1,a1,1668 # 80002c94 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 67458593 addi a1,a1,1652 # 80002dbc <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5dc58593 addi a1,a1,1500 # 80002d98 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4d860613 addi a2,a2,1240 # 80002de8 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3e860613 addi a2,a2,1000 # 80002d64 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 36860613 addi a2,a2,872 # 80002d30 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 01900793 li a5,25
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0b08b7b7 lui a5,0xb08b
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 85f78793 addi a5,a5,-1953 # b08a85f <_start-0x74f757a1>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000093 li ra,0
+80002be8: 0100026f jal tp,80002bf8 <target_2>
+
+80002bec <linkaddr_2>:
+80002bec: 00000013 nop
+80002bf0: 00000013 nop
+80002bf4: 0400006f j 80002c34 <fail>
+
+80002bf8 <target_2>:
+80002bf8: 00000117 auipc sp,0x0
+80002bfc: ff410113 addi sp,sp,-12 # 80002bec <linkaddr_2>
+80002c00: 02411a63 bne sp,tp,80002c34 <fail>
+
+80002c04 <test_3>:
+80002c04: 00100093 li ra,1
+80002c08: 0140006f j 80002c1c <test_3+0x18>
+80002c0c: 00108093 addi ra,ra,1
+80002c10: 00108093 addi ra,ra,1
+80002c14: 00108093 addi ra,ra,1
+80002c18: 00108093 addi ra,ra,1
+80002c1c: 00108093 addi ra,ra,1
+80002c20: 00108093 addi ra,ra,1
+80002c24: 00300e93 li t4,3
+80002c28: 00300193 li gp,3
+80002c2c: 01d09463 bne ra,t4,80002c34 <fail>
+80002c30: 00301a63 bne zero,gp,80002c44 <pass>
+
+80002c34 <fail>:
+80002c34: 00119513 slli a0,gp,0x1
+80002c38: 00050063 beqz a0,80002c38 <fail+0x4>
+80002c3c: 00156513 ori a0,a0,1
+80002c40: 00000073 ecall
+
+80002c44 <pass>:
+80002c44: 00100513 li a0,1
+80002c48: 00000073 ecall
+80002c4c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-jal.elf b/test/riscv-tests/rv32ui-v-jal.elf
new file mode 100644
index 0000000..e245e2e
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-jal.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-jalr.dump b/test/riscv-tests/rv32ui-v-jalr.dump
new file mode 100644
index 0000000..67fec4b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-jalr.dump
@@ -0,0 +1,975 @@
+
+rv32ui-v-jalr: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 80858593 addi a1,a1,-2040 # 80002cd0 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 82458593 addi a1,a1,-2012 # 80002d5c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 7d058593 addi a1,a1,2000 # 80002d74 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 70458593 addi a1,a1,1796 # 80002d14 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 6f458593 addi a1,a1,1780 # 80002e3c <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 65c58593 addi a1,a1,1628 # 80002e18 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 55860613 addi a2,a2,1368 # 80002e68 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 46860613 addi a2,a2,1128 # 80002de4 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 3e860613 addi a2,a2,1000 # 80002db0 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 03b00793 li a5,59
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0b7f17b7 lui a5,0xb7f1
+80002b9c: 00080637 lui a2,0x80
+80002ba0: a3678793 addi a5,a5,-1482 # b7f0a36 <_start-0x7480f5ca>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00200193 li gp,2
+80002be4: 00000293 li t0,0
+80002be8: 00000317 auipc t1,0x0
+80002bec: 01030313 addi t1,t1,16 # 80002bf8 <target_2>
+80002bf0: 000302e7 jalr t0,t1
+
+80002bf4 <linkaddr_2>:
+80002bf4: 0c00006f j 80002cb4 <fail>
+
+80002bf8 <target_2>:
+80002bf8: 00000317 auipc t1,0x0
+80002bfc: ffc30313 addi t1,t1,-4 # 80002bf4 <linkaddr_2>
+80002c00: 0a629a63 bne t0,t1,80002cb4 <fail>
+
+80002c04 <test_4>:
+80002c04: 00400193 li gp,4
+80002c08: 00000213 li tp,0
+80002c0c: 00000317 auipc t1,0x0
+80002c10: 01030313 addi t1,t1,16 # 80002c1c <test_4+0x18>
+80002c14: 000309e7 jalr s3,t1
+80002c18: 08301e63 bne zero,gp,80002cb4 <fail>
+80002c1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002c20: 00200293 li t0,2
+80002c24: fe5214e3 bne tp,t0,80002c0c <test_4+0x8>
+
+80002c28 <test_5>:
+80002c28: 00500193 li gp,5
+80002c2c: 00000213 li tp,0
+80002c30: 00000317 auipc t1,0x0
+80002c34: 01430313 addi t1,t1,20 # 80002c44 <test_5+0x1c>
+80002c38: 00000013 nop
+80002c3c: 000309e7 jalr s3,t1
+80002c40: 06301a63 bne zero,gp,80002cb4 <fail>
+80002c44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002c48: 00200293 li t0,2
+80002c4c: fe5212e3 bne tp,t0,80002c30 <test_5+0x8>
+
+80002c50 <test_6>:
+80002c50: 00600193 li gp,6
+80002c54: 00000213 li tp,0
+80002c58: 00000317 auipc t1,0x0
+80002c5c: 01830313 addi t1,t1,24 # 80002c70 <test_6+0x20>
+80002c60: 00000013 nop
+80002c64: 00000013 nop
+80002c68: 000309e7 jalr s3,t1
+80002c6c: 04301463 bne zero,gp,80002cb4 <fail>
+80002c70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002c74: 00200293 li t0,2
+80002c78: fe5210e3 bne tp,t0,80002c58 <test_6+0x8>
+
+80002c7c <test_7>:
+80002c7c: 00100293 li t0,1
+80002c80: 00000317 auipc t1,0x0
+80002c84: 01c30313 addi t1,t1,28 # 80002c9c <test_7+0x20>
+80002c88: ffc30067 jr -4(t1)
+80002c8c: 00128293 addi t0,t0,1
+80002c90: 00128293 addi t0,t0,1
+80002c94: 00128293 addi t0,t0,1
+80002c98: 00128293 addi t0,t0,1
+80002c9c: 00128293 addi t0,t0,1
+80002ca0: 00128293 addi t0,t0,1
+80002ca4: 00400e93 li t4,4
+80002ca8: 00700193 li gp,7
+80002cac: 01d29463 bne t0,t4,80002cb4 <fail>
+80002cb0: 00301a63 bne zero,gp,80002cc4 <pass>
+
+80002cb4 <fail>:
+80002cb4: 00119513 slli a0,gp,0x1
+80002cb8: 00050063 beqz a0,80002cb8 <fail+0x4>
+80002cbc: 00156513 ori a0,a0,1
+80002cc0: 00000073 ecall
+
+80002cc4 <pass>:
+80002cc4: 00100513 li a0,1
+80002cc8: 00000073 ecall
+80002ccc: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-jalr.elf b/test/riscv-tests/rv32ui-v-jalr.elf
new file mode 100644
index 0000000..bb4faa7
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-jalr.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-lb.dump b/test/riscv-tests/rv32ui-v-lb.dump
new file mode 100644
index 0000000..3cdefa6
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lb.dump
@@ -0,0 +1,1107 @@
+
+rv32ui-v-lb: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 98058593 addi a1,a1,-1664 # 80002e48 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 99c58593 addi a1,a1,-1636 # 80002ed4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 94858593 addi a1,a1,-1720 # 80002eec <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 87c58593 addi a1,a1,-1924 # 80002e8c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 86c58593 addi a1,a1,-1940 # 80002fb4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 7d458593 addi a1,a1,2004 # 80002f90 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 6d060613 addi a2,a2,1744 # 80002fe0 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 5e060613 addi a2,a2,1504 # 80002f5c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 56060613 addi a2,a2,1376 # 80002f28 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 00b00793 li a5,11
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 074ad7b7 lui a5,0x74ad
+80002b9c: 00080637 lui a2,0x80
+80002ba0: a5a78793 addi a5,a5,-1446 # 74aca5a <_start-0x78b535a6>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 00008f03 lb t5,0(ra)
+80002bec: fff00e93 li t4,-1
+80002bf0: 00200193 li gp,2
+80002bf4: 23df1c63 bne t5,t4,80002e2c <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00001097 auipc ra,0x1
+80002bfc: 40808093 addi ra,ra,1032 # 80004000 <begin_signature>
+80002c00: 00108f03 lb t5,1(ra)
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 23df1063 bne t5,t4,80002e2c <fail>
+
+80002c10 <test_4>:
+80002c10: 00001097 auipc ra,0x1
+80002c14: 3f008093 addi ra,ra,1008 # 80004000 <begin_signature>
+80002c18: 00208f03 lb t5,2(ra)
+80002c1c: ff000e93 li t4,-16
+80002c20: 00400193 li gp,4
+80002c24: 21df1463 bne t5,t4,80002e2c <fail>
+
+80002c28 <test_5>:
+80002c28: 00001097 auipc ra,0x1
+80002c2c: 3d808093 addi ra,ra,984 # 80004000 <begin_signature>
+80002c30: 00308f03 lb t5,3(ra)
+80002c34: 00f00e93 li t4,15
+80002c38: 00500193 li gp,5
+80002c3c: 1fdf1863 bne t5,t4,80002e2c <fail>
+
+80002c40 <test_6>:
+80002c40: 00001097 auipc ra,0x1
+80002c44: 3c308093 addi ra,ra,963 # 80004003 <tdat4>
+80002c48: ffd08f03 lb t5,-3(ra)
+80002c4c: fff00e93 li t4,-1
+80002c50: 00600193 li gp,6
+80002c54: 1ddf1c63 bne t5,t4,80002e2c <fail>
+
+80002c58 <test_7>:
+80002c58: 00001097 auipc ra,0x1
+80002c5c: 3ab08093 addi ra,ra,939 # 80004003 <tdat4>
+80002c60: ffe08f03 lb t5,-2(ra)
+80002c64: 00000e93 li t4,0
+80002c68: 00700193 li gp,7
+80002c6c: 1ddf1063 bne t5,t4,80002e2c <fail>
+
+80002c70 <test_8>:
+80002c70: 00001097 auipc ra,0x1
+80002c74: 39308093 addi ra,ra,915 # 80004003 <tdat4>
+80002c78: fff08f03 lb t5,-1(ra)
+80002c7c: ff000e93 li t4,-16
+80002c80: 00800193 li gp,8
+80002c84: 1bdf1463 bne t5,t4,80002e2c <fail>
+
+80002c88 <test_9>:
+80002c88: 00001097 auipc ra,0x1
+80002c8c: 37b08093 addi ra,ra,891 # 80004003 <tdat4>
+80002c90: 00008f03 lb t5,0(ra)
+80002c94: 00f00e93 li t4,15
+80002c98: 00900193 li gp,9
+80002c9c: 19df1863 bne t5,t4,80002e2c <fail>
+
+80002ca0 <test_10>:
+80002ca0: 00001097 auipc ra,0x1
+80002ca4: 36008093 addi ra,ra,864 # 80004000 <begin_signature>
+80002ca8: fe008093 addi ra,ra,-32
+80002cac: 02008283 lb t0,32(ra)
+80002cb0: fff00e93 li t4,-1
+80002cb4: 00a00193 li gp,10
+80002cb8: 17d29a63 bne t0,t4,80002e2c <fail>
+
+80002cbc <test_11>:
+80002cbc: 00001097 auipc ra,0x1
+80002cc0: 34408093 addi ra,ra,836 # 80004000 <begin_signature>
+80002cc4: ffa08093 addi ra,ra,-6
+80002cc8: 00708283 lb t0,7(ra)
+80002ccc: 00000e93 li t4,0
+80002cd0: 00b00193 li gp,11
+80002cd4: 15d29c63 bne t0,t4,80002e2c <fail>
+
+80002cd8 <test_12>:
+80002cd8: 00c00193 li gp,12
+80002cdc: 00000213 li tp,0
+80002ce0: 00001097 auipc ra,0x1
+80002ce4: 32108093 addi ra,ra,801 # 80004001 <tdat2>
+80002ce8: 00108f03 lb t5,1(ra)
+80002cec: 000f0313 mv t1,t5
+80002cf0: ff000e93 li t4,-16
+80002cf4: 13d31c63 bne t1,t4,80002e2c <fail>
+80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cfc: 00200293 li t0,2
+80002d00: fe5210e3 bne tp,t0,80002ce0 <test_12+0x8>
+
+80002d04 <test_13>:
+80002d04: 00d00193 li gp,13
+80002d08: 00000213 li tp,0
+80002d0c: 00001097 auipc ra,0x1
+80002d10: 2f608093 addi ra,ra,758 # 80004002 <tdat3>
+80002d14: 00108f03 lb t5,1(ra)
+80002d18: 00000013 nop
+80002d1c: 000f0313 mv t1,t5
+80002d20: 00f00e93 li t4,15
+80002d24: 11d31463 bne t1,t4,80002e2c <fail>
+80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d2c: 00200293 li t0,2
+80002d30: fc521ee3 bne tp,t0,80002d0c <test_13+0x8>
+
+80002d34 <test_14>:
+80002d34: 00e00193 li gp,14
+80002d38: 00000213 li tp,0
+80002d3c: 00001097 auipc ra,0x1
+80002d40: 2c408093 addi ra,ra,708 # 80004000 <begin_signature>
+80002d44: 00108f03 lb t5,1(ra)
+80002d48: 00000013 nop
+80002d4c: 00000013 nop
+80002d50: 000f0313 mv t1,t5
+80002d54: 00000e93 li t4,0
+80002d58: 0dd31a63 bne t1,t4,80002e2c <fail>
+80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d60: 00200293 li t0,2
+80002d64: fc521ce3 bne tp,t0,80002d3c <test_14+0x8>
+
+80002d68 <test_15>:
+80002d68: 00f00193 li gp,15
+80002d6c: 00000213 li tp,0
+80002d70: 00001097 auipc ra,0x1
+80002d74: 29108093 addi ra,ra,657 # 80004001 <tdat2>
+80002d78: 00108f03 lb t5,1(ra)
+80002d7c: ff000e93 li t4,-16
+80002d80: 0bdf1663 bne t5,t4,80002e2c <fail>
+80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d88: 00200293 li t0,2
+80002d8c: fe5212e3 bne tp,t0,80002d70 <test_15+0x8>
+
+80002d90 <test_16>:
+80002d90: 01000193 li gp,16
+80002d94: 00000213 li tp,0
+80002d98: 00001097 auipc ra,0x1
+80002d9c: 26a08093 addi ra,ra,618 # 80004002 <tdat3>
+80002da0: 00000013 nop
+80002da4: 00108f03 lb t5,1(ra)
+80002da8: 00f00e93 li t4,15
+80002dac: 09df1063 bne t5,t4,80002e2c <fail>
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5210e3 bne tp,t0,80002d98 <test_16+0x8>
+
+80002dbc <test_17>:
+80002dbc: 01100193 li gp,17
+80002dc0: 00000213 li tp,0
+80002dc4: 00001097 auipc ra,0x1
+80002dc8: 23c08093 addi ra,ra,572 # 80004000 <begin_signature>
+80002dcc: 00000013 nop
+80002dd0: 00000013 nop
+80002dd4: 00108f03 lb t5,1(ra)
+80002dd8: 00000e93 li t4,0
+80002ddc: 05df1863 bne t5,t4,80002e2c <fail>
+80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de4: 00200293 li t0,2
+80002de8: fc521ee3 bne tp,t0,80002dc4 <test_17+0x8>
+
+80002dec <test_18>:
+80002dec: 00001297 auipc t0,0x1
+80002df0: 21428293 addi t0,t0,532 # 80004000 <begin_signature>
+80002df4: 00028103 lb sp,0(t0)
+80002df8: 00200113 li sp,2
+80002dfc: 00200e93 li t4,2
+80002e00: 01200193 li gp,18
+80002e04: 03d11463 bne sp,t4,80002e2c <fail>
+
+80002e08 <test_19>:
+80002e08: 00001297 auipc t0,0x1
+80002e0c: 1f828293 addi t0,t0,504 # 80004000 <begin_signature>
+80002e10: 00028103 lb sp,0(t0)
+80002e14: 00000013 nop
+80002e18: 00200113 li sp,2
+80002e1c: 00200e93 li t4,2
+80002e20: 01300193 li gp,19
+80002e24: 01d11463 bne sp,t4,80002e2c <fail>
+80002e28: 00301a63 bne zero,gp,80002e3c <pass>
+
+80002e2c <fail>:
+80002e2c: 00119513 slli a0,gp,0x1
+80002e30: 00050063 beqz a0,80002e30 <fail+0x4>
+80002e34: 00156513 ori a0,a0,1
+80002e38: 00000073 ecall
+
+80002e3c <pass>:
+80002e3c: 00100513 li a0,1
+80002e40: 00000073 ecall
+80002e44: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: 0xff
+
+80004001 <tdat2>:
+80004001: fsw fs0,32(s0)
+
+80004002 <tdat3>:
+80004002: addi a2,sp,988
+
+80004003 <tdat4>:
+80004003: 0f Address 0x0000000080004003 is out of bounds.
+
+80004007:
diff --git a/test/riscv-tests/rv32ui-v-lb.elf b/test/riscv-tests/rv32ui-v-lb.elf
new file mode 100644
index 0000000..d93b431
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lb.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-lbu.dump b/test/riscv-tests/rv32ui-v-lbu.dump
new file mode 100644
index 0000000..f39e6cc
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lbu.dump
@@ -0,0 +1,1107 @@
+
+rv32ui-v-lbu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 98058593 addi a1,a1,-1664 # 80002e48 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 99c58593 addi a1,a1,-1636 # 80002ed4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 94858593 addi a1,a1,-1720 # 80002eec <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 87c58593 addi a1,a1,-1924 # 80002e8c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 86c58593 addi a1,a1,-1940 # 80002fb4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 7d458593 addi a1,a1,2004 # 80002f90 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 6d060613 addi a2,a2,1744 # 80002fe0 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 5e060613 addi a2,a2,1504 # 80002f5c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 56060613 addi a2,a2,1376 # 80002f28 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 02d00793 li a5,45
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0bbae7b7 lui a5,0xbbae
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 7e478793 addi a5,a5,2020 # bbae7e4 <_start-0x7445181c>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 0000cf03 lbu t5,0(ra)
+80002bec: 0ff00e93 li t4,255
+80002bf0: 00200193 li gp,2
+80002bf4: 23df1c63 bne t5,t4,80002e2c <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00001097 auipc ra,0x1
+80002bfc: 40808093 addi ra,ra,1032 # 80004000 <begin_signature>
+80002c00: 0010cf03 lbu t5,1(ra)
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 23df1063 bne t5,t4,80002e2c <fail>
+
+80002c10 <test_4>:
+80002c10: 00001097 auipc ra,0x1
+80002c14: 3f008093 addi ra,ra,1008 # 80004000 <begin_signature>
+80002c18: 0020cf03 lbu t5,2(ra)
+80002c1c: 0f000e93 li t4,240
+80002c20: 00400193 li gp,4
+80002c24: 21df1463 bne t5,t4,80002e2c <fail>
+
+80002c28 <test_5>:
+80002c28: 00001097 auipc ra,0x1
+80002c2c: 3d808093 addi ra,ra,984 # 80004000 <begin_signature>
+80002c30: 0030cf03 lbu t5,3(ra)
+80002c34: 00f00e93 li t4,15
+80002c38: 00500193 li gp,5
+80002c3c: 1fdf1863 bne t5,t4,80002e2c <fail>
+
+80002c40 <test_6>:
+80002c40: 00001097 auipc ra,0x1
+80002c44: 3c308093 addi ra,ra,963 # 80004003 <tdat4>
+80002c48: ffd0cf03 lbu t5,-3(ra)
+80002c4c: 0ff00e93 li t4,255
+80002c50: 00600193 li gp,6
+80002c54: 1ddf1c63 bne t5,t4,80002e2c <fail>
+
+80002c58 <test_7>:
+80002c58: 00001097 auipc ra,0x1
+80002c5c: 3ab08093 addi ra,ra,939 # 80004003 <tdat4>
+80002c60: ffe0cf03 lbu t5,-2(ra)
+80002c64: 00000e93 li t4,0
+80002c68: 00700193 li gp,7
+80002c6c: 1ddf1063 bne t5,t4,80002e2c <fail>
+
+80002c70 <test_8>:
+80002c70: 00001097 auipc ra,0x1
+80002c74: 39308093 addi ra,ra,915 # 80004003 <tdat4>
+80002c78: fff0cf03 lbu t5,-1(ra)
+80002c7c: 0f000e93 li t4,240
+80002c80: 00800193 li gp,8
+80002c84: 1bdf1463 bne t5,t4,80002e2c <fail>
+
+80002c88 <test_9>:
+80002c88: 00001097 auipc ra,0x1
+80002c8c: 37b08093 addi ra,ra,891 # 80004003 <tdat4>
+80002c90: 0000cf03 lbu t5,0(ra)
+80002c94: 00f00e93 li t4,15
+80002c98: 00900193 li gp,9
+80002c9c: 19df1863 bne t5,t4,80002e2c <fail>
+
+80002ca0 <test_10>:
+80002ca0: 00001097 auipc ra,0x1
+80002ca4: 36008093 addi ra,ra,864 # 80004000 <begin_signature>
+80002ca8: fe008093 addi ra,ra,-32
+80002cac: 0200c283 lbu t0,32(ra)
+80002cb0: 0ff00e93 li t4,255
+80002cb4: 00a00193 li gp,10
+80002cb8: 17d29a63 bne t0,t4,80002e2c <fail>
+
+80002cbc <test_11>:
+80002cbc: 00001097 auipc ra,0x1
+80002cc0: 34408093 addi ra,ra,836 # 80004000 <begin_signature>
+80002cc4: ffa08093 addi ra,ra,-6
+80002cc8: 0070c283 lbu t0,7(ra)
+80002ccc: 00000e93 li t4,0
+80002cd0: 00b00193 li gp,11
+80002cd4: 15d29c63 bne t0,t4,80002e2c <fail>
+
+80002cd8 <test_12>:
+80002cd8: 00c00193 li gp,12
+80002cdc: 00000213 li tp,0
+80002ce0: 00001097 auipc ra,0x1
+80002ce4: 32108093 addi ra,ra,801 # 80004001 <tdat2>
+80002ce8: 0010cf03 lbu t5,1(ra)
+80002cec: 000f0313 mv t1,t5
+80002cf0: 0f000e93 li t4,240
+80002cf4: 13d31c63 bne t1,t4,80002e2c <fail>
+80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cfc: 00200293 li t0,2
+80002d00: fe5210e3 bne tp,t0,80002ce0 <test_12+0x8>
+
+80002d04 <test_13>:
+80002d04: 00d00193 li gp,13
+80002d08: 00000213 li tp,0
+80002d0c: 00001097 auipc ra,0x1
+80002d10: 2f608093 addi ra,ra,758 # 80004002 <tdat3>
+80002d14: 0010cf03 lbu t5,1(ra)
+80002d18: 00000013 nop
+80002d1c: 000f0313 mv t1,t5
+80002d20: 00f00e93 li t4,15
+80002d24: 11d31463 bne t1,t4,80002e2c <fail>
+80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d2c: 00200293 li t0,2
+80002d30: fc521ee3 bne tp,t0,80002d0c <test_13+0x8>
+
+80002d34 <test_14>:
+80002d34: 00e00193 li gp,14
+80002d38: 00000213 li tp,0
+80002d3c: 00001097 auipc ra,0x1
+80002d40: 2c408093 addi ra,ra,708 # 80004000 <begin_signature>
+80002d44: 0010cf03 lbu t5,1(ra)
+80002d48: 00000013 nop
+80002d4c: 00000013 nop
+80002d50: 000f0313 mv t1,t5
+80002d54: 00000e93 li t4,0
+80002d58: 0dd31a63 bne t1,t4,80002e2c <fail>
+80002d5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d60: 00200293 li t0,2
+80002d64: fc521ce3 bne tp,t0,80002d3c <test_14+0x8>
+
+80002d68 <test_15>:
+80002d68: 00f00193 li gp,15
+80002d6c: 00000213 li tp,0
+80002d70: 00001097 auipc ra,0x1
+80002d74: 29108093 addi ra,ra,657 # 80004001 <tdat2>
+80002d78: 0010cf03 lbu t5,1(ra)
+80002d7c: 0f000e93 li t4,240
+80002d80: 0bdf1663 bne t5,t4,80002e2c <fail>
+80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d88: 00200293 li t0,2
+80002d8c: fe5212e3 bne tp,t0,80002d70 <test_15+0x8>
+
+80002d90 <test_16>:
+80002d90: 01000193 li gp,16
+80002d94: 00000213 li tp,0
+80002d98: 00001097 auipc ra,0x1
+80002d9c: 26a08093 addi ra,ra,618 # 80004002 <tdat3>
+80002da0: 00000013 nop
+80002da4: 0010cf03 lbu t5,1(ra)
+80002da8: 00f00e93 li t4,15
+80002dac: 09df1063 bne t5,t4,80002e2c <fail>
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5210e3 bne tp,t0,80002d98 <test_16+0x8>
+
+80002dbc <test_17>:
+80002dbc: 01100193 li gp,17
+80002dc0: 00000213 li tp,0
+80002dc4: 00001097 auipc ra,0x1
+80002dc8: 23c08093 addi ra,ra,572 # 80004000 <begin_signature>
+80002dcc: 00000013 nop
+80002dd0: 00000013 nop
+80002dd4: 0010cf03 lbu t5,1(ra)
+80002dd8: 00000e93 li t4,0
+80002ddc: 05df1863 bne t5,t4,80002e2c <fail>
+80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de4: 00200293 li t0,2
+80002de8: fc521ee3 bne tp,t0,80002dc4 <test_17+0x8>
+
+80002dec <test_18>:
+80002dec: 00001297 auipc t0,0x1
+80002df0: 21428293 addi t0,t0,532 # 80004000 <begin_signature>
+80002df4: 0002c103 lbu sp,0(t0)
+80002df8: 00200113 li sp,2
+80002dfc: 00200e93 li t4,2
+80002e00: 01200193 li gp,18
+80002e04: 03d11463 bne sp,t4,80002e2c <fail>
+
+80002e08 <test_19>:
+80002e08: 00001297 auipc t0,0x1
+80002e0c: 1f828293 addi t0,t0,504 # 80004000 <begin_signature>
+80002e10: 0002c103 lbu sp,0(t0)
+80002e14: 00000013 nop
+80002e18: 00200113 li sp,2
+80002e1c: 00200e93 li t4,2
+80002e20: 01300193 li gp,19
+80002e24: 01d11463 bne sp,t4,80002e2c <fail>
+80002e28: 00301a63 bne zero,gp,80002e3c <pass>
+
+80002e2c <fail>:
+80002e2c: 00119513 slli a0,gp,0x1
+80002e30: 00050063 beqz a0,80002e30 <fail+0x4>
+80002e34: 00156513 ori a0,a0,1
+80002e38: 00000073 ecall
+
+80002e3c <pass>:
+80002e3c: 00100513 li a0,1
+80002e40: 00000073 ecall
+80002e44: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: 0xff
+
+80004001 <tdat2>:
+80004001: fsw fs0,32(s0)
+
+80004002 <tdat3>:
+80004002: addi a2,sp,988
+
+80004003 <tdat4>:
+80004003: 0f Address 0x0000000080004003 is out of bounds.
+
+80004007:
diff --git a/test/riscv-tests/rv32ui-v-lbu.elf b/test/riscv-tests/rv32ui-v-lbu.elf
new file mode 100644
index 0000000..0c7a831
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lbu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-lh.dump b/test/riscv-tests/rv32ui-v-lh.dump
new file mode 100644
index 0000000..7e5edd3
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lh.dump
@@ -0,0 +1,1113 @@
+
+rv32ui-v-lh: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9a058593 addi a1,a1,-1632 # 80002e68 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9bc58593 addi a1,a1,-1604 # 80002ef4 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 96858593 addi a1,a1,-1688 # 80002f0c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 89c58593 addi a1,a1,-1892 # 80002eac <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 88c58593 addi a1,a1,-1908 # 80002fd4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 7f458593 addi a1,a1,2036 # 80002fb0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 6f060613 addi a2,a2,1776 # 80003000 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 60060613 addi a2,a2,1536 # 80002f7c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 58060613 addi a2,a2,1408 # 80002f48 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 00b00793 li a5,11
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0a0d07b7 lui a5,0xa0d0
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 22478793 addi a5,a5,548 # a0d0224 <_start-0x75f2fddc>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 00009f03 lh t5,0(ra)
+80002bec: 0ff00e93 li t4,255
+80002bf0: 00200193 li gp,2
+80002bf4: 25df1c63 bne t5,t4,80002e4c <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00001097 auipc ra,0x1
+80002bfc: 40808093 addi ra,ra,1032 # 80004000 <begin_signature>
+80002c00: 00209f03 lh t5,2(ra)
+80002c04: f0000e93 li t4,-256
+80002c08: 00300193 li gp,3
+80002c0c: 25df1063 bne t5,t4,80002e4c <fail>
+
+80002c10 <test_4>:
+80002c10: 00001097 auipc ra,0x1
+80002c14: 3f008093 addi ra,ra,1008 # 80004000 <begin_signature>
+80002c18: 00409f03 lh t5,4(ra)
+80002c1c: 00001eb7 lui t4,0x1
+80002c20: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002c24: 00400193 li gp,4
+80002c28: 23df1263 bne t5,t4,80002e4c <fail>
+
+80002c2c <test_5>:
+80002c2c: 00001097 auipc ra,0x1
+80002c30: 3d408093 addi ra,ra,980 # 80004000 <begin_signature>
+80002c34: 00609f03 lh t5,6(ra)
+80002c38: fffffeb7 lui t4,0xfffff
+80002c3c: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17>
+80002c40: 00500193 li gp,5
+80002c44: 21df1463 bne t5,t4,80002e4c <fail>
+
+80002c48 <test_6>:
+80002c48: 00001097 auipc ra,0x1
+80002c4c: 3be08093 addi ra,ra,958 # 80004006 <tdat4>
+80002c50: ffa09f03 lh t5,-6(ra)
+80002c54: 0ff00e93 li t4,255
+80002c58: 00600193 li gp,6
+80002c5c: 1fdf1863 bne t5,t4,80002e4c <fail>
+
+80002c60 <test_7>:
+80002c60: 00001097 auipc ra,0x1
+80002c64: 3a608093 addi ra,ra,934 # 80004006 <tdat4>
+80002c68: ffc09f03 lh t5,-4(ra)
+80002c6c: f0000e93 li t4,-256
+80002c70: 00700193 li gp,7
+80002c74: 1ddf1c63 bne t5,t4,80002e4c <fail>
+
+80002c78 <test_8>:
+80002c78: 00001097 auipc ra,0x1
+80002c7c: 38e08093 addi ra,ra,910 # 80004006 <tdat4>
+80002c80: ffe09f03 lh t5,-2(ra)
+80002c84: 00001eb7 lui t4,0x1
+80002c88: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002c8c: 00800193 li gp,8
+80002c90: 1bdf1e63 bne t5,t4,80002e4c <fail>
+
+80002c94 <test_9>:
+80002c94: 00001097 auipc ra,0x1
+80002c98: 37208093 addi ra,ra,882 # 80004006 <tdat4>
+80002c9c: 00009f03 lh t5,0(ra)
+80002ca0: fffffeb7 lui t4,0xfffff
+80002ca4: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17>
+80002ca8: 00900193 li gp,9
+80002cac: 1bdf1063 bne t5,t4,80002e4c <fail>
+
+80002cb0 <test_10>:
+80002cb0: 00001097 auipc ra,0x1
+80002cb4: 35008093 addi ra,ra,848 # 80004000 <begin_signature>
+80002cb8: fe008093 addi ra,ra,-32
+80002cbc: 02009283 lh t0,32(ra)
+80002cc0: 0ff00e93 li t4,255
+80002cc4: 00a00193 li gp,10
+80002cc8: 19d29263 bne t0,t4,80002e4c <fail>
+
+80002ccc <test_11>:
+80002ccc: 00001097 auipc ra,0x1
+80002cd0: 33408093 addi ra,ra,820 # 80004000 <begin_signature>
+80002cd4: ffb08093 addi ra,ra,-5
+80002cd8: 00709283 lh t0,7(ra)
+80002cdc: f0000e93 li t4,-256
+80002ce0: 00b00193 li gp,11
+80002ce4: 17d29463 bne t0,t4,80002e4c <fail>
+
+80002ce8 <test_12>:
+80002ce8: 00c00193 li gp,12
+80002cec: 00000213 li tp,0
+80002cf0: 00001097 auipc ra,0x1
+80002cf4: 31208093 addi ra,ra,786 # 80004002 <tdat2>
+80002cf8: 00209f03 lh t5,2(ra)
+80002cfc: 000f0313 mv t1,t5
+80002d00: 00001eb7 lui t4,0x1
+80002d04: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002d08: 15d31263 bne t1,t4,80002e4c <fail>
+80002d0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d10: 00200293 li t0,2
+80002d14: fc521ee3 bne tp,t0,80002cf0 <test_12+0x8>
+
+80002d18 <test_13>:
+80002d18: 00d00193 li gp,13
+80002d1c: 00000213 li tp,0
+80002d20: 00001097 auipc ra,0x1
+80002d24: 2e408093 addi ra,ra,740 # 80004004 <tdat3>
+80002d28: 00209f03 lh t5,2(ra)
+80002d2c: 00000013 nop
+80002d30: 000f0313 mv t1,t5
+80002d34: fffffeb7 lui t4,0xfffff
+80002d38: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17>
+80002d3c: 11d31863 bne t1,t4,80002e4c <fail>
+80002d40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d44: 00200293 li t0,2
+80002d48: fc521ce3 bne tp,t0,80002d20 <test_13+0x8>
+
+80002d4c <test_14>:
+80002d4c: 00e00193 li gp,14
+80002d50: 00000213 li tp,0
+80002d54: 00001097 auipc ra,0x1
+80002d58: 2ac08093 addi ra,ra,684 # 80004000 <begin_signature>
+80002d5c: 00209f03 lh t5,2(ra)
+80002d60: 00000013 nop
+80002d64: 00000013 nop
+80002d68: 000f0313 mv t1,t5
+80002d6c: f0000e93 li t4,-256
+80002d70: 0dd31e63 bne t1,t4,80002e4c <fail>
+80002d74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d78: 00200293 li t0,2
+80002d7c: fc521ce3 bne tp,t0,80002d54 <test_14+0x8>
+
+80002d80 <test_15>:
+80002d80: 00f00193 li gp,15
+80002d84: 00000213 li tp,0
+80002d88: 00001097 auipc ra,0x1
+80002d8c: 27a08093 addi ra,ra,634 # 80004002 <tdat2>
+80002d90: 00209f03 lh t5,2(ra)
+80002d94: 00001eb7 lui t4,0x1
+80002d98: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002d9c: 0bdf1863 bne t5,t4,80002e4c <fail>
+80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da4: 00200293 li t0,2
+80002da8: fe5210e3 bne tp,t0,80002d88 <test_15+0x8>
+
+80002dac <test_16>:
+80002dac: 01000193 li gp,16
+80002db0: 00000213 li tp,0
+80002db4: 00001097 auipc ra,0x1
+80002db8: 25008093 addi ra,ra,592 # 80004004 <tdat3>
+80002dbc: 00000013 nop
+80002dc0: 00209f03 lh t5,2(ra)
+80002dc4: fffffeb7 lui t4,0xfffff
+80002dc8: 00fe8e93 addi t4,t4,15 # fffff00f <_end+0x7fff7c17>
+80002dcc: 09df1063 bne t5,t4,80002e4c <fail>
+80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd4: 00200293 li t0,2
+80002dd8: fc521ee3 bne tp,t0,80002db4 <test_16+0x8>
+
+80002ddc <test_17>:
+80002ddc: 01100193 li gp,17
+80002de0: 00000213 li tp,0
+80002de4: 00001097 auipc ra,0x1
+80002de8: 21c08093 addi ra,ra,540 # 80004000 <begin_signature>
+80002dec: 00000013 nop
+80002df0: 00000013 nop
+80002df4: 00209f03 lh t5,2(ra)
+80002df8: f0000e93 li t4,-256
+80002dfc: 05df1863 bne t5,t4,80002e4c <fail>
+80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e04: 00200293 li t0,2
+80002e08: fc521ee3 bne tp,t0,80002de4 <test_17+0x8>
+
+80002e0c <test_18>:
+80002e0c: 00001297 auipc t0,0x1
+80002e10: 1f428293 addi t0,t0,500 # 80004000 <begin_signature>
+80002e14: 00029103 lh sp,0(t0)
+80002e18: 00200113 li sp,2
+80002e1c: 00200e93 li t4,2
+80002e20: 01200193 li gp,18
+80002e24: 03d11463 bne sp,t4,80002e4c <fail>
+
+80002e28 <test_19>:
+80002e28: 00001297 auipc t0,0x1
+80002e2c: 1d828293 addi t0,t0,472 # 80004000 <begin_signature>
+80002e30: 00029103 lh sp,0(t0)
+80002e34: 00000013 nop
+80002e38: 00200113 li sp,2
+80002e3c: 00200e93 li t4,2
+80002e40: 01300193 li gp,19
+80002e44: 01d11463 bne sp,t4,80002e4c <fail>
+80002e48: 00301a63 bne zero,gp,80002e5c <pass>
+
+80002e4c <fail>:
+80002e4c: 00119513 slli a0,gp,0x1
+80002e50: 00050063 beqz a0,80002e50 <fail+0x4>
+80002e54: 00156513 ori a0,a0,1
+80002e58: 00000073 ecall
+
+80002e5c <pass>:
+80002e5c: 00100513 li a0,1
+80002e60: 00000073 ecall
+80002e64: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: 00ff 0xff
+
+80004002 <tdat2>:
+80004002: ff00 fsw fs0,56(a4)
+
+80004004 <tdat3>:
+80004004: 0ff0 addi a2,sp,988
+
+80004006 <tdat4>:
+80004006: 0xf00f
diff --git a/test/riscv-tests/rv32ui-v-lh.elf b/test/riscv-tests/rv32ui-v-lh.elf
new file mode 100644
index 0000000..b82a95f
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lh.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-lhu.dump b/test/riscv-tests/rv32ui-v-lhu.dump
new file mode 100644
index 0000000..21de113
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lhu.dump
@@ -0,0 +1,1118 @@
+
+rv32ui-v-lhu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9b458593 addi a1,a1,-1612 # 80002e7c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9d058593 addi a1,a1,-1584 # 80002f08 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 97c58593 addi a1,a1,-1668 # 80002f20 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8b058593 addi a1,a1,-1872 # 80002ec0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8a058593 addi a1,a1,-1888 # 80002fe8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 80858593 addi a1,a1,-2040 # 80002fc4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 70460613 addi a2,a2,1796 # 80003014 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 61460613 addi a2,a2,1556 # 80002f90 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 59460613 addi a2,a2,1428 # 80002f5c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 02a00793 li a5,42
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0fdfd7b7 lui a5,0xfdfd
+80002b9c: 00080637 lui a2,0x80
+80002ba0: ee978793 addi a5,a5,-279 # fdfcee9 <_start-0x70203117>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 0000df03 lhu t5,0(ra)
+80002bec: 0ff00e93 li t4,255
+80002bf0: 00200193 li gp,2
+80002bf4: 27df1663 bne t5,t4,80002e60 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00001097 auipc ra,0x1
+80002bfc: 40808093 addi ra,ra,1032 # 80004000 <begin_signature>
+80002c00: 0020df03 lhu t5,2(ra)
+80002c04: 00010eb7 lui t4,0x10
+80002c08: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80002c0c: 00300193 li gp,3
+80002c10: 25df1863 bne t5,t4,80002e60 <fail>
+
+80002c14 <test_4>:
+80002c14: 00001097 auipc ra,0x1
+80002c18: 3ec08093 addi ra,ra,1004 # 80004000 <begin_signature>
+80002c1c: 0040df03 lhu t5,4(ra)
+80002c20: 00001eb7 lui t4,0x1
+80002c24: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002c28: 00400193 li gp,4
+80002c2c: 23df1a63 bne t5,t4,80002e60 <fail>
+
+80002c30 <test_5>:
+80002c30: 00001097 auipc ra,0x1
+80002c34: 3d008093 addi ra,ra,976 # 80004000 <begin_signature>
+80002c38: 0060df03 lhu t5,6(ra)
+80002c3c: 0000feb7 lui t4,0xf
+80002c40: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+80002c44: 00500193 li gp,5
+80002c48: 21df1c63 bne t5,t4,80002e60 <fail>
+
+80002c4c <test_6>:
+80002c4c: 00001097 auipc ra,0x1
+80002c50: 3ba08093 addi ra,ra,954 # 80004006 <tdat4>
+80002c54: ffa0df03 lhu t5,-6(ra)
+80002c58: 0ff00e93 li t4,255
+80002c5c: 00600193 li gp,6
+80002c60: 21df1063 bne t5,t4,80002e60 <fail>
+
+80002c64 <test_7>:
+80002c64: 00001097 auipc ra,0x1
+80002c68: 3a208093 addi ra,ra,930 # 80004006 <tdat4>
+80002c6c: ffc0df03 lhu t5,-4(ra)
+80002c70: 00010eb7 lui t4,0x10
+80002c74: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80002c78: 00700193 li gp,7
+80002c7c: 1fdf1263 bne t5,t4,80002e60 <fail>
+
+80002c80 <test_8>:
+80002c80: 00001097 auipc ra,0x1
+80002c84: 38608093 addi ra,ra,902 # 80004006 <tdat4>
+80002c88: ffe0df03 lhu t5,-2(ra)
+80002c8c: 00001eb7 lui t4,0x1
+80002c90: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002c94: 00800193 li gp,8
+80002c98: 1ddf1463 bne t5,t4,80002e60 <fail>
+
+80002c9c <test_9>:
+80002c9c: 00001097 auipc ra,0x1
+80002ca0: 36a08093 addi ra,ra,874 # 80004006 <tdat4>
+80002ca4: 0000df03 lhu t5,0(ra)
+80002ca8: 0000feb7 lui t4,0xf
+80002cac: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+80002cb0: 00900193 li gp,9
+80002cb4: 1bdf1663 bne t5,t4,80002e60 <fail>
+
+80002cb8 <test_10>:
+80002cb8: 00001097 auipc ra,0x1
+80002cbc: 34808093 addi ra,ra,840 # 80004000 <begin_signature>
+80002cc0: fe008093 addi ra,ra,-32
+80002cc4: 0200d283 lhu t0,32(ra)
+80002cc8: 0ff00e93 li t4,255
+80002ccc: 00a00193 li gp,10
+80002cd0: 19d29863 bne t0,t4,80002e60 <fail>
+
+80002cd4 <test_11>:
+80002cd4: 00001097 auipc ra,0x1
+80002cd8: 32c08093 addi ra,ra,812 # 80004000 <begin_signature>
+80002cdc: ffb08093 addi ra,ra,-5
+80002ce0: 0070d283 lhu t0,7(ra)
+80002ce4: 00010eb7 lui t4,0x10
+80002ce8: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80002cec: 00b00193 li gp,11
+80002cf0: 17d29863 bne t0,t4,80002e60 <fail>
+
+80002cf4 <test_12>:
+80002cf4: 00c00193 li gp,12
+80002cf8: 00000213 li tp,0
+80002cfc: 00001097 auipc ra,0x1
+80002d00: 30608093 addi ra,ra,774 # 80004002 <tdat2>
+80002d04: 0020df03 lhu t5,2(ra)
+80002d08: 000f0313 mv t1,t5
+80002d0c: 00001eb7 lui t4,0x1
+80002d10: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002d14: 15d31663 bne t1,t4,80002e60 <fail>
+80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d1c: 00200293 li t0,2
+80002d20: fc521ee3 bne tp,t0,80002cfc <test_12+0x8>
+
+80002d24 <test_13>:
+80002d24: 00d00193 li gp,13
+80002d28: 00000213 li tp,0
+80002d2c: 00001097 auipc ra,0x1
+80002d30: 2d808093 addi ra,ra,728 # 80004004 <tdat3>
+80002d34: 0020df03 lhu t5,2(ra)
+80002d38: 00000013 nop
+80002d3c: 000f0313 mv t1,t5
+80002d40: 0000feb7 lui t4,0xf
+80002d44: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+80002d48: 11d31c63 bne t1,t4,80002e60 <fail>
+80002d4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d50: 00200293 li t0,2
+80002d54: fc521ce3 bne tp,t0,80002d2c <test_13+0x8>
+
+80002d58 <test_14>:
+80002d58: 00e00193 li gp,14
+80002d5c: 00000213 li tp,0
+80002d60: 00001097 auipc ra,0x1
+80002d64: 2a008093 addi ra,ra,672 # 80004000 <begin_signature>
+80002d68: 0020df03 lhu t5,2(ra)
+80002d6c: 00000013 nop
+80002d70: 00000013 nop
+80002d74: 000f0313 mv t1,t5
+80002d78: 00010eb7 lui t4,0x10
+80002d7c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80002d80: 0fd31063 bne t1,t4,80002e60 <fail>
+80002d84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d88: 00200293 li t0,2
+80002d8c: fc521ae3 bne tp,t0,80002d60 <test_14+0x8>
+
+80002d90 <test_15>:
+80002d90: 00f00193 li gp,15
+80002d94: 00000213 li tp,0
+80002d98: 00001097 auipc ra,0x1
+80002d9c: 26a08093 addi ra,ra,618 # 80004002 <tdat2>
+80002da0: 0020df03 lhu t5,2(ra)
+80002da4: 00001eb7 lui t4,0x1
+80002da8: ff0e8e93 addi t4,t4,-16 # ff0 <_start-0x7ffff010>
+80002dac: 0bdf1a63 bne t5,t4,80002e60 <fail>
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5210e3 bne tp,t0,80002d98 <test_15+0x8>
+
+80002dbc <test_16>:
+80002dbc: 01000193 li gp,16
+80002dc0: 00000213 li tp,0
+80002dc4: 00001097 auipc ra,0x1
+80002dc8: 24008093 addi ra,ra,576 # 80004004 <tdat3>
+80002dcc: 00000013 nop
+80002dd0: 0020df03 lhu t5,2(ra)
+80002dd4: 0000feb7 lui t4,0xf
+80002dd8: 00fe8e93 addi t4,t4,15 # f00f <_start-0x7fff0ff1>
+80002ddc: 09df1263 bne t5,t4,80002e60 <fail>
+80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de4: 00200293 li t0,2
+80002de8: fc521ee3 bne tp,t0,80002dc4 <test_16+0x8>
+
+80002dec <test_17>:
+80002dec: 01100193 li gp,17
+80002df0: 00000213 li tp,0
+80002df4: 00001097 auipc ra,0x1
+80002df8: 20c08093 addi ra,ra,524 # 80004000 <begin_signature>
+80002dfc: 00000013 nop
+80002e00: 00000013 nop
+80002e04: 0020df03 lhu t5,2(ra)
+80002e08: 00010eb7 lui t4,0x10
+80002e0c: f00e8e93 addi t4,t4,-256 # ff00 <_start-0x7fff0100>
+80002e10: 05df1863 bne t5,t4,80002e60 <fail>
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fc521ce3 bne tp,t0,80002df4 <test_17+0x8>
+
+80002e20 <test_18>:
+80002e20: 00001297 auipc t0,0x1
+80002e24: 1e028293 addi t0,t0,480 # 80004000 <begin_signature>
+80002e28: 0002d103 lhu sp,0(t0)
+80002e2c: 00200113 li sp,2
+80002e30: 00200e93 li t4,2
+80002e34: 01200193 li gp,18
+80002e38: 03d11463 bne sp,t4,80002e60 <fail>
+
+80002e3c <test_19>:
+80002e3c: 00001297 auipc t0,0x1
+80002e40: 1c428293 addi t0,t0,452 # 80004000 <begin_signature>
+80002e44: 0002d103 lhu sp,0(t0)
+80002e48: 00000013 nop
+80002e4c: 00200113 li sp,2
+80002e50: 00200e93 li t4,2
+80002e54: 01300193 li gp,19
+80002e58: 01d11463 bne sp,t4,80002e60 <fail>
+80002e5c: 00301a63 bne zero,gp,80002e70 <pass>
+
+80002e60 <fail>:
+80002e60: 00119513 slli a0,gp,0x1
+80002e64: 00050063 beqz a0,80002e64 <fail+0x4>
+80002e68: 00156513 ori a0,a0,1
+80002e6c: 00000073 ecall
+
+80002e70 <pass>:
+80002e70: 00100513 li a0,1
+80002e74: 00000073 ecall
+80002e78: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: 00ff 0xff
+
+80004002 <tdat2>:
+80004002: ff00 fsw fs0,56(a4)
+
+80004004 <tdat3>:
+80004004: 0ff0 addi a2,sp,988
+
+80004006 <tdat4>:
+80004006: 0xf00f
diff --git a/test/riscv-tests/rv32ui-v-lhu.elf b/test/riscv-tests/rv32ui-v-lhu.elf
new file mode 100644
index 0000000..0e4f992
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-lui.dump b/test/riscv-tests/rv32ui-v-lui.dump
new file mode 100644
index 0000000..4ab12fe
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lui.dump
@@ -0,0 +1,942 @@
+
+rv32ui-v-lui: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 79458593 addi a1,a1,1940 # 80002c5c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 7b058593 addi a1,a1,1968 # 80002ce8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 75c58593 addi a1,a1,1884 # 80002d00 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 69058593 addi a1,a1,1680 # 80002ca0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 68058593 addi a1,a1,1664 # 80002dc8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 5e858593 addi a1,a1,1512 # 80002da4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 4e460613 addi a2,a2,1252 # 80002df4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 3f460613 addi a2,a2,1012 # 80002d70 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 37460613 addi a2,a2,884 # 80002d3c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 01700793 li a5,23
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0f81c7b7 lui a5,0xf81c
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 76c78793 addi a5,a5,1900 # f81c76c <_start-0x707e3894>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 000000b7 lui ra,0x0
+80002be4: 00000e93 li t4,0
+80002be8: 00200193 li gp,2
+80002bec: 05d09a63 bne ra,t4,80002c40 <fail>
+
+80002bf0 <test_3>:
+80002bf0: fffff0b7 lui ra,0xfffff
+80002bf4: 4010d093 srai ra,ra,0x1
+80002bf8: 80000e93 li t4,-2048
+80002bfc: 00300193 li gp,3
+80002c00: 05d09063 bne ra,t4,80002c40 <fail>
+
+80002c04 <test_4>:
+80002c04: 7ffff0b7 lui ra,0x7ffff
+80002c08: 4140d093 srai ra,ra,0x14
+80002c0c: 7ff00e93 li t4,2047
+80002c10: 00400193 li gp,4
+80002c14: 03d09663 bne ra,t4,80002c40 <fail>
+
+80002c18 <test_5>:
+80002c18: 800000b7 lui ra,0x80000
+80002c1c: 4140d093 srai ra,ra,0x14
+80002c20: 80000e93 li t4,-2048
+80002c24: 00500193 li gp,5
+80002c28: 01d09c63 bne ra,t4,80002c40 <fail>
+
+80002c2c <test_6>:
+80002c2c: 80000037 lui zero,0x80000
+80002c30: 00000e93 li t4,0
+80002c34: 00600193 li gp,6
+80002c38: 01d01463 bne zero,t4,80002c40 <fail>
+80002c3c: 00301a63 bne zero,gp,80002c50 <pass>
+
+80002c40 <fail>:
+80002c40: 00119513 slli a0,gp,0x1
+80002c44: 00050063 beqz a0,80002c44 <fail+0x4>
+80002c48: 00156513 ori a0,a0,1
+80002c4c: 00000073 ecall
+
+80002c50 <pass>:
+80002c50: 00100513 li a0,1
+80002c54: 00000073 ecall
+80002c58: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-lui.elf b/test/riscv-tests/rv32ui-v-lui.elf
new file mode 100644
index 0000000..4870fb6
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lui.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-lw.dump b/test/riscv-tests/rv32ui-v-lw.dump
new file mode 100644
index 0000000..58f77c1
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lw.dump
@@ -0,0 +1,1124 @@
+
+rv32ui-v-lw: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9c058593 addi a1,a1,-1600 # 80002e88 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9dc58593 addi a1,a1,-1572 # 80002f14 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 98858593 addi a1,a1,-1656 # 80002f2c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8bc58593 addi a1,a1,-1860 # 80002ecc <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8ac58593 addi a1,a1,-1876 # 80002ff4 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 81458593 addi a1,a1,-2028 # 80002fd0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 71060613 addi a2,a2,1808 # 80003020 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 62060613 addi a2,a2,1568 # 80002f9c <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 5a060613 addi a2,a2,1440 # 80002f68 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 03b00793 li a5,59
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0a9027b7 lui a5,0xa902
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 47878793 addi a5,a5,1144 # a902478 <_start-0x756fdb88>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 0000af03 lw t5,0(ra)
+80002bec: 00ff0eb7 lui t4,0xff0
+80002bf0: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80002bf4: 00200193 li gp,2
+80002bf8: 27df1a63 bne t5,t4,80002e6c <fail>
+
+80002bfc <test_3>:
+80002bfc: 00001097 auipc ra,0x1
+80002c00: 40408093 addi ra,ra,1028 # 80004000 <begin_signature>
+80002c04: 0040af03 lw t5,4(ra)
+80002c08: ff010eb7 lui t4,0xff010
+80002c0c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08>
+80002c10: 00300193 li gp,3
+80002c14: 25df1c63 bne t5,t4,80002e6c <fail>
+
+80002c18 <test_4>:
+80002c18: 00001097 auipc ra,0x1
+80002c1c: 3e808093 addi ra,ra,1000 # 80004000 <begin_signature>
+80002c20: 0080af03 lw t5,8(ra)
+80002c24: 0ff01eb7 lui t4,0xff01
+80002c28: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002c2c: 00400193 li gp,4
+80002c30: 23df1e63 bne t5,t4,80002e6c <fail>
+
+80002c34 <test_5>:
+80002c34: 00001097 auipc ra,0x1
+80002c38: 3cc08093 addi ra,ra,972 # 80004000 <begin_signature>
+80002c3c: 00c0af03 lw t5,12(ra)
+80002c40: f00ffeb7 lui t4,0xf00ff
+80002c44: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17>
+80002c48: 00500193 li gp,5
+80002c4c: 23df1063 bne t5,t4,80002e6c <fail>
+
+80002c50 <test_6>:
+80002c50: 00001097 auipc ra,0x1
+80002c54: 3bc08093 addi ra,ra,956 # 8000400c <tdat4>
+80002c58: ff40af03 lw t5,-12(ra)
+80002c5c: 00ff0eb7 lui t4,0xff0
+80002c60: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80002c64: 00600193 li gp,6
+80002c68: 21df1263 bne t5,t4,80002e6c <fail>
+
+80002c6c <test_7>:
+80002c6c: 00001097 auipc ra,0x1
+80002c70: 3a008093 addi ra,ra,928 # 8000400c <tdat4>
+80002c74: ff80af03 lw t5,-8(ra)
+80002c78: ff010eb7 lui t4,0xff010
+80002c7c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08>
+80002c80: 00700193 li gp,7
+80002c84: 1fdf1463 bne t5,t4,80002e6c <fail>
+
+80002c88 <test_8>:
+80002c88: 00001097 auipc ra,0x1
+80002c8c: 38408093 addi ra,ra,900 # 8000400c <tdat4>
+80002c90: ffc0af03 lw t5,-4(ra)
+80002c94: 0ff01eb7 lui t4,0xff01
+80002c98: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002c9c: 00800193 li gp,8
+80002ca0: 1ddf1663 bne t5,t4,80002e6c <fail>
+
+80002ca4 <test_9>:
+80002ca4: 00001097 auipc ra,0x1
+80002ca8: 36808093 addi ra,ra,872 # 8000400c <tdat4>
+80002cac: 0000af03 lw t5,0(ra)
+80002cb0: f00ffeb7 lui t4,0xf00ff
+80002cb4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17>
+80002cb8: 00900193 li gp,9
+80002cbc: 1bdf1863 bne t5,t4,80002e6c <fail>
+
+80002cc0 <test_10>:
+80002cc0: 00001097 auipc ra,0x1
+80002cc4: 34008093 addi ra,ra,832 # 80004000 <begin_signature>
+80002cc8: fe008093 addi ra,ra,-32
+80002ccc: 0200a283 lw t0,32(ra)
+80002cd0: 00ff0eb7 lui t4,0xff0
+80002cd4: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80002cd8: 00a00193 li gp,10
+80002cdc: 19d29863 bne t0,t4,80002e6c <fail>
+
+80002ce0 <test_11>:
+80002ce0: 00001097 auipc ra,0x1
+80002ce4: 32008093 addi ra,ra,800 # 80004000 <begin_signature>
+80002ce8: ffd08093 addi ra,ra,-3
+80002cec: 0070a283 lw t0,7(ra)
+80002cf0: ff010eb7 lui t4,0xff010
+80002cf4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08>
+80002cf8: 00b00193 li gp,11
+80002cfc: 17d29863 bne t0,t4,80002e6c <fail>
+
+80002d00 <test_12>:
+80002d00: 00c00193 li gp,12
+80002d04: 00000213 li tp,0
+80002d08: 00001097 auipc ra,0x1
+80002d0c: 2fc08093 addi ra,ra,764 # 80004004 <tdat2>
+80002d10: 0040af03 lw t5,4(ra)
+80002d14: 000f0313 mv t1,t5
+80002d18: 0ff01eb7 lui t4,0xff01
+80002d1c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002d20: 15d31663 bne t1,t4,80002e6c <fail>
+80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d28: 00200293 li t0,2
+80002d2c: fc521ee3 bne tp,t0,80002d08 <test_12+0x8>
+
+80002d30 <test_13>:
+80002d30: 00d00193 li gp,13
+80002d34: 00000213 li tp,0
+80002d38: 00001097 auipc ra,0x1
+80002d3c: 2d008093 addi ra,ra,720 # 80004008 <tdat3>
+80002d40: 0040af03 lw t5,4(ra)
+80002d44: 00000013 nop
+80002d48: 000f0313 mv t1,t5
+80002d4c: f00ffeb7 lui t4,0xf00ff
+80002d50: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17>
+80002d54: 11d31c63 bne t1,t4,80002e6c <fail>
+80002d58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d5c: 00200293 li t0,2
+80002d60: fc521ce3 bne tp,t0,80002d38 <test_13+0x8>
+
+80002d64 <test_14>:
+80002d64: 00e00193 li gp,14
+80002d68: 00000213 li tp,0
+80002d6c: 00001097 auipc ra,0x1
+80002d70: 29408093 addi ra,ra,660 # 80004000 <begin_signature>
+80002d74: 0040af03 lw t5,4(ra)
+80002d78: 00000013 nop
+80002d7c: 00000013 nop
+80002d80: 000f0313 mv t1,t5
+80002d84: ff010eb7 lui t4,0xff010
+80002d88: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08>
+80002d8c: 0fd31063 bne t1,t4,80002e6c <fail>
+80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d94: 00200293 li t0,2
+80002d98: fc521ae3 bne tp,t0,80002d6c <test_14+0x8>
+
+80002d9c <test_15>:
+80002d9c: 00f00193 li gp,15
+80002da0: 00000213 li tp,0
+80002da4: 00001097 auipc ra,0x1
+80002da8: 26008093 addi ra,ra,608 # 80004004 <tdat2>
+80002dac: 0040af03 lw t5,4(ra)
+80002db0: 0ff01eb7 lui t4,0xff01
+80002db4: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002db8: 0bdf1a63 bne t5,t4,80002e6c <fail>
+80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dc0: 00200293 li t0,2
+80002dc4: fe5210e3 bne tp,t0,80002da4 <test_15+0x8>
+
+80002dc8 <test_16>:
+80002dc8: 01000193 li gp,16
+80002dcc: 00000213 li tp,0
+80002dd0: 00001097 auipc ra,0x1
+80002dd4: 23808093 addi ra,ra,568 # 80004008 <tdat3>
+80002dd8: 00000013 nop
+80002ddc: 0040af03 lw t5,4(ra)
+80002de0: f00ffeb7 lui t4,0xf00ff
+80002de4: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f7c17>
+80002de8: 09df1263 bne t5,t4,80002e6c <fail>
+80002dec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002df0: 00200293 li t0,2
+80002df4: fc521ee3 bne tp,t0,80002dd0 <test_16+0x8>
+
+80002df8 <test_17>:
+80002df8: 01100193 li gp,17
+80002dfc: 00000213 li tp,0
+80002e00: 00001097 auipc ra,0x1
+80002e04: 20008093 addi ra,ra,512 # 80004000 <begin_signature>
+80002e08: 00000013 nop
+80002e0c: 00000013 nop
+80002e10: 0040af03 lw t5,4(ra)
+80002e14: ff010eb7 lui t4,0xff010
+80002e18: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f008b08>
+80002e1c: 05df1863 bne t5,t4,80002e6c <fail>
+80002e20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e24: 00200293 li t0,2
+80002e28: fc521ce3 bne tp,t0,80002e00 <test_17+0x8>
+
+80002e2c <test_18>:
+80002e2c: 00001297 auipc t0,0x1
+80002e30: 1d428293 addi t0,t0,468 # 80004000 <begin_signature>
+80002e34: 0002a103 lw sp,0(t0)
+80002e38: 00200113 li sp,2
+80002e3c: 00200e93 li t4,2
+80002e40: 01200193 li gp,18
+80002e44: 03d11463 bne sp,t4,80002e6c <fail>
+
+80002e48 <test_19>:
+80002e48: 00001297 auipc t0,0x1
+80002e4c: 1b828293 addi t0,t0,440 # 80004000 <begin_signature>
+80002e50: 0002a103 lw sp,0(t0)
+80002e54: 00000013 nop
+80002e58: 00200113 li sp,2
+80002e5c: 00200e93 li t4,2
+80002e60: 01300193 li gp,19
+80002e64: 01d11463 bne sp,t4,80002e6c <fail>
+80002e68: 00301a63 bne zero,gp,80002e7c <pass>
+
+80002e6c <fail>:
+80002e6c: 00119513 slli a0,gp,0x1
+80002e70: 00050063 beqz a0,80002e70 <fail+0x4>
+80002e74: 00156513 ori a0,a0,1
+80002e78: 00000073 ecall
+
+80002e7c <pass>:
+80002e7c: 00100513 li a0,1
+80002e80: 00000073 ecall
+80002e84: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: 00ff 0xff
+80004002: 00ff 0xff
+
+80004004 <tdat2>:
+80004004: ff00 fsw fs0,56(a4)
+80004006: ff00 fsw fs0,56(a4)
+
+80004008 <tdat3>:
+80004008: 0ff0 addi a2,sp,988
+8000400a: 0ff0 addi a2,sp,988
+
+8000400c <tdat4>:
+8000400c: f00ff00f 0xf00ff00f
diff --git a/test/riscv-tests/rv32ui-v-lw.elf b/test/riscv-tests/rv32ui-v-lw.elf
new file mode 100644
index 0000000..c3f458c
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-lw.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-or.dump b/test/riscv-tests/rv32ui-v-or.dump
new file mode 100644
index 0000000..31b983c
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-or.dump
@@ -0,0 +1,1265 @@
+
+rv32ui-v-or: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bf858593 addi a1,a1,-1032 # 800030c0 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1458593 addi a1,a1,-1004 # 8000314c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc058593 addi a1,a1,-1088 # 80003164 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af458593 addi a1,a1,-1292 # 80003104 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae458593 addi a1,a1,-1308 # 8000322c <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a4c58593 addi a1,a1,-1460 # 80003208 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94860613 addi a2,a2,-1720 # 80003258 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85860613 addi a2,a2,-1960 # 800031d4 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7d860613 addi a2,a2,2008 # 800031a0 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00e00793 li a5,14
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 009d97b7 lui a5,0x9d9
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 37e78793 addi a5,a5,894 # 9d937e <_start-0x7f626c82>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: ff0100b7 lui ra,0xff010
+80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002be8: 0f0f1137 lui sp,0xf0f1
+80002bec: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002bf0: 0020ef33 or t5,ra,sp
+80002bf4: ff100eb7 lui t4,0xff100
+80002bf8: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002bfc: 00200193 li gp,2
+80002c00: 4bdf1263 bne t5,t4,800030a4 <fail>
+
+80002c04 <test_3>:
+80002c04: 0ff010b7 lui ra,0xff01
+80002c08: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c0c: f0f0f137 lui sp,0xf0f0f
+80002c10: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002c14: 0020ef33 or t5,ra,sp
+80002c18: fff10eb7 lui t4,0xfff10
+80002c1c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8>
+80002c20: 00300193 li gp,3
+80002c24: 49df1063 bne t5,t4,800030a4 <fail>
+
+80002c28 <test_4>:
+80002c28: 00ff00b7 lui ra,0xff0
+80002c2c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002c30: 0f0f1137 lui sp,0xf0f1
+80002c34: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002c38: 0020ef33 or t5,ra,sp
+80002c3c: 0fff1eb7 lui t4,0xfff1
+80002c40: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80002c44: 00400193 li gp,4
+80002c48: 45df1e63 bne t5,t4,800030a4 <fail>
+
+80002c4c <test_5>:
+80002c4c: f00ff0b7 lui ra,0xf00ff
+80002c50: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f8c17>
+80002c54: f0f0f137 lui sp,0xf0f0f
+80002c58: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002c5c: 0020ef33 or t5,ra,sp
+80002c60: f0fffeb7 lui t4,0xf0fff
+80002c64: 0ffe8e93 addi t4,t4,255 # f0fff0ff <_end+0x70ff8d07>
+80002c68: 00500193 li gp,5
+80002c6c: 43df1c63 bne t5,t4,800030a4 <fail>
+
+80002c70 <test_6>:
+80002c70: ff0100b7 lui ra,0xff010
+80002c74: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002c78: 0f0f1137 lui sp,0xf0f1
+80002c7c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002c80: 0020e0b3 or ra,ra,sp
+80002c84: ff100eb7 lui t4,0xff100
+80002c88: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002c8c: 00600193 li gp,6
+80002c90: 41d09a63 bne ra,t4,800030a4 <fail>
+
+80002c94 <test_7>:
+80002c94: ff0100b7 lui ra,0xff010
+80002c98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002c9c: 0f0f1137 lui sp,0xf0f1
+80002ca0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ca4: 0020e133 or sp,ra,sp
+80002ca8: ff100eb7 lui t4,0xff100
+80002cac: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002cb0: 00700193 li gp,7
+80002cb4: 3fd11863 bne sp,t4,800030a4 <fail>
+
+80002cb8 <test_8>:
+80002cb8: ff0100b7 lui ra,0xff010
+80002cbc: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002cc0: 0010e0b3 or ra,ra,ra
+80002cc4: ff010eb7 lui t4,0xff010
+80002cc8: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002ccc: 00800193 li gp,8
+80002cd0: 3dd09a63 bne ra,t4,800030a4 <fail>
+
+80002cd4 <test_9>:
+80002cd4: 00000213 li tp,0
+80002cd8: ff0100b7 lui ra,0xff010
+80002cdc: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002ce0: 0f0f1137 lui sp,0xf0f1
+80002ce4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ce8: 0020ef33 or t5,ra,sp
+80002cec: 000f0313 mv t1,t5
+80002cf0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cf4: 00200293 li t0,2
+80002cf8: fe5210e3 bne tp,t0,80002cd8 <test_9+0x4>
+80002cfc: ff100eb7 lui t4,0xff100
+80002d00: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002d04: 00900193 li gp,9
+80002d08: 39d31e63 bne t1,t4,800030a4 <fail>
+
+80002d0c <test_10>:
+80002d0c: 00000213 li tp,0
+80002d10: 0ff010b7 lui ra,0xff01
+80002d14: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002d18: f0f0f137 lui sp,0xf0f0f
+80002d1c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002d20: 0020ef33 or t5,ra,sp
+80002d24: 00000013 nop
+80002d28: 000f0313 mv t1,t5
+80002d2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d30: 00200293 li t0,2
+80002d34: fc521ee3 bne tp,t0,80002d10 <test_10+0x4>
+80002d38: fff10eb7 lui t4,0xfff10
+80002d3c: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8>
+80002d40: 00a00193 li gp,10
+80002d44: 37d31063 bne t1,t4,800030a4 <fail>
+
+80002d48 <test_11>:
+80002d48: 00000213 li tp,0
+80002d4c: 00ff00b7 lui ra,0xff0
+80002d50: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002d54: 0f0f1137 lui sp,0xf0f1
+80002d58: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002d5c: 0020ef33 or t5,ra,sp
+80002d60: 00000013 nop
+80002d64: 00000013 nop
+80002d68: 000f0313 mv t1,t5
+80002d6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d70: 00200293 li t0,2
+80002d74: fc521ce3 bne tp,t0,80002d4c <test_11+0x4>
+80002d78: 0fff1eb7 lui t4,0xfff1
+80002d7c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80002d80: 00b00193 li gp,11
+80002d84: 33d31063 bne t1,t4,800030a4 <fail>
+
+80002d88 <test_12>:
+80002d88: 00000213 li tp,0
+80002d8c: ff0100b7 lui ra,0xff010
+80002d90: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002d94: 0f0f1137 lui sp,0xf0f1
+80002d98: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002d9c: 0020ef33 or t5,ra,sp
+80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da4: 00200293 li t0,2
+80002da8: fe5212e3 bne tp,t0,80002d8c <test_12+0x4>
+80002dac: ff100eb7 lui t4,0xff100
+80002db0: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002db4: 00c00193 li gp,12
+80002db8: 2fdf1663 bne t5,t4,800030a4 <fail>
+
+80002dbc <test_13>:
+80002dbc: 00000213 li tp,0
+80002dc0: 0ff010b7 lui ra,0xff01
+80002dc4: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002dc8: f0f0f137 lui sp,0xf0f0f
+80002dcc: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002dd0: 00000013 nop
+80002dd4: 0020ef33 or t5,ra,sp
+80002dd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ddc: 00200293 li t0,2
+80002de0: fe5210e3 bne tp,t0,80002dc0 <test_13+0x4>
+80002de4: fff10eb7 lui t4,0xfff10
+80002de8: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8>
+80002dec: 00d00193 li gp,13
+80002df0: 2bdf1a63 bne t5,t4,800030a4 <fail>
+
+80002df4 <test_14>:
+80002df4: 00000213 li tp,0
+80002df8: 00ff00b7 lui ra,0xff0
+80002dfc: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002e00: 0f0f1137 lui sp,0xf0f1
+80002e04: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002e08: 00000013 nop
+80002e0c: 00000013 nop
+80002e10: 0020ef33 or t5,ra,sp
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fc521ee3 bne tp,t0,80002df8 <test_14+0x4>
+80002e20: 0fff1eb7 lui t4,0xfff1
+80002e24: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80002e28: 00e00193 li gp,14
+80002e2c: 27df1c63 bne t5,t4,800030a4 <fail>
+
+80002e30 <test_15>:
+80002e30: 00000213 li tp,0
+80002e34: ff0100b7 lui ra,0xff010
+80002e38: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002e3c: 00000013 nop
+80002e40: 0f0f1137 lui sp,0xf0f1
+80002e44: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002e48: 0020ef33 or t5,ra,sp
+80002e4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e50: 00200293 li t0,2
+80002e54: fe5210e3 bne tp,t0,80002e34 <test_15+0x4>
+80002e58: ff100eb7 lui t4,0xff100
+80002e5c: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002e60: 00f00193 li gp,15
+80002e64: 25df1063 bne t5,t4,800030a4 <fail>
+
+80002e68 <test_16>:
+80002e68: 00000213 li tp,0
+80002e6c: 0ff010b7 lui ra,0xff01
+80002e70: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002e74: 00000013 nop
+80002e78: f0f0f137 lui sp,0xf0f0f
+80002e7c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002e80: 00000013 nop
+80002e84: 0020ef33 or t5,ra,sp
+80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e8c: 00200293 li t0,2
+80002e90: fc521ee3 bne tp,t0,80002e6c <test_16+0x4>
+80002e94: fff10eb7 lui t4,0xfff10
+80002e98: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8>
+80002e9c: 01000193 li gp,16
+80002ea0: 21df1263 bne t5,t4,800030a4 <fail>
+
+80002ea4 <test_17>:
+80002ea4: 00000213 li tp,0
+80002ea8: 00ff00b7 lui ra,0xff0
+80002eac: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002eb0: 00000013 nop
+80002eb4: 00000013 nop
+80002eb8: 0f0f1137 lui sp,0xf0f1
+80002ebc: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ec0: 0020ef33 or t5,ra,sp
+80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ec8: 00200293 li t0,2
+80002ecc: fc521ee3 bne tp,t0,80002ea8 <test_17+0x4>
+80002ed0: 0fff1eb7 lui t4,0xfff1
+80002ed4: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80002ed8: 01100193 li gp,17
+80002edc: 1ddf1463 bne t5,t4,800030a4 <fail>
+
+80002ee0 <test_18>:
+80002ee0: 00000213 li tp,0
+80002ee4: 0f0f1137 lui sp,0xf0f1
+80002ee8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002eec: ff0100b7 lui ra,0xff010
+80002ef0: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002ef4: 0020ef33 or t5,ra,sp
+80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002efc: 00200293 li t0,2
+80002f00: fe5212e3 bne tp,t0,80002ee4 <test_18+0x4>
+80002f04: ff100eb7 lui t4,0xff100
+80002f08: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002f0c: 01200193 li gp,18
+80002f10: 19df1a63 bne t5,t4,800030a4 <fail>
+
+80002f14 <test_19>:
+80002f14: 00000213 li tp,0
+80002f18: f0f0f137 lui sp,0xf0f0f
+80002f1c: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002f20: 0ff010b7 lui ra,0xff01
+80002f24: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002f28: 00000013 nop
+80002f2c: 0020ef33 or t5,ra,sp
+80002f30: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f34: 00200293 li t0,2
+80002f38: fe5210e3 bne tp,t0,80002f18 <test_19+0x4>
+80002f3c: fff10eb7 lui t4,0xfff10
+80002f40: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8>
+80002f44: 01300193 li gp,19
+80002f48: 15df1e63 bne t5,t4,800030a4 <fail>
+
+80002f4c <test_20>:
+80002f4c: 00000213 li tp,0
+80002f50: 0f0f1137 lui sp,0xf0f1
+80002f54: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002f58: 00ff00b7 lui ra,0xff0
+80002f5c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002f60: 00000013 nop
+80002f64: 00000013 nop
+80002f68: 0020ef33 or t5,ra,sp
+80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f70: 00200293 li t0,2
+80002f74: fc521ee3 bne tp,t0,80002f50 <test_20+0x4>
+80002f78: 0fff1eb7 lui t4,0xfff1
+80002f7c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80002f80: 01400193 li gp,20
+80002f84: 13df1063 bne t5,t4,800030a4 <fail>
+
+80002f88 <test_21>:
+80002f88: 00000213 li tp,0
+80002f8c: 0f0f1137 lui sp,0xf0f1
+80002f90: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002f94: 00000013 nop
+80002f98: ff0100b7 lui ra,0xff010
+80002f9c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002fa0: 0020ef33 or t5,ra,sp
+80002fa4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa8: 00200293 li t0,2
+80002fac: fe5210e3 bne tp,t0,80002f8c <test_21+0x4>
+80002fb0: ff100eb7 lui t4,0xff100
+80002fb4: f0fe8e93 addi t4,t4,-241 # ff0fff0f <_end+0x7f0f9b17>
+80002fb8: 01500193 li gp,21
+80002fbc: 0fdf1463 bne t5,t4,800030a4 <fail>
+
+80002fc0 <test_22>:
+80002fc0: 00000213 li tp,0
+80002fc4: f0f0f137 lui sp,0xf0f0f
+80002fc8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002fcc: 00000013 nop
+80002fd0: 0ff010b7 lui ra,0xff01
+80002fd4: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002fd8: 00000013 nop
+80002fdc: 0020ef33 or t5,ra,sp
+80002fe0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe4: 00200293 li t0,2
+80002fe8: fc521ee3 bne tp,t0,80002fc4 <test_22+0x4>
+80002fec: fff10eb7 lui t4,0xfff10
+80002ff0: ff0e8e93 addi t4,t4,-16 # fff0fff0 <_end+0x7ff09bf8>
+80002ff4: 01600193 li gp,22
+80002ff8: 0bdf1663 bne t5,t4,800030a4 <fail>
+
+80002ffc <test_23>:
+80002ffc: 00000213 li tp,0
+80003000: 0f0f1137 lui sp,0xf0f1
+80003004: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80003008: 00000013 nop
+8000300c: 00000013 nop
+80003010: 00ff00b7 lui ra,0xff0
+80003014: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80003018: 0020ef33 or t5,ra,sp
+8000301c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003020: 00200293 li t0,2
+80003024: fc521ee3 bne tp,t0,80003000 <test_23+0x4>
+80003028: 0fff1eb7 lui t4,0xfff1
+8000302c: fffe8e93 addi t4,t4,-1 # fff0fff <_start-0x7000f001>
+80003030: 01700193 li gp,23
+80003034: 07df1863 bne t5,t4,800030a4 <fail>
+
+80003038 <test_24>:
+80003038: ff0100b7 lui ra,0xff010
+8000303c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80003040: 00106133 or sp,zero,ra
+80003044: ff010eb7 lui t4,0xff010
+80003048: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+8000304c: 01800193 li gp,24
+80003050: 05d11a63 bne sp,t4,800030a4 <fail>
+
+80003054 <test_25>:
+80003054: 00ff00b7 lui ra,0xff0
+80003058: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+8000305c: 0000e133 or sp,ra,zero
+80003060: 00ff0eb7 lui t4,0xff0
+80003064: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80003068: 01900193 li gp,25
+8000306c: 03d11c63 bne sp,t4,800030a4 <fail>
+
+80003070 <test_26>:
+80003070: 000060b3 or ra,zero,zero
+80003074: 00000e93 li t4,0
+80003078: 01a00193 li gp,26
+8000307c: 03d09463 bne ra,t4,800030a4 <fail>
+
+80003080 <test_27>:
+80003080: 111110b7 lui ra,0x11111
+80003084: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef>
+80003088: 22222137 lui sp,0x22222
+8000308c: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde>
+80003090: 0020e033 or zero,ra,sp
+80003094: 00000e93 li t4,0
+80003098: 01b00193 li gp,27
+8000309c: 01d01463 bne zero,t4,800030a4 <fail>
+800030a0: 00301a63 bne zero,gp,800030b4 <pass>
+
+800030a4 <fail>:
+800030a4: 00119513 slli a0,gp,0x1
+800030a8: 00050063 beqz a0,800030a8 <fail+0x4>
+800030ac: 00156513 ori a0,a0,1
+800030b0: 00000073 ecall
+
+800030b4 <pass>:
+800030b4: 00100513 li a0,1
+800030b8: 00000073 ecall
+800030bc: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-or.elf b/test/riscv-tests/rv32ui-v-or.elf
new file mode 100644
index 0000000..518eb70
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-or.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-ori.dump b/test/riscv-tests/rv32ui-v-ori.dump
new file mode 100644
index 0000000..47a1380
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-ori.dump
@@ -0,0 +1,1053 @@
+
+rv32ui-v-ori: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 91058593 addi a1,a1,-1776 # 80002dd8 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 92c58593 addi a1,a1,-1748 # 80002e64 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 8d858593 addi a1,a1,-1832 # 80002e7c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 80c58593 addi a1,a1,-2036 # 80002e1c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 7fc58593 addi a1,a1,2044 # 80002f44 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 76458593 addi a1,a1,1892 # 80002f20 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 66060613 addi a2,a2,1632 # 80002f70 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 57060613 addi a2,a2,1392 # 80002eec <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 4f060613 addi a2,a2,1264 # 80002eb8 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 02f00793 li a5,47
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 03ce67b7 lui a5,0x3ce6
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 9ea78793 addi a5,a5,-1558 # 3ce59ea <_start-0x7c31a616>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: ff0100b7 lui ra,0xff010
+80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08>
+80002be8: f0f0ef13 ori t5,ra,-241
+80002bec: f0f00e93 li t4,-241
+80002bf0: 00200193 li gp,2
+80002bf4: 1ddf1463 bne t5,t4,80002dbc <fail>
+
+80002bf8 <test_3>:
+80002bf8: 0ff010b7 lui ra,0xff01
+80002bfc: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c00: 0f00ef13 ori t5,ra,240
+80002c04: 0ff01eb7 lui t4,0xff01
+80002c08: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002c0c: 00300193 li gp,3
+80002c10: 1bdf1663 bne t5,t4,80002dbc <fail>
+
+80002c14 <test_4>:
+80002c14: 00ff00b7 lui ra,0xff0
+80002c18: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002c1c: 70f0ef13 ori t5,ra,1807
+80002c20: 00ff0eb7 lui t4,0xff0
+80002c24: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801>
+80002c28: 00400193 li gp,4
+80002c2c: 19df1863 bne t5,t4,80002dbc <fail>
+
+80002c30 <test_5>:
+80002c30: f00ff0b7 lui ra,0xf00ff
+80002c34: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002c38: 0f00ef13 ori t5,ra,240
+80002c3c: f00ffeb7 lui t4,0xf00ff
+80002c40: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07>
+80002c44: 00500193 li gp,5
+80002c48: 17df1a63 bne t5,t4,80002dbc <fail>
+
+80002c4c <test_6>:
+80002c4c: ff0100b7 lui ra,0xff010
+80002c50: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f00ab08>
+80002c54: 0f00e093 ori ra,ra,240
+80002c58: ff010eb7 lui t4,0xff010
+80002c5c: ff0e8e93 addi t4,t4,-16 # ff00fff0 <_end+0x7f00abf8>
+80002c60: 00600193 li gp,6
+80002c64: 15d09c63 bne ra,t4,80002dbc <fail>
+
+80002c68 <test_7>:
+80002c68: 00000213 li tp,0
+80002c6c: 0ff010b7 lui ra,0xff01
+80002c70: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c74: 0f00ef13 ori t5,ra,240
+80002c78: 000f0313 mv t1,t5
+80002c7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002c80: 00200293 li t0,2
+80002c84: fe5214e3 bne tp,t0,80002c6c <test_7+0x4>
+80002c88: 0ff01eb7 lui t4,0xff01
+80002c8c: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002c90: 00700193 li gp,7
+80002c94: 13d31463 bne t1,t4,80002dbc <fail>
+
+80002c98 <test_8>:
+80002c98: 00000213 li tp,0
+80002c9c: 00ff00b7 lui ra,0xff0
+80002ca0: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002ca4: 70f0ef13 ori t5,ra,1807
+80002ca8: 00000013 nop
+80002cac: 000f0313 mv t1,t5
+80002cb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cb4: 00200293 li t0,2
+80002cb8: fe5212e3 bne tp,t0,80002c9c <test_8+0x4>
+80002cbc: 00ff0eb7 lui t4,0xff0
+80002cc0: 7ffe8e93 addi t4,t4,2047 # ff07ff <_start-0x7f00f801>
+80002cc4: 00800193 li gp,8
+80002cc8: 0fd31a63 bne t1,t4,80002dbc <fail>
+
+80002ccc <test_9>:
+80002ccc: 00000213 li tp,0
+80002cd0: f00ff0b7 lui ra,0xf00ff
+80002cd4: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002cd8: 0f00ef13 ori t5,ra,240
+80002cdc: 00000013 nop
+80002ce0: 00000013 nop
+80002ce4: 000f0313 mv t1,t5
+80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cec: 00200293 li t0,2
+80002cf0: fe5210e3 bne tp,t0,80002cd0 <test_9+0x4>
+80002cf4: f00ffeb7 lui t4,0xf00ff
+80002cf8: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07>
+80002cfc: 00900193 li gp,9
+80002d00: 0bd31e63 bne t1,t4,80002dbc <fail>
+
+80002d04 <test_10>:
+80002d04: 00000213 li tp,0
+80002d08: 0ff010b7 lui ra,0xff01
+80002d0c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002d10: 0f00ef13 ori t5,ra,240
+80002d14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d18: 00200293 li t0,2
+80002d1c: fe5216e3 bne tp,t0,80002d08 <test_10+0x4>
+80002d20: 0ff01eb7 lui t4,0xff01
+80002d24: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002d28: 00a00193 li gp,10
+80002d2c: 09df1863 bne t5,t4,80002dbc <fail>
+
+80002d30 <test_11>:
+80002d30: 00000213 li tp,0
+80002d34: 00ff00b7 lui ra,0xff0
+80002d38: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002d3c: 00000013 nop
+80002d40: f0f0ef13 ori t5,ra,-241
+80002d44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d48: 00200293 li t0,2
+80002d4c: fe5214e3 bne tp,t0,80002d34 <test_11+0x4>
+80002d50: fff00e93 li t4,-1
+80002d54: 00b00193 li gp,11
+80002d58: 07df1263 bne t5,t4,80002dbc <fail>
+
+80002d5c <test_12>:
+80002d5c: 00000213 li tp,0
+80002d60: f00ff0b7 lui ra,0xf00ff
+80002d64: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002d68: 00000013 nop
+80002d6c: 00000013 nop
+80002d70: 0f00ef13 ori t5,ra,240
+80002d74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d78: 00200293 li t0,2
+80002d7c: fe5212e3 bne tp,t0,80002d60 <test_12+0x4>
+80002d80: f00ffeb7 lui t4,0xf00ff
+80002d84: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07>
+80002d88: 00c00193 li gp,12
+80002d8c: 03df1863 bne t5,t4,80002dbc <fail>
+
+80002d90 <test_13>:
+80002d90: 0f006093 ori ra,zero,240
+80002d94: 0f000e93 li t4,240
+80002d98: 00d00193 li gp,13
+80002d9c: 03d09063 bne ra,t4,80002dbc <fail>
+
+80002da0 <test_14>:
+80002da0: 00ff00b7 lui ra,0xff0
+80002da4: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002da8: 70f0e013 ori zero,ra,1807
+80002dac: 00000e93 li t4,0
+80002db0: 00e00193 li gp,14
+80002db4: 01d01463 bne zero,t4,80002dbc <fail>
+80002db8: 00301a63 bne zero,gp,80002dcc <pass>
+
+80002dbc <fail>:
+80002dbc: 00119513 slli a0,gp,0x1
+80002dc0: 00050063 beqz a0,80002dc0 <fail+0x4>
+80002dc4: 00156513 ori a0,a0,1
+80002dc8: 00000073 ecall
+
+80002dcc <pass>:
+80002dcc: 00100513 li a0,1
+80002dd0: 00000073 ecall
+80002dd4: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-ori.elf b/test/riscv-tests/rv32ui-v-ori.elf
new file mode 100644
index 0000000..14d826d
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-ori.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sb.dump b/test/riscv-tests/rv32ui-v-sb.dump
new file mode 100644
index 0000000..70f0b4b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sb.dump
@@ -0,0 +1,1239 @@
+
+rv32ui-v-sb: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: b2858593 addi a1,a1,-1240 # 80002ff0 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: b4458593 addi a1,a1,-1212 # 8000307c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: af058593 addi a1,a1,-1296 # 80003094 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: a2458593 addi a1,a1,-1500 # 80003034 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: a1458593 addi a1,a1,-1516 # 8000315c <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 97c58593 addi a1,a1,-1668 # 80003138 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 87860613 addi a2,a2,-1928 # 80003188 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 78860613 addi a2,a2,1928 # 80003104 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 70860613 addi a2,a2,1800 # 800030d0 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 02f00793 li a5,47
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0925a7b7 lui a5,0x925a
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 0fe78793 addi a5,a5,254 # 925a0fe <_start-0x76da5f02>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: faa00113 li sp,-86
+80002bec: 00208023 sb sp,0(ra)
+80002bf0: 00008f03 lb t5,0(ra)
+80002bf4: faa00e93 li t4,-86
+80002bf8: 00200193 li gp,2
+80002bfc: 3ddf1c63 bne t5,t4,80002fd4 <fail>
+
+80002c00 <test_3>:
+80002c00: 00001097 auipc ra,0x1
+80002c04: 40008093 addi ra,ra,1024 # 80004000 <begin_signature>
+80002c08: 00000113 li sp,0
+80002c0c: 002080a3 sb sp,1(ra)
+80002c10: 00108f03 lb t5,1(ra)
+80002c14: 00000e93 li t4,0
+80002c18: 00300193 li gp,3
+80002c1c: 3bdf1c63 bne t5,t4,80002fd4 <fail>
+
+80002c20 <test_4>:
+80002c20: 00001097 auipc ra,0x1
+80002c24: 3e008093 addi ra,ra,992 # 80004000 <begin_signature>
+80002c28: fffff137 lui sp,0xfffff
+80002c2c: fa010113 addi sp,sp,-96 # ffffefa0 <_end+0x7fff7ba8>
+80002c30: 00208123 sb sp,2(ra)
+80002c34: 00209f03 lh t5,2(ra)
+80002c38: fffffeb7 lui t4,0xfffff
+80002c3c: fa0e8e93 addi t4,t4,-96 # ffffefa0 <_end+0x7fff7ba8>
+80002c40: 00400193 li gp,4
+80002c44: 39df1863 bne t5,t4,80002fd4 <fail>
+
+80002c48 <test_5>:
+80002c48: 00001097 auipc ra,0x1
+80002c4c: 3b808093 addi ra,ra,952 # 80004000 <begin_signature>
+80002c50: 00a00113 li sp,10
+80002c54: 002081a3 sb sp,3(ra)
+80002c58: 00308f03 lb t5,3(ra)
+80002c5c: 00a00e93 li t4,10
+80002c60: 00500193 li gp,5
+80002c64: 37df1863 bne t5,t4,80002fd4 <fail>
+
+80002c68 <test_6>:
+80002c68: 00001097 auipc ra,0x1
+80002c6c: 39f08093 addi ra,ra,927 # 80004007 <tdat8>
+80002c70: faa00113 li sp,-86
+80002c74: fe208ea3 sb sp,-3(ra)
+80002c78: ffd08f03 lb t5,-3(ra)
+80002c7c: faa00e93 li t4,-86
+80002c80: 00600193 li gp,6
+80002c84: 35df1863 bne t5,t4,80002fd4 <fail>
+
+80002c88 <test_7>:
+80002c88: 00001097 auipc ra,0x1
+80002c8c: 37f08093 addi ra,ra,895 # 80004007 <tdat8>
+80002c90: 00000113 li sp,0
+80002c94: fe208f23 sb sp,-2(ra)
+80002c98: ffe08f03 lb t5,-2(ra)
+80002c9c: 00000e93 li t4,0
+80002ca0: 00700193 li gp,7
+80002ca4: 33df1863 bne t5,t4,80002fd4 <fail>
+
+80002ca8 <test_8>:
+80002ca8: 00001097 auipc ra,0x1
+80002cac: 35f08093 addi ra,ra,863 # 80004007 <tdat8>
+80002cb0: fa000113 li sp,-96
+80002cb4: fe208fa3 sb sp,-1(ra)
+80002cb8: fff08f03 lb t5,-1(ra)
+80002cbc: fa000e93 li t4,-96
+80002cc0: 00800193 li gp,8
+80002cc4: 31df1863 bne t5,t4,80002fd4 <fail>
+
+80002cc8 <test_9>:
+80002cc8: 00001097 auipc ra,0x1
+80002ccc: 33f08093 addi ra,ra,831 # 80004007 <tdat8>
+80002cd0: 00a00113 li sp,10
+80002cd4: 00208023 sb sp,0(ra)
+80002cd8: 00008f03 lb t5,0(ra)
+80002cdc: 00a00e93 li t4,10
+80002ce0: 00900193 li gp,9
+80002ce4: 2fdf1863 bne t5,t4,80002fd4 <fail>
+
+80002ce8 <test_10>:
+80002ce8: 00001097 auipc ra,0x1
+80002cec: 32008093 addi ra,ra,800 # 80004008 <tdat9>
+80002cf0: 12345137 lui sp,0x12345
+80002cf4: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988>
+80002cf8: fe008213 addi tp,ra,-32
+80002cfc: 02220023 sb sp,32(tp) # 20 <_start-0x7fffffe0>
+80002d00: 00008283 lb t0,0(ra)
+80002d04: 07800e93 li t4,120
+80002d08: 00a00193 li gp,10
+80002d0c: 2dd29463 bne t0,t4,80002fd4 <fail>
+
+80002d10 <test_11>:
+80002d10: 00001097 auipc ra,0x1
+80002d14: 2f808093 addi ra,ra,760 # 80004008 <tdat9>
+80002d18: 00003137 lui sp,0x3
+80002d1c: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68>
+80002d20: ffa08093 addi ra,ra,-6
+80002d24: 002083a3 sb sp,7(ra)
+80002d28: 00001217 auipc tp,0x1
+80002d2c: 2e120213 addi tp,tp,737 # 80004009 <tdat10>
+80002d30: 00020283 lb t0,0(tp) # 0 <_start-0x80000000>
+80002d34: f9800e93 li t4,-104
+80002d38: 00b00193 li gp,11
+80002d3c: 29d29c63 bne t0,t4,80002fd4 <fail>
+
+80002d40 <test_12>:
+80002d40: 00c00193 li gp,12
+80002d44: 00000213 li tp,0
+80002d48: fdd00093 li ra,-35
+80002d4c: 00001117 auipc sp,0x1
+80002d50: 2b410113 addi sp,sp,692 # 80004000 <begin_signature>
+80002d54: 00110023 sb ra,0(sp)
+80002d58: 00010f03 lb t5,0(sp)
+80002d5c: fdd00e93 li t4,-35
+80002d60: 27df1a63 bne t5,t4,80002fd4 <fail>
+80002d64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d68: 00200293 li t0,2
+80002d6c: fc521ee3 bne tp,t0,80002d48 <test_12+0x8>
+
+80002d70 <test_13>:
+80002d70: 00d00193 li gp,13
+80002d74: 00000213 li tp,0
+80002d78: fcd00093 li ra,-51
+80002d7c: 00001117 auipc sp,0x1
+80002d80: 28410113 addi sp,sp,644 # 80004000 <begin_signature>
+80002d84: 00000013 nop
+80002d88: 001100a3 sb ra,1(sp)
+80002d8c: 00110f03 lb t5,1(sp)
+80002d90: fcd00e93 li t4,-51
+80002d94: 25df1063 bne t5,t4,80002fd4 <fail>
+80002d98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d9c: 00200293 li t0,2
+80002da0: fc521ce3 bne tp,t0,80002d78 <test_13+0x8>
+
+80002da4 <test_14>:
+80002da4: 00e00193 li gp,14
+80002da8: 00000213 li tp,0
+80002dac: fcc00093 li ra,-52
+80002db0: 00001117 auipc sp,0x1
+80002db4: 25010113 addi sp,sp,592 # 80004000 <begin_signature>
+80002db8: 00000013 nop
+80002dbc: 00000013 nop
+80002dc0: 00110123 sb ra,2(sp)
+80002dc4: 00210f03 lb t5,2(sp)
+80002dc8: fcc00e93 li t4,-52
+80002dcc: 21df1463 bne t5,t4,80002fd4 <fail>
+80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd4: 00200293 li t0,2
+80002dd8: fc521ae3 bne tp,t0,80002dac <test_14+0x8>
+
+80002ddc <test_15>:
+80002ddc: 00f00193 li gp,15
+80002de0: 00000213 li tp,0
+80002de4: fbc00093 li ra,-68
+80002de8: 00000013 nop
+80002dec: 00001117 auipc sp,0x1
+80002df0: 21410113 addi sp,sp,532 # 80004000 <begin_signature>
+80002df4: 001101a3 sb ra,3(sp)
+80002df8: 00310f03 lb t5,3(sp)
+80002dfc: fbc00e93 li t4,-68
+80002e00: 1ddf1a63 bne t5,t4,80002fd4 <fail>
+80002e04: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e08: 00200293 li t0,2
+80002e0c: fc521ce3 bne tp,t0,80002de4 <test_15+0x8>
+
+80002e10 <test_16>:
+80002e10: 01000193 li gp,16
+80002e14: 00000213 li tp,0
+80002e18: fbb00093 li ra,-69
+80002e1c: 00000013 nop
+80002e20: 00001117 auipc sp,0x1
+80002e24: 1e010113 addi sp,sp,480 # 80004000 <begin_signature>
+80002e28: 00000013 nop
+80002e2c: 00110223 sb ra,4(sp)
+80002e30: 00410f03 lb t5,4(sp)
+80002e34: fbb00e93 li t4,-69
+80002e38: 19df1e63 bne t5,t4,80002fd4 <fail>
+80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e40: 00200293 li t0,2
+80002e44: fc521ae3 bne tp,t0,80002e18 <test_16+0x8>
+
+80002e48 <test_17>:
+80002e48: 01100193 li gp,17
+80002e4c: 00000213 li tp,0
+80002e50: fab00093 li ra,-85
+80002e54: 00000013 nop
+80002e58: 00000013 nop
+80002e5c: 00001117 auipc sp,0x1
+80002e60: 1a410113 addi sp,sp,420 # 80004000 <begin_signature>
+80002e64: 001102a3 sb ra,5(sp)
+80002e68: 00510f03 lb t5,5(sp)
+80002e6c: fab00e93 li t4,-85
+80002e70: 17df1263 bne t5,t4,80002fd4 <fail>
+80002e74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e78: 00200293 li t0,2
+80002e7c: fc521ae3 bne tp,t0,80002e50 <test_17+0x8>
+
+80002e80 <test_18>:
+80002e80: 01200193 li gp,18
+80002e84: 00000213 li tp,0
+80002e88: 00001117 auipc sp,0x1
+80002e8c: 17810113 addi sp,sp,376 # 80004000 <begin_signature>
+80002e90: 03300093 li ra,51
+80002e94: 00110023 sb ra,0(sp)
+80002e98: 00010f03 lb t5,0(sp)
+80002e9c: 03300e93 li t4,51
+80002ea0: 13df1a63 bne t5,t4,80002fd4 <fail>
+80002ea4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea8: 00200293 li t0,2
+80002eac: fc521ee3 bne tp,t0,80002e88 <test_18+0x8>
+
+80002eb0 <test_19>:
+80002eb0: 01300193 li gp,19
+80002eb4: 00000213 li tp,0
+80002eb8: 00001117 auipc sp,0x1
+80002ebc: 14810113 addi sp,sp,328 # 80004000 <begin_signature>
+80002ec0: 02300093 li ra,35
+80002ec4: 00000013 nop
+80002ec8: 001100a3 sb ra,1(sp)
+80002ecc: 00110f03 lb t5,1(sp)
+80002ed0: 02300e93 li t4,35
+80002ed4: 11df1063 bne t5,t4,80002fd4 <fail>
+80002ed8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002edc: 00200293 li t0,2
+80002ee0: fc521ce3 bne tp,t0,80002eb8 <test_19+0x8>
+
+80002ee4 <test_20>:
+80002ee4: 01400193 li gp,20
+80002ee8: 00000213 li tp,0
+80002eec: 00001117 auipc sp,0x1
+80002ef0: 11410113 addi sp,sp,276 # 80004000 <begin_signature>
+80002ef4: 02200093 li ra,34
+80002ef8: 00000013 nop
+80002efc: 00000013 nop
+80002f00: 00110123 sb ra,2(sp)
+80002f04: 00210f03 lb t5,2(sp)
+80002f08: 02200e93 li t4,34
+80002f0c: 0ddf1463 bne t5,t4,80002fd4 <fail>
+80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f14: 00200293 li t0,2
+80002f18: fc521ae3 bne tp,t0,80002eec <test_20+0x8>
+
+80002f1c <test_21>:
+80002f1c: 01500193 li gp,21
+80002f20: 00000213 li tp,0
+80002f24: 00001117 auipc sp,0x1
+80002f28: 0dc10113 addi sp,sp,220 # 80004000 <begin_signature>
+80002f2c: 00000013 nop
+80002f30: 01200093 li ra,18
+80002f34: 001101a3 sb ra,3(sp)
+80002f38: 00310f03 lb t5,3(sp)
+80002f3c: 01200e93 li t4,18
+80002f40: 09df1a63 bne t5,t4,80002fd4 <fail>
+80002f44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f48: 00200293 li t0,2
+80002f4c: fc521ce3 bne tp,t0,80002f24 <test_21+0x8>
+
+80002f50 <test_22>:
+80002f50: 01600193 li gp,22
+80002f54: 00000213 li tp,0
+80002f58: 00001117 auipc sp,0x1
+80002f5c: 0a810113 addi sp,sp,168 # 80004000 <begin_signature>
+80002f60: 00000013 nop
+80002f64: 01100093 li ra,17
+80002f68: 00000013 nop
+80002f6c: 00110223 sb ra,4(sp)
+80002f70: 00410f03 lb t5,4(sp)
+80002f74: 01100e93 li t4,17
+80002f78: 05df1e63 bne t5,t4,80002fd4 <fail>
+80002f7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f80: 00200293 li t0,2
+80002f84: fc521ae3 bne tp,t0,80002f58 <test_22+0x8>
+
+80002f88 <test_23>:
+80002f88: 01700193 li gp,23
+80002f8c: 00000213 li tp,0
+80002f90: 00001117 auipc sp,0x1
+80002f94: 07010113 addi sp,sp,112 # 80004000 <begin_signature>
+80002f98: 00000013 nop
+80002f9c: 00000013 nop
+80002fa0: 00100093 li ra,1
+80002fa4: 001102a3 sb ra,5(sp)
+80002fa8: 00510f03 lb t5,5(sp)
+80002fac: 00100e93 li t4,1
+80002fb0: 03df1263 bne t5,t4,80002fd4 <fail>
+80002fb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fb8: 00200293 li t0,2
+80002fbc: fc521ae3 bne tp,t0,80002f90 <test_23+0x8>
+80002fc0: 0ef00513 li a0,239
+80002fc4: 00001597 auipc a1,0x1
+80002fc8: 03c58593 addi a1,a1,60 # 80004000 <begin_signature>
+80002fcc: 00a581a3 sb a0,3(a1)
+80002fd0: 00301a63 bne zero,gp,80002fe4 <pass>
+
+80002fd4 <fail>:
+80002fd4: 00119513 slli a0,gp,0x1
+80002fd8: 00050063 beqz a0,80002fd8 <fail+0x4>
+80002fdc: 00156513 ori a0,a0,1
+80002fe0: 00000073 ecall
+
+80002fe4 <pass>:
+80002fe4: 00100513 li a0,1
+80002fe8: 00000073 ecall
+80002fec: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: jal t6,800026fe <handle_trap+0x86>
+
+80004001 <tdat2>:
+80004001: jal t6,800026ff <handle_trap+0x87>
+
+80004002 <tdat3>:
+80004002: jal t6,80002700 <handle_trap+0x88>
+
+80004003 <tdat4>:
+80004003: jal t6,80002701 <handle_trap+0x89>
+
+80004004 <tdat5>:
+80004004: jal t6,80002702 <handle_trap+0x8a>
+
+80004005 <tdat6>:
+80004005: jal t6,80002703 <handle_trap+0x8b>
+
+80004006 <tdat7>:
+80004006: jal t6,80002704 <handle_trap+0x8c>
+
+80004007 <tdat8>:
+80004007: jal t6,80012007 <_end+0xac0f>
+
+80004008 <tdat9>:
+80004008: jal t6,80012008 <_end+0xac10>
+
+80004009 <tdat10>:
+80004009: ef Address 0x0000000080004009 is out of bounds.
+
+8000400d:
diff --git a/test/riscv-tests/rv32ui-v-sb.elf b/test/riscv-tests/rv32ui-v-sb.elf
new file mode 100644
index 0000000..a700151
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sb.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sh.dump b/test/riscv-tests/rv32ui-v-sh.dump
new file mode 100644
index 0000000..6880295
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sh.dump
@@ -0,0 +1,1270 @@
+
+rv32ui-v-sh: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bac58593 addi a1,a1,-1108 # 80003074 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: bc858593 addi a1,a1,-1080 # 80003100 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: b7458593 addi a1,a1,-1164 # 80003118 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: aa858593 addi a1,a1,-1368 # 800030b8 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: a9858593 addi a1,a1,-1384 # 800031e0 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a0058593 addi a1,a1,-1536 # 800031bc <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 8fc60613 addi a2,a2,-1796 # 8000320c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 80c60613 addi a2,a2,-2036 # 80003188 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 78c60613 addi a2,a2,1932 # 80003154 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 02200793 li a5,34
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0e9af7b7 lui a5,0xe9af
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 36f78793 addi a5,a5,879 # e9af36f <_start-0x71650c91>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 0aa00113 li sp,170
+80002bec: 00209023 sh sp,0(ra)
+80002bf0: 00009f03 lh t5,0(ra)
+80002bf4: 0aa00e93 li t4,170
+80002bf8: 00200193 li gp,2
+80002bfc: 45df1e63 bne t5,t4,80003058 <fail>
+
+80002c00 <test_3>:
+80002c00: 00001097 auipc ra,0x1
+80002c04: 40008093 addi ra,ra,1024 # 80004000 <begin_signature>
+80002c08: ffffb137 lui sp,0xffffb
+80002c0c: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff3608>
+80002c10: 00209123 sh sp,2(ra)
+80002c14: 00209f03 lh t5,2(ra)
+80002c18: ffffbeb7 lui t4,0xffffb
+80002c1c: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff3608>
+80002c20: 00300193 li gp,3
+80002c24: 43df1a63 bne t5,t4,80003058 <fail>
+
+80002c28 <test_4>:
+80002c28: 00001097 auipc ra,0x1
+80002c2c: 3d808093 addi ra,ra,984 # 80004000 <begin_signature>
+80002c30: beef1137 lui sp,0xbeef1
+80002c34: aa010113 addi sp,sp,-1376 # beef0aa0 <_end+0x3eee96a8>
+80002c38: 00209223 sh sp,4(ra)
+80002c3c: 0040af03 lw t5,4(ra)
+80002c40: beef1eb7 lui t4,0xbeef1
+80002c44: aa0e8e93 addi t4,t4,-1376 # beef0aa0 <_end+0x3eee96a8>
+80002c48: 00400193 li gp,4
+80002c4c: 41df1663 bne t5,t4,80003058 <fail>
+
+80002c50 <test_5>:
+80002c50: 00001097 auipc ra,0x1
+80002c54: 3b008093 addi ra,ra,944 # 80004000 <begin_signature>
+80002c58: ffffa137 lui sp,0xffffa
+80002c5c: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff2c12>
+80002c60: 00209323 sh sp,6(ra)
+80002c64: 00609f03 lh t5,6(ra)
+80002c68: ffffaeb7 lui t4,0xffffa
+80002c6c: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff2c12>
+80002c70: 00500193 li gp,5
+80002c74: 3fdf1263 bne t5,t4,80003058 <fail>
+
+80002c78 <test_6>:
+80002c78: 00001097 auipc ra,0x1
+80002c7c: 39608093 addi ra,ra,918 # 8000400e <tdat8>
+80002c80: 0aa00113 li sp,170
+80002c84: fe209d23 sh sp,-6(ra)
+80002c88: ffa09f03 lh t5,-6(ra)
+80002c8c: 0aa00e93 li t4,170
+80002c90: 00600193 li gp,6
+80002c94: 3ddf1263 bne t5,t4,80003058 <fail>
+
+80002c98 <test_7>:
+80002c98: 00001097 auipc ra,0x1
+80002c9c: 37608093 addi ra,ra,886 # 8000400e <tdat8>
+80002ca0: ffffb137 lui sp,0xffffb
+80002ca4: a0010113 addi sp,sp,-1536 # ffffaa00 <_end+0x7fff3608>
+80002ca8: fe209e23 sh sp,-4(ra)
+80002cac: ffc09f03 lh t5,-4(ra)
+80002cb0: ffffbeb7 lui t4,0xffffb
+80002cb4: a00e8e93 addi t4,t4,-1536 # ffffaa00 <_end+0x7fff3608>
+80002cb8: 00700193 li gp,7
+80002cbc: 39df1e63 bne t5,t4,80003058 <fail>
+
+80002cc0 <test_8>:
+80002cc0: 00001097 auipc ra,0x1
+80002cc4: 34e08093 addi ra,ra,846 # 8000400e <tdat8>
+80002cc8: 00001137 lui sp,0x1
+80002ccc: aa010113 addi sp,sp,-1376 # aa0 <_start-0x7ffff560>
+80002cd0: fe209f23 sh sp,-2(ra)
+80002cd4: ffe09f03 lh t5,-2(ra)
+80002cd8: 00001eb7 lui t4,0x1
+80002cdc: aa0e8e93 addi t4,t4,-1376 # aa0 <_start-0x7ffff560>
+80002ce0: 00800193 li gp,8
+80002ce4: 37df1a63 bne t5,t4,80003058 <fail>
+
+80002ce8 <test_9>:
+80002ce8: 00001097 auipc ra,0x1
+80002cec: 32608093 addi ra,ra,806 # 8000400e <tdat8>
+80002cf0: ffffa137 lui sp,0xffffa
+80002cf4: 00a10113 addi sp,sp,10 # ffffa00a <_end+0x7fff2c12>
+80002cf8: 00209023 sh sp,0(ra)
+80002cfc: 00009f03 lh t5,0(ra)
+80002d00: ffffaeb7 lui t4,0xffffa
+80002d04: 00ae8e93 addi t4,t4,10 # ffffa00a <_end+0x7fff2c12>
+80002d08: 00900193 li gp,9
+80002d0c: 35df1663 bne t5,t4,80003058 <fail>
+
+80002d10 <test_10>:
+80002d10: 00001097 auipc ra,0x1
+80002d14: 30008093 addi ra,ra,768 # 80004010 <tdat9>
+80002d18: 12345137 lui sp,0x12345
+80002d1c: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988>
+80002d20: fe008213 addi tp,ra,-32
+80002d24: 02221023 sh sp,32(tp) # 20 <_start-0x7fffffe0>
+80002d28: 00009283 lh t0,0(ra)
+80002d2c: 00005eb7 lui t4,0x5
+80002d30: 678e8e93 addi t4,t4,1656 # 5678 <_start-0x7fffa988>
+80002d34: 00a00193 li gp,10
+80002d38: 33d29063 bne t0,t4,80003058 <fail>
+
+80002d3c <test_11>:
+80002d3c: 00001097 auipc ra,0x1
+80002d40: 2d408093 addi ra,ra,724 # 80004010 <tdat9>
+80002d44: 00003137 lui sp,0x3
+80002d48: 09810113 addi sp,sp,152 # 3098 <_start-0x7fffcf68>
+80002d4c: ffb08093 addi ra,ra,-5
+80002d50: 002093a3 sh sp,7(ra)
+80002d54: 00001217 auipc tp,0x1
+80002d58: 2be20213 addi tp,tp,702 # 80004012 <tdat10>
+80002d5c: 00021283 lh t0,0(tp) # 0 <_start-0x80000000>
+80002d60: 00003eb7 lui t4,0x3
+80002d64: 098e8e93 addi t4,t4,152 # 3098 <_start-0x7fffcf68>
+80002d68: 00b00193 li gp,11
+80002d6c: 2fd29663 bne t0,t4,80003058 <fail>
+
+80002d70 <test_12>:
+80002d70: 00c00193 li gp,12
+80002d74: 00000213 li tp,0
+80002d78: ffffd0b7 lui ra,0xffffd
+80002d7c: cdd08093 addi ra,ra,-803 # ffffccdd <_end+0x7fff58e5>
+80002d80: 00001117 auipc sp,0x1
+80002d84: 28010113 addi sp,sp,640 # 80004000 <begin_signature>
+80002d88: 00111023 sh ra,0(sp)
+80002d8c: 00011f03 lh t5,0(sp)
+80002d90: ffffdeb7 lui t4,0xffffd
+80002d94: cdde8e93 addi t4,t4,-803 # ffffccdd <_end+0x7fff58e5>
+80002d98: 2ddf1063 bne t5,t4,80003058 <fail>
+80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da0: 00200293 li t0,2
+80002da4: fc521ae3 bne tp,t0,80002d78 <test_12+0x8>
+
+80002da8 <test_13>:
+80002da8: 00d00193 li gp,13
+80002dac: 00000213 li tp,0
+80002db0: ffffc0b7 lui ra,0xffffc
+80002db4: ccd08093 addi ra,ra,-819 # ffffbccd <_end+0x7fff48d5>
+80002db8: 00001117 auipc sp,0x1
+80002dbc: 24810113 addi sp,sp,584 # 80004000 <begin_signature>
+80002dc0: 00000013 nop
+80002dc4: 00111123 sh ra,2(sp)
+80002dc8: 00211f03 lh t5,2(sp)
+80002dcc: ffffceb7 lui t4,0xffffc
+80002dd0: ccde8e93 addi t4,t4,-819 # ffffbccd <_end+0x7fff48d5>
+80002dd4: 29df1263 bne t5,t4,80003058 <fail>
+80002dd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ddc: 00200293 li t0,2
+80002de0: fc5218e3 bne tp,t0,80002db0 <test_13+0x8>
+
+80002de4 <test_14>:
+80002de4: 00e00193 li gp,14
+80002de8: 00000213 li tp,0
+80002dec: ffffc0b7 lui ra,0xffffc
+80002df0: bcc08093 addi ra,ra,-1076 # ffffbbcc <_end+0x7fff47d4>
+80002df4: 00001117 auipc sp,0x1
+80002df8: 20c10113 addi sp,sp,524 # 80004000 <begin_signature>
+80002dfc: 00000013 nop
+80002e00: 00000013 nop
+80002e04: 00111223 sh ra,4(sp)
+80002e08: 00411f03 lh t5,4(sp)
+80002e0c: ffffceb7 lui t4,0xffffc
+80002e10: bcce8e93 addi t4,t4,-1076 # ffffbbcc <_end+0x7fff47d4>
+80002e14: 25df1263 bne t5,t4,80003058 <fail>
+80002e18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e1c: 00200293 li t0,2
+80002e20: fc5216e3 bne tp,t0,80002dec <test_14+0x8>
+
+80002e24 <test_15>:
+80002e24: 00f00193 li gp,15
+80002e28: 00000213 li tp,0
+80002e2c: ffffb0b7 lui ra,0xffffb
+80002e30: bbc08093 addi ra,ra,-1092 # ffffabbc <_end+0x7fff37c4>
+80002e34: 00000013 nop
+80002e38: 00001117 auipc sp,0x1
+80002e3c: 1c810113 addi sp,sp,456 # 80004000 <begin_signature>
+80002e40: 00111323 sh ra,6(sp)
+80002e44: 00611f03 lh t5,6(sp)
+80002e48: ffffbeb7 lui t4,0xffffb
+80002e4c: bbce8e93 addi t4,t4,-1092 # ffffabbc <_end+0x7fff37c4>
+80002e50: 21df1463 bne t5,t4,80003058 <fail>
+80002e54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e58: 00200293 li t0,2
+80002e5c: fc5218e3 bne tp,t0,80002e2c <test_15+0x8>
+
+80002e60 <test_16>:
+80002e60: 01000193 li gp,16
+80002e64: 00000213 li tp,0
+80002e68: ffffb0b7 lui ra,0xffffb
+80002e6c: abb08093 addi ra,ra,-1349 # ffffaabb <_end+0x7fff36c3>
+80002e70: 00000013 nop
+80002e74: 00001117 auipc sp,0x1
+80002e78: 18c10113 addi sp,sp,396 # 80004000 <begin_signature>
+80002e7c: 00000013 nop
+80002e80: 00111423 sh ra,8(sp)
+80002e84: 00811f03 lh t5,8(sp)
+80002e88: ffffbeb7 lui t4,0xffffb
+80002e8c: abbe8e93 addi t4,t4,-1349 # ffffaabb <_end+0x7fff36c3>
+80002e90: 1ddf1463 bne t5,t4,80003058 <fail>
+80002e94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e98: 00200293 li t0,2
+80002e9c: fc5216e3 bne tp,t0,80002e68 <test_16+0x8>
+
+80002ea0 <test_17>:
+80002ea0: 01100193 li gp,17
+80002ea4: 00000213 li tp,0
+80002ea8: ffffe0b7 lui ra,0xffffe
+80002eac: aab08093 addi ra,ra,-1365 # ffffdaab <_end+0x7fff66b3>
+80002eb0: 00000013 nop
+80002eb4: 00000013 nop
+80002eb8: 00001117 auipc sp,0x1
+80002ebc: 14810113 addi sp,sp,328 # 80004000 <begin_signature>
+80002ec0: 00111523 sh ra,10(sp)
+80002ec4: 00a11f03 lh t5,10(sp)
+80002ec8: ffffeeb7 lui t4,0xffffe
+80002ecc: aabe8e93 addi t4,t4,-1365 # ffffdaab <_end+0x7fff66b3>
+80002ed0: 19df1463 bne t5,t4,80003058 <fail>
+80002ed4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ed8: 00200293 li t0,2
+80002edc: fc5216e3 bne tp,t0,80002ea8 <test_17+0x8>
+
+80002ee0 <test_18>:
+80002ee0: 01200193 li gp,18
+80002ee4: 00000213 li tp,0
+80002ee8: 00001117 auipc sp,0x1
+80002eec: 11810113 addi sp,sp,280 # 80004000 <begin_signature>
+80002ef0: 000020b7 lui ra,0x2
+80002ef4: 23308093 addi ra,ra,563 # 2233 <_start-0x7fffddcd>
+80002ef8: 00111023 sh ra,0(sp)
+80002efc: 00011f03 lh t5,0(sp)
+80002f00: 00002eb7 lui t4,0x2
+80002f04: 233e8e93 addi t4,t4,563 # 2233 <_start-0x7fffddcd>
+80002f08: 15df1863 bne t5,t4,80003058 <fail>
+80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f10: 00200293 li t0,2
+80002f14: fc521ae3 bne tp,t0,80002ee8 <test_18+0x8>
+
+80002f18 <test_19>:
+80002f18: 01300193 li gp,19
+80002f1c: 00000213 li tp,0
+80002f20: 00001117 auipc sp,0x1
+80002f24: 0e010113 addi sp,sp,224 # 80004000 <begin_signature>
+80002f28: 000010b7 lui ra,0x1
+80002f2c: 22308093 addi ra,ra,547 # 1223 <_start-0x7fffeddd>
+80002f30: 00000013 nop
+80002f34: 00111123 sh ra,2(sp)
+80002f38: 00211f03 lh t5,2(sp)
+80002f3c: 00001eb7 lui t4,0x1
+80002f40: 223e8e93 addi t4,t4,547 # 1223 <_start-0x7fffeddd>
+80002f44: 11df1a63 bne t5,t4,80003058 <fail>
+80002f48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f4c: 00200293 li t0,2
+80002f50: fc5218e3 bne tp,t0,80002f20 <test_19+0x8>
+
+80002f54 <test_20>:
+80002f54: 01400193 li gp,20
+80002f58: 00000213 li tp,0
+80002f5c: 00001117 auipc sp,0x1
+80002f60: 0a410113 addi sp,sp,164 # 80004000 <begin_signature>
+80002f64: 000010b7 lui ra,0x1
+80002f68: 12208093 addi ra,ra,290 # 1122 <_start-0x7fffeede>
+80002f6c: 00000013 nop
+80002f70: 00000013 nop
+80002f74: 00111223 sh ra,4(sp)
+80002f78: 00411f03 lh t5,4(sp)
+80002f7c: 00001eb7 lui t4,0x1
+80002f80: 122e8e93 addi t4,t4,290 # 1122 <_start-0x7fffeede>
+80002f84: 0ddf1a63 bne t5,t4,80003058 <fail>
+80002f88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f8c: 00200293 li t0,2
+80002f90: fc5216e3 bne tp,t0,80002f5c <test_20+0x8>
+
+80002f94 <test_21>:
+80002f94: 01500193 li gp,21
+80002f98: 00000213 li tp,0
+80002f9c: 00001117 auipc sp,0x1
+80002fa0: 06410113 addi sp,sp,100 # 80004000 <begin_signature>
+80002fa4: 00000013 nop
+80002fa8: 11200093 li ra,274
+80002fac: 00111323 sh ra,6(sp)
+80002fb0: 00611f03 lh t5,6(sp)
+80002fb4: 11200e93 li t4,274
+80002fb8: 0bdf1063 bne t5,t4,80003058 <fail>
+80002fbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fc0: 00200293 li t0,2
+80002fc4: fc521ce3 bne tp,t0,80002f9c <test_21+0x8>
+
+80002fc8 <test_22>:
+80002fc8: 01600193 li gp,22
+80002fcc: 00000213 li tp,0
+80002fd0: 00001117 auipc sp,0x1
+80002fd4: 03010113 addi sp,sp,48 # 80004000 <begin_signature>
+80002fd8: 00000013 nop
+80002fdc: 01100093 li ra,17
+80002fe0: 00000013 nop
+80002fe4: 00111423 sh ra,8(sp)
+80002fe8: 00811f03 lh t5,8(sp)
+80002fec: 01100e93 li t4,17
+80002ff0: 07df1463 bne t5,t4,80003058 <fail>
+80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ff8: 00200293 li t0,2
+80002ffc: fc521ae3 bne tp,t0,80002fd0 <test_22+0x8>
+
+80003000 <test_23>:
+80003000: 01700193 li gp,23
+80003004: 00000213 li tp,0
+80003008: 00001117 auipc sp,0x1
+8000300c: ff810113 addi sp,sp,-8 # 80004000 <begin_signature>
+80003010: 00000013 nop
+80003014: 00000013 nop
+80003018: 000030b7 lui ra,0x3
+8000301c: 00108093 addi ra,ra,1 # 3001 <_start-0x7fffcfff>
+80003020: 00111523 sh ra,10(sp)
+80003024: 00a11f03 lh t5,10(sp)
+80003028: 00003eb7 lui t4,0x3
+8000302c: 001e8e93 addi t4,t4,1 # 3001 <_start-0x7fffcfff>
+80003030: 03df1463 bne t5,t4,80003058 <fail>
+80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003038: 00200293 li t0,2
+8000303c: fc5216e3 bne tp,t0,80003008 <test_23+0x8>
+80003040: 0000c537 lui a0,0xc
+80003044: eef50513 addi a0,a0,-273 # beef <_start-0x7fff4111>
+80003048: 00001597 auipc a1,0x1
+8000304c: fb858593 addi a1,a1,-72 # 80004000 <begin_signature>
+80003050: 00a59323 sh a0,6(a1)
+80003054: 00301a63 bne zero,gp,80003068 <pass>
+
+80003058 <fail>:
+80003058: 00119513 slli a0,gp,0x1
+8000305c: 00050063 beqz a0,8000305c <fail+0x4>
+80003060: 00156513 ori a0,a0,1
+80003064: 00000073 ecall
+
+80003068 <pass>:
+80003068: 00100513 li a0,1
+8000306c: 00000073 ecall
+80003070: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: jal t4,7ffff3ee <_start-0xc12>
+
+80004002 <tdat2>:
+80004002: jal t4,7ffff3f0 <_start-0xc10>
+
+80004004 <tdat3>:
+80004004: jal t4,7ffff3f2 <_start-0xc0e>
+
+80004006 <tdat4>:
+80004006: jal t4,7ffff3f4 <_start-0xc0c>
+
+80004008 <tdat5>:
+80004008: jal t4,7ffff3f6 <_start-0xc0a>
+
+8000400a <tdat6>:
+8000400a: jal t4,7ffff3f8 <_start-0xc08>
+
+8000400c <tdat7>:
+8000400c: jal t4,7ffff3fa <_start-0xc06>
+
+8000400e <tdat8>:
+8000400e: jal t4,7ffff3fc <_start-0xc04>
+
+80004010 <tdat9>:
+80004010: jal t4,7ffff3fe <_start-0xc02>
+
+80004012 <tdat10>:
+80004012: jal t4,8000f012 <_end+0x7c1a>
diff --git a/test/riscv-tests/rv32ui-v-sh.elf b/test/riscv-tests/rv32ui-v-sh.elf
new file mode 100644
index 0000000..d3f3d86
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sh.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-simple.dump b/test/riscv-tests/rv32ui-v-simple.dump
new file mode 100644
index 0000000..92e8001
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-simple.dump
@@ -0,0 +1,902 @@
+
+rv32ui-v-simple: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00000597 auipc a1,0x0
+800024cc: 72458593 addi a1,a1,1828 # 80002bec <userstart+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00000597 auipc a1,0x0
+8000253c: 74058593 addi a1,a1,1856 # 80002c78 <userstart+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 6ec58593 addi a1,a1,1772 # 80002c90 <userstart+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 62058593 addi a1,a1,1568 # 80002c30 <userstart+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 61058593 addi a1,a1,1552 # 80002d58 <userstart+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 57858593 addi a1,a1,1400 # 80002d34 <userstart+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 47460613 addi a2,a2,1140 # 80002d84 <userstart+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 38460613 addi a2,a2,900 # 80002d00 <userstart+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 30460613 addi a2,a2,772 # 80002ccc <userstart+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 03c00793 li a5,60
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0f7937b7 lui a5,0xf793
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 0f778793 addi a5,a5,247 # f7930f7 <_start-0x7086cf09>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00100513 li a0,1
+80002be4: 00000073 ecall
+80002be8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-simple.elf b/test/riscv-tests/rv32ui-v-simple.elf
new file mode 100644
index 0000000..85bfb91
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-simple.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sll.dump b/test/riscv-tests/rv32ui-v-sll.dump
new file mode 100644
index 0000000..47b83bd
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sll.dump
@@ -0,0 +1,1330 @@
+
+rv32ui-v-sll: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: c8458593 addi a1,a1,-892 # 8000314c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: ca058593 addi a1,a1,-864 # 800031d8 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: c4c58593 addi a1,a1,-948 # 800031f0 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: b8058593 addi a1,a1,-1152 # 80003190 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: b7058593 addi a1,a1,-1168 # 800032b8 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: ad858593 addi a1,a1,-1320 # 80003294 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 9d460613 addi a2,a2,-1580 # 800032e4 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 8e460613 addi a2,a2,-1820 # 80003260 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00001617 auipc a2,0x1
+800029cc: 86460613 addi a2,a2,-1948 # 8000322c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01100793 li a5,17
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 02a257b7 lui a5,0x2a25
+80002b9c: 00080637 lui a2,0x80
+80002ba0: e4778793 addi a5,a5,-441 # 2a24e47 <_start-0x7d5db1b9>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00100093 li ra,1
+80002be4: 00000113 li sp,0
+80002be8: 00209f33 sll t5,ra,sp
+80002bec: 00100e93 li t4,1
+80002bf0: 00200193 li gp,2
+80002bf4: 53df1e63 bne t5,t4,80003130 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 00209f33 sll t5,ra,sp
+80002c04: 00200e93 li t4,2
+80002c08: 00300193 li gp,3
+80002c0c: 53df1263 bne t5,t4,80003130 <fail>
+
+80002c10 <test_4>:
+80002c10: 00100093 li ra,1
+80002c14: 00700113 li sp,7
+80002c18: 00209f33 sll t5,ra,sp
+80002c1c: 08000e93 li t4,128
+80002c20: 00400193 li gp,4
+80002c24: 51df1663 bne t5,t4,80003130 <fail>
+
+80002c28 <test_5>:
+80002c28: 00100093 li ra,1
+80002c2c: 00e00113 li sp,14
+80002c30: 00209f33 sll t5,ra,sp
+80002c34: 00004eb7 lui t4,0x4
+80002c38: 00500193 li gp,5
+80002c3c: 4fdf1a63 bne t5,t4,80003130 <fail>
+
+80002c40 <test_6>:
+80002c40: 00100093 li ra,1
+80002c44: 01f00113 li sp,31
+80002c48: 00209f33 sll t5,ra,sp
+80002c4c: 80000eb7 lui t4,0x80000
+80002c50: 00600193 li gp,6
+80002c54: 4ddf1e63 bne t5,t4,80003130 <fail>
+
+80002c58 <test_7>:
+80002c58: fff00093 li ra,-1
+80002c5c: 00000113 li sp,0
+80002c60: 00209f33 sll t5,ra,sp
+80002c64: fff00e93 li t4,-1
+80002c68: 00700193 li gp,7
+80002c6c: 4ddf1263 bne t5,t4,80003130 <fail>
+
+80002c70 <test_8>:
+80002c70: fff00093 li ra,-1
+80002c74: 00100113 li sp,1
+80002c78: 00209f33 sll t5,ra,sp
+80002c7c: ffe00e93 li t4,-2
+80002c80: 00800193 li gp,8
+80002c84: 4bdf1663 bne t5,t4,80003130 <fail>
+
+80002c88 <test_9>:
+80002c88: fff00093 li ra,-1
+80002c8c: 00700113 li sp,7
+80002c90: 00209f33 sll t5,ra,sp
+80002c94: f8000e93 li t4,-128
+80002c98: 00900193 li gp,9
+80002c9c: 49df1a63 bne t5,t4,80003130 <fail>
+
+80002ca0 <test_10>:
+80002ca0: fff00093 li ra,-1
+80002ca4: 00e00113 li sp,14
+80002ca8: 00209f33 sll t5,ra,sp
+80002cac: ffffceb7 lui t4,0xffffc
+80002cb0: 00a00193 li gp,10
+80002cb4: 47df1e63 bne t5,t4,80003130 <fail>
+
+80002cb8 <test_11>:
+80002cb8: fff00093 li ra,-1
+80002cbc: 01f00113 li sp,31
+80002cc0: 00209f33 sll t5,ra,sp
+80002cc4: 80000eb7 lui t4,0x80000
+80002cc8: 00b00193 li gp,11
+80002ccc: 47df1263 bne t5,t4,80003130 <fail>
+
+80002cd0 <test_12>:
+80002cd0: 212120b7 lui ra,0x21212
+80002cd4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002cd8: 00000113 li sp,0
+80002cdc: 00209f33 sll t5,ra,sp
+80002ce0: 21212eb7 lui t4,0x21212
+80002ce4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80002ce8: 00c00193 li gp,12
+80002cec: 45df1263 bne t5,t4,80003130 <fail>
+
+80002cf0 <test_13>:
+80002cf0: 212120b7 lui ra,0x21212
+80002cf4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002cf8: 00100113 li sp,1
+80002cfc: 00209f33 sll t5,ra,sp
+80002d00: 42424eb7 lui t4,0x42424
+80002d04: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe>
+80002d08: 00d00193 li gp,13
+80002d0c: 43df1263 bne t5,t4,80003130 <fail>
+
+80002d10 <test_14>:
+80002d10: 212120b7 lui ra,0x21212
+80002d14: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d18: 00700113 li sp,7
+80002d1c: 00209f33 sll t5,ra,sp
+80002d20: 90909eb7 lui t4,0x90909
+80002d24: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10902c88>
+80002d28: 00e00193 li gp,14
+80002d2c: 41df1263 bne t5,t4,80003130 <fail>
+
+80002d30 <test_15>:
+80002d30: 212120b7 lui ra,0x21212
+80002d34: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d38: 00e00113 li sp,14
+80002d3c: 00209f33 sll t5,ra,sp
+80002d40: 48484eb7 lui t4,0x48484
+80002d44: 00f00193 li gp,15
+80002d48: 3fdf1463 bne t5,t4,80003130 <fail>
+
+80002d4c <test_16>:
+80002d4c: 212120b7 lui ra,0x21212
+80002d50: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d54: 01f00113 li sp,31
+80002d58: 00209f33 sll t5,ra,sp
+80002d5c: 80000eb7 lui t4,0x80000
+80002d60: 01000193 li gp,16
+80002d64: 3ddf1663 bne t5,t4,80003130 <fail>
+
+80002d68 <test_17>:
+80002d68: 212120b7 lui ra,0x21212
+80002d6c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d70: fc000113 li sp,-64
+80002d74: 00209f33 sll t5,ra,sp
+80002d78: 21212eb7 lui t4,0x21212
+80002d7c: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80002d80: 01100193 li gp,17
+80002d84: 3bdf1663 bne t5,t4,80003130 <fail>
+
+80002d88 <test_18>:
+80002d88: 212120b7 lui ra,0x21212
+80002d8c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d90: fc100113 li sp,-63
+80002d94: 00209f33 sll t5,ra,sp
+80002d98: 42424eb7 lui t4,0x42424
+80002d9c: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe>
+80002da0: 01200193 li gp,18
+80002da4: 39df1663 bne t5,t4,80003130 <fail>
+
+80002da8 <test_19>:
+80002da8: 212120b7 lui ra,0x21212
+80002dac: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002db0: fc700113 li sp,-57
+80002db4: 00209f33 sll t5,ra,sp
+80002db8: 90909eb7 lui t4,0x90909
+80002dbc: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10902c88>
+80002dc0: 01300193 li gp,19
+80002dc4: 37df1663 bne t5,t4,80003130 <fail>
+
+80002dc8 <test_20>:
+80002dc8: 212120b7 lui ra,0x21212
+80002dcc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002dd0: fce00113 li sp,-50
+80002dd4: 00209f33 sll t5,ra,sp
+80002dd8: 48484eb7 lui t4,0x48484
+80002ddc: 01400193 li gp,20
+80002de0: 35df1863 bne t5,t4,80003130 <fail>
+
+80002de4 <test_22>:
+80002de4: 00100093 li ra,1
+80002de8: 00700113 li sp,7
+80002dec: 002090b3 sll ra,ra,sp
+80002df0: 08000e93 li t4,128
+80002df4: 01600193 li gp,22
+80002df8: 33d09c63 bne ra,t4,80003130 <fail>
+
+80002dfc <test_23>:
+80002dfc: 00100093 li ra,1
+80002e00: 00e00113 li sp,14
+80002e04: 00209133 sll sp,ra,sp
+80002e08: 00004eb7 lui t4,0x4
+80002e0c: 01700193 li gp,23
+80002e10: 33d11063 bne sp,t4,80003130 <fail>
+
+80002e14 <test_24>:
+80002e14: 00300093 li ra,3
+80002e18: 001090b3 sll ra,ra,ra
+80002e1c: 01800e93 li t4,24
+80002e20: 01800193 li gp,24
+80002e24: 31d09663 bne ra,t4,80003130 <fail>
+
+80002e28 <test_25>:
+80002e28: 00000213 li tp,0
+80002e2c: 00100093 li ra,1
+80002e30: 00700113 li sp,7
+80002e34: 00209f33 sll t5,ra,sp
+80002e38: 000f0313 mv t1,t5
+80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e40: 00200293 li t0,2
+80002e44: fe5214e3 bne tp,t0,80002e2c <test_25+0x4>
+80002e48: 08000e93 li t4,128
+80002e4c: 01900193 li gp,25
+80002e50: 2fd31063 bne t1,t4,80003130 <fail>
+
+80002e54 <test_26>:
+80002e54: 00000213 li tp,0
+80002e58: 00100093 li ra,1
+80002e5c: 00e00113 li sp,14
+80002e60: 00209f33 sll t5,ra,sp
+80002e64: 00000013 nop
+80002e68: 000f0313 mv t1,t5
+80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e70: 00200293 li t0,2
+80002e74: fe5212e3 bne tp,t0,80002e58 <test_26+0x4>
+80002e78: 00004eb7 lui t4,0x4
+80002e7c: 01a00193 li gp,26
+80002e80: 2bd31863 bne t1,t4,80003130 <fail>
+
+80002e84 <test_27>:
+80002e84: 00000213 li tp,0
+80002e88: 00100093 li ra,1
+80002e8c: 01f00113 li sp,31
+80002e90: 00209f33 sll t5,ra,sp
+80002e94: 00000013 nop
+80002e98: 00000013 nop
+80002e9c: 000f0313 mv t1,t5
+80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea4: 00200293 li t0,2
+80002ea8: fe5210e3 bne tp,t0,80002e88 <test_27+0x4>
+80002eac: 80000eb7 lui t4,0x80000
+80002eb0: 01b00193 li gp,27
+80002eb4: 27d31e63 bne t1,t4,80003130 <fail>
+
+80002eb8 <test_28>:
+80002eb8: 00000213 li tp,0
+80002ebc: 00100093 li ra,1
+80002ec0: 00700113 li sp,7
+80002ec4: 00209f33 sll t5,ra,sp
+80002ec8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ecc: 00200293 li t0,2
+80002ed0: fe5216e3 bne tp,t0,80002ebc <test_28+0x4>
+80002ed4: 08000e93 li t4,128
+80002ed8: 01c00193 li gp,28
+80002edc: 25df1a63 bne t5,t4,80003130 <fail>
+
+80002ee0 <test_29>:
+80002ee0: 00000213 li tp,0
+80002ee4: 00100093 li ra,1
+80002ee8: 00e00113 li sp,14
+80002eec: 00000013 nop
+80002ef0: 00209f33 sll t5,ra,sp
+80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ef8: 00200293 li t0,2
+80002efc: fe5214e3 bne tp,t0,80002ee4 <test_29+0x4>
+80002f00: 00004eb7 lui t4,0x4
+80002f04: 01d00193 li gp,29
+80002f08: 23df1463 bne t5,t4,80003130 <fail>
+
+80002f0c <test_30>:
+80002f0c: 00000213 li tp,0
+80002f10: 00100093 li ra,1
+80002f14: 01f00113 li sp,31
+80002f18: 00000013 nop
+80002f1c: 00000013 nop
+80002f20: 00209f33 sll t5,ra,sp
+80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f28: 00200293 li t0,2
+80002f2c: fe5212e3 bne tp,t0,80002f10 <test_30+0x4>
+80002f30: 80000eb7 lui t4,0x80000
+80002f34: 01e00193 li gp,30
+80002f38: 1fdf1c63 bne t5,t4,80003130 <fail>
+
+80002f3c <test_31>:
+80002f3c: 00000213 li tp,0
+80002f40: 00100093 li ra,1
+80002f44: 00000013 nop
+80002f48: 00700113 li sp,7
+80002f4c: 00209f33 sll t5,ra,sp
+80002f50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f54: 00200293 li t0,2
+80002f58: fe5214e3 bne tp,t0,80002f40 <test_31+0x4>
+80002f5c: 08000e93 li t4,128
+80002f60: 01f00193 li gp,31
+80002f64: 1ddf1663 bne t5,t4,80003130 <fail>
+
+80002f68 <test_32>:
+80002f68: 00000213 li tp,0
+80002f6c: 00100093 li ra,1
+80002f70: 00000013 nop
+80002f74: 00e00113 li sp,14
+80002f78: 00000013 nop
+80002f7c: 00209f33 sll t5,ra,sp
+80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f84: 00200293 li t0,2
+80002f88: fe5212e3 bne tp,t0,80002f6c <test_32+0x4>
+80002f8c: 00004eb7 lui t4,0x4
+80002f90: 02000193 li gp,32
+80002f94: 19df1e63 bne t5,t4,80003130 <fail>
+
+80002f98 <test_33>:
+80002f98: 00000213 li tp,0
+80002f9c: 00100093 li ra,1
+80002fa0: 00000013 nop
+80002fa4: 00000013 nop
+80002fa8: 01f00113 li sp,31
+80002fac: 00209f33 sll t5,ra,sp
+80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fb4: 00200293 li t0,2
+80002fb8: fe5212e3 bne tp,t0,80002f9c <test_33+0x4>
+80002fbc: 80000eb7 lui t4,0x80000
+80002fc0: 02100193 li gp,33
+80002fc4: 17df1663 bne t5,t4,80003130 <fail>
+
+80002fc8 <test_34>:
+80002fc8: 00000213 li tp,0
+80002fcc: 00700113 li sp,7
+80002fd0: 00100093 li ra,1
+80002fd4: 00209f33 sll t5,ra,sp
+80002fd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fdc: 00200293 li t0,2
+80002fe0: fe5216e3 bne tp,t0,80002fcc <test_34+0x4>
+80002fe4: 08000e93 li t4,128
+80002fe8: 02200193 li gp,34
+80002fec: 15df1263 bne t5,t4,80003130 <fail>
+
+80002ff0 <test_35>:
+80002ff0: 00000213 li tp,0
+80002ff4: 00e00113 li sp,14
+80002ff8: 00100093 li ra,1
+80002ffc: 00000013 nop
+80003000: 00209f33 sll t5,ra,sp
+80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003008: 00200293 li t0,2
+8000300c: fe5214e3 bne tp,t0,80002ff4 <test_35+0x4>
+80003010: 00004eb7 lui t4,0x4
+80003014: 02300193 li gp,35
+80003018: 11df1c63 bne t5,t4,80003130 <fail>
+
+8000301c <test_36>:
+8000301c: 00000213 li tp,0
+80003020: 01f00113 li sp,31
+80003024: 00100093 li ra,1
+80003028: 00000013 nop
+8000302c: 00000013 nop
+80003030: 00209f33 sll t5,ra,sp
+80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003038: 00200293 li t0,2
+8000303c: fe5212e3 bne tp,t0,80003020 <test_36+0x4>
+80003040: 80000eb7 lui t4,0x80000
+80003044: 02400193 li gp,36
+80003048: 0fdf1463 bne t5,t4,80003130 <fail>
+
+8000304c <test_37>:
+8000304c: 00000213 li tp,0
+80003050: 00700113 li sp,7
+80003054: 00000013 nop
+80003058: 00100093 li ra,1
+8000305c: 00209f33 sll t5,ra,sp
+80003060: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003064: 00200293 li t0,2
+80003068: fe5214e3 bne tp,t0,80003050 <test_37+0x4>
+8000306c: 08000e93 li t4,128
+80003070: 02500193 li gp,37
+80003074: 0bdf1e63 bne t5,t4,80003130 <fail>
+
+80003078 <test_38>:
+80003078: 00000213 li tp,0
+8000307c: 00e00113 li sp,14
+80003080: 00000013 nop
+80003084: 00100093 li ra,1
+80003088: 00000013 nop
+8000308c: 00209f33 sll t5,ra,sp
+80003090: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003094: 00200293 li t0,2
+80003098: fe5212e3 bne tp,t0,8000307c <test_38+0x4>
+8000309c: 00004eb7 lui t4,0x4
+800030a0: 02600193 li gp,38
+800030a4: 09df1663 bne t5,t4,80003130 <fail>
+
+800030a8 <test_39>:
+800030a8: 00000213 li tp,0
+800030ac: 01f00113 li sp,31
+800030b0: 00000013 nop
+800030b4: 00000013 nop
+800030b8: 00100093 li ra,1
+800030bc: 00209f33 sll t5,ra,sp
+800030c0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800030c4: 00200293 li t0,2
+800030c8: fe5212e3 bne tp,t0,800030ac <test_39+0x4>
+800030cc: 80000eb7 lui t4,0x80000
+800030d0: 02700193 li gp,39
+800030d4: 05df1e63 bne t5,t4,80003130 <fail>
+
+800030d8 <test_40>:
+800030d8: 00f00093 li ra,15
+800030dc: 00101133 sll sp,zero,ra
+800030e0: 00000e93 li t4,0
+800030e4: 02800193 li gp,40
+800030e8: 05d11463 bne sp,t4,80003130 <fail>
+
+800030ec <test_41>:
+800030ec: 02000093 li ra,32
+800030f0: 00009133 sll sp,ra,zero
+800030f4: 02000e93 li t4,32
+800030f8: 02900193 li gp,41
+800030fc: 03d11a63 bne sp,t4,80003130 <fail>
+
+80003100 <test_42>:
+80003100: 000010b3 sll ra,zero,zero
+80003104: 00000e93 li t4,0
+80003108: 02a00193 li gp,42
+8000310c: 03d09263 bne ra,t4,80003130 <fail>
+
+80003110 <test_43>:
+80003110: 40000093 li ra,1024
+80003114: 00001137 lui sp,0x1
+80003118: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800>
+8000311c: 00209033 sll zero,ra,sp
+80003120: 00000e93 li t4,0
+80003124: 02b00193 li gp,43
+80003128: 01d01463 bne zero,t4,80003130 <fail>
+8000312c: 00301a63 bne zero,gp,80003140 <pass>
+
+80003130 <fail>:
+80003130: 00119513 slli a0,gp,0x1
+80003134: 00050063 beqz a0,80003134 <fail+0x4>
+80003138: 00156513 ori a0,a0,1
+8000313c: 00000073 ecall
+
+80003140 <pass>:
+80003140: 00100513 li a0,1
+80003144: 00000073 ecall
+80003148: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-sll.elf b/test/riscv-tests/rv32ui-v-sll.elf
new file mode 100644
index 0000000..12cf0fb
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sll.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-slli.dump b/test/riscv-tests/rv32ui-v-slli.dump
new file mode 100644
index 0000000..2b154d5
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-slli.dump
@@ -0,0 +1,1117 @@
+
+rv32ui-v-slli: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9b858593 addi a1,a1,-1608 # 80002e80 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9d458593 addi a1,a1,-1580 # 80002f0c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 98058593 addi a1,a1,-1664 # 80002f24 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8b458593 addi a1,a1,-1868 # 80002ec4 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8a458593 addi a1,a1,-1884 # 80002fec <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 80c58593 addi a1,a1,-2036 # 80002fc8 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 70860613 addi a2,a2,1800 # 80003018 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 61860613 addi a2,a2,1560 # 80002f94 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 59860613 addi a2,a2,1432 # 80002f60 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00e00793 li a5,14
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0fdfb7b7 lui a5,0xfdfb
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 47878793 addi a5,a5,1144 # fdfb478 <_start-0x70204b88>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00100093 li ra,1
+80002be4: 00009f13 slli t5,ra,0x0
+80002be8: 00100e93 li t4,1
+80002bec: 00200193 li gp,2
+80002bf0: 27df1a63 bne t5,t4,80002e64 <fail>
+
+80002bf4 <test_3>:
+80002bf4: 00100093 li ra,1
+80002bf8: 00109f13 slli t5,ra,0x1
+80002bfc: 00200e93 li t4,2
+80002c00: 00300193 li gp,3
+80002c04: 27df1063 bne t5,t4,80002e64 <fail>
+
+80002c08 <test_4>:
+80002c08: 00100093 li ra,1
+80002c0c: 00709f13 slli t5,ra,0x7
+80002c10: 08000e93 li t4,128
+80002c14: 00400193 li gp,4
+80002c18: 25df1663 bne t5,t4,80002e64 <fail>
+
+80002c1c <test_5>:
+80002c1c: 00100093 li ra,1
+80002c20: 00e09f13 slli t5,ra,0xe
+80002c24: 00004eb7 lui t4,0x4
+80002c28: 00500193 li gp,5
+80002c2c: 23df1c63 bne t5,t4,80002e64 <fail>
+
+80002c30 <test_6>:
+80002c30: 00100093 li ra,1
+80002c34: 01f09f13 slli t5,ra,0x1f
+80002c38: 80000eb7 lui t4,0x80000
+80002c3c: 00600193 li gp,6
+80002c40: 23df1263 bne t5,t4,80002e64 <fail>
+
+80002c44 <test_7>:
+80002c44: fff00093 li ra,-1
+80002c48: 00009f13 slli t5,ra,0x0
+80002c4c: fff00e93 li t4,-1
+80002c50: 00700193 li gp,7
+80002c54: 21df1863 bne t5,t4,80002e64 <fail>
+
+80002c58 <test_8>:
+80002c58: fff00093 li ra,-1
+80002c5c: 00109f13 slli t5,ra,0x1
+80002c60: ffe00e93 li t4,-2
+80002c64: 00800193 li gp,8
+80002c68: 1fdf1e63 bne t5,t4,80002e64 <fail>
+
+80002c6c <test_9>:
+80002c6c: fff00093 li ra,-1
+80002c70: 00709f13 slli t5,ra,0x7
+80002c74: f8000e93 li t4,-128
+80002c78: 00900193 li gp,9
+80002c7c: 1fdf1463 bne t5,t4,80002e64 <fail>
+
+80002c80 <test_10>:
+80002c80: fff00093 li ra,-1
+80002c84: 00e09f13 slli t5,ra,0xe
+80002c88: ffffceb7 lui t4,0xffffc
+80002c8c: 00a00193 li gp,10
+80002c90: 1ddf1a63 bne t5,t4,80002e64 <fail>
+
+80002c94 <test_11>:
+80002c94: fff00093 li ra,-1
+80002c98: 01f09f13 slli t5,ra,0x1f
+80002c9c: 80000eb7 lui t4,0x80000
+80002ca0: 00b00193 li gp,11
+80002ca4: 1ddf1063 bne t5,t4,80002e64 <fail>
+
+80002ca8 <test_12>:
+80002ca8: 212120b7 lui ra,0x21212
+80002cac: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002cb0: 00009f13 slli t5,ra,0x0
+80002cb4: 21212eb7 lui t4,0x21212
+80002cb8: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80002cbc: 00c00193 li gp,12
+80002cc0: 1bdf1263 bne t5,t4,80002e64 <fail>
+
+80002cc4 <test_13>:
+80002cc4: 212120b7 lui ra,0x21212
+80002cc8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002ccc: 00109f13 slli t5,ra,0x1
+80002cd0: 42424eb7 lui t4,0x42424
+80002cd4: 242e8e93 addi t4,t4,578 # 42424242 <_start-0x3dbdbdbe>
+80002cd8: 00d00193 li gp,13
+80002cdc: 19df1463 bne t5,t4,80002e64 <fail>
+
+80002ce0 <test_14>:
+80002ce0: 212120b7 lui ra,0x21212
+80002ce4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002ce8: 00709f13 slli t5,ra,0x7
+80002cec: 90909eb7 lui t4,0x90909
+80002cf0: 080e8e93 addi t4,t4,128 # 90909080 <_end+0x10902c88>
+80002cf4: 00e00193 li gp,14
+80002cf8: 17df1663 bne t5,t4,80002e64 <fail>
+
+80002cfc <test_15>:
+80002cfc: 212120b7 lui ra,0x21212
+80002d00: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d04: 00e09f13 slli t5,ra,0xe
+80002d08: 48484eb7 lui t4,0x48484
+80002d0c: 00f00193 li gp,15
+80002d10: 15df1a63 bne t5,t4,80002e64 <fail>
+
+80002d14 <test_16>:
+80002d14: 212120b7 lui ra,0x21212
+80002d18: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d1c: 01f09f13 slli t5,ra,0x1f
+80002d20: 80000eb7 lui t4,0x80000
+80002d24: 01000193 li gp,16
+80002d28: 13df1e63 bne t5,t4,80002e64 <fail>
+
+80002d2c <test_17>:
+80002d2c: 00100093 li ra,1
+80002d30: 00709093 slli ra,ra,0x7
+80002d34: 08000e93 li t4,128
+80002d38: 01100193 li gp,17
+80002d3c: 13d09463 bne ra,t4,80002e64 <fail>
+
+80002d40 <test_18>:
+80002d40: 00000213 li tp,0
+80002d44: 00100093 li ra,1
+80002d48: 00709f13 slli t5,ra,0x7
+80002d4c: 000f0313 mv t1,t5
+80002d50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d54: 00200293 li t0,2
+80002d58: fe5216e3 bne tp,t0,80002d44 <test_18+0x4>
+80002d5c: 08000e93 li t4,128
+80002d60: 01200193 li gp,18
+80002d64: 11d31063 bne t1,t4,80002e64 <fail>
+
+80002d68 <test_19>:
+80002d68: 00000213 li tp,0
+80002d6c: 00100093 li ra,1
+80002d70: 00e09f13 slli t5,ra,0xe
+80002d74: 00000013 nop
+80002d78: 000f0313 mv t1,t5
+80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d80: 00200293 li t0,2
+80002d84: fe5214e3 bne tp,t0,80002d6c <test_19+0x4>
+80002d88: 00004eb7 lui t4,0x4
+80002d8c: 01300193 li gp,19
+80002d90: 0dd31a63 bne t1,t4,80002e64 <fail>
+
+80002d94 <test_20>:
+80002d94: 00000213 li tp,0
+80002d98: 00100093 li ra,1
+80002d9c: 01f09f13 slli t5,ra,0x1f
+80002da0: 00000013 nop
+80002da4: 00000013 nop
+80002da8: 000f0313 mv t1,t5
+80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db0: 00200293 li t0,2
+80002db4: fe5212e3 bne tp,t0,80002d98 <test_20+0x4>
+80002db8: 80000eb7 lui t4,0x80000
+80002dbc: 01400193 li gp,20
+80002dc0: 0bd31263 bne t1,t4,80002e64 <fail>
+
+80002dc4 <test_21>:
+80002dc4: 00000213 li tp,0
+80002dc8: 00100093 li ra,1
+80002dcc: 00709f13 slli t5,ra,0x7
+80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd4: 00200293 li t0,2
+80002dd8: fe5218e3 bne tp,t0,80002dc8 <test_21+0x4>
+80002ddc: 08000e93 li t4,128
+80002de0: 01500193 li gp,21
+80002de4: 09df1063 bne t5,t4,80002e64 <fail>
+
+80002de8 <test_22>:
+80002de8: 00000213 li tp,0
+80002dec: 00100093 li ra,1
+80002df0: 00000013 nop
+80002df4: 00e09f13 slli t5,ra,0xe
+80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dfc: 00200293 li t0,2
+80002e00: fe5216e3 bne tp,t0,80002dec <test_22+0x4>
+80002e04: 00004eb7 lui t4,0x4
+80002e08: 01600193 li gp,22
+80002e0c: 05df1c63 bne t5,t4,80002e64 <fail>
+
+80002e10 <test_23>:
+80002e10: 00000213 li tp,0
+80002e14: 00100093 li ra,1
+80002e18: 00000013 nop
+80002e1c: 00000013 nop
+80002e20: 01f09f13 slli t5,ra,0x1f
+80002e24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e28: 00200293 li t0,2
+80002e2c: fe5214e3 bne tp,t0,80002e14 <test_23+0x4>
+80002e30: 80000eb7 lui t4,0x80000
+80002e34: 01700193 li gp,23
+80002e38: 03df1663 bne t5,t4,80002e64 <fail>
+
+80002e3c <test_24>:
+80002e3c: 01f01093 slli ra,zero,0x1f
+80002e40: 00000e93 li t4,0
+80002e44: 01800193 li gp,24
+80002e48: 01d09e63 bne ra,t4,80002e64 <fail>
+
+80002e4c <test_25>:
+80002e4c: 02100093 li ra,33
+80002e50: 01409013 slli zero,ra,0x14
+80002e54: 00000e93 li t4,0
+80002e58: 01900193 li gp,25
+80002e5c: 01d01463 bne zero,t4,80002e64 <fail>
+80002e60: 00301a63 bne zero,gp,80002e74 <pass>
+
+80002e64 <fail>:
+80002e64: 00119513 slli a0,gp,0x1
+80002e68: 00050063 beqz a0,80002e68 <fail+0x4>
+80002e6c: 00156513 ori a0,a0,1
+80002e70: 00000073 ecall
+
+80002e74 <pass>:
+80002e74: 00100513 li a0,1
+80002e78: 00000073 ecall
+80002e7c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-slli.elf b/test/riscv-tests/rv32ui-v-slli.elf
new file mode 100644
index 0000000..12d09d4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-slli.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-slt.dump b/test/riscv-tests/rv32ui-v-slt.dump
new file mode 100644
index 0000000..c103360
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-slt.dump
@@ -0,0 +1,1288 @@
+
+rv32ui-v-slt: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1858593 addi a1,a1,-1000 # 80003150 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc458593 addi a1,a1,-1084 # 80003168 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af858593 addi a1,a1,-1288 # 80003108 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae858593 addi a1,a1,-1304 # 80003230 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a5058593 addi a1,a1,-1456 # 8000320c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94c60613 addi a2,a2,-1716 # 8000325c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85c60613 addi a2,a2,-1956 # 800031d8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00900793 li a5,9
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0e44a7b7 lui a5,0xe44a
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 29478793 addi a5,a5,660 # e44a294 <_start-0x71bb5d6c>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 0020af33 slt t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 0020af33 slt t5,ra,sp
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 49df1e63 bne t5,t4,800030a8 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 0020af33 slt t5,ra,sp
+80002c1c: 00100e93 li t4,1
+80002c20: 00400193 li gp,4
+80002c24: 49df1263 bne t5,t4,800030a8 <fail>
+
+80002c28 <test_5>:
+80002c28: 00700093 li ra,7
+80002c2c: 00300113 li sp,3
+80002c30: 0020af33 slt t5,ra,sp
+80002c34: 00000e93 li t4,0
+80002c38: 00500193 li gp,5
+80002c3c: 47df1663 bne t5,t4,800030a8 <fail>
+
+80002c40 <test_6>:
+80002c40: 00000093 li ra,0
+80002c44: ffff8137 lui sp,0xffff8
+80002c48: 0020af33 slt t5,ra,sp
+80002c4c: 00000e93 li t4,0
+80002c50: 00600193 li gp,6
+80002c54: 45df1a63 bne t5,t4,800030a8 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: 00000113 li sp,0
+80002c60: 0020af33 slt t5,ra,sp
+80002c64: 00100e93 li t4,1
+80002c68: 00700193 li gp,7
+80002c6c: 43df1e63 bne t5,t4,800030a8 <fail>
+
+80002c70 <test_8>:
+80002c70: 800000b7 lui ra,0x80000
+80002c74: ffff8137 lui sp,0xffff8
+80002c78: 0020af33 slt t5,ra,sp
+80002c7c: 00100e93 li t4,1
+80002c80: 00800193 li gp,8
+80002c84: 43df1263 bne t5,t4,800030a8 <fail>
+
+80002c88 <test_9>:
+80002c88: 00000093 li ra,0
+80002c8c: 00008137 lui sp,0x8
+80002c90: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002c94: 0020af33 slt t5,ra,sp
+80002c98: 00100e93 li t4,1
+80002c9c: 00900193 li gp,9
+80002ca0: 41df1463 bne t5,t4,800030a8 <fail>
+
+80002ca4 <test_10>:
+80002ca4: 800000b7 lui ra,0x80000
+80002ca8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cac: 00000113 li sp,0
+80002cb0: 0020af33 slt t5,ra,sp
+80002cb4: 00000e93 li t4,0
+80002cb8: 00a00193 li gp,10
+80002cbc: 3fdf1663 bne t5,t4,800030a8 <fail>
+
+80002cc0 <test_11>:
+80002cc0: 800000b7 lui ra,0x80000
+80002cc4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cc8: 00008137 lui sp,0x8
+80002ccc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cd0: 0020af33 slt t5,ra,sp
+80002cd4: 00000e93 li t4,0
+80002cd8: 00b00193 li gp,11
+80002cdc: 3ddf1663 bne t5,t4,800030a8 <fail>
+
+80002ce0 <test_12>:
+80002ce0: 800000b7 lui ra,0x80000
+80002ce4: 00008137 lui sp,0x8
+80002ce8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cec: 0020af33 slt t5,ra,sp
+80002cf0: 00100e93 li t4,1
+80002cf4: 00c00193 li gp,12
+80002cf8: 3bdf1863 bne t5,t4,800030a8 <fail>
+
+80002cfc <test_13>:
+80002cfc: 800000b7 lui ra,0x80000
+80002d00: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002d04: ffff8137 lui sp,0xffff8
+80002d08: 0020af33 slt t5,ra,sp
+80002d0c: 00000e93 li t4,0
+80002d10: 00d00193 li gp,13
+80002d14: 39df1a63 bne t5,t4,800030a8 <fail>
+
+80002d18 <test_14>:
+80002d18: 00000093 li ra,0
+80002d1c: fff00113 li sp,-1
+80002d20: 0020af33 slt t5,ra,sp
+80002d24: 00000e93 li t4,0
+80002d28: 00e00193 li gp,14
+80002d2c: 37df1e63 bne t5,t4,800030a8 <fail>
+
+80002d30 <test_15>:
+80002d30: fff00093 li ra,-1
+80002d34: 00100113 li sp,1
+80002d38: 0020af33 slt t5,ra,sp
+80002d3c: 00100e93 li t4,1
+80002d40: 00f00193 li gp,15
+80002d44: 37df1263 bne t5,t4,800030a8 <fail>
+
+80002d48 <test_16>:
+80002d48: fff00093 li ra,-1
+80002d4c: fff00113 li sp,-1
+80002d50: 0020af33 slt t5,ra,sp
+80002d54: 00000e93 li t4,0
+80002d58: 01000193 li gp,16
+80002d5c: 35df1663 bne t5,t4,800030a8 <fail>
+
+80002d60 <test_17>:
+80002d60: 00e00093 li ra,14
+80002d64: 00d00113 li sp,13
+80002d68: 0020a0b3 slt ra,ra,sp
+80002d6c: 00000e93 li t4,0
+80002d70: 01100193 li gp,17
+80002d74: 33d09a63 bne ra,t4,800030a8 <fail>
+
+80002d78 <test_18>:
+80002d78: 00b00093 li ra,11
+80002d7c: 00d00113 li sp,13
+80002d80: 0020a133 slt sp,ra,sp
+80002d84: 00100e93 li t4,1
+80002d88: 01200193 li gp,18
+80002d8c: 31d11e63 bne sp,t4,800030a8 <fail>
+
+80002d90 <test_19>:
+80002d90: 00d00093 li ra,13
+80002d94: 0010a0b3 slt ra,ra,ra
+80002d98: 00000e93 li t4,0
+80002d9c: 01300193 li gp,19
+80002da0: 31d09463 bne ra,t4,800030a8 <fail>
+
+80002da4 <test_20>:
+80002da4: 00000213 li tp,0
+80002da8: 00b00093 li ra,11
+80002dac: 00d00113 li sp,13
+80002db0: 0020af33 slt t5,ra,sp
+80002db4: 000f0313 mv t1,t5
+80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dbc: 00200293 li t0,2
+80002dc0: fe5214e3 bne tp,t0,80002da8 <test_20+0x4>
+80002dc4: 00100e93 li t4,1
+80002dc8: 01400193 li gp,20
+80002dcc: 2dd31e63 bne t1,t4,800030a8 <fail>
+
+80002dd0 <test_21>:
+80002dd0: 00000213 li tp,0
+80002dd4: 00e00093 li ra,14
+80002dd8: 00d00113 li sp,13
+80002ddc: 0020af33 slt t5,ra,sp
+80002de0: 00000013 nop
+80002de4: 000f0313 mv t1,t5
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5212e3 bne tp,t0,80002dd4 <test_21+0x4>
+80002df4: 00000e93 li t4,0
+80002df8: 01500193 li gp,21
+80002dfc: 2bd31663 bne t1,t4,800030a8 <fail>
+
+80002e00 <test_22>:
+80002e00: 00000213 li tp,0
+80002e04: 00c00093 li ra,12
+80002e08: 00d00113 li sp,13
+80002e0c: 0020af33 slt t5,ra,sp
+80002e10: 00000013 nop
+80002e14: 00000013 nop
+80002e18: 000f0313 mv t1,t5
+80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e20: 00200293 li t0,2
+80002e24: fe5210e3 bne tp,t0,80002e04 <test_22+0x4>
+80002e28: 00100e93 li t4,1
+80002e2c: 01600193 li gp,22
+80002e30: 27d31c63 bne t1,t4,800030a8 <fail>
+
+80002e34 <test_23>:
+80002e34: 00000213 li tp,0
+80002e38: 00e00093 li ra,14
+80002e3c: 00d00113 li sp,13
+80002e40: 0020af33 slt t5,ra,sp
+80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e48: 00200293 li t0,2
+80002e4c: fe5216e3 bne tp,t0,80002e38 <test_23+0x4>
+80002e50: 00000e93 li t4,0
+80002e54: 01700193 li gp,23
+80002e58: 25df1863 bne t5,t4,800030a8 <fail>
+
+80002e5c <test_24>:
+80002e5c: 00000213 li tp,0
+80002e60: 00b00093 li ra,11
+80002e64: 00d00113 li sp,13
+80002e68: 00000013 nop
+80002e6c: 0020af33 slt t5,ra,sp
+80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e74: 00200293 li t0,2
+80002e78: fe5214e3 bne tp,t0,80002e60 <test_24+0x4>
+80002e7c: 00100e93 li t4,1
+80002e80: 01800193 li gp,24
+80002e84: 23df1263 bne t5,t4,800030a8 <fail>
+
+80002e88 <test_25>:
+80002e88: 00000213 li tp,0
+80002e8c: 00f00093 li ra,15
+80002e90: 00d00113 li sp,13
+80002e94: 00000013 nop
+80002e98: 00000013 nop
+80002e9c: 0020af33 slt t5,ra,sp
+80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea4: 00200293 li t0,2
+80002ea8: fe5212e3 bne tp,t0,80002e8c <test_25+0x4>
+80002eac: 00000e93 li t4,0
+80002eb0: 01900193 li gp,25
+80002eb4: 1fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002eb8 <test_26>:
+80002eb8: 00000213 li tp,0
+80002ebc: 00a00093 li ra,10
+80002ec0: 00000013 nop
+80002ec4: 00d00113 li sp,13
+80002ec8: 0020af33 slt t5,ra,sp
+80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ed0: 00200293 li t0,2
+80002ed4: fe5214e3 bne tp,t0,80002ebc <test_26+0x4>
+80002ed8: 00100e93 li t4,1
+80002edc: 01a00193 li gp,26
+80002ee0: 1ddf1463 bne t5,t4,800030a8 <fail>
+
+80002ee4 <test_27>:
+80002ee4: 00000213 li tp,0
+80002ee8: 01000093 li ra,16
+80002eec: 00000013 nop
+80002ef0: 00d00113 li sp,13
+80002ef4: 00000013 nop
+80002ef8: 0020af33 slt t5,ra,sp
+80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f00: 00200293 li t0,2
+80002f04: fe5212e3 bne tp,t0,80002ee8 <test_27+0x4>
+80002f08: 00000e93 li t4,0
+80002f0c: 01b00193 li gp,27
+80002f10: 19df1c63 bne t5,t4,800030a8 <fail>
+
+80002f14 <test_28>:
+80002f14: 00000213 li tp,0
+80002f18: 00900093 li ra,9
+80002f1c: 00000013 nop
+80002f20: 00000013 nop
+80002f24: 00d00113 li sp,13
+80002f28: 0020af33 slt t5,ra,sp
+80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f30: 00200293 li t0,2
+80002f34: fe5212e3 bne tp,t0,80002f18 <test_28+0x4>
+80002f38: 00100e93 li t4,1
+80002f3c: 01c00193 li gp,28
+80002f40: 17df1463 bne t5,t4,800030a8 <fail>
+
+80002f44 <test_29>:
+80002f44: 00000213 li tp,0
+80002f48: 00d00113 li sp,13
+80002f4c: 01100093 li ra,17
+80002f50: 0020af33 slt t5,ra,sp
+80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f58: 00200293 li t0,2
+80002f5c: fe5216e3 bne tp,t0,80002f48 <test_29+0x4>
+80002f60: 00000e93 li t4,0
+80002f64: 01d00193 li gp,29
+80002f68: 15df1063 bne t5,t4,800030a8 <fail>
+
+80002f6c <test_30>:
+80002f6c: 00000213 li tp,0
+80002f70: 00d00113 li sp,13
+80002f74: 00800093 li ra,8
+80002f78: 00000013 nop
+80002f7c: 0020af33 slt t5,ra,sp
+80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f84: 00200293 li t0,2
+80002f88: fe5214e3 bne tp,t0,80002f70 <test_30+0x4>
+80002f8c: 00100e93 li t4,1
+80002f90: 01e00193 li gp,30
+80002f94: 11df1a63 bne t5,t4,800030a8 <fail>
+
+80002f98 <test_31>:
+80002f98: 00000213 li tp,0
+80002f9c: 00d00113 li sp,13
+80002fa0: 01200093 li ra,18
+80002fa4: 00000013 nop
+80002fa8: 00000013 nop
+80002fac: 0020af33 slt t5,ra,sp
+80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fb4: 00200293 li t0,2
+80002fb8: fe5212e3 bne tp,t0,80002f9c <test_31+0x4>
+80002fbc: 00000e93 li t4,0
+80002fc0: 01f00193 li gp,31
+80002fc4: 0fdf1263 bne t5,t4,800030a8 <fail>
+
+80002fc8 <test_32>:
+80002fc8: 00000213 li tp,0
+80002fcc: 00d00113 li sp,13
+80002fd0: 00000013 nop
+80002fd4: 00700093 li ra,7
+80002fd8: 0020af33 slt t5,ra,sp
+80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe0: 00200293 li t0,2
+80002fe4: fe5214e3 bne tp,t0,80002fcc <test_32+0x4>
+80002fe8: 00100e93 li t4,1
+80002fec: 02000193 li gp,32
+80002ff0: 0bdf1c63 bne t5,t4,800030a8 <fail>
+
+80002ff4 <test_33>:
+80002ff4: 00000213 li tp,0
+80002ff8: 00d00113 li sp,13
+80002ffc: 00000013 nop
+80003000: 01300093 li ra,19
+80003004: 00000013 nop
+80003008: 0020af33 slt t5,ra,sp
+8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003010: 00200293 li t0,2
+80003014: fe5212e3 bne tp,t0,80002ff8 <test_33+0x4>
+80003018: 00000e93 li t4,0
+8000301c: 02100193 li gp,33
+80003020: 09df1463 bne t5,t4,800030a8 <fail>
+
+80003024 <test_34>:
+80003024: 00000213 li tp,0
+80003028: 00d00113 li sp,13
+8000302c: 00000013 nop
+80003030: 00000013 nop
+80003034: 00600093 li ra,6
+80003038: 0020af33 slt t5,ra,sp
+8000303c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003040: 00200293 li t0,2
+80003044: fe5212e3 bne tp,t0,80003028 <test_34+0x4>
+80003048: 00100e93 li t4,1
+8000304c: 02200193 li gp,34
+80003050: 05df1c63 bne t5,t4,800030a8 <fail>
+
+80003054 <test_35>:
+80003054: fff00093 li ra,-1
+80003058: 00102133 sgtz sp,ra
+8000305c: 00000e93 li t4,0
+80003060: 02300193 li gp,35
+80003064: 05d11263 bne sp,t4,800030a8 <fail>
+
+80003068 <test_36>:
+80003068: fff00093 li ra,-1
+8000306c: 0000a133 sltz sp,ra
+80003070: 00100e93 li t4,1
+80003074: 02400193 li gp,36
+80003078: 03d11863 bne sp,t4,800030a8 <fail>
+
+8000307c <test_37>:
+8000307c: 000020b3 sltz ra,zero
+80003080: 00000e93 li t4,0
+80003084: 02500193 li gp,37
+80003088: 03d09063 bne ra,t4,800030a8 <fail>
+
+8000308c <test_38>:
+8000308c: 01000093 li ra,16
+80003090: 01e00113 li sp,30
+80003094: 0020a033 slt zero,ra,sp
+80003098: 00000e93 li t4,0
+8000309c: 02600193 li gp,38
+800030a0: 01d01463 bne zero,t4,800030a8 <fail>
+800030a4: 00301a63 bne zero,gp,800030b8 <pass>
+
+800030a8 <fail>:
+800030a8: 00119513 slli a0,gp,0x1
+800030ac: 00050063 beqz a0,800030ac <fail+0x4>
+800030b0: 00156513 ori a0,a0,1
+800030b4: 00000073 ecall
+
+800030b8 <pass>:
+800030b8: 00100513 li a0,1
+800030bc: 00000073 ecall
+800030c0: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-slt.elf b/test/riscv-tests/rv32ui-v-slt.elf
new file mode 100644
index 0000000..cce04e4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-slt.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-slti.dump b/test/riscv-tests/rv32ui-v-slti.dump
new file mode 100644
index 0000000..71fdf1d
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-slti.dump
@@ -0,0 +1,1113 @@
+
+rv32ui-v-slti: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9a858593 addi a1,a1,-1624 # 80002e70 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9c458593 addi a1,a1,-1596 # 80002efc <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 97058593 addi a1,a1,-1680 # 80002f14 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8a458593 addi a1,a1,-1884 # 80002eb4 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 89458593 addi a1,a1,-1900 # 80002fdc <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 7fc58593 addi a1,a1,2044 # 80002fb8 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 6f860613 addi a2,a2,1784 # 80003008 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 60860613 addi a2,a2,1544 # 80002f84 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 58860613 addi a2,a2,1416 # 80002f50 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00800793 li a5,8
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0ff6d7b7 lui a5,0xff6d
+80002b9c: 00080637 lui a2,0x80
+80002ba0: d5778793 addi a5,a5,-681 # ff6cd57 <_start-0x700932a9>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 0000af13 slti t5,ra,0
+80002be8: 00000e93 li t4,0
+80002bec: 00200193 li gp,2
+80002bf0: 27df1263 bne t5,t4,80002e54 <fail>
+
+80002bf4 <test_3>:
+80002bf4: 00100093 li ra,1
+80002bf8: 0010af13 slti t5,ra,1
+80002bfc: 00000e93 li t4,0
+80002c00: 00300193 li gp,3
+80002c04: 25df1863 bne t5,t4,80002e54 <fail>
+
+80002c08 <test_4>:
+80002c08: 00300093 li ra,3
+80002c0c: 0070af13 slti t5,ra,7
+80002c10: 00100e93 li t4,1
+80002c14: 00400193 li gp,4
+80002c18: 23df1e63 bne t5,t4,80002e54 <fail>
+
+80002c1c <test_5>:
+80002c1c: 00700093 li ra,7
+80002c20: 0030af13 slti t5,ra,3
+80002c24: 00000e93 li t4,0
+80002c28: 00500193 li gp,5
+80002c2c: 23df1463 bne t5,t4,80002e54 <fail>
+
+80002c30 <test_6>:
+80002c30: 00000093 li ra,0
+80002c34: 8000af13 slti t5,ra,-2048
+80002c38: 00000e93 li t4,0
+80002c3c: 00600193 li gp,6
+80002c40: 21df1a63 bne t5,t4,80002e54 <fail>
+
+80002c44 <test_7>:
+80002c44: 800000b7 lui ra,0x80000
+80002c48: 0000af13 slti t5,ra,0
+80002c4c: 00100e93 li t4,1
+80002c50: 00700193 li gp,7
+80002c54: 21df1063 bne t5,t4,80002e54 <fail>
+
+80002c58 <test_8>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: 8000af13 slti t5,ra,-2048
+80002c60: 00100e93 li t4,1
+80002c64: 00800193 li gp,8
+80002c68: 1fdf1663 bne t5,t4,80002e54 <fail>
+
+80002c6c <test_9>:
+80002c6c: 00000093 li ra,0
+80002c70: 7ff0af13 slti t5,ra,2047
+80002c74: 00100e93 li t4,1
+80002c78: 00900193 li gp,9
+80002c7c: 1ddf1c63 bne t5,t4,80002e54 <fail>
+
+80002c80 <test_10>:
+80002c80: 800000b7 lui ra,0x80000
+80002c84: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c88: 0000af13 slti t5,ra,0
+80002c8c: 00000e93 li t4,0
+80002c90: 00a00193 li gp,10
+80002c94: 1ddf1063 bne t5,t4,80002e54 <fail>
+
+80002c98 <test_11>:
+80002c98: 800000b7 lui ra,0x80000
+80002c9c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ca0: 7ff0af13 slti t5,ra,2047
+80002ca4: 00000e93 li t4,0
+80002ca8: 00b00193 li gp,11
+80002cac: 1bdf1463 bne t5,t4,80002e54 <fail>
+
+80002cb0 <test_12>:
+80002cb0: 800000b7 lui ra,0x80000
+80002cb4: 7ff0af13 slti t5,ra,2047
+80002cb8: 00100e93 li t4,1
+80002cbc: 00c00193 li gp,12
+80002cc0: 19df1a63 bne t5,t4,80002e54 <fail>
+
+80002cc4 <test_13>:
+80002cc4: 800000b7 lui ra,0x80000
+80002cc8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ccc: 8000af13 slti t5,ra,-2048
+80002cd0: 00000e93 li t4,0
+80002cd4: 00d00193 li gp,13
+80002cd8: 17df1e63 bne t5,t4,80002e54 <fail>
+
+80002cdc <test_14>:
+80002cdc: 00000093 li ra,0
+80002ce0: fff0af13 slti t5,ra,-1
+80002ce4: 00000e93 li t4,0
+80002ce8: 00e00193 li gp,14
+80002cec: 17df1463 bne t5,t4,80002e54 <fail>
+
+80002cf0 <test_15>:
+80002cf0: fff00093 li ra,-1
+80002cf4: 0010af13 slti t5,ra,1
+80002cf8: 00100e93 li t4,1
+80002cfc: 00f00193 li gp,15
+80002d00: 15df1a63 bne t5,t4,80002e54 <fail>
+
+80002d04 <test_16>:
+80002d04: fff00093 li ra,-1
+80002d08: fff0af13 slti t5,ra,-1
+80002d0c: 00000e93 li t4,0
+80002d10: 01000193 li gp,16
+80002d14: 15df1063 bne t5,t4,80002e54 <fail>
+
+80002d18 <test_17>:
+80002d18: 00b00093 li ra,11
+80002d1c: 00d0a093 slti ra,ra,13
+80002d20: 00100e93 li t4,1
+80002d24: 01100193 li gp,17
+80002d28: 13d09663 bne ra,t4,80002e54 <fail>
+
+80002d2c <test_18>:
+80002d2c: 00000213 li tp,0
+80002d30: 00f00093 li ra,15
+80002d34: 00a0af13 slti t5,ra,10
+80002d38: 000f0313 mv t1,t5
+80002d3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d40: 00200293 li t0,2
+80002d44: fe5216e3 bne tp,t0,80002d30 <test_18+0x4>
+80002d48: 00000e93 li t4,0
+80002d4c: 01200193 li gp,18
+80002d50: 11d31263 bne t1,t4,80002e54 <fail>
+
+80002d54 <test_19>:
+80002d54: 00000213 li tp,0
+80002d58: 00a00093 li ra,10
+80002d5c: 0100af13 slti t5,ra,16
+80002d60: 00000013 nop
+80002d64: 000f0313 mv t1,t5
+80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d6c: 00200293 li t0,2
+80002d70: fe5214e3 bne tp,t0,80002d58 <test_19+0x4>
+80002d74: 00100e93 li t4,1
+80002d78: 01300193 li gp,19
+80002d7c: 0dd31c63 bne t1,t4,80002e54 <fail>
+
+80002d80 <test_20>:
+80002d80: 00000213 li tp,0
+80002d84: 01000093 li ra,16
+80002d88: 0090af13 slti t5,ra,9
+80002d8c: 00000013 nop
+80002d90: 00000013 nop
+80002d94: 000f0313 mv t1,t5
+80002d98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d9c: 00200293 li t0,2
+80002da0: fe5212e3 bne tp,t0,80002d84 <test_20+0x4>
+80002da4: 00000e93 li t4,0
+80002da8: 01400193 li gp,20
+80002dac: 0bd31463 bne t1,t4,80002e54 <fail>
+
+80002db0 <test_21>:
+80002db0: 00000213 li tp,0
+80002db4: 00b00093 li ra,11
+80002db8: 00f0af13 slti t5,ra,15
+80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dc0: 00200293 li t0,2
+80002dc4: fe5218e3 bne tp,t0,80002db4 <test_21+0x4>
+80002dc8: 00100e93 li t4,1
+80002dcc: 01500193 li gp,21
+80002dd0: 09df1263 bne t5,t4,80002e54 <fail>
+
+80002dd4 <test_22>:
+80002dd4: 00000213 li tp,0
+80002dd8: 01100093 li ra,17
+80002ddc: 00000013 nop
+80002de0: 0080af13 slti t5,ra,8
+80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de8: 00200293 li t0,2
+80002dec: fe5216e3 bne tp,t0,80002dd8 <test_22+0x4>
+80002df0: 00000e93 li t4,0
+80002df4: 01600193 li gp,22
+80002df8: 05df1e63 bne t5,t4,80002e54 <fail>
+
+80002dfc <test_23>:
+80002dfc: 00000213 li tp,0
+80002e00: 00c00093 li ra,12
+80002e04: 00000013 nop
+80002e08: 00000013 nop
+80002e0c: 00e0af13 slti t5,ra,14
+80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e14: 00200293 li t0,2
+80002e18: fe5214e3 bne tp,t0,80002e00 <test_23+0x4>
+80002e1c: 00100e93 li t4,1
+80002e20: 01700193 li gp,23
+80002e24: 03df1863 bne t5,t4,80002e54 <fail>
+
+80002e28 <test_24>:
+80002e28: fff02093 slti ra,zero,-1
+80002e2c: 00000e93 li t4,0
+80002e30: 01800193 li gp,24
+80002e34: 03d09063 bne ra,t4,80002e54 <fail>
+
+80002e38 <test_25>:
+80002e38: 00ff00b7 lui ra,0xff0
+80002e3c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002e40: fff0a013 slti zero,ra,-1
+80002e44: 00000e93 li t4,0
+80002e48: 01900193 li gp,25
+80002e4c: 01d01463 bne zero,t4,80002e54 <fail>
+80002e50: 00301a63 bne zero,gp,80002e64 <pass>
+
+80002e54 <fail>:
+80002e54: 00119513 slli a0,gp,0x1
+80002e58: 00050063 beqz a0,80002e58 <fail+0x4>
+80002e5c: 00156513 ori a0,a0,1
+80002e60: 00000073 ecall
+
+80002e64 <pass>:
+80002e64: 00100513 li a0,1
+80002e68: 00000073 ecall
+80002e6c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-slti.elf b/test/riscv-tests/rv32ui-v-slti.elf
new file mode 100644
index 0000000..7f14ea2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-slti.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sltiu.dump b/test/riscv-tests/rv32ui-v-sltiu.dump
new file mode 100644
index 0000000..dc38e72
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sltiu.dump
@@ -0,0 +1,1113 @@
+
+rv32ui-v-sltiu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9a858593 addi a1,a1,-1624 # 80002e70 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9c458593 addi a1,a1,-1596 # 80002efc <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 97058593 addi a1,a1,-1680 # 80002f14 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8a458593 addi a1,a1,-1884 # 80002eb4 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 89458593 addi a1,a1,-1900 # 80002fdc <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 7fc58593 addi a1,a1,2044 # 80002fb8 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 6f860613 addi a2,a2,1784 # 80003008 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 60860613 addi a2,a2,1544 # 80002f84 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 58860613 addi a2,a2,1416 # 80002f50 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01300793 li a5,19
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0603e7b7 lui a5,0x603e
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 73078793 addi a5,a5,1840 # 603e730 <_start-0x79fc18d0>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 0000bf13 sltiu t5,ra,0
+80002be8: 00000e93 li t4,0
+80002bec: 00200193 li gp,2
+80002bf0: 27df1263 bne t5,t4,80002e54 <fail>
+
+80002bf4 <test_3>:
+80002bf4: 00100093 li ra,1
+80002bf8: 0010bf13 seqz t5,ra
+80002bfc: 00000e93 li t4,0
+80002c00: 00300193 li gp,3
+80002c04: 25df1863 bne t5,t4,80002e54 <fail>
+
+80002c08 <test_4>:
+80002c08: 00300093 li ra,3
+80002c0c: 0070bf13 sltiu t5,ra,7
+80002c10: 00100e93 li t4,1
+80002c14: 00400193 li gp,4
+80002c18: 23df1e63 bne t5,t4,80002e54 <fail>
+
+80002c1c <test_5>:
+80002c1c: 00700093 li ra,7
+80002c20: 0030bf13 sltiu t5,ra,3
+80002c24: 00000e93 li t4,0
+80002c28: 00500193 li gp,5
+80002c2c: 23df1463 bne t5,t4,80002e54 <fail>
+
+80002c30 <test_6>:
+80002c30: 00000093 li ra,0
+80002c34: 8000bf13 sltiu t5,ra,-2048
+80002c38: 00100e93 li t4,1
+80002c3c: 00600193 li gp,6
+80002c40: 21df1a63 bne t5,t4,80002e54 <fail>
+
+80002c44 <test_7>:
+80002c44: 800000b7 lui ra,0x80000
+80002c48: 0000bf13 sltiu t5,ra,0
+80002c4c: 00000e93 li t4,0
+80002c50: 00700193 li gp,7
+80002c54: 21df1063 bne t5,t4,80002e54 <fail>
+
+80002c58 <test_8>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: 8000bf13 sltiu t5,ra,-2048
+80002c60: 00100e93 li t4,1
+80002c64: 00800193 li gp,8
+80002c68: 1fdf1663 bne t5,t4,80002e54 <fail>
+
+80002c6c <test_9>:
+80002c6c: 00000093 li ra,0
+80002c70: 7ff0bf13 sltiu t5,ra,2047
+80002c74: 00100e93 li t4,1
+80002c78: 00900193 li gp,9
+80002c7c: 1ddf1c63 bne t5,t4,80002e54 <fail>
+
+80002c80 <test_10>:
+80002c80: 800000b7 lui ra,0x80000
+80002c84: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c88: 0000bf13 sltiu t5,ra,0
+80002c8c: 00000e93 li t4,0
+80002c90: 00a00193 li gp,10
+80002c94: 1ddf1063 bne t5,t4,80002e54 <fail>
+
+80002c98 <test_11>:
+80002c98: 800000b7 lui ra,0x80000
+80002c9c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ca0: 7ff0bf13 sltiu t5,ra,2047
+80002ca4: 00000e93 li t4,0
+80002ca8: 00b00193 li gp,11
+80002cac: 1bdf1463 bne t5,t4,80002e54 <fail>
+
+80002cb0 <test_12>:
+80002cb0: 800000b7 lui ra,0x80000
+80002cb4: 7ff0bf13 sltiu t5,ra,2047
+80002cb8: 00000e93 li t4,0
+80002cbc: 00c00193 li gp,12
+80002cc0: 19df1a63 bne t5,t4,80002e54 <fail>
+
+80002cc4 <test_13>:
+80002cc4: 800000b7 lui ra,0x80000
+80002cc8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ccc: 8000bf13 sltiu t5,ra,-2048
+80002cd0: 00100e93 li t4,1
+80002cd4: 00d00193 li gp,13
+80002cd8: 17df1e63 bne t5,t4,80002e54 <fail>
+
+80002cdc <test_14>:
+80002cdc: 00000093 li ra,0
+80002ce0: fff0bf13 sltiu t5,ra,-1
+80002ce4: 00100e93 li t4,1
+80002ce8: 00e00193 li gp,14
+80002cec: 17df1463 bne t5,t4,80002e54 <fail>
+
+80002cf0 <test_15>:
+80002cf0: fff00093 li ra,-1
+80002cf4: 0010bf13 seqz t5,ra
+80002cf8: 00000e93 li t4,0
+80002cfc: 00f00193 li gp,15
+80002d00: 15df1a63 bne t5,t4,80002e54 <fail>
+
+80002d04 <test_16>:
+80002d04: fff00093 li ra,-1
+80002d08: fff0bf13 sltiu t5,ra,-1
+80002d0c: 00000e93 li t4,0
+80002d10: 01000193 li gp,16
+80002d14: 15df1063 bne t5,t4,80002e54 <fail>
+
+80002d18 <test_17>:
+80002d18: 00b00093 li ra,11
+80002d1c: 00d0b093 sltiu ra,ra,13
+80002d20: 00100e93 li t4,1
+80002d24: 01100193 li gp,17
+80002d28: 13d09663 bne ra,t4,80002e54 <fail>
+
+80002d2c <test_18>:
+80002d2c: 00000213 li tp,0
+80002d30: 00f00093 li ra,15
+80002d34: 00a0bf13 sltiu t5,ra,10
+80002d38: 000f0313 mv t1,t5
+80002d3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d40: 00200293 li t0,2
+80002d44: fe5216e3 bne tp,t0,80002d30 <test_18+0x4>
+80002d48: 00000e93 li t4,0
+80002d4c: 01200193 li gp,18
+80002d50: 11d31263 bne t1,t4,80002e54 <fail>
+
+80002d54 <test_19>:
+80002d54: 00000213 li tp,0
+80002d58: 00a00093 li ra,10
+80002d5c: 0100bf13 sltiu t5,ra,16
+80002d60: 00000013 nop
+80002d64: 000f0313 mv t1,t5
+80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d6c: 00200293 li t0,2
+80002d70: fe5214e3 bne tp,t0,80002d58 <test_19+0x4>
+80002d74: 00100e93 li t4,1
+80002d78: 01300193 li gp,19
+80002d7c: 0dd31c63 bne t1,t4,80002e54 <fail>
+
+80002d80 <test_20>:
+80002d80: 00000213 li tp,0
+80002d84: 01000093 li ra,16
+80002d88: 0090bf13 sltiu t5,ra,9
+80002d8c: 00000013 nop
+80002d90: 00000013 nop
+80002d94: 000f0313 mv t1,t5
+80002d98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d9c: 00200293 li t0,2
+80002da0: fe5212e3 bne tp,t0,80002d84 <test_20+0x4>
+80002da4: 00000e93 li t4,0
+80002da8: 01400193 li gp,20
+80002dac: 0bd31463 bne t1,t4,80002e54 <fail>
+
+80002db0 <test_21>:
+80002db0: 00000213 li tp,0
+80002db4: 00b00093 li ra,11
+80002db8: 00f0bf13 sltiu t5,ra,15
+80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dc0: 00200293 li t0,2
+80002dc4: fe5218e3 bne tp,t0,80002db4 <test_21+0x4>
+80002dc8: 00100e93 li t4,1
+80002dcc: 01500193 li gp,21
+80002dd0: 09df1263 bne t5,t4,80002e54 <fail>
+
+80002dd4 <test_22>:
+80002dd4: 00000213 li tp,0
+80002dd8: 01100093 li ra,17
+80002ddc: 00000013 nop
+80002de0: 0080bf13 sltiu t5,ra,8
+80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de8: 00200293 li t0,2
+80002dec: fe5216e3 bne tp,t0,80002dd8 <test_22+0x4>
+80002df0: 00000e93 li t4,0
+80002df4: 01600193 li gp,22
+80002df8: 05df1e63 bne t5,t4,80002e54 <fail>
+
+80002dfc <test_23>:
+80002dfc: 00000213 li tp,0
+80002e00: 00c00093 li ra,12
+80002e04: 00000013 nop
+80002e08: 00000013 nop
+80002e0c: 00e0bf13 sltiu t5,ra,14
+80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e14: 00200293 li t0,2
+80002e18: fe5214e3 bne tp,t0,80002e00 <test_23+0x4>
+80002e1c: 00100e93 li t4,1
+80002e20: 01700193 li gp,23
+80002e24: 03df1863 bne t5,t4,80002e54 <fail>
+
+80002e28 <test_24>:
+80002e28: fff03093 sltiu ra,zero,-1
+80002e2c: 00100e93 li t4,1
+80002e30: 01800193 li gp,24
+80002e34: 03d09063 bne ra,t4,80002e54 <fail>
+
+80002e38 <test_25>:
+80002e38: 00ff00b7 lui ra,0xff0
+80002e3c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002e40: fff0b013 sltiu zero,ra,-1
+80002e44: 00000e93 li t4,0
+80002e48: 01900193 li gp,25
+80002e4c: 01d01463 bne zero,t4,80002e54 <fail>
+80002e50: 00301a63 bne zero,gp,80002e64 <pass>
+
+80002e54 <fail>:
+80002e54: 00119513 slli a0,gp,0x1
+80002e58: 00050063 beqz a0,80002e58 <fail+0x4>
+80002e5c: 00156513 ori a0,a0,1
+80002e60: 00000073 ecall
+
+80002e64 <pass>:
+80002e64: 00100513 li a0,1
+80002e68: 00000073 ecall
+80002e6c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-sltiu.elf b/test/riscv-tests/rv32ui-v-sltiu.elf
new file mode 100644
index 0000000..7b2d656
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sltiu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sltu.dump b/test/riscv-tests/rv32ui-v-sltu.dump
new file mode 100644
index 0000000..38f0bdf
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sltu.dump
@@ -0,0 +1,1288 @@
+
+rv32ui-v-sltu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1858593 addi a1,a1,-1000 # 80003150 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc458593 addi a1,a1,-1084 # 80003168 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af858593 addi a1,a1,-1288 # 80003108 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae858593 addi a1,a1,-1304 # 80003230 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a5058593 addi a1,a1,-1456 # 8000320c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94c60613 addi a2,a2,-1716 # 8000325c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85c60613 addi a2,a2,-1956 # 800031d8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 00d00793 li a5,13
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 016d57b7 lui a5,0x16d5
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 09878793 addi a5,a5,152 # 16d5098 <_start-0x7e92af68>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 0020bf33 sltu t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 0020bf33 sltu t5,ra,sp
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 49df1e63 bne t5,t4,800030a8 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 0020bf33 sltu t5,ra,sp
+80002c1c: 00100e93 li t4,1
+80002c20: 00400193 li gp,4
+80002c24: 49df1263 bne t5,t4,800030a8 <fail>
+
+80002c28 <test_5>:
+80002c28: 00700093 li ra,7
+80002c2c: 00300113 li sp,3
+80002c30: 0020bf33 sltu t5,ra,sp
+80002c34: 00000e93 li t4,0
+80002c38: 00500193 li gp,5
+80002c3c: 47df1663 bne t5,t4,800030a8 <fail>
+
+80002c40 <test_6>:
+80002c40: 00000093 li ra,0
+80002c44: ffff8137 lui sp,0xffff8
+80002c48: 0020bf33 sltu t5,ra,sp
+80002c4c: 00100e93 li t4,1
+80002c50: 00600193 li gp,6
+80002c54: 45df1a63 bne t5,t4,800030a8 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: 00000113 li sp,0
+80002c60: 0020bf33 sltu t5,ra,sp
+80002c64: 00000e93 li t4,0
+80002c68: 00700193 li gp,7
+80002c6c: 43df1e63 bne t5,t4,800030a8 <fail>
+
+80002c70 <test_8>:
+80002c70: 800000b7 lui ra,0x80000
+80002c74: ffff8137 lui sp,0xffff8
+80002c78: 0020bf33 sltu t5,ra,sp
+80002c7c: 00100e93 li t4,1
+80002c80: 00800193 li gp,8
+80002c84: 43df1263 bne t5,t4,800030a8 <fail>
+
+80002c88 <test_9>:
+80002c88: 00000093 li ra,0
+80002c8c: 00008137 lui sp,0x8
+80002c90: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002c94: 0020bf33 sltu t5,ra,sp
+80002c98: 00100e93 li t4,1
+80002c9c: 00900193 li gp,9
+80002ca0: 41df1463 bne t5,t4,800030a8 <fail>
+
+80002ca4 <test_10>:
+80002ca4: 800000b7 lui ra,0x80000
+80002ca8: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cac: 00000113 li sp,0
+80002cb0: 0020bf33 sltu t5,ra,sp
+80002cb4: 00000e93 li t4,0
+80002cb8: 00a00193 li gp,10
+80002cbc: 3fdf1663 bne t5,t4,800030a8 <fail>
+
+80002cc0 <test_11>:
+80002cc0: 800000b7 lui ra,0x80000
+80002cc4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cc8: 00008137 lui sp,0x8
+80002ccc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cd0: 0020bf33 sltu t5,ra,sp
+80002cd4: 00000e93 li t4,0
+80002cd8: 00b00193 li gp,11
+80002cdc: 3ddf1663 bne t5,t4,800030a8 <fail>
+
+80002ce0 <test_12>:
+80002ce0: 800000b7 lui ra,0x80000
+80002ce4: 00008137 lui sp,0x8
+80002ce8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cec: 0020bf33 sltu t5,ra,sp
+80002cf0: 00000e93 li t4,0
+80002cf4: 00c00193 li gp,12
+80002cf8: 3bdf1863 bne t5,t4,800030a8 <fail>
+
+80002cfc <test_13>:
+80002cfc: 800000b7 lui ra,0x80000
+80002d00: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002d04: ffff8137 lui sp,0xffff8
+80002d08: 0020bf33 sltu t5,ra,sp
+80002d0c: 00100e93 li t4,1
+80002d10: 00d00193 li gp,13
+80002d14: 39df1a63 bne t5,t4,800030a8 <fail>
+
+80002d18 <test_14>:
+80002d18: 00000093 li ra,0
+80002d1c: fff00113 li sp,-1
+80002d20: 0020bf33 sltu t5,ra,sp
+80002d24: 00100e93 li t4,1
+80002d28: 00e00193 li gp,14
+80002d2c: 37df1e63 bne t5,t4,800030a8 <fail>
+
+80002d30 <test_15>:
+80002d30: fff00093 li ra,-1
+80002d34: 00100113 li sp,1
+80002d38: 0020bf33 sltu t5,ra,sp
+80002d3c: 00000e93 li t4,0
+80002d40: 00f00193 li gp,15
+80002d44: 37df1263 bne t5,t4,800030a8 <fail>
+
+80002d48 <test_16>:
+80002d48: fff00093 li ra,-1
+80002d4c: fff00113 li sp,-1
+80002d50: 0020bf33 sltu t5,ra,sp
+80002d54: 00000e93 li t4,0
+80002d58: 01000193 li gp,16
+80002d5c: 35df1663 bne t5,t4,800030a8 <fail>
+
+80002d60 <test_17>:
+80002d60: 00e00093 li ra,14
+80002d64: 00d00113 li sp,13
+80002d68: 0020b0b3 sltu ra,ra,sp
+80002d6c: 00000e93 li t4,0
+80002d70: 01100193 li gp,17
+80002d74: 33d09a63 bne ra,t4,800030a8 <fail>
+
+80002d78 <test_18>:
+80002d78: 00b00093 li ra,11
+80002d7c: 00d00113 li sp,13
+80002d80: 0020b133 sltu sp,ra,sp
+80002d84: 00100e93 li t4,1
+80002d88: 01200193 li gp,18
+80002d8c: 31d11e63 bne sp,t4,800030a8 <fail>
+
+80002d90 <test_19>:
+80002d90: 00d00093 li ra,13
+80002d94: 0010b0b3 sltu ra,ra,ra
+80002d98: 00000e93 li t4,0
+80002d9c: 01300193 li gp,19
+80002da0: 31d09463 bne ra,t4,800030a8 <fail>
+
+80002da4 <test_20>:
+80002da4: 00000213 li tp,0
+80002da8: 00b00093 li ra,11
+80002dac: 00d00113 li sp,13
+80002db0: 0020bf33 sltu t5,ra,sp
+80002db4: 000f0313 mv t1,t5
+80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dbc: 00200293 li t0,2
+80002dc0: fe5214e3 bne tp,t0,80002da8 <test_20+0x4>
+80002dc4: 00100e93 li t4,1
+80002dc8: 01400193 li gp,20
+80002dcc: 2dd31e63 bne t1,t4,800030a8 <fail>
+
+80002dd0 <test_21>:
+80002dd0: 00000213 li tp,0
+80002dd4: 00e00093 li ra,14
+80002dd8: 00d00113 li sp,13
+80002ddc: 0020bf33 sltu t5,ra,sp
+80002de0: 00000013 nop
+80002de4: 000f0313 mv t1,t5
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5212e3 bne tp,t0,80002dd4 <test_21+0x4>
+80002df4: 00000e93 li t4,0
+80002df8: 01500193 li gp,21
+80002dfc: 2bd31663 bne t1,t4,800030a8 <fail>
+
+80002e00 <test_22>:
+80002e00: 00000213 li tp,0
+80002e04: 00c00093 li ra,12
+80002e08: 00d00113 li sp,13
+80002e0c: 0020bf33 sltu t5,ra,sp
+80002e10: 00000013 nop
+80002e14: 00000013 nop
+80002e18: 000f0313 mv t1,t5
+80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e20: 00200293 li t0,2
+80002e24: fe5210e3 bne tp,t0,80002e04 <test_22+0x4>
+80002e28: 00100e93 li t4,1
+80002e2c: 01600193 li gp,22
+80002e30: 27d31c63 bne t1,t4,800030a8 <fail>
+
+80002e34 <test_23>:
+80002e34: 00000213 li tp,0
+80002e38: 00e00093 li ra,14
+80002e3c: 00d00113 li sp,13
+80002e40: 0020bf33 sltu t5,ra,sp
+80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e48: 00200293 li t0,2
+80002e4c: fe5216e3 bne tp,t0,80002e38 <test_23+0x4>
+80002e50: 00000e93 li t4,0
+80002e54: 01700193 li gp,23
+80002e58: 25df1863 bne t5,t4,800030a8 <fail>
+
+80002e5c <test_24>:
+80002e5c: 00000213 li tp,0
+80002e60: 00b00093 li ra,11
+80002e64: 00d00113 li sp,13
+80002e68: 00000013 nop
+80002e6c: 0020bf33 sltu t5,ra,sp
+80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e74: 00200293 li t0,2
+80002e78: fe5214e3 bne tp,t0,80002e60 <test_24+0x4>
+80002e7c: 00100e93 li t4,1
+80002e80: 01800193 li gp,24
+80002e84: 23df1263 bne t5,t4,800030a8 <fail>
+
+80002e88 <test_25>:
+80002e88: 00000213 li tp,0
+80002e8c: 00f00093 li ra,15
+80002e90: 00d00113 li sp,13
+80002e94: 00000013 nop
+80002e98: 00000013 nop
+80002e9c: 0020bf33 sltu t5,ra,sp
+80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea4: 00200293 li t0,2
+80002ea8: fe5212e3 bne tp,t0,80002e8c <test_25+0x4>
+80002eac: 00000e93 li t4,0
+80002eb0: 01900193 li gp,25
+80002eb4: 1fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002eb8 <test_26>:
+80002eb8: 00000213 li tp,0
+80002ebc: 00a00093 li ra,10
+80002ec0: 00000013 nop
+80002ec4: 00d00113 li sp,13
+80002ec8: 0020bf33 sltu t5,ra,sp
+80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ed0: 00200293 li t0,2
+80002ed4: fe5214e3 bne tp,t0,80002ebc <test_26+0x4>
+80002ed8: 00100e93 li t4,1
+80002edc: 01a00193 li gp,26
+80002ee0: 1ddf1463 bne t5,t4,800030a8 <fail>
+
+80002ee4 <test_27>:
+80002ee4: 00000213 li tp,0
+80002ee8: 01000093 li ra,16
+80002eec: 00000013 nop
+80002ef0: 00d00113 li sp,13
+80002ef4: 00000013 nop
+80002ef8: 0020bf33 sltu t5,ra,sp
+80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f00: 00200293 li t0,2
+80002f04: fe5212e3 bne tp,t0,80002ee8 <test_27+0x4>
+80002f08: 00000e93 li t4,0
+80002f0c: 01b00193 li gp,27
+80002f10: 19df1c63 bne t5,t4,800030a8 <fail>
+
+80002f14 <test_28>:
+80002f14: 00000213 li tp,0
+80002f18: 00900093 li ra,9
+80002f1c: 00000013 nop
+80002f20: 00000013 nop
+80002f24: 00d00113 li sp,13
+80002f28: 0020bf33 sltu t5,ra,sp
+80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f30: 00200293 li t0,2
+80002f34: fe5212e3 bne tp,t0,80002f18 <test_28+0x4>
+80002f38: 00100e93 li t4,1
+80002f3c: 01c00193 li gp,28
+80002f40: 17df1463 bne t5,t4,800030a8 <fail>
+
+80002f44 <test_29>:
+80002f44: 00000213 li tp,0
+80002f48: 00d00113 li sp,13
+80002f4c: 01100093 li ra,17
+80002f50: 0020bf33 sltu t5,ra,sp
+80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f58: 00200293 li t0,2
+80002f5c: fe5216e3 bne tp,t0,80002f48 <test_29+0x4>
+80002f60: 00000e93 li t4,0
+80002f64: 01d00193 li gp,29
+80002f68: 15df1063 bne t5,t4,800030a8 <fail>
+
+80002f6c <test_30>:
+80002f6c: 00000213 li tp,0
+80002f70: 00d00113 li sp,13
+80002f74: 00800093 li ra,8
+80002f78: 00000013 nop
+80002f7c: 0020bf33 sltu t5,ra,sp
+80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f84: 00200293 li t0,2
+80002f88: fe5214e3 bne tp,t0,80002f70 <test_30+0x4>
+80002f8c: 00100e93 li t4,1
+80002f90: 01e00193 li gp,30
+80002f94: 11df1a63 bne t5,t4,800030a8 <fail>
+
+80002f98 <test_31>:
+80002f98: 00000213 li tp,0
+80002f9c: 00d00113 li sp,13
+80002fa0: 01200093 li ra,18
+80002fa4: 00000013 nop
+80002fa8: 00000013 nop
+80002fac: 0020bf33 sltu t5,ra,sp
+80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fb4: 00200293 li t0,2
+80002fb8: fe5212e3 bne tp,t0,80002f9c <test_31+0x4>
+80002fbc: 00000e93 li t4,0
+80002fc0: 01f00193 li gp,31
+80002fc4: 0fdf1263 bne t5,t4,800030a8 <fail>
+
+80002fc8 <test_32>:
+80002fc8: 00000213 li tp,0
+80002fcc: 00d00113 li sp,13
+80002fd0: 00000013 nop
+80002fd4: 00700093 li ra,7
+80002fd8: 0020bf33 sltu t5,ra,sp
+80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe0: 00200293 li t0,2
+80002fe4: fe5214e3 bne tp,t0,80002fcc <test_32+0x4>
+80002fe8: 00100e93 li t4,1
+80002fec: 02000193 li gp,32
+80002ff0: 0bdf1c63 bne t5,t4,800030a8 <fail>
+
+80002ff4 <test_33>:
+80002ff4: 00000213 li tp,0
+80002ff8: 00d00113 li sp,13
+80002ffc: 00000013 nop
+80003000: 01300093 li ra,19
+80003004: 00000013 nop
+80003008: 0020bf33 sltu t5,ra,sp
+8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003010: 00200293 li t0,2
+80003014: fe5212e3 bne tp,t0,80002ff8 <test_33+0x4>
+80003018: 00000e93 li t4,0
+8000301c: 02100193 li gp,33
+80003020: 09df1463 bne t5,t4,800030a8 <fail>
+
+80003024 <test_34>:
+80003024: 00000213 li tp,0
+80003028: 00d00113 li sp,13
+8000302c: 00000013 nop
+80003030: 00000013 nop
+80003034: 00600093 li ra,6
+80003038: 0020bf33 sltu t5,ra,sp
+8000303c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003040: 00200293 li t0,2
+80003044: fe5212e3 bne tp,t0,80003028 <test_34+0x4>
+80003048: 00100e93 li t4,1
+8000304c: 02200193 li gp,34
+80003050: 05df1c63 bne t5,t4,800030a8 <fail>
+
+80003054 <test_35>:
+80003054: fff00093 li ra,-1
+80003058: 00103133 snez sp,ra
+8000305c: 00100e93 li t4,1
+80003060: 02300193 li gp,35
+80003064: 05d11263 bne sp,t4,800030a8 <fail>
+
+80003068 <test_36>:
+80003068: fff00093 li ra,-1
+8000306c: 0000b133 sltu sp,ra,zero
+80003070: 00000e93 li t4,0
+80003074: 02400193 li gp,36
+80003078: 03d11863 bne sp,t4,800030a8 <fail>
+
+8000307c <test_37>:
+8000307c: 000030b3 snez ra,zero
+80003080: 00000e93 li t4,0
+80003084: 02500193 li gp,37
+80003088: 03d09063 bne ra,t4,800030a8 <fail>
+
+8000308c <test_38>:
+8000308c: 01000093 li ra,16
+80003090: 01e00113 li sp,30
+80003094: 0020b033 sltu zero,ra,sp
+80003098: 00000e93 li t4,0
+8000309c: 02600193 li gp,38
+800030a0: 01d01463 bne zero,t4,800030a8 <fail>
+800030a4: 00301a63 bne zero,gp,800030b8 <pass>
+
+800030a8 <fail>:
+800030a8: 00119513 slli a0,gp,0x1
+800030ac: 00050063 beqz a0,800030ac <fail+0x4>
+800030b0: 00156513 ori a0,a0,1
+800030b4: 00000073 ecall
+
+800030b8 <pass>:
+800030b8: 00100513 li a0,1
+800030bc: 00000073 ecall
+800030c0: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-sltu.elf b/test/riscv-tests/rv32ui-v-sltu.elf
new file mode 100644
index 0000000..4b3cc3a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sra.dump b/test/riscv-tests/rv32ui-v-sra.dump
new file mode 100644
index 0000000..617e0e1
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sra.dump
@@ -0,0 +1,1351 @@
+
+rv32ui-v-sra: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: cd058593 addi a1,a1,-816 # 80003198 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: cec58593 addi a1,a1,-788 # 80003224 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: c9858593 addi a1,a1,-872 # 8000323c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: bcc58593 addi a1,a1,-1076 # 800031dc <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: bbc58593 addi a1,a1,-1092 # 80003304 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: b2458593 addi a1,a1,-1244 # 800032e0 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: a2060613 addi a2,a2,-1504 # 80003330 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 93060613 addi a2,a2,-1744 # 800032ac <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00001617 auipc a2,0x1
+800029cc: 8b060613 addi a2,a2,-1872 # 80003278 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 02700793 li a5,39
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 001567b7 lui a5,0x156
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 5b478793 addi a5,a5,1460 # 1565b4 <_start-0x7fea9a4c>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 800000b7 lui ra,0x80000
+80002be4: 00000113 li sp,0
+80002be8: 4020df33 sra t5,ra,sp
+80002bec: 80000eb7 lui t4,0x80000
+80002bf0: 00200193 li gp,2
+80002bf4: 59df1463 bne t5,t4,8000317c <fail>
+
+80002bf8 <test_3>:
+80002bf8: 800000b7 lui ra,0x80000
+80002bfc: 00100113 li sp,1
+80002c00: 4020df33 sra t5,ra,sp
+80002c04: c0000eb7 lui t4,0xc0000
+80002c08: 00300193 li gp,3
+80002c0c: 57df1863 bne t5,t4,8000317c <fail>
+
+80002c10 <test_4>:
+80002c10: 800000b7 lui ra,0x80000
+80002c14: 00700113 li sp,7
+80002c18: 4020df33 sra t5,ra,sp
+80002c1c: ff000eb7 lui t4,0xff000
+80002c20: 00400193 li gp,4
+80002c24: 55df1c63 bne t5,t4,8000317c <fail>
+
+80002c28 <test_5>:
+80002c28: 800000b7 lui ra,0x80000
+80002c2c: 00e00113 li sp,14
+80002c30: 4020df33 sra t5,ra,sp
+80002c34: fffe0eb7 lui t4,0xfffe0
+80002c38: 00500193 li gp,5
+80002c3c: 55df1063 bne t5,t4,8000317c <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002c48: 01f00113 li sp,31
+80002c4c: 4020df33 sra t5,ra,sp
+80002c50: fff00e93 li t4,-1
+80002c54: 00600193 li gp,6
+80002c58: 53df1263 bne t5,t4,8000317c <fail>
+
+80002c5c <test_7>:
+80002c5c: 800000b7 lui ra,0x80000
+80002c60: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c64: 00000113 li sp,0
+80002c68: 4020df33 sra t5,ra,sp
+80002c6c: 80000eb7 lui t4,0x80000
+80002c70: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002c74: 00700193 li gp,7
+80002c78: 51df1263 bne t5,t4,8000317c <fail>
+
+80002c7c <test_8>:
+80002c7c: 800000b7 lui ra,0x80000
+80002c80: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c84: 00100113 li sp,1
+80002c88: 4020df33 sra t5,ra,sp
+80002c8c: 40000eb7 lui t4,0x40000
+80002c90: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001>
+80002c94: 00800193 li gp,8
+80002c98: 4fdf1263 bne t5,t4,8000317c <fail>
+
+80002c9c <test_9>:
+80002c9c: 800000b7 lui ra,0x80000
+80002ca0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ca4: 00700113 li sp,7
+80002ca8: 4020df33 sra t5,ra,sp
+80002cac: 01000eb7 lui t4,0x1000
+80002cb0: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001>
+80002cb4: 00900193 li gp,9
+80002cb8: 4ddf1263 bne t5,t4,8000317c <fail>
+
+80002cbc <test_10>:
+80002cbc: 800000b7 lui ra,0x80000
+80002cc0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cc4: 00e00113 li sp,14
+80002cc8: 4020df33 sra t5,ra,sp
+80002ccc: 00020eb7 lui t4,0x20
+80002cd0: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001>
+80002cd4: 00a00193 li gp,10
+80002cd8: 4bdf1263 bne t5,t4,8000317c <fail>
+
+80002cdc <test_11>:
+80002cdc: 800000b7 lui ra,0x80000
+80002ce0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ce4: 01f00113 li sp,31
+80002ce8: 4020df33 sra t5,ra,sp
+80002cec: 00000e93 li t4,0
+80002cf0: 00b00193 li gp,11
+80002cf4: 49df1463 bne t5,t4,8000317c <fail>
+
+80002cf8 <test_12>:
+80002cf8: 818180b7 lui ra,0x81818
+80002cfc: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d00: 00000113 li sp,0
+80002d04: 4020df33 sra t5,ra,sp
+80002d08: 81818eb7 lui t4,0x81818
+80002d0c: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1811d89>
+80002d10: 00c00193 li gp,12
+80002d14: 47df1463 bne t5,t4,8000317c <fail>
+
+80002d18 <test_13>:
+80002d18: 818180b7 lui ra,0x81818
+80002d1c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d20: 00100113 li sp,1
+80002d24: 4020df33 sra t5,ra,sp
+80002d28: c0c0ceb7 lui t4,0xc0c0c
+80002d2c: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c05cc8>
+80002d30: 00d00193 li gp,13
+80002d34: 45df1463 bne t5,t4,8000317c <fail>
+
+80002d38 <test_14>:
+80002d38: 818180b7 lui ra,0x81818
+80002d3c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d40: 00700113 li sp,7
+80002d44: 4020df33 sra t5,ra,sp
+80002d48: ff030eb7 lui t4,0xff030
+80002d4c: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f029f0b>
+80002d50: 00e00193 li gp,14
+80002d54: 43df1463 bne t5,t4,8000317c <fail>
+
+80002d58 <test_15>:
+80002d58: 818180b7 lui ra,0x81818
+80002d5c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d60: 00e00113 li sp,14
+80002d64: 4020df33 sra t5,ra,sp
+80002d68: fffe0eb7 lui t4,0xfffe0
+80002d6c: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffda20e>
+80002d70: 00f00193 li gp,15
+80002d74: 41df1463 bne t5,t4,8000317c <fail>
+
+80002d78 <test_16>:
+80002d78: 818180b7 lui ra,0x81818
+80002d7c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d80: 01f00113 li sp,31
+80002d84: 4020df33 sra t5,ra,sp
+80002d88: fff00e93 li t4,-1
+80002d8c: 01000193 li gp,16
+80002d90: 3fdf1663 bne t5,t4,8000317c <fail>
+
+80002d94 <test_17>:
+80002d94: 818180b7 lui ra,0x81818
+80002d98: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d9c: fc000113 li sp,-64
+80002da0: 4020df33 sra t5,ra,sp
+80002da4: 81818eb7 lui t4,0x81818
+80002da8: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1811d89>
+80002dac: 01100193 li gp,17
+80002db0: 3ddf1663 bne t5,t4,8000317c <fail>
+
+80002db4 <test_18>:
+80002db4: 818180b7 lui ra,0x81818
+80002db8: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002dbc: fc100113 li sp,-63
+80002dc0: 4020df33 sra t5,ra,sp
+80002dc4: c0c0ceb7 lui t4,0xc0c0c
+80002dc8: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c05cc8>
+80002dcc: 01200193 li gp,18
+80002dd0: 3bdf1663 bne t5,t4,8000317c <fail>
+
+80002dd4 <test_19>:
+80002dd4: 818180b7 lui ra,0x81818
+80002dd8: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002ddc: fc700113 li sp,-57
+80002de0: 4020df33 sra t5,ra,sp
+80002de4: ff030eb7 lui t4,0xff030
+80002de8: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f029f0b>
+80002dec: 01300193 li gp,19
+80002df0: 39df1663 bne t5,t4,8000317c <fail>
+
+80002df4 <test_20>:
+80002df4: 818180b7 lui ra,0x81818
+80002df8: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002dfc: fce00113 li sp,-50
+80002e00: 4020df33 sra t5,ra,sp
+80002e04: fffe0eb7 lui t4,0xfffe0
+80002e08: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffda20e>
+80002e0c: 01400193 li gp,20
+80002e10: 37df1663 bne t5,t4,8000317c <fail>
+
+80002e14 <test_21>:
+80002e14: 818180b7 lui ra,0x81818
+80002e18: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002e1c: fff00113 li sp,-1
+80002e20: 4020df33 sra t5,ra,sp
+80002e24: fff00e93 li t4,-1
+80002e28: 01500193 li gp,21
+80002e2c: 35df1863 bne t5,t4,8000317c <fail>
+
+80002e30 <test_22>:
+80002e30: 800000b7 lui ra,0x80000
+80002e34: 00700113 li sp,7
+80002e38: 4020d0b3 sra ra,ra,sp
+80002e3c: ff000eb7 lui t4,0xff000
+80002e40: 01600193 li gp,22
+80002e44: 33d09c63 bne ra,t4,8000317c <fail>
+
+80002e48 <test_23>:
+80002e48: 800000b7 lui ra,0x80000
+80002e4c: 00e00113 li sp,14
+80002e50: 4020d133 sra sp,ra,sp
+80002e54: fffe0eb7 lui t4,0xfffe0
+80002e58: 01700193 li gp,23
+80002e5c: 33d11063 bne sp,t4,8000317c <fail>
+
+80002e60 <test_24>:
+80002e60: 00700093 li ra,7
+80002e64: 4010d0b3 sra ra,ra,ra
+80002e68: 00000e93 li t4,0
+80002e6c: 01800193 li gp,24
+80002e70: 31d09663 bne ra,t4,8000317c <fail>
+
+80002e74 <test_25>:
+80002e74: 00000213 li tp,0
+80002e78: 800000b7 lui ra,0x80000
+80002e7c: 00700113 li sp,7
+80002e80: 4020df33 sra t5,ra,sp
+80002e84: 000f0313 mv t1,t5
+80002e88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e8c: 00200293 li t0,2
+80002e90: fe5214e3 bne tp,t0,80002e78 <test_25+0x4>
+80002e94: ff000eb7 lui t4,0xff000
+80002e98: 01900193 li gp,25
+80002e9c: 2fd31063 bne t1,t4,8000317c <fail>
+
+80002ea0 <test_26>:
+80002ea0: 00000213 li tp,0
+80002ea4: 800000b7 lui ra,0x80000
+80002ea8: 00e00113 li sp,14
+80002eac: 4020df33 sra t5,ra,sp
+80002eb0: 00000013 nop
+80002eb4: 000f0313 mv t1,t5
+80002eb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ebc: 00200293 li t0,2
+80002ec0: fe5212e3 bne tp,t0,80002ea4 <test_26+0x4>
+80002ec4: fffe0eb7 lui t4,0xfffe0
+80002ec8: 01a00193 li gp,26
+80002ecc: 2bd31863 bne t1,t4,8000317c <fail>
+
+80002ed0 <test_27>:
+80002ed0: 00000213 li tp,0
+80002ed4: 800000b7 lui ra,0x80000
+80002ed8: 01f00113 li sp,31
+80002edc: 4020df33 sra t5,ra,sp
+80002ee0: 00000013 nop
+80002ee4: 00000013 nop
+80002ee8: 000f0313 mv t1,t5
+80002eec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ef0: 00200293 li t0,2
+80002ef4: fe5210e3 bne tp,t0,80002ed4 <test_27+0x4>
+80002ef8: fff00e93 li t4,-1
+80002efc: 01b00193 li gp,27
+80002f00: 27d31e63 bne t1,t4,8000317c <fail>
+
+80002f04 <test_28>:
+80002f04: 00000213 li tp,0
+80002f08: 800000b7 lui ra,0x80000
+80002f0c: 00700113 li sp,7
+80002f10: 4020df33 sra t5,ra,sp
+80002f14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f18: 00200293 li t0,2
+80002f1c: fe5216e3 bne tp,t0,80002f08 <test_28+0x4>
+80002f20: ff000eb7 lui t4,0xff000
+80002f24: 01c00193 li gp,28
+80002f28: 25df1a63 bne t5,t4,8000317c <fail>
+
+80002f2c <test_29>:
+80002f2c: 00000213 li tp,0
+80002f30: 800000b7 lui ra,0x80000
+80002f34: 00e00113 li sp,14
+80002f38: 00000013 nop
+80002f3c: 4020df33 sra t5,ra,sp
+80002f40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f44: 00200293 li t0,2
+80002f48: fe5214e3 bne tp,t0,80002f30 <test_29+0x4>
+80002f4c: fffe0eb7 lui t4,0xfffe0
+80002f50: 01d00193 li gp,29
+80002f54: 23df1463 bne t5,t4,8000317c <fail>
+
+80002f58 <test_30>:
+80002f58: 00000213 li tp,0
+80002f5c: 800000b7 lui ra,0x80000
+80002f60: 01f00113 li sp,31
+80002f64: 00000013 nop
+80002f68: 00000013 nop
+80002f6c: 4020df33 sra t5,ra,sp
+80002f70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f74: 00200293 li t0,2
+80002f78: fe5212e3 bne tp,t0,80002f5c <test_30+0x4>
+80002f7c: fff00e93 li t4,-1
+80002f80: 01e00193 li gp,30
+80002f84: 1fdf1c63 bne t5,t4,8000317c <fail>
+
+80002f88 <test_31>:
+80002f88: 00000213 li tp,0
+80002f8c: 800000b7 lui ra,0x80000
+80002f90: 00000013 nop
+80002f94: 00700113 li sp,7
+80002f98: 4020df33 sra t5,ra,sp
+80002f9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa0: 00200293 li t0,2
+80002fa4: fe5214e3 bne tp,t0,80002f8c <test_31+0x4>
+80002fa8: ff000eb7 lui t4,0xff000
+80002fac: 01f00193 li gp,31
+80002fb0: 1ddf1663 bne t5,t4,8000317c <fail>
+
+80002fb4 <test_32>:
+80002fb4: 00000213 li tp,0
+80002fb8: 800000b7 lui ra,0x80000
+80002fbc: 00000013 nop
+80002fc0: 00e00113 li sp,14
+80002fc4: 00000013 nop
+80002fc8: 4020df33 sra t5,ra,sp
+80002fcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fd0: 00200293 li t0,2
+80002fd4: fe5212e3 bne tp,t0,80002fb8 <test_32+0x4>
+80002fd8: fffe0eb7 lui t4,0xfffe0
+80002fdc: 02000193 li gp,32
+80002fe0: 19df1e63 bne t5,t4,8000317c <fail>
+
+80002fe4 <test_33>:
+80002fe4: 00000213 li tp,0
+80002fe8: 800000b7 lui ra,0x80000
+80002fec: 00000013 nop
+80002ff0: 00000013 nop
+80002ff4: 01f00113 li sp,31
+80002ff8: 4020df33 sra t5,ra,sp
+80002ffc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003000: 00200293 li t0,2
+80003004: fe5212e3 bne tp,t0,80002fe8 <test_33+0x4>
+80003008: fff00e93 li t4,-1
+8000300c: 02100193 li gp,33
+80003010: 17df1663 bne t5,t4,8000317c <fail>
+
+80003014 <test_34>:
+80003014: 00000213 li tp,0
+80003018: 00700113 li sp,7
+8000301c: 800000b7 lui ra,0x80000
+80003020: 4020df33 sra t5,ra,sp
+80003024: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003028: 00200293 li t0,2
+8000302c: fe5216e3 bne tp,t0,80003018 <test_34+0x4>
+80003030: ff000eb7 lui t4,0xff000
+80003034: 02200193 li gp,34
+80003038: 15df1263 bne t5,t4,8000317c <fail>
+
+8000303c <test_35>:
+8000303c: 00000213 li tp,0
+80003040: 00e00113 li sp,14
+80003044: 800000b7 lui ra,0x80000
+80003048: 00000013 nop
+8000304c: 4020df33 sra t5,ra,sp
+80003050: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003054: 00200293 li t0,2
+80003058: fe5214e3 bne tp,t0,80003040 <test_35+0x4>
+8000305c: fffe0eb7 lui t4,0xfffe0
+80003060: 02300193 li gp,35
+80003064: 11df1c63 bne t5,t4,8000317c <fail>
+
+80003068 <test_36>:
+80003068: 00000213 li tp,0
+8000306c: 01f00113 li sp,31
+80003070: 800000b7 lui ra,0x80000
+80003074: 00000013 nop
+80003078: 00000013 nop
+8000307c: 4020df33 sra t5,ra,sp
+80003080: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003084: 00200293 li t0,2
+80003088: fe5212e3 bne tp,t0,8000306c <test_36+0x4>
+8000308c: fff00e93 li t4,-1
+80003090: 02400193 li gp,36
+80003094: 0fdf1463 bne t5,t4,8000317c <fail>
+
+80003098 <test_37>:
+80003098: 00000213 li tp,0
+8000309c: 00700113 li sp,7
+800030a0: 00000013 nop
+800030a4: 800000b7 lui ra,0x80000
+800030a8: 4020df33 sra t5,ra,sp
+800030ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800030b0: 00200293 li t0,2
+800030b4: fe5214e3 bne tp,t0,8000309c <test_37+0x4>
+800030b8: ff000eb7 lui t4,0xff000
+800030bc: 02500193 li gp,37
+800030c0: 0bdf1e63 bne t5,t4,8000317c <fail>
+
+800030c4 <test_38>:
+800030c4: 00000213 li tp,0
+800030c8: 00e00113 li sp,14
+800030cc: 00000013 nop
+800030d0: 800000b7 lui ra,0x80000
+800030d4: 00000013 nop
+800030d8: 4020df33 sra t5,ra,sp
+800030dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800030e0: 00200293 li t0,2
+800030e4: fe5212e3 bne tp,t0,800030c8 <test_38+0x4>
+800030e8: fffe0eb7 lui t4,0xfffe0
+800030ec: 02600193 li gp,38
+800030f0: 09df1663 bne t5,t4,8000317c <fail>
+
+800030f4 <test_39>:
+800030f4: 00000213 li tp,0
+800030f8: 01f00113 li sp,31
+800030fc: 00000013 nop
+80003100: 00000013 nop
+80003104: 800000b7 lui ra,0x80000
+80003108: 4020df33 sra t5,ra,sp
+8000310c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003110: 00200293 li t0,2
+80003114: fe5212e3 bne tp,t0,800030f8 <test_39+0x4>
+80003118: fff00e93 li t4,-1
+8000311c: 02700193 li gp,39
+80003120: 05df1e63 bne t5,t4,8000317c <fail>
+
+80003124 <test_40>:
+80003124: 00f00093 li ra,15
+80003128: 40105133 sra sp,zero,ra
+8000312c: 00000e93 li t4,0
+80003130: 02800193 li gp,40
+80003134: 05d11463 bne sp,t4,8000317c <fail>
+
+80003138 <test_41>:
+80003138: 02000093 li ra,32
+8000313c: 4000d133 sra sp,ra,zero
+80003140: 02000e93 li t4,32
+80003144: 02900193 li gp,41
+80003148: 03d11a63 bne sp,t4,8000317c <fail>
+
+8000314c <test_42>:
+8000314c: 400050b3 sra ra,zero,zero
+80003150: 00000e93 li t4,0
+80003154: 02a00193 li gp,42
+80003158: 03d09263 bne ra,t4,8000317c <fail>
+
+8000315c <test_43>:
+8000315c: 40000093 li ra,1024
+80003160: 00001137 lui sp,0x1
+80003164: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800>
+80003168: 4020d033 sra zero,ra,sp
+8000316c: 00000e93 li t4,0
+80003170: 02b00193 li gp,43
+80003174: 01d01463 bne zero,t4,8000317c <fail>
+80003178: 00301a63 bne zero,gp,8000318c <pass>
+
+8000317c <fail>:
+8000317c: 00119513 slli a0,gp,0x1
+80003180: 00050063 beqz a0,80003180 <fail+0x4>
+80003184: 00156513 ori a0,a0,1
+80003188: 00000073 ecall
+
+8000318c <pass>:
+8000318c: 00100513 li a0,1
+80003190: 00000073 ecall
+80003194: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-sra.elf b/test/riscv-tests/rv32ui-v-sra.elf
new file mode 100644
index 0000000..118f036
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sra.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-srai.dump b/test/riscv-tests/rv32ui-v-srai.dump
new file mode 100644
index 0000000..4cc1511
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-srai.dump
@@ -0,0 +1,1130 @@
+
+rv32ui-v-srai: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9ec58593 addi a1,a1,-1556 # 80002eb4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: a0858593 addi a1,a1,-1528 # 80002f40 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 9b458593 addi a1,a1,-1612 # 80002f58 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8e858593 addi a1,a1,-1816 # 80002ef8 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8d858593 addi a1,a1,-1832 # 80003020 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 84058593 addi a1,a1,-1984 # 80002ffc <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 73c60613 addi a2,a2,1852 # 8000304c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 64c60613 addi a2,a2,1612 # 80002fc8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 5cc60613 addi a2,a2,1484 # 80002f94 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01e00793 li a5,30
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0390c7b7 lui a5,0x390c
+80002b9c: 00080637 lui a2,0x80
+80002ba0: e3178793 addi a5,a5,-463 # 390be31 <_start-0x7c6f41cf>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 4000df13 srai t5,ra,0x0
+80002be8: 00000e93 li t4,0
+80002bec: 00200193 li gp,2
+80002bf0: 2bdf1463 bne t5,t4,80002e98 <fail>
+
+80002bf4 <test_3>:
+80002bf4: 800000b7 lui ra,0x80000
+80002bf8: 4010df13 srai t5,ra,0x1
+80002bfc: c0000eb7 lui t4,0xc0000
+80002c00: 00300193 li gp,3
+80002c04: 29df1a63 bne t5,t4,80002e98 <fail>
+
+80002c08 <test_4>:
+80002c08: 800000b7 lui ra,0x80000
+80002c0c: 4070df13 srai t5,ra,0x7
+80002c10: ff000eb7 lui t4,0xff000
+80002c14: 00400193 li gp,4
+80002c18: 29df1063 bne t5,t4,80002e98 <fail>
+
+80002c1c <test_5>:
+80002c1c: 800000b7 lui ra,0x80000
+80002c20: 40e0df13 srai t5,ra,0xe
+80002c24: fffe0eb7 lui t4,0xfffe0
+80002c28: 00500193 li gp,5
+80002c2c: 27df1663 bne t5,t4,80002e98 <fail>
+
+80002c30 <test_6>:
+80002c30: 800000b7 lui ra,0x80000
+80002c34: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002c38: 41f0df13 srai t5,ra,0x1f
+80002c3c: fff00e93 li t4,-1
+80002c40: 00600193 li gp,6
+80002c44: 25df1a63 bne t5,t4,80002e98 <fail>
+
+80002c48 <test_7>:
+80002c48: 800000b7 lui ra,0x80000
+80002c4c: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c50: 4000df13 srai t5,ra,0x0
+80002c54: 80000eb7 lui t4,0x80000
+80002c58: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002c5c: 00700193 li gp,7
+80002c60: 23df1c63 bne t5,t4,80002e98 <fail>
+
+80002c64 <test_8>:
+80002c64: 800000b7 lui ra,0x80000
+80002c68: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c6c: 4010df13 srai t5,ra,0x1
+80002c70: 40000eb7 lui t4,0x40000
+80002c74: fffe8e93 addi t4,t4,-1 # 3fffffff <_start-0x40000001>
+80002c78: 00800193 li gp,8
+80002c7c: 21df1e63 bne t5,t4,80002e98 <fail>
+
+80002c80 <test_9>:
+80002c80: 800000b7 lui ra,0x80000
+80002c84: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c88: 4070df13 srai t5,ra,0x7
+80002c8c: 01000eb7 lui t4,0x1000
+80002c90: fffe8e93 addi t4,t4,-1 # ffffff <_start-0x7f000001>
+80002c94: 00900193 li gp,9
+80002c98: 21df1063 bne t5,t4,80002e98 <fail>
+
+80002c9c <test_10>:
+80002c9c: 800000b7 lui ra,0x80000
+80002ca0: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002ca4: 40e0df13 srai t5,ra,0xe
+80002ca8: 00020eb7 lui t4,0x20
+80002cac: fffe8e93 addi t4,t4,-1 # 1ffff <_start-0x7ffe0001>
+80002cb0: 00a00193 li gp,10
+80002cb4: 1fdf1263 bne t5,t4,80002e98 <fail>
+
+80002cb8 <test_11>:
+80002cb8: 800000b7 lui ra,0x80000
+80002cbc: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cc0: 41f0df13 srai t5,ra,0x1f
+80002cc4: 00000e93 li t4,0
+80002cc8: 00b00193 li gp,11
+80002ccc: 1ddf1663 bne t5,t4,80002e98 <fail>
+
+80002cd0 <test_12>:
+80002cd0: 818180b7 lui ra,0x81818
+80002cd4: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002cd8: 4000df13 srai t5,ra,0x0
+80002cdc: 81818eb7 lui t4,0x81818
+80002ce0: 181e8e93 addi t4,t4,385 # 81818181 <_end+0x1811d89>
+80002ce4: 00c00193 li gp,12
+80002ce8: 1bdf1863 bne t5,t4,80002e98 <fail>
+
+80002cec <test_13>:
+80002cec: 818180b7 lui ra,0x81818
+80002cf0: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002cf4: 4010df13 srai t5,ra,0x1
+80002cf8: c0c0ceb7 lui t4,0xc0c0c
+80002cfc: 0c0e8e93 addi t4,t4,192 # c0c0c0c0 <_end+0x40c05cc8>
+80002d00: 00d00193 li gp,13
+80002d04: 19df1a63 bne t5,t4,80002e98 <fail>
+
+80002d08 <test_14>:
+80002d08: 818180b7 lui ra,0x81818
+80002d0c: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d10: 4070df13 srai t5,ra,0x7
+80002d14: ff030eb7 lui t4,0xff030
+80002d18: 303e8e93 addi t4,t4,771 # ff030303 <_end+0x7f029f0b>
+80002d1c: 00e00193 li gp,14
+80002d20: 17df1c63 bne t5,t4,80002e98 <fail>
+
+80002d24 <test_15>:
+80002d24: 818180b7 lui ra,0x81818
+80002d28: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d2c: 40e0df13 srai t5,ra,0xe
+80002d30: fffe0eb7 lui t4,0xfffe0
+80002d34: 606e8e93 addi t4,t4,1542 # fffe0606 <_end+0x7ffda20e>
+80002d38: 00f00193 li gp,15
+80002d3c: 15df1e63 bne t5,t4,80002e98 <fail>
+
+80002d40 <test_16>:
+80002d40: 818180b7 lui ra,0x81818
+80002d44: 18108093 addi ra,ra,385 # 81818181 <_end+0x1811d89>
+80002d48: 41f0df13 srai t5,ra,0x1f
+80002d4c: fff00e93 li t4,-1
+80002d50: 01000193 li gp,16
+80002d54: 15df1263 bne t5,t4,80002e98 <fail>
+
+80002d58 <test_17>:
+80002d58: 800000b7 lui ra,0x80000
+80002d5c: 4070d093 srai ra,ra,0x7
+80002d60: ff000eb7 lui t4,0xff000
+80002d64: 01100193 li gp,17
+80002d68: 13d09863 bne ra,t4,80002e98 <fail>
+
+80002d6c <test_18>:
+80002d6c: 00000213 li tp,0
+80002d70: 800000b7 lui ra,0x80000
+80002d74: 4070df13 srai t5,ra,0x7
+80002d78: 000f0313 mv t1,t5
+80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d80: 00200293 li t0,2
+80002d84: fe5216e3 bne tp,t0,80002d70 <test_18+0x4>
+80002d88: ff000eb7 lui t4,0xff000
+80002d8c: 01200193 li gp,18
+80002d90: 11d31463 bne t1,t4,80002e98 <fail>
+
+80002d94 <test_19>:
+80002d94: 00000213 li tp,0
+80002d98: 800000b7 lui ra,0x80000
+80002d9c: 40e0df13 srai t5,ra,0xe
+80002da0: 00000013 nop
+80002da4: 000f0313 mv t1,t5
+80002da8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dac: 00200293 li t0,2
+80002db0: fe5214e3 bne tp,t0,80002d98 <test_19+0x4>
+80002db4: fffe0eb7 lui t4,0xfffe0
+80002db8: 01300193 li gp,19
+80002dbc: 0dd31e63 bne t1,t4,80002e98 <fail>
+
+80002dc0 <test_20>:
+80002dc0: 00000213 li tp,0
+80002dc4: 800000b7 lui ra,0x80000
+80002dc8: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002dcc: 41f0df13 srai t5,ra,0x1f
+80002dd0: 00000013 nop
+80002dd4: 00000013 nop
+80002dd8: 000f0313 mv t1,t5
+80002ddc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de0: 00200293 li t0,2
+80002de4: fe5210e3 bne tp,t0,80002dc4 <test_20+0x4>
+80002de8: fff00e93 li t4,-1
+80002dec: 01400193 li gp,20
+80002df0: 0bd31463 bne t1,t4,80002e98 <fail>
+
+80002df4 <test_21>:
+80002df4: 00000213 li tp,0
+80002df8: 800000b7 lui ra,0x80000
+80002dfc: 4070df13 srai t5,ra,0x7
+80002e00: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e04: 00200293 li t0,2
+80002e08: fe5218e3 bne tp,t0,80002df8 <test_21+0x4>
+80002e0c: ff000eb7 lui t4,0xff000
+80002e10: 01500193 li gp,21
+80002e14: 09df1263 bne t5,t4,80002e98 <fail>
+
+80002e18 <test_22>:
+80002e18: 00000213 li tp,0
+80002e1c: 800000b7 lui ra,0x80000
+80002e20: 00000013 nop
+80002e24: 40e0df13 srai t5,ra,0xe
+80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e2c: 00200293 li t0,2
+80002e30: fe5216e3 bne tp,t0,80002e1c <test_22+0x4>
+80002e34: fffe0eb7 lui t4,0xfffe0
+80002e38: 01600193 li gp,22
+80002e3c: 05df1e63 bne t5,t4,80002e98 <fail>
+
+80002e40 <test_23>:
+80002e40: 00000213 li tp,0
+80002e44: 800000b7 lui ra,0x80000
+80002e48: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002e4c: 00000013 nop
+80002e50: 00000013 nop
+80002e54: 41f0df13 srai t5,ra,0x1f
+80002e58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e5c: 00200293 li t0,2
+80002e60: fe5212e3 bne tp,t0,80002e44 <test_23+0x4>
+80002e64: fff00e93 li t4,-1
+80002e68: 01700193 li gp,23
+80002e6c: 03df1663 bne t5,t4,80002e98 <fail>
+
+80002e70 <test_24>:
+80002e70: 40405093 srai ra,zero,0x4
+80002e74: 00000e93 li t4,0
+80002e78: 01800193 li gp,24
+80002e7c: 01d09e63 bne ra,t4,80002e98 <fail>
+
+80002e80 <test_25>:
+80002e80: 02100093 li ra,33
+80002e84: 40a0d013 srai zero,ra,0xa
+80002e88: 00000e93 li t4,0
+80002e8c: 01900193 li gp,25
+80002e90: 01d01463 bne zero,t4,80002e98 <fail>
+80002e94: 00301a63 bne zero,gp,80002ea8 <pass>
+
+80002e98 <fail>:
+80002e98: 00119513 slli a0,gp,0x1
+80002e9c: 00050063 beqz a0,80002e9c <fail+0x4>
+80002ea0: 00156513 ori a0,a0,1
+80002ea4: 00000073 ecall
+
+80002ea8 <pass>:
+80002ea8: 00100513 li a0,1
+80002eac: 00000073 ecall
+80002eb0: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-srai.elf b/test/riscv-tests/rv32ui-v-srai.elf
new file mode 100644
index 0000000..6945e6b
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-srai.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-srl.dump b/test/riscv-tests/rv32ui-v-srl.dump
new file mode 100644
index 0000000..cf41ee1
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-srl.dump
@@ -0,0 +1,1345 @@
+
+rv32ui-v-srl: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: cb858593 addi a1,a1,-840 # 80003180 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: cd458593 addi a1,a1,-812 # 8000320c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: c8058593 addi a1,a1,-896 # 80003224 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: bb458593 addi a1,a1,-1100 # 800031c4 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ba458593 addi a1,a1,-1116 # 800032ec <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: b0c58593 addi a1,a1,-1268 # 800032c8 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: a0860613 addi a2,a2,-1528 # 80003318 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 91860613 addi a2,a2,-1768 # 80003294 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00001617 auipc a2,0x1
+800029cc: 89860613 addi a2,a2,-1896 # 80003260 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01600793 li a5,22
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0fc217b7 lui a5,0xfc21
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 89278793 addi a5,a5,-1902 # fc20892 <_start-0x703df76e>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 800000b7 lui ra,0x80000
+80002be4: 00000113 li sp,0
+80002be8: 0020df33 srl t5,ra,sp
+80002bec: 80000eb7 lui t4,0x80000
+80002bf0: 00200193 li gp,2
+80002bf4: 57df1863 bne t5,t4,80003164 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 800000b7 lui ra,0x80000
+80002bfc: 00100113 li sp,1
+80002c00: 0020df33 srl t5,ra,sp
+80002c04: 40000eb7 lui t4,0x40000
+80002c08: 00300193 li gp,3
+80002c0c: 55df1c63 bne t5,t4,80003164 <fail>
+
+80002c10 <test_4>:
+80002c10: 800000b7 lui ra,0x80000
+80002c14: 00700113 li sp,7
+80002c18: 0020df33 srl t5,ra,sp
+80002c1c: 01000eb7 lui t4,0x1000
+80002c20: 00400193 li gp,4
+80002c24: 55df1063 bne t5,t4,80003164 <fail>
+
+80002c28 <test_5>:
+80002c28: 800000b7 lui ra,0x80000
+80002c2c: 00e00113 li sp,14
+80002c30: 0020df33 srl t5,ra,sp
+80002c34: 00020eb7 lui t4,0x20
+80002c38: 00500193 li gp,5
+80002c3c: 53df1463 bne t5,t4,80003164 <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002c48: 01f00113 li sp,31
+80002c4c: 0020df33 srl t5,ra,sp
+80002c50: 00100e93 li t4,1
+80002c54: 00600193 li gp,6
+80002c58: 51df1663 bne t5,t4,80003164 <fail>
+
+80002c5c <test_7>:
+80002c5c: fff00093 li ra,-1
+80002c60: 00000113 li sp,0
+80002c64: 0020df33 srl t5,ra,sp
+80002c68: fff00e93 li t4,-1
+80002c6c: 00700193 li gp,7
+80002c70: 4fdf1a63 bne t5,t4,80003164 <fail>
+
+80002c74 <test_8>:
+80002c74: fff00093 li ra,-1
+80002c78: 00100113 li sp,1
+80002c7c: 0020df33 srl t5,ra,sp
+80002c80: 80000eb7 lui t4,0x80000
+80002c84: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002c88: 00800193 li gp,8
+80002c8c: 4ddf1c63 bne t5,t4,80003164 <fail>
+
+80002c90 <test_9>:
+80002c90: fff00093 li ra,-1
+80002c94: 00700113 li sp,7
+80002c98: 0020df33 srl t5,ra,sp
+80002c9c: 02000eb7 lui t4,0x2000
+80002ca0: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001>
+80002ca4: 00900193 li gp,9
+80002ca8: 4bdf1e63 bne t5,t4,80003164 <fail>
+
+80002cac <test_10>:
+80002cac: fff00093 li ra,-1
+80002cb0: 00e00113 li sp,14
+80002cb4: 0020df33 srl t5,ra,sp
+80002cb8: 00040eb7 lui t4,0x40
+80002cbc: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001>
+80002cc0: 00a00193 li gp,10
+80002cc4: 4bdf1063 bne t5,t4,80003164 <fail>
+
+80002cc8 <test_11>:
+80002cc8: fff00093 li ra,-1
+80002ccc: 01f00113 li sp,31
+80002cd0: 0020df33 srl t5,ra,sp
+80002cd4: 00100e93 li t4,1
+80002cd8: 00b00193 li gp,11
+80002cdc: 49df1463 bne t5,t4,80003164 <fail>
+
+80002ce0 <test_12>:
+80002ce0: 212120b7 lui ra,0x21212
+80002ce4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002ce8: 00000113 li sp,0
+80002cec: 0020df33 srl t5,ra,sp
+80002cf0: 21212eb7 lui t4,0x21212
+80002cf4: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80002cf8: 00c00193 li gp,12
+80002cfc: 47df1463 bne t5,t4,80003164 <fail>
+
+80002d00 <test_13>:
+80002d00: 212120b7 lui ra,0x21212
+80002d04: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d08: 00100113 li sp,1
+80002d0c: 0020df33 srl t5,ra,sp
+80002d10: 10909eb7 lui t4,0x10909
+80002d14: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70>
+80002d18: 00d00193 li gp,13
+80002d1c: 45df1463 bne t5,t4,80003164 <fail>
+
+80002d20 <test_14>:
+80002d20: 212120b7 lui ra,0x21212
+80002d24: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d28: 00700113 li sp,7
+80002d2c: 0020df33 srl t5,ra,sp
+80002d30: 00424eb7 lui t4,0x424
+80002d34: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe>
+80002d38: 00e00193 li gp,14
+80002d3c: 43df1463 bne t5,t4,80003164 <fail>
+
+80002d40 <test_15>:
+80002d40: 212120b7 lui ra,0x21212
+80002d44: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d48: 00e00113 li sp,14
+80002d4c: 0020df33 srl t5,ra,sp
+80002d50: 00008eb7 lui t4,0x8
+80002d54: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c>
+80002d58: 00f00193 li gp,15
+80002d5c: 41df1463 bne t5,t4,80003164 <fail>
+
+80002d60 <test_16>:
+80002d60: 212120b7 lui ra,0x21212
+80002d64: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d68: 01f00113 li sp,31
+80002d6c: 0020df33 srl t5,ra,sp
+80002d70: 00000e93 li t4,0
+80002d74: 01000193 li gp,16
+80002d78: 3fdf1663 bne t5,t4,80003164 <fail>
+
+80002d7c <test_17>:
+80002d7c: 212120b7 lui ra,0x21212
+80002d80: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d84: fc000113 li sp,-64
+80002d88: 0020df33 srl t5,ra,sp
+80002d8c: 21212eb7 lui t4,0x21212
+80002d90: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80002d94: 01100193 li gp,17
+80002d98: 3ddf1663 bne t5,t4,80003164 <fail>
+
+80002d9c <test_18>:
+80002d9c: 212120b7 lui ra,0x21212
+80002da0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002da4: fc100113 li sp,-63
+80002da8: 0020df33 srl t5,ra,sp
+80002dac: 10909eb7 lui t4,0x10909
+80002db0: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70>
+80002db4: 01200193 li gp,18
+80002db8: 3bdf1663 bne t5,t4,80003164 <fail>
+
+80002dbc <test_19>:
+80002dbc: 212120b7 lui ra,0x21212
+80002dc0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002dc4: fc700113 li sp,-57
+80002dc8: 0020df33 srl t5,ra,sp
+80002dcc: 00424eb7 lui t4,0x424
+80002dd0: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe>
+80002dd4: 01300193 li gp,19
+80002dd8: 39df1663 bne t5,t4,80003164 <fail>
+
+80002ddc <test_20>:
+80002ddc: 212120b7 lui ra,0x21212
+80002de0: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002de4: fce00113 li sp,-50
+80002de8: 0020df33 srl t5,ra,sp
+80002dec: 00008eb7 lui t4,0x8
+80002df0: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c>
+80002df4: 01400193 li gp,20
+80002df8: 37df1663 bne t5,t4,80003164 <fail>
+
+80002dfc <test_21>:
+80002dfc: 212120b7 lui ra,0x21212
+80002e00: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002e04: fff00113 li sp,-1
+80002e08: 0020df33 srl t5,ra,sp
+80002e0c: 00000e93 li t4,0
+80002e10: 01500193 li gp,21
+80002e14: 35df1863 bne t5,t4,80003164 <fail>
+
+80002e18 <test_22>:
+80002e18: 800000b7 lui ra,0x80000
+80002e1c: 00700113 li sp,7
+80002e20: 0020d0b3 srl ra,ra,sp
+80002e24: 01000eb7 lui t4,0x1000
+80002e28: 01600193 li gp,22
+80002e2c: 33d09c63 bne ra,t4,80003164 <fail>
+
+80002e30 <test_23>:
+80002e30: 800000b7 lui ra,0x80000
+80002e34: 00e00113 li sp,14
+80002e38: 0020d133 srl sp,ra,sp
+80002e3c: 00020eb7 lui t4,0x20
+80002e40: 01700193 li gp,23
+80002e44: 33d11063 bne sp,t4,80003164 <fail>
+
+80002e48 <test_24>:
+80002e48: 00700093 li ra,7
+80002e4c: 0010d0b3 srl ra,ra,ra
+80002e50: 00000e93 li t4,0
+80002e54: 01800193 li gp,24
+80002e58: 31d09663 bne ra,t4,80003164 <fail>
+
+80002e5c <test_25>:
+80002e5c: 00000213 li tp,0
+80002e60: 800000b7 lui ra,0x80000
+80002e64: 00700113 li sp,7
+80002e68: 0020df33 srl t5,ra,sp
+80002e6c: 000f0313 mv t1,t5
+80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e74: 00200293 li t0,2
+80002e78: fe5214e3 bne tp,t0,80002e60 <test_25+0x4>
+80002e7c: 01000eb7 lui t4,0x1000
+80002e80: 01900193 li gp,25
+80002e84: 2fd31063 bne t1,t4,80003164 <fail>
+
+80002e88 <test_26>:
+80002e88: 00000213 li tp,0
+80002e8c: 800000b7 lui ra,0x80000
+80002e90: 00e00113 li sp,14
+80002e94: 0020df33 srl t5,ra,sp
+80002e98: 00000013 nop
+80002e9c: 000f0313 mv t1,t5
+80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea4: 00200293 li t0,2
+80002ea8: fe5212e3 bne tp,t0,80002e8c <test_26+0x4>
+80002eac: 00020eb7 lui t4,0x20
+80002eb0: 01a00193 li gp,26
+80002eb4: 2bd31863 bne t1,t4,80003164 <fail>
+
+80002eb8 <test_27>:
+80002eb8: 00000213 li tp,0
+80002ebc: 800000b7 lui ra,0x80000
+80002ec0: 01f00113 li sp,31
+80002ec4: 0020df33 srl t5,ra,sp
+80002ec8: 00000013 nop
+80002ecc: 00000013 nop
+80002ed0: 000f0313 mv t1,t5
+80002ed4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ed8: 00200293 li t0,2
+80002edc: fe5210e3 bne tp,t0,80002ebc <test_27+0x4>
+80002ee0: 00100e93 li t4,1
+80002ee4: 01b00193 li gp,27
+80002ee8: 27d31e63 bne t1,t4,80003164 <fail>
+
+80002eec <test_28>:
+80002eec: 00000213 li tp,0
+80002ef0: 800000b7 lui ra,0x80000
+80002ef4: 00700113 li sp,7
+80002ef8: 0020df33 srl t5,ra,sp
+80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f00: 00200293 li t0,2
+80002f04: fe5216e3 bne tp,t0,80002ef0 <test_28+0x4>
+80002f08: 01000eb7 lui t4,0x1000
+80002f0c: 01c00193 li gp,28
+80002f10: 25df1a63 bne t5,t4,80003164 <fail>
+
+80002f14 <test_29>:
+80002f14: 00000213 li tp,0
+80002f18: 800000b7 lui ra,0x80000
+80002f1c: 00e00113 li sp,14
+80002f20: 00000013 nop
+80002f24: 0020df33 srl t5,ra,sp
+80002f28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f2c: 00200293 li t0,2
+80002f30: fe5214e3 bne tp,t0,80002f18 <test_29+0x4>
+80002f34: 00020eb7 lui t4,0x20
+80002f38: 01d00193 li gp,29
+80002f3c: 23df1463 bne t5,t4,80003164 <fail>
+
+80002f40 <test_30>:
+80002f40: 00000213 li tp,0
+80002f44: 800000b7 lui ra,0x80000
+80002f48: 01f00113 li sp,31
+80002f4c: 00000013 nop
+80002f50: 00000013 nop
+80002f54: 0020df33 srl t5,ra,sp
+80002f58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f5c: 00200293 li t0,2
+80002f60: fe5212e3 bne tp,t0,80002f44 <test_30+0x4>
+80002f64: 00100e93 li t4,1
+80002f68: 01e00193 li gp,30
+80002f6c: 1fdf1c63 bne t5,t4,80003164 <fail>
+
+80002f70 <test_31>:
+80002f70: 00000213 li tp,0
+80002f74: 800000b7 lui ra,0x80000
+80002f78: 00000013 nop
+80002f7c: 00700113 li sp,7
+80002f80: 0020df33 srl t5,ra,sp
+80002f84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f88: 00200293 li t0,2
+80002f8c: fe5214e3 bne tp,t0,80002f74 <test_31+0x4>
+80002f90: 01000eb7 lui t4,0x1000
+80002f94: 01f00193 li gp,31
+80002f98: 1ddf1663 bne t5,t4,80003164 <fail>
+
+80002f9c <test_32>:
+80002f9c: 00000213 li tp,0
+80002fa0: 800000b7 lui ra,0x80000
+80002fa4: 00000013 nop
+80002fa8: 00e00113 li sp,14
+80002fac: 00000013 nop
+80002fb0: 0020df33 srl t5,ra,sp
+80002fb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fb8: 00200293 li t0,2
+80002fbc: fe5212e3 bne tp,t0,80002fa0 <test_32+0x4>
+80002fc0: 00020eb7 lui t4,0x20
+80002fc4: 02000193 li gp,32
+80002fc8: 19df1e63 bne t5,t4,80003164 <fail>
+
+80002fcc <test_33>:
+80002fcc: 00000213 li tp,0
+80002fd0: 800000b7 lui ra,0x80000
+80002fd4: 00000013 nop
+80002fd8: 00000013 nop
+80002fdc: 01f00113 li sp,31
+80002fe0: 0020df33 srl t5,ra,sp
+80002fe4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe8: 00200293 li t0,2
+80002fec: fe5212e3 bne tp,t0,80002fd0 <test_33+0x4>
+80002ff0: 00100e93 li t4,1
+80002ff4: 02100193 li gp,33
+80002ff8: 17df1663 bne t5,t4,80003164 <fail>
+
+80002ffc <test_34>:
+80002ffc: 00000213 li tp,0
+80003000: 00700113 li sp,7
+80003004: 800000b7 lui ra,0x80000
+80003008: 0020df33 srl t5,ra,sp
+8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003010: 00200293 li t0,2
+80003014: fe5216e3 bne tp,t0,80003000 <test_34+0x4>
+80003018: 01000eb7 lui t4,0x1000
+8000301c: 02200193 li gp,34
+80003020: 15df1263 bne t5,t4,80003164 <fail>
+
+80003024 <test_35>:
+80003024: 00000213 li tp,0
+80003028: 00e00113 li sp,14
+8000302c: 800000b7 lui ra,0x80000
+80003030: 00000013 nop
+80003034: 0020df33 srl t5,ra,sp
+80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000303c: 00200293 li t0,2
+80003040: fe5214e3 bne tp,t0,80003028 <test_35+0x4>
+80003044: 00020eb7 lui t4,0x20
+80003048: 02300193 li gp,35
+8000304c: 11df1c63 bne t5,t4,80003164 <fail>
+
+80003050 <test_36>:
+80003050: 00000213 li tp,0
+80003054: 01f00113 li sp,31
+80003058: 800000b7 lui ra,0x80000
+8000305c: 00000013 nop
+80003060: 00000013 nop
+80003064: 0020df33 srl t5,ra,sp
+80003068: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000306c: 00200293 li t0,2
+80003070: fe5212e3 bne tp,t0,80003054 <test_36+0x4>
+80003074: 00100e93 li t4,1
+80003078: 02400193 li gp,36
+8000307c: 0fdf1463 bne t5,t4,80003164 <fail>
+
+80003080 <test_37>:
+80003080: 00000213 li tp,0
+80003084: 00700113 li sp,7
+80003088: 00000013 nop
+8000308c: 800000b7 lui ra,0x80000
+80003090: 0020df33 srl t5,ra,sp
+80003094: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003098: 00200293 li t0,2
+8000309c: fe5214e3 bne tp,t0,80003084 <test_37+0x4>
+800030a0: 01000eb7 lui t4,0x1000
+800030a4: 02500193 li gp,37
+800030a8: 0bdf1e63 bne t5,t4,80003164 <fail>
+
+800030ac <test_38>:
+800030ac: 00000213 li tp,0
+800030b0: 00e00113 li sp,14
+800030b4: 00000013 nop
+800030b8: 800000b7 lui ra,0x80000
+800030bc: 00000013 nop
+800030c0: 0020df33 srl t5,ra,sp
+800030c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800030c8: 00200293 li t0,2
+800030cc: fe5212e3 bne tp,t0,800030b0 <test_38+0x4>
+800030d0: 00020eb7 lui t4,0x20
+800030d4: 02600193 li gp,38
+800030d8: 09df1663 bne t5,t4,80003164 <fail>
+
+800030dc <test_39>:
+800030dc: 00000213 li tp,0
+800030e0: 01f00113 li sp,31
+800030e4: 00000013 nop
+800030e8: 00000013 nop
+800030ec: 800000b7 lui ra,0x80000
+800030f0: 0020df33 srl t5,ra,sp
+800030f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800030f8: 00200293 li t0,2
+800030fc: fe5212e3 bne tp,t0,800030e0 <test_39+0x4>
+80003100: 00100e93 li t4,1
+80003104: 02700193 li gp,39
+80003108: 05df1e63 bne t5,t4,80003164 <fail>
+
+8000310c <test_40>:
+8000310c: 00f00093 li ra,15
+80003110: 00105133 srl sp,zero,ra
+80003114: 00000e93 li t4,0
+80003118: 02800193 li gp,40
+8000311c: 05d11463 bne sp,t4,80003164 <fail>
+
+80003120 <test_41>:
+80003120: 02000093 li ra,32
+80003124: 0000d133 srl sp,ra,zero
+80003128: 02000e93 li t4,32
+8000312c: 02900193 li gp,41
+80003130: 03d11a63 bne sp,t4,80003164 <fail>
+
+80003134 <test_42>:
+80003134: 000050b3 srl ra,zero,zero
+80003138: 00000e93 li t4,0
+8000313c: 02a00193 li gp,42
+80003140: 03d09263 bne ra,t4,80003164 <fail>
+
+80003144 <test_43>:
+80003144: 40000093 li ra,1024
+80003148: 00001137 lui sp,0x1
+8000314c: 80010113 addi sp,sp,-2048 # 800 <_start-0x7ffff800>
+80003150: 0020d033 srl zero,ra,sp
+80003154: 00000e93 li t4,0
+80003158: 02b00193 li gp,43
+8000315c: 01d01463 bne zero,t4,80003164 <fail>
+80003160: 00301a63 bne zero,gp,80003174 <pass>
+
+80003164 <fail>:
+80003164: 00119513 slli a0,gp,0x1
+80003168: 00050063 beqz a0,80003168 <fail+0x4>
+8000316c: 00156513 ori a0,a0,1
+80003170: 00000073 ecall
+
+80003174 <pass>:
+80003174: 00100513 li a0,1
+80003178: 00000073 ecall
+8000317c: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-srl.elf b/test/riscv-tests/rv32ui-v-srl.elf
new file mode 100644
index 0000000..f171582
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-srl.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-srli.dump b/test/riscv-tests/rv32ui-v-srli.dump
new file mode 100644
index 0000000..de2e7a2
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-srli.dump
@@ -0,0 +1,1124 @@
+
+rv32ui-v-srli: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 9d458593 addi a1,a1,-1580 # 80002e9c <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 9f058593 addi a1,a1,-1552 # 80002f28 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 99c58593 addi a1,a1,-1636 # 80002f40 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 8d058593 addi a1,a1,-1840 # 80002ee0 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 8c058593 addi a1,a1,-1856 # 80003008 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: 82858593 addi a1,a1,-2008 # 80002fe4 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 72460613 addi a2,a2,1828 # 80003034 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 63460613 addi a2,a2,1588 # 80002fb0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 5b460613 addi a2,a2,1460 # 80002f7c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01000793 li a5,16
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 08bac7b7 lui a5,0x8bac
+80002b9c: 00080637 lui a2,0x80
+80002ba0: e3378793 addi a5,a5,-461 # 8babe33 <_start-0x774541cd>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 800000b7 lui ra,0x80000
+80002be4: 0000df13 srli t5,ra,0x0
+80002be8: 80000eb7 lui t4,0x80000
+80002bec: 00200193 li gp,2
+80002bf0: 29df1863 bne t5,t4,80002e80 <fail>
+
+80002bf4 <test_3>:
+80002bf4: 800000b7 lui ra,0x80000
+80002bf8: 0010df13 srli t5,ra,0x1
+80002bfc: 40000eb7 lui t4,0x40000
+80002c00: 00300193 li gp,3
+80002c04: 27df1e63 bne t5,t4,80002e80 <fail>
+
+80002c08 <test_4>:
+80002c08: 800000b7 lui ra,0x80000
+80002c0c: 0070df13 srli t5,ra,0x7
+80002c10: 01000eb7 lui t4,0x1000
+80002c14: 00400193 li gp,4
+80002c18: 27df1463 bne t5,t4,80002e80 <fail>
+
+80002c1c <test_5>:
+80002c1c: 800000b7 lui ra,0x80000
+80002c20: 00e0df13 srli t5,ra,0xe
+80002c24: 00020eb7 lui t4,0x20
+80002c28: 00500193 li gp,5
+80002c2c: 25df1a63 bne t5,t4,80002e80 <fail>
+
+80002c30 <test_6>:
+80002c30: 800000b7 lui ra,0x80000
+80002c34: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002c38: 01f0df13 srli t5,ra,0x1f
+80002c3c: 00100e93 li t4,1
+80002c40: 00600193 li gp,6
+80002c44: 23df1e63 bne t5,t4,80002e80 <fail>
+
+80002c48 <test_7>:
+80002c48: fff00093 li ra,-1
+80002c4c: 0000df13 srli t5,ra,0x0
+80002c50: fff00e93 li t4,-1
+80002c54: 00700193 li gp,7
+80002c58: 23df1463 bne t5,t4,80002e80 <fail>
+
+80002c5c <test_8>:
+80002c5c: fff00093 li ra,-1
+80002c60: 0010df13 srli t5,ra,0x1
+80002c64: 80000eb7 lui t4,0x80000
+80002c68: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002c6c: 00800193 li gp,8
+80002c70: 21df1863 bne t5,t4,80002e80 <fail>
+
+80002c74 <test_9>:
+80002c74: fff00093 li ra,-1
+80002c78: 0070df13 srli t5,ra,0x7
+80002c7c: 02000eb7 lui t4,0x2000
+80002c80: fffe8e93 addi t4,t4,-1 # 1ffffff <_start-0x7e000001>
+80002c84: 00900193 li gp,9
+80002c88: 1fdf1c63 bne t5,t4,80002e80 <fail>
+
+80002c8c <test_10>:
+80002c8c: fff00093 li ra,-1
+80002c90: 00e0df13 srli t5,ra,0xe
+80002c94: 00040eb7 lui t4,0x40
+80002c98: fffe8e93 addi t4,t4,-1 # 3ffff <_start-0x7ffc0001>
+80002c9c: 00a00193 li gp,10
+80002ca0: 1fdf1063 bne t5,t4,80002e80 <fail>
+
+80002ca4 <test_11>:
+80002ca4: fff00093 li ra,-1
+80002ca8: 01f0df13 srli t5,ra,0x1f
+80002cac: 00100e93 li t4,1
+80002cb0: 00b00193 li gp,11
+80002cb4: 1ddf1663 bne t5,t4,80002e80 <fail>
+
+80002cb8 <test_12>:
+80002cb8: 212120b7 lui ra,0x21212
+80002cbc: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002cc0: 0000df13 srli t5,ra,0x0
+80002cc4: 21212eb7 lui t4,0x21212
+80002cc8: 121e8e93 addi t4,t4,289 # 21212121 <_start-0x5edededf>
+80002ccc: 00c00193 li gp,12
+80002cd0: 1bdf1863 bne t5,t4,80002e80 <fail>
+
+80002cd4 <test_13>:
+80002cd4: 212120b7 lui ra,0x21212
+80002cd8: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002cdc: 0010df13 srli t5,ra,0x1
+80002ce0: 10909eb7 lui t4,0x10909
+80002ce4: 090e8e93 addi t4,t4,144 # 10909090 <_start-0x6f6f6f70>
+80002ce8: 00d00193 li gp,13
+80002cec: 19df1a63 bne t5,t4,80002e80 <fail>
+
+80002cf0 <test_14>:
+80002cf0: 212120b7 lui ra,0x21212
+80002cf4: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002cf8: 0070df13 srli t5,ra,0x7
+80002cfc: 00424eb7 lui t4,0x424
+80002d00: 242e8e93 addi t4,t4,578 # 424242 <_start-0x7fbdbdbe>
+80002d04: 00e00193 li gp,14
+80002d08: 17df1c63 bne t5,t4,80002e80 <fail>
+
+80002d0c <test_15>:
+80002d0c: 212120b7 lui ra,0x21212
+80002d10: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d14: 00e0df13 srli t5,ra,0xe
+80002d18: 00008eb7 lui t4,0x8
+80002d1c: 484e8e93 addi t4,t4,1156 # 8484 <_start-0x7fff7b7c>
+80002d20: 00f00193 li gp,15
+80002d24: 15df1e63 bne t5,t4,80002e80 <fail>
+
+80002d28 <test_16>:
+80002d28: 212120b7 lui ra,0x21212
+80002d2c: 12108093 addi ra,ra,289 # 21212121 <_start-0x5edededf>
+80002d30: 01f0df13 srli t5,ra,0x1f
+80002d34: 00000e93 li t4,0
+80002d38: 01000193 li gp,16
+80002d3c: 15df1263 bne t5,t4,80002e80 <fail>
+
+80002d40 <test_17>:
+80002d40: 800000b7 lui ra,0x80000
+80002d44: 0070d093 srli ra,ra,0x7
+80002d48: 01000eb7 lui t4,0x1000
+80002d4c: 01100193 li gp,17
+80002d50: 13d09863 bne ra,t4,80002e80 <fail>
+
+80002d54 <test_18>:
+80002d54: 00000213 li tp,0
+80002d58: 800000b7 lui ra,0x80000
+80002d5c: 0070df13 srli t5,ra,0x7
+80002d60: 000f0313 mv t1,t5
+80002d64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d68: 00200293 li t0,2
+80002d6c: fe5216e3 bne tp,t0,80002d58 <test_18+0x4>
+80002d70: 01000eb7 lui t4,0x1000
+80002d74: 01200193 li gp,18
+80002d78: 11d31463 bne t1,t4,80002e80 <fail>
+
+80002d7c <test_19>:
+80002d7c: 00000213 li tp,0
+80002d80: 800000b7 lui ra,0x80000
+80002d84: 00e0df13 srli t5,ra,0xe
+80002d88: 00000013 nop
+80002d8c: 000f0313 mv t1,t5
+80002d90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d94: 00200293 li t0,2
+80002d98: fe5214e3 bne tp,t0,80002d80 <test_19+0x4>
+80002d9c: 00020eb7 lui t4,0x20
+80002da0: 01300193 li gp,19
+80002da4: 0dd31e63 bne t1,t4,80002e80 <fail>
+
+80002da8 <test_20>:
+80002da8: 00000213 li tp,0
+80002dac: 800000b7 lui ra,0x80000
+80002db0: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002db4: 01f0df13 srli t5,ra,0x1f
+80002db8: 00000013 nop
+80002dbc: 00000013 nop
+80002dc0: 000f0313 mv t1,t5
+80002dc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dc8: 00200293 li t0,2
+80002dcc: fe5210e3 bne tp,t0,80002dac <test_20+0x4>
+80002dd0: 00100e93 li t4,1
+80002dd4: 01400193 li gp,20
+80002dd8: 0bd31463 bne t1,t4,80002e80 <fail>
+
+80002ddc <test_21>:
+80002ddc: 00000213 li tp,0
+80002de0: 800000b7 lui ra,0x80000
+80002de4: 0070df13 srli t5,ra,0x7
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5218e3 bne tp,t0,80002de0 <test_21+0x4>
+80002df4: 01000eb7 lui t4,0x1000
+80002df8: 01500193 li gp,21
+80002dfc: 09df1263 bne t5,t4,80002e80 <fail>
+
+80002e00 <test_22>:
+80002e00: 00000213 li tp,0
+80002e04: 800000b7 lui ra,0x80000
+80002e08: 00000013 nop
+80002e0c: 00e0df13 srli t5,ra,0xe
+80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e14: 00200293 li t0,2
+80002e18: fe5216e3 bne tp,t0,80002e04 <test_22+0x4>
+80002e1c: 00020eb7 lui t4,0x20
+80002e20: 01600193 li gp,22
+80002e24: 05df1e63 bne t5,t4,80002e80 <fail>
+
+80002e28 <test_23>:
+80002e28: 00000213 li tp,0
+80002e2c: 800000b7 lui ra,0x80000
+80002e30: 00108093 addi ra,ra,1 # 80000001 <_end+0xffff9c09>
+80002e34: 00000013 nop
+80002e38: 00000013 nop
+80002e3c: 01f0df13 srli t5,ra,0x1f
+80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e44: 00200293 li t0,2
+80002e48: fe5212e3 bne tp,t0,80002e2c <test_23+0x4>
+80002e4c: 00100e93 li t4,1
+80002e50: 01700193 li gp,23
+80002e54: 03df1663 bne t5,t4,80002e80 <fail>
+
+80002e58 <test_24>:
+80002e58: 00405093 srli ra,zero,0x4
+80002e5c: 00000e93 li t4,0
+80002e60: 01800193 li gp,24
+80002e64: 01d09e63 bne ra,t4,80002e80 <fail>
+
+80002e68 <test_25>:
+80002e68: 02100093 li ra,33
+80002e6c: 00a0d013 srli zero,ra,0xa
+80002e70: 00000e93 li t4,0
+80002e74: 01900193 li gp,25
+80002e78: 01d01463 bne zero,t4,80002e80 <fail>
+80002e7c: 00301a63 bne zero,gp,80002e90 <pass>
+
+80002e80 <fail>:
+80002e80: 00119513 slli a0,gp,0x1
+80002e84: 00050063 beqz a0,80002e84 <fail+0x4>
+80002e88: 00156513 ori a0,a0,1
+80002e8c: 00000073 ecall
+
+80002e90 <pass>:
+80002e90: 00100513 li a0,1
+80002e94: 00000073 ecall
+80002e98: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-srli.elf b/test/riscv-tests/rv32ui-v-srli.elf
new file mode 100644
index 0000000..07cde59
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-srli.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sub.dump b/test/riscv-tests/rv32ui-v-sub.dump
new file mode 100644
index 0000000..4910522
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sub.dump
@@ -0,0 +1,1284 @@
+
+rv32ui-v-sub: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bf458593 addi a1,a1,-1036 # 800030bc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1058593 addi a1,a1,-1008 # 80003148 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bbc58593 addi a1,a1,-1092 # 80003160 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af058593 addi a1,a1,-1296 # 80003100 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae058593 addi a1,a1,-1312 # 80003228 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a4858593 addi a1,a1,-1464 # 80003204 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94460613 addi a2,a2,-1724 # 80003254 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85460613 addi a2,a2,-1964 # 800031d0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7d460613 addi a2,a2,2004 # 8000319c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03300793 li a5,51
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 059d47b7 lui a5,0x59d4
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 07078793 addi a5,a5,112 # 59d4070 <_start-0x7a62bf90>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 40208f33 sub t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4bdf1663 bne t5,t4,800030a0 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 40208f33 sub t5,ra,sp
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 49df1a63 bne t5,t4,800030a0 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 40208f33 sub t5,ra,sp
+80002c1c: ffc00e93 li t4,-4
+80002c20: 00400193 li gp,4
+80002c24: 47df1e63 bne t5,t4,800030a0 <fail>
+
+80002c28 <test_5>:
+80002c28: 00000093 li ra,0
+80002c2c: ffff8137 lui sp,0xffff8
+80002c30: 40208f33 sub t5,ra,sp
+80002c34: 00008eb7 lui t4,0x8
+80002c38: 00500193 li gp,5
+80002c3c: 47df1263 bne t5,t4,800030a0 <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00000113 li sp,0
+80002c48: 40208f33 sub t5,ra,sp
+80002c4c: 80000eb7 lui t4,0x80000
+80002c50: 00600193 li gp,6
+80002c54: 45df1663 bne t5,t4,800030a0 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: ffff8137 lui sp,0xffff8
+80002c60: 40208f33 sub t5,ra,sp
+80002c64: 80008eb7 lui t4,0x80008
+80002c68: 00700193 li gp,7
+80002c6c: 43df1a63 bne t5,t4,800030a0 <fail>
+
+80002c70 <test_8>:
+80002c70: 00000093 li ra,0
+80002c74: 00008137 lui sp,0x8
+80002c78: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002c7c: 40208f33 sub t5,ra,sp
+80002c80: ffff8eb7 lui t4,0xffff8
+80002c84: 001e8e93 addi t4,t4,1 # ffff8001 <_end+0x7fff1c09>
+80002c88: 00800193 li gp,8
+80002c8c: 41df1a63 bne t5,t4,800030a0 <fail>
+
+80002c90 <test_9>:
+80002c90: 800000b7 lui ra,0x80000
+80002c94: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002c98: 00000113 li sp,0
+80002c9c: 40208f33 sub t5,ra,sp
+80002ca0: 80000eb7 lui t4,0x80000
+80002ca4: fffe8e93 addi t4,t4,-1 # 7fffffff <_end+0xffff9c07>
+80002ca8: 00900193 li gp,9
+80002cac: 3fdf1a63 bne t5,t4,800030a0 <fail>
+
+80002cb0 <test_10>:
+80002cb0: 800000b7 lui ra,0x80000
+80002cb4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cb8: 00008137 lui sp,0x8
+80002cbc: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cc0: 40208f33 sub t5,ra,sp
+80002cc4: 7fff8eb7 lui t4,0x7fff8
+80002cc8: 00a00193 li gp,10
+80002ccc: 3ddf1a63 bne t5,t4,800030a0 <fail>
+
+80002cd0 <test_11>:
+80002cd0: 800000b7 lui ra,0x80000
+80002cd4: 00008137 lui sp,0x8
+80002cd8: fff10113 addi sp,sp,-1 # 7fff <_start-0x7fff8001>
+80002cdc: 40208f33 sub t5,ra,sp
+80002ce0: 7fff8eb7 lui t4,0x7fff8
+80002ce4: 001e8e93 addi t4,t4,1 # 7fff8001 <_start-0x7fff>
+80002ce8: 00b00193 li gp,11
+80002cec: 3bdf1a63 bne t5,t4,800030a0 <fail>
+
+80002cf0 <test_12>:
+80002cf0: 800000b7 lui ra,0x80000
+80002cf4: fff08093 addi ra,ra,-1 # 7fffffff <_end+0xffff9c07>
+80002cf8: ffff8137 lui sp,0xffff8
+80002cfc: 40208f33 sub t5,ra,sp
+80002d00: 80008eb7 lui t4,0x80008
+80002d04: fffe8e93 addi t4,t4,-1 # 80007fff <_end+0x1c07>
+80002d08: 00c00193 li gp,12
+80002d0c: 39df1a63 bne t5,t4,800030a0 <fail>
+
+80002d10 <test_13>:
+80002d10: 00000093 li ra,0
+80002d14: fff00113 li sp,-1
+80002d18: 40208f33 sub t5,ra,sp
+80002d1c: 00100e93 li t4,1
+80002d20: 00d00193 li gp,13
+80002d24: 37df1e63 bne t5,t4,800030a0 <fail>
+
+80002d28 <test_14>:
+80002d28: fff00093 li ra,-1
+80002d2c: 00100113 li sp,1
+80002d30: 40208f33 sub t5,ra,sp
+80002d34: ffe00e93 li t4,-2
+80002d38: 00e00193 li gp,14
+80002d3c: 37df1263 bne t5,t4,800030a0 <fail>
+
+80002d40 <test_15>:
+80002d40: fff00093 li ra,-1
+80002d44: fff00113 li sp,-1
+80002d48: 40208f33 sub t5,ra,sp
+80002d4c: 00000e93 li t4,0
+80002d50: 00f00193 li gp,15
+80002d54: 35df1663 bne t5,t4,800030a0 <fail>
+
+80002d58 <test_16>:
+80002d58: 00d00093 li ra,13
+80002d5c: 00b00113 li sp,11
+80002d60: 402080b3 sub ra,ra,sp
+80002d64: 00200e93 li t4,2
+80002d68: 01000193 li gp,16
+80002d6c: 33d09a63 bne ra,t4,800030a0 <fail>
+
+80002d70 <test_17>:
+80002d70: 00e00093 li ra,14
+80002d74: 00b00113 li sp,11
+80002d78: 40208133 sub sp,ra,sp
+80002d7c: 00300e93 li t4,3
+80002d80: 01100193 li gp,17
+80002d84: 31d11e63 bne sp,t4,800030a0 <fail>
+
+80002d88 <test_18>:
+80002d88: 00d00093 li ra,13
+80002d8c: 401080b3 sub ra,ra,ra
+80002d90: 00000e93 li t4,0
+80002d94: 01200193 li gp,18
+80002d98: 31d09463 bne ra,t4,800030a0 <fail>
+
+80002d9c <test_19>:
+80002d9c: 00000213 li tp,0
+80002da0: 00d00093 li ra,13
+80002da4: 00b00113 li sp,11
+80002da8: 40208f33 sub t5,ra,sp
+80002dac: 000f0313 mv t1,t5
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5214e3 bne tp,t0,80002da0 <test_19+0x4>
+80002dbc: 00200e93 li t4,2
+80002dc0: 01300193 li gp,19
+80002dc4: 2dd31e63 bne t1,t4,800030a0 <fail>
+
+80002dc8 <test_20>:
+80002dc8: 00000213 li tp,0
+80002dcc: 00e00093 li ra,14
+80002dd0: 00b00113 li sp,11
+80002dd4: 40208f33 sub t5,ra,sp
+80002dd8: 00000013 nop
+80002ddc: 000f0313 mv t1,t5
+80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002de4: 00200293 li t0,2
+80002de8: fe5212e3 bne tp,t0,80002dcc <test_20+0x4>
+80002dec: 00300e93 li t4,3
+80002df0: 01400193 li gp,20
+80002df4: 2bd31663 bne t1,t4,800030a0 <fail>
+
+80002df8 <test_21>:
+80002df8: 00000213 li tp,0
+80002dfc: 00f00093 li ra,15
+80002e00: 00b00113 li sp,11
+80002e04: 40208f33 sub t5,ra,sp
+80002e08: 00000013 nop
+80002e0c: 00000013 nop
+80002e10: 000f0313 mv t1,t5
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fe5210e3 bne tp,t0,80002dfc <test_21+0x4>
+80002e20: 00400e93 li t4,4
+80002e24: 01500193 li gp,21
+80002e28: 27d31c63 bne t1,t4,800030a0 <fail>
+
+80002e2c <test_22>:
+80002e2c: 00000213 li tp,0
+80002e30: 00d00093 li ra,13
+80002e34: 00b00113 li sp,11
+80002e38: 40208f33 sub t5,ra,sp
+80002e3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e40: 00200293 li t0,2
+80002e44: fe5216e3 bne tp,t0,80002e30 <test_22+0x4>
+80002e48: 00200e93 li t4,2
+80002e4c: 01600193 li gp,22
+80002e50: 25df1863 bne t5,t4,800030a0 <fail>
+
+80002e54 <test_23>:
+80002e54: 00000213 li tp,0
+80002e58: 00e00093 li ra,14
+80002e5c: 00b00113 li sp,11
+80002e60: 00000013 nop
+80002e64: 40208f33 sub t5,ra,sp
+80002e68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e6c: 00200293 li t0,2
+80002e70: fe5214e3 bne tp,t0,80002e58 <test_23+0x4>
+80002e74: 00300e93 li t4,3
+80002e78: 01700193 li gp,23
+80002e7c: 23df1263 bne t5,t4,800030a0 <fail>
+
+80002e80 <test_24>:
+80002e80: 00000213 li tp,0
+80002e84: 00f00093 li ra,15
+80002e88: 00b00113 li sp,11
+80002e8c: 00000013 nop
+80002e90: 00000013 nop
+80002e94: 40208f33 sub t5,ra,sp
+80002e98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e9c: 00200293 li t0,2
+80002ea0: fe5212e3 bne tp,t0,80002e84 <test_24+0x4>
+80002ea4: 00400e93 li t4,4
+80002ea8: 01800193 li gp,24
+80002eac: 1fdf1a63 bne t5,t4,800030a0 <fail>
+
+80002eb0 <test_25>:
+80002eb0: 00000213 li tp,0
+80002eb4: 00d00093 li ra,13
+80002eb8: 00000013 nop
+80002ebc: 00b00113 li sp,11
+80002ec0: 40208f33 sub t5,ra,sp
+80002ec4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ec8: 00200293 li t0,2
+80002ecc: fe5214e3 bne tp,t0,80002eb4 <test_25+0x4>
+80002ed0: 00200e93 li t4,2
+80002ed4: 01900193 li gp,25
+80002ed8: 1ddf1463 bne t5,t4,800030a0 <fail>
+
+80002edc <test_26>:
+80002edc: 00000213 li tp,0
+80002ee0: 00e00093 li ra,14
+80002ee4: 00000013 nop
+80002ee8: 00b00113 li sp,11
+80002eec: 00000013 nop
+80002ef0: 40208f33 sub t5,ra,sp
+80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ef8: 00200293 li t0,2
+80002efc: fe5212e3 bne tp,t0,80002ee0 <test_26+0x4>
+80002f00: 00300e93 li t4,3
+80002f04: 01a00193 li gp,26
+80002f08: 19df1c63 bne t5,t4,800030a0 <fail>
+
+80002f0c <test_27>:
+80002f0c: 00000213 li tp,0
+80002f10: 00f00093 li ra,15
+80002f14: 00000013 nop
+80002f18: 00000013 nop
+80002f1c: 00b00113 li sp,11
+80002f20: 40208f33 sub t5,ra,sp
+80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f28: 00200293 li t0,2
+80002f2c: fe5212e3 bne tp,t0,80002f10 <test_27+0x4>
+80002f30: 00400e93 li t4,4
+80002f34: 01b00193 li gp,27
+80002f38: 17df1463 bne t5,t4,800030a0 <fail>
+
+80002f3c <test_28>:
+80002f3c: 00000213 li tp,0
+80002f40: 00b00113 li sp,11
+80002f44: 00d00093 li ra,13
+80002f48: 40208f33 sub t5,ra,sp
+80002f4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f50: 00200293 li t0,2
+80002f54: fe5216e3 bne tp,t0,80002f40 <test_28+0x4>
+80002f58: 00200e93 li t4,2
+80002f5c: 01c00193 li gp,28
+80002f60: 15df1063 bne t5,t4,800030a0 <fail>
+
+80002f64 <test_29>:
+80002f64: 00000213 li tp,0
+80002f68: 00b00113 li sp,11
+80002f6c: 00e00093 li ra,14
+80002f70: 00000013 nop
+80002f74: 40208f33 sub t5,ra,sp
+80002f78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f7c: 00200293 li t0,2
+80002f80: fe5214e3 bne tp,t0,80002f68 <test_29+0x4>
+80002f84: 00300e93 li t4,3
+80002f88: 01d00193 li gp,29
+80002f8c: 11df1a63 bne t5,t4,800030a0 <fail>
+
+80002f90 <test_30>:
+80002f90: 00000213 li tp,0
+80002f94: 00b00113 li sp,11
+80002f98: 00f00093 li ra,15
+80002f9c: 00000013 nop
+80002fa0: 00000013 nop
+80002fa4: 40208f33 sub t5,ra,sp
+80002fa8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fac: 00200293 li t0,2
+80002fb0: fe5212e3 bne tp,t0,80002f94 <test_30+0x4>
+80002fb4: 00400e93 li t4,4
+80002fb8: 01e00193 li gp,30
+80002fbc: 0fdf1263 bne t5,t4,800030a0 <fail>
+
+80002fc0 <test_31>:
+80002fc0: 00000213 li tp,0
+80002fc4: 00b00113 li sp,11
+80002fc8: 00000013 nop
+80002fcc: 00d00093 li ra,13
+80002fd0: 40208f33 sub t5,ra,sp
+80002fd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fd8: 00200293 li t0,2
+80002fdc: fe5214e3 bne tp,t0,80002fc4 <test_31+0x4>
+80002fe0: 00200e93 li t4,2
+80002fe4: 01f00193 li gp,31
+80002fe8: 0bdf1c63 bne t5,t4,800030a0 <fail>
+
+80002fec <test_32>:
+80002fec: 00000213 li tp,0
+80002ff0: 00b00113 li sp,11
+80002ff4: 00000013 nop
+80002ff8: 00e00093 li ra,14
+80002ffc: 00000013 nop
+80003000: 40208f33 sub t5,ra,sp
+80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003008: 00200293 li t0,2
+8000300c: fe5212e3 bne tp,t0,80002ff0 <test_32+0x4>
+80003010: 00300e93 li t4,3
+80003014: 02000193 li gp,32
+80003018: 09df1463 bne t5,t4,800030a0 <fail>
+
+8000301c <test_33>:
+8000301c: 00000213 li tp,0
+80003020: 00b00113 li sp,11
+80003024: 00000013 nop
+80003028: 00000013 nop
+8000302c: 00f00093 li ra,15
+80003030: 40208f33 sub t5,ra,sp
+80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003038: 00200293 li t0,2
+8000303c: fe5212e3 bne tp,t0,80003020 <test_33+0x4>
+80003040: 00400e93 li t4,4
+80003044: 02100193 li gp,33
+80003048: 05df1c63 bne t5,t4,800030a0 <fail>
+
+8000304c <test_34>:
+8000304c: ff100093 li ra,-15
+80003050: 40100133 neg sp,ra
+80003054: 00f00e93 li t4,15
+80003058: 02200193 li gp,34
+8000305c: 05d11263 bne sp,t4,800030a0 <fail>
+
+80003060 <test_35>:
+80003060: 02000093 li ra,32
+80003064: 40008133 sub sp,ra,zero
+80003068: 02000e93 li t4,32
+8000306c: 02300193 li gp,35
+80003070: 03d11863 bne sp,t4,800030a0 <fail>
+
+80003074 <test_36>:
+80003074: 400000b3 neg ra,zero
+80003078: 00000e93 li t4,0
+8000307c: 02400193 li gp,36
+80003080: 03d09063 bne ra,t4,800030a0 <fail>
+
+80003084 <test_37>:
+80003084: 01000093 li ra,16
+80003088: 01e00113 li sp,30
+8000308c: 40208033 sub zero,ra,sp
+80003090: 00000e93 li t4,0
+80003094: 02500193 li gp,37
+80003098: 01d01463 bne zero,t4,800030a0 <fail>
+8000309c: 00301a63 bne zero,gp,800030b0 <pass>
+
+800030a0 <fail>:
+800030a0: 00119513 slli a0,gp,0x1
+800030a4: 00050063 beqz a0,800030a4 <fail+0x4>
+800030a8: 00156513 ori a0,a0,1
+800030ac: 00000073 ecall
+
+800030b0 <pass>:
+800030b0: 00100513 li a0,1
+800030b4: 00000073 ecall
+800030b8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-sub.elf b/test/riscv-tests/rv32ui-v-sub.elf
new file mode 100644
index 0000000..b7b3cf1
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sub.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-sw.dump b/test/riscv-tests/rv32ui-v-sw.dump
new file mode 100644
index 0000000..ae112b4
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sw.dump
@@ -0,0 +1,1273 @@
+
+rv32ui-v-sw: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00008117 auipc sp,0x8
+8000001c: 35010113 addi sp,sp,848 # 80008368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00003317 auipc t1,0x3
+80002370: c9430313 addi t1,t1,-876 # 80005000 <pt>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00005797 auipc a5,0x5
+8000238c: 06c78793 addi a5,a5,108 # 800073f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00005717 auipc a4,0x5
+800023a0: 05470713 addi a4,a4,84 # 800073f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00005697 auipc a3,0x5
+800023ac: 04f6a623 sw a5,76(a3) # 800073f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00005717 auipc a4,0x5
+800023dc: e2070713 addi a4,a4,-480 # 800071f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf8c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00005797 auipc a5,0x5
+800024bc: f207ac23 sw zero,-200(a5) # 800073f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bb858593 addi a1,a1,-1096 # 80003080 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: bd458593 addi a1,a1,-1068 # 8000310c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: b8058593 addi a1,a1,-1152 # 80003124 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: ab458593 addi a1,a1,-1356 # 800030c4 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: aa458593 addi a1,a1,-1372 # 800031ec <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a0c58593 addi a1,a1,-1524 # 800031c8 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00005b17 auipc s6,0x5
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800071f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00002d17 auipc s10,0x2
+80002840: 7c4d0d13 addi s10,s10,1988 # 80005000 <pt>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00005717 auipc a4,0x5
+8000285c: b8f72c23 sw a5,-1128(a4) # 800073f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00005717 auipc a4,0x5
+800028e8: b0c70713 addi a4,a4,-1268 # 800073f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00005717 auipc a4,0x5
+800028fc: aef72c23 sw a5,-1288(a4) # 800073f0 <freelist_tail>
+80002900: 00005717 auipc a4,0x5
+80002904: aef72a23 sw a5,-1292(a4) # 800073f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 90860613 addi a2,a2,-1784 # 80003218 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 81860613 addi a2,a2,-2024 # 80003194 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 79860613 addi a2,a2,1944 # 80003160 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00003797 auipc a5,0x3
+80002a4c: 5b878793 addi a5,a5,1464 # 80006000 <pt+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00002697 auipc a3,0x2
+80002a60: 5af6a223 sw a5,1444(a3) # 80005000 <pt>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00002717 auipc a4,0x2
+80002a6c: 59870713 addi a4,a4,1432 # 80005000 <pt>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00003697 auipc a3,0x3
+80002a7c: 58f6a223 sw a5,1412(a3) # 80005ffc <pt+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf8ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc04797 auipc a5,0x7fc04
+80002aec: 51878793 addi a5,a5,1304 # ffc07000 <_end+0x7fbffc08>
+80002af0: 00005717 auipc a4,0x5
+80002af4: 90f72223 sw a5,-1788(a4) # 800073f4 <freelist_head>
+80002af8: 7fc04797 auipc a5,0x7fc04
+80002afc: 6f878793 addi a5,a5,1784 # ffc071f0 <_end+0x7fbffdf8>
+80002b00: 00005717 auipc a4,0x5
+80002b04: 8ef72823 sw a5,-1808(a4) # 800073f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00004717 auipc a4,0x4
+80002b10: 4f470713 addi a4,a4,1268 # 80007000 <freelist_nodes>
+80002b14: 00004317 auipc t1,0x4
+80002b18: 6e430313 addi t1,t1,1764 # 800071f8 <user_mapping>
+80002b1c: 03600793 li a5,54
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00004797 auipc a5,0x4
+80002b6c: 6807a623 sw zero,1676(a5) # 800071f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 01adb7b7 lui a5,0x1adb
+80002b9c: 00080637 lui a2,0x80
+80002ba0: faf78793 addi a5,a5,-81 # 1adafaf <_start-0x7e525051>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00001097 auipc ra,0x1
+80002be4: 42008093 addi ra,ra,1056 # 80004000 <begin_signature>
+80002be8: 00aa0137 lui sp,0xaa0
+80002bec: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56>
+80002bf0: 0020a023 sw sp,0(ra)
+80002bf4: 0000af03 lw t5,0(ra)
+80002bf8: 00aa0eb7 lui t4,0xaa0
+80002bfc: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56>
+80002c00: 00200193 li gp,2
+80002c04: 47df1063 bne t5,t4,80003064 <fail>
+
+80002c08 <test_3>:
+80002c08: 00001097 auipc ra,0x1
+80002c0c: 3f808093 addi ra,ra,1016 # 80004000 <begin_signature>
+80002c10: aa00b137 lui sp,0xaa00b
+80002c14: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a003608>
+80002c18: 0020a223 sw sp,4(ra)
+80002c1c: 0040af03 lw t5,4(ra)
+80002c20: aa00beb7 lui t4,0xaa00b
+80002c24: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a003608>
+80002c28: 00300193 li gp,3
+80002c2c: 43df1c63 bne t5,t4,80003064 <fail>
+
+80002c30 <test_4>:
+80002c30: 00001097 auipc ra,0x1
+80002c34: 3d008093 addi ra,ra,976 # 80004000 <begin_signature>
+80002c38: 0aa01137 lui sp,0xaa01
+80002c3c: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560>
+80002c40: 0020a423 sw sp,8(ra)
+80002c44: 0080af03 lw t5,8(ra)
+80002c48: 0aa01eb7 lui t4,0xaa01
+80002c4c: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560>
+80002c50: 00400193 li gp,4
+80002c54: 41df1863 bne t5,t4,80003064 <fail>
+
+80002c58 <test_5>:
+80002c58: 00001097 auipc ra,0x1
+80002c5c: 3a808093 addi ra,ra,936 # 80004000 <begin_signature>
+80002c60: a00aa137 lui sp,0xa00aa
+80002c64: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a2c12>
+80002c68: 0020a623 sw sp,12(ra)
+80002c6c: 00c0af03 lw t5,12(ra)
+80002c70: a00aaeb7 lui t4,0xa00aa
+80002c74: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a2c12>
+80002c78: 00500193 li gp,5
+80002c7c: 3fdf1463 bne t5,t4,80003064 <fail>
+
+80002c80 <test_6>:
+80002c80: 00001097 auipc ra,0x1
+80002c84: 39c08093 addi ra,ra,924 # 8000401c <tdat8>
+80002c88: 00aa0137 lui sp,0xaa0
+80002c8c: 0aa10113 addi sp,sp,170 # aa00aa <_start-0x7f55ff56>
+80002c90: fe20aa23 sw sp,-12(ra)
+80002c94: ff40af03 lw t5,-12(ra)
+80002c98: 00aa0eb7 lui t4,0xaa0
+80002c9c: 0aae8e93 addi t4,t4,170 # aa00aa <_start-0x7f55ff56>
+80002ca0: 00600193 li gp,6
+80002ca4: 3ddf1063 bne t5,t4,80003064 <fail>
+
+80002ca8 <test_7>:
+80002ca8: 00001097 auipc ra,0x1
+80002cac: 37408093 addi ra,ra,884 # 8000401c <tdat8>
+80002cb0: aa00b137 lui sp,0xaa00b
+80002cb4: a0010113 addi sp,sp,-1536 # aa00aa00 <_end+0x2a003608>
+80002cb8: fe20ac23 sw sp,-8(ra)
+80002cbc: ff80af03 lw t5,-8(ra)
+80002cc0: aa00beb7 lui t4,0xaa00b
+80002cc4: a00e8e93 addi t4,t4,-1536 # aa00aa00 <_end+0x2a003608>
+80002cc8: 00700193 li gp,7
+80002ccc: 39df1c63 bne t5,t4,80003064 <fail>
+
+80002cd0 <test_8>:
+80002cd0: 00001097 auipc ra,0x1
+80002cd4: 34c08093 addi ra,ra,844 # 8000401c <tdat8>
+80002cd8: 0aa01137 lui sp,0xaa01
+80002cdc: aa010113 addi sp,sp,-1376 # aa00aa0 <_start-0x755ff560>
+80002ce0: fe20ae23 sw sp,-4(ra)
+80002ce4: ffc0af03 lw t5,-4(ra)
+80002ce8: 0aa01eb7 lui t4,0xaa01
+80002cec: aa0e8e93 addi t4,t4,-1376 # aa00aa0 <_start-0x755ff560>
+80002cf0: 00800193 li gp,8
+80002cf4: 37df1863 bne t5,t4,80003064 <fail>
+
+80002cf8 <test_9>:
+80002cf8: 00001097 auipc ra,0x1
+80002cfc: 32408093 addi ra,ra,804 # 8000401c <tdat8>
+80002d00: a00aa137 lui sp,0xa00aa
+80002d04: 00a10113 addi sp,sp,10 # a00aa00a <_end+0x200a2c12>
+80002d08: 0020a023 sw sp,0(ra)
+80002d0c: 0000af03 lw t5,0(ra)
+80002d10: a00aaeb7 lui t4,0xa00aa
+80002d14: 00ae8e93 addi t4,t4,10 # a00aa00a <_end+0x200a2c12>
+80002d18: 00900193 li gp,9
+80002d1c: 35df1463 bne t5,t4,80003064 <fail>
+
+80002d20 <test_10>:
+80002d20: 00001097 auipc ra,0x1
+80002d24: 30008093 addi ra,ra,768 # 80004020 <tdat9>
+80002d28: 12345137 lui sp,0x12345
+80002d2c: 67810113 addi sp,sp,1656 # 12345678 <_start-0x6dcba988>
+80002d30: fe008213 addi tp,ra,-32
+80002d34: 02222023 sw sp,32(tp) # 20 <_start-0x7fffffe0>
+80002d38: 0000a283 lw t0,0(ra)
+80002d3c: 12345eb7 lui t4,0x12345
+80002d40: 678e8e93 addi t4,t4,1656 # 12345678 <_start-0x6dcba988>
+80002d44: 00a00193 li gp,10
+80002d48: 31d29e63 bne t0,t4,80003064 <fail>
+
+80002d4c <test_11>:
+80002d4c: 00001097 auipc ra,0x1
+80002d50: 2d408093 addi ra,ra,724 # 80004020 <tdat9>
+80002d54: 58213137 lui sp,0x58213
+80002d58: 09810113 addi sp,sp,152 # 58213098 <_start-0x27decf68>
+80002d5c: ffd08093 addi ra,ra,-3
+80002d60: 0020a3a3 sw sp,7(ra)
+80002d64: 00001217 auipc tp,0x1
+80002d68: 2c020213 addi tp,tp,704 # 80004024 <tdat10>
+80002d6c: 00022283 lw t0,0(tp) # 0 <_start-0x80000000>
+80002d70: 58213eb7 lui t4,0x58213
+80002d74: 098e8e93 addi t4,t4,152 # 58213098 <_start-0x27decf68>
+80002d78: 00b00193 li gp,11
+80002d7c: 2fd29463 bne t0,t4,80003064 <fail>
+
+80002d80 <test_12>:
+80002d80: 00c00193 li gp,12
+80002d84: 00000213 li tp,0
+80002d88: aabbd0b7 lui ra,0xaabbd
+80002d8c: cdd08093 addi ra,ra,-803 # aabbccdd <_end+0x2abb58e5>
+80002d90: 00001117 auipc sp,0x1
+80002d94: 27010113 addi sp,sp,624 # 80004000 <begin_signature>
+80002d98: 00112023 sw ra,0(sp)
+80002d9c: 00012f03 lw t5,0(sp)
+80002da0: aabbdeb7 lui t4,0xaabbd
+80002da4: cdde8e93 addi t4,t4,-803 # aabbccdd <_end+0x2abb58e5>
+80002da8: 2bdf1e63 bne t5,t4,80003064 <fail>
+80002dac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db0: 00200293 li t0,2
+80002db4: fc521ae3 bne tp,t0,80002d88 <test_12+0x8>
+
+80002db8 <test_13>:
+80002db8: 00d00193 li gp,13
+80002dbc: 00000213 li tp,0
+80002dc0: daabc0b7 lui ra,0xdaabc
+80002dc4: ccd08093 addi ra,ra,-819 # daabbccd <_end+0x5aab48d5>
+80002dc8: 00001117 auipc sp,0x1
+80002dcc: 23810113 addi sp,sp,568 # 80004000 <begin_signature>
+80002dd0: 00000013 nop
+80002dd4: 00112223 sw ra,4(sp)
+80002dd8: 00412f03 lw t5,4(sp)
+80002ddc: daabceb7 lui t4,0xdaabc
+80002de0: ccde8e93 addi t4,t4,-819 # daabbccd <_end+0x5aab48d5>
+80002de4: 29df1063 bne t5,t4,80003064 <fail>
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fc5218e3 bne tp,t0,80002dc0 <test_13+0x8>
+
+80002df4 <test_14>:
+80002df4: 00e00193 li gp,14
+80002df8: 00000213 li tp,0
+80002dfc: ddaac0b7 lui ra,0xddaac
+80002e00: bcc08093 addi ra,ra,-1076 # ddaabbcc <_end+0x5daa47d4>
+80002e04: 00001117 auipc sp,0x1
+80002e08: 1fc10113 addi sp,sp,508 # 80004000 <begin_signature>
+80002e0c: 00000013 nop
+80002e10: 00000013 nop
+80002e14: 00112423 sw ra,8(sp)
+80002e18: 00812f03 lw t5,8(sp)
+80002e1c: ddaaceb7 lui t4,0xddaac
+80002e20: bcce8e93 addi t4,t4,-1076 # ddaabbcc <_end+0x5daa47d4>
+80002e24: 25df1063 bne t5,t4,80003064 <fail>
+80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e2c: 00200293 li t0,2
+80002e30: fc5216e3 bne tp,t0,80002dfc <test_14+0x8>
+
+80002e34 <test_15>:
+80002e34: 00f00193 li gp,15
+80002e38: 00000213 li tp,0
+80002e3c: cddab0b7 lui ra,0xcddab
+80002e40: bbc08093 addi ra,ra,-1092 # cddaabbc <_end+0x4dda37c4>
+80002e44: 00000013 nop
+80002e48: 00001117 auipc sp,0x1
+80002e4c: 1b810113 addi sp,sp,440 # 80004000 <begin_signature>
+80002e50: 00112623 sw ra,12(sp)
+80002e54: 00c12f03 lw t5,12(sp)
+80002e58: cddabeb7 lui t4,0xcddab
+80002e5c: bbce8e93 addi t4,t4,-1092 # cddaabbc <_end+0x4dda37c4>
+80002e60: 21df1263 bne t5,t4,80003064 <fail>
+80002e64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e68: 00200293 li t0,2
+80002e6c: fc5218e3 bne tp,t0,80002e3c <test_15+0x8>
+
+80002e70 <test_16>:
+80002e70: 01000193 li gp,16
+80002e74: 00000213 li tp,0
+80002e78: ccddb0b7 lui ra,0xccddb
+80002e7c: abb08093 addi ra,ra,-1349 # ccddaabb <_end+0x4cdd36c3>
+80002e80: 00000013 nop
+80002e84: 00001117 auipc sp,0x1
+80002e88: 17c10113 addi sp,sp,380 # 80004000 <begin_signature>
+80002e8c: 00000013 nop
+80002e90: 00112823 sw ra,16(sp)
+80002e94: 01012f03 lw t5,16(sp)
+80002e98: ccddbeb7 lui t4,0xccddb
+80002e9c: abbe8e93 addi t4,t4,-1349 # ccddaabb <_end+0x4cdd36c3>
+80002ea0: 1ddf1263 bne t5,t4,80003064 <fail>
+80002ea4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea8: 00200293 li t0,2
+80002eac: fc5216e3 bne tp,t0,80002e78 <test_16+0x8>
+
+80002eb0 <test_17>:
+80002eb0: 01100193 li gp,17
+80002eb4: 00000213 li tp,0
+80002eb8: bccde0b7 lui ra,0xbccde
+80002ebc: aab08093 addi ra,ra,-1365 # bccddaab <_end+0x3ccd66b3>
+80002ec0: 00000013 nop
+80002ec4: 00000013 nop
+80002ec8: 00001117 auipc sp,0x1
+80002ecc: 13810113 addi sp,sp,312 # 80004000 <begin_signature>
+80002ed0: 00112a23 sw ra,20(sp)
+80002ed4: 01412f03 lw t5,20(sp)
+80002ed8: bccdeeb7 lui t4,0xbccde
+80002edc: aabe8e93 addi t4,t4,-1365 # bccddaab <_end+0x3ccd66b3>
+80002ee0: 19df1263 bne t5,t4,80003064 <fail>
+80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ee8: 00200293 li t0,2
+80002eec: fc5216e3 bne tp,t0,80002eb8 <test_17+0x8>
+
+80002ef0 <test_18>:
+80002ef0: 01200193 li gp,18
+80002ef4: 00000213 li tp,0
+80002ef8: 00001117 auipc sp,0x1
+80002efc: 10810113 addi sp,sp,264 # 80004000 <begin_signature>
+80002f00: 001120b7 lui ra,0x112
+80002f04: 23308093 addi ra,ra,563 # 112233 <_start-0x7feeddcd>
+80002f08: 00112023 sw ra,0(sp)
+80002f0c: 00012f03 lw t5,0(sp)
+80002f10: 00112eb7 lui t4,0x112
+80002f14: 233e8e93 addi t4,t4,563 # 112233 <_start-0x7feeddcd>
+80002f18: 15df1663 bne t5,t4,80003064 <fail>
+80002f1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f20: 00200293 li t0,2
+80002f24: fc521ae3 bne tp,t0,80002ef8 <test_18+0x8>
+
+80002f28 <test_19>:
+80002f28: 01300193 li gp,19
+80002f2c: 00000213 li tp,0
+80002f30: 00001117 auipc sp,0x1
+80002f34: 0d010113 addi sp,sp,208 # 80004000 <begin_signature>
+80002f38: 300110b7 lui ra,0x30011
+80002f3c: 22308093 addi ra,ra,547 # 30011223 <_start-0x4ffeeddd>
+80002f40: 00000013 nop
+80002f44: 00112223 sw ra,4(sp)
+80002f48: 00412f03 lw t5,4(sp)
+80002f4c: 30011eb7 lui t4,0x30011
+80002f50: 223e8e93 addi t4,t4,547 # 30011223 <_start-0x4ffeeddd>
+80002f54: 11df1863 bne t5,t4,80003064 <fail>
+80002f58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f5c: 00200293 li t0,2
+80002f60: fc5218e3 bne tp,t0,80002f30 <test_19+0x8>
+
+80002f64 <test_20>:
+80002f64: 01400193 li gp,20
+80002f68: 00000213 li tp,0
+80002f6c: 00001117 auipc sp,0x1
+80002f70: 09410113 addi sp,sp,148 # 80004000 <begin_signature>
+80002f74: 330010b7 lui ra,0x33001
+80002f78: 12208093 addi ra,ra,290 # 33001122 <_start-0x4cffeede>
+80002f7c: 00000013 nop
+80002f80: 00000013 nop
+80002f84: 00112423 sw ra,8(sp)
+80002f88: 00812f03 lw t5,8(sp)
+80002f8c: 33001eb7 lui t4,0x33001
+80002f90: 122e8e93 addi t4,t4,290 # 33001122 <_start-0x4cffeede>
+80002f94: 0ddf1863 bne t5,t4,80003064 <fail>
+80002f98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f9c: 00200293 li t0,2
+80002fa0: fc5216e3 bne tp,t0,80002f6c <test_20+0x8>
+
+80002fa4 <test_21>:
+80002fa4: 01500193 li gp,21
+80002fa8: 00000213 li tp,0
+80002fac: 00001117 auipc sp,0x1
+80002fb0: 05410113 addi sp,sp,84 # 80004000 <begin_signature>
+80002fb4: 00000013 nop
+80002fb8: 233000b7 lui ra,0x23300
+80002fbc: 11208093 addi ra,ra,274 # 23300112 <_start-0x5ccffeee>
+80002fc0: 00112623 sw ra,12(sp)
+80002fc4: 00c12f03 lw t5,12(sp)
+80002fc8: 23300eb7 lui t4,0x23300
+80002fcc: 112e8e93 addi t4,t4,274 # 23300112 <_start-0x5ccffeee>
+80002fd0: 09df1a63 bne t5,t4,80003064 <fail>
+80002fd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fd8: 00200293 li t0,2
+80002fdc: fc5218e3 bne tp,t0,80002fac <test_21+0x8>
+
+80002fe0 <test_22>:
+80002fe0: 01600193 li gp,22
+80002fe4: 00000213 li tp,0
+80002fe8: 00001117 auipc sp,0x1
+80002fec: 01810113 addi sp,sp,24 # 80004000 <begin_signature>
+80002ff0: 00000013 nop
+80002ff4: 223300b7 lui ra,0x22330
+80002ff8: 01108093 addi ra,ra,17 # 22330011 <_start-0x5dccffef>
+80002ffc: 00000013 nop
+80003000: 00112823 sw ra,16(sp)
+80003004: 01012f03 lw t5,16(sp)
+80003008: 22330eb7 lui t4,0x22330
+8000300c: 011e8e93 addi t4,t4,17 # 22330011 <_start-0x5dccffef>
+80003010: 05df1a63 bne t5,t4,80003064 <fail>
+80003014: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003018: 00200293 li t0,2
+8000301c: fc5216e3 bne tp,t0,80002fe8 <test_22+0x8>
+
+80003020 <test_23>:
+80003020: 01700193 li gp,23
+80003024: 00000213 li tp,0
+80003028: 00001117 auipc sp,0x1
+8000302c: fd810113 addi sp,sp,-40 # 80004000 <begin_signature>
+80003030: 00000013 nop
+80003034: 00000013 nop
+80003038: 122330b7 lui ra,0x12233
+8000303c: 00108093 addi ra,ra,1 # 12233001 <_start-0x6ddccfff>
+80003040: 00112a23 sw ra,20(sp)
+80003044: 01412f03 lw t5,20(sp)
+80003048: 12233eb7 lui t4,0x12233
+8000304c: 001e8e93 addi t4,t4,1 # 12233001 <_start-0x6ddccfff>
+80003050: 01df1a63 bne t5,t4,80003064 <fail>
+80003054: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003058: 00200293 li t0,2
+8000305c: fc5216e3 bne tp,t0,80003028 <test_23+0x8>
+80003060: 00301a63 bne zero,gp,80003074 <pass>
+
+80003064 <fail>:
+80003064: 00119513 slli a0,gp,0x1
+80003068: 00050063 beqz a0,80003068 <fail+0x4>
+8000306c: 00156513 ori a0,a0,1
+80003070: 00000073 ecall
+
+80003074 <pass>:
+80003074: 00100513 li a0,1
+80003078: 00000073 ecall
+8000307c: c0001073 unimp
+
+Disassembly of section .data:
+
+80004000 <begin_signature>:
+80004000: deadbeef jal t4,7ffdf5ea <_start-0x20a16>
+
+80004004 <tdat2>:
+80004004: deadbeef jal t4,7ffdf5ee <_start-0x20a12>
+
+80004008 <tdat3>:
+80004008: deadbeef jal t4,7ffdf5f2 <_start-0x20a0e>
+
+8000400c <tdat4>:
+8000400c: deadbeef jal t4,7ffdf5f6 <_start-0x20a0a>
+
+80004010 <tdat5>:
+80004010: deadbeef jal t4,7ffdf5fa <_start-0x20a06>
+
+80004014 <tdat6>:
+80004014: deadbeef jal t4,7ffdf5fe <_start-0x20a02>
+
+80004018 <tdat7>:
+80004018: deadbeef jal t4,7ffdf602 <_start-0x209fe>
+
+8000401c <tdat8>:
+8000401c: deadbeef jal t4,7ffdf606 <_start-0x209fa>
+
+80004020 <tdat9>:
+80004020: deadbeef jal t4,7ffdf60a <_start-0x209f6>
+
+80004024 <tdat10>:
+80004024: deadbeef jal t4,7ffdf60e <_start-0x209f2>
diff --git a/test/riscv-tests/rv32ui-v-sw.elf b/test/riscv-tests/rv32ui-v-sw.elf
new file mode 100644
index 0000000..6ca3234
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-sw.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-xor.dump b/test/riscv-tests/rv32ui-v-xor.dump
new file mode 100644
index 0000000..6353abd
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-xor.dump
@@ -0,0 +1,1264 @@
+
+rv32ui-v-xor: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bf458593 addi a1,a1,-1036 # 800030bc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1058593 addi a1,a1,-1008 # 80003148 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bbc58593 addi a1,a1,-1092 # 80003160 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af058593 addi a1,a1,-1296 # 80003100 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae058593 addi a1,a1,-1312 # 80003228 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a4858593 addi a1,a1,-1464 # 80003204 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94460613 addi a2,a2,-1724 # 80003254 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85460613 addi a2,a2,-1964 # 800031d0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7d460613 addi a2,a2,2004 # 8000319c <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01300793 li a5,19
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 009f77b7 lui a5,0x9f7
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 2e778793 addi a5,a5,743 # 9f72e7 <_start-0x7f608d19>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: ff0100b7 lui ra,0xff010
+80002be4: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002be8: 0f0f1137 lui sp,0xf0f1
+80002bec: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002bf0: 0020cf33 xor t5,ra,sp
+80002bf4: f00ffeb7 lui t4,0xf00ff
+80002bf8: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002bfc: 00200193 li gp,2
+80002c00: 4bdf1063 bne t5,t4,800030a0 <fail>
+
+80002c04 <test_3>:
+80002c04: 0ff010b7 lui ra,0xff01
+80002c08: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c0c: f0f0f137 lui sp,0xf0f0f
+80002c10: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002c14: 0020cf33 xor t5,ra,sp
+80002c18: ff010eb7 lui t4,0xff010
+80002c1c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002c20: 00300193 li gp,3
+80002c24: 47df1e63 bne t5,t4,800030a0 <fail>
+
+80002c28 <test_4>:
+80002c28: 00ff00b7 lui ra,0xff0
+80002c2c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002c30: 0f0f1137 lui sp,0xf0f1
+80002c34: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002c38: 0020cf33 xor t5,ra,sp
+80002c3c: 0ff01eb7 lui t4,0xff01
+80002c40: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002c44: 00400193 li gp,4
+80002c48: 45df1c63 bne t5,t4,800030a0 <fail>
+
+80002c4c <test_5>:
+80002c4c: f00ff0b7 lui ra,0xf00ff
+80002c50: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f8c17>
+80002c54: f0f0f137 lui sp,0xf0f0f
+80002c58: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002c5c: 0020cf33 xor t5,ra,sp
+80002c60: 00ff0eb7 lui t4,0xff0
+80002c64: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80002c68: 00500193 li gp,5
+80002c6c: 43df1a63 bne t5,t4,800030a0 <fail>
+
+80002c70 <test_6>:
+80002c70: ff0100b7 lui ra,0xff010
+80002c74: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002c78: 0f0f1137 lui sp,0xf0f1
+80002c7c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002c80: 0020c0b3 xor ra,ra,sp
+80002c84: f00ffeb7 lui t4,0xf00ff
+80002c88: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002c8c: 00600193 li gp,6
+80002c90: 41d09863 bne ra,t4,800030a0 <fail>
+
+80002c94 <test_7>:
+80002c94: ff0100b7 lui ra,0xff010
+80002c98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002c9c: 0f0f1137 lui sp,0xf0f1
+80002ca0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ca4: 0020c133 xor sp,ra,sp
+80002ca8: f00ffeb7 lui t4,0xf00ff
+80002cac: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002cb0: 00700193 li gp,7
+80002cb4: 3fd11663 bne sp,t4,800030a0 <fail>
+
+80002cb8 <test_8>:
+80002cb8: ff0100b7 lui ra,0xff010
+80002cbc: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002cc0: 0010c0b3 xor ra,ra,ra
+80002cc4: 00000e93 li t4,0
+80002cc8: 00800193 li gp,8
+80002ccc: 3dd09a63 bne ra,t4,800030a0 <fail>
+
+80002cd0 <test_9>:
+80002cd0: 00000213 li tp,0
+80002cd4: ff0100b7 lui ra,0xff010
+80002cd8: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002cdc: 0f0f1137 lui sp,0xf0f1
+80002ce0: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ce4: 0020cf33 xor t5,ra,sp
+80002ce8: 000f0313 mv t1,t5
+80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cf0: 00200293 li t0,2
+80002cf4: fe5210e3 bne tp,t0,80002cd4 <test_9+0x4>
+80002cf8: f00ffeb7 lui t4,0xf00ff
+80002cfc: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002d00: 00900193 li gp,9
+80002d04: 39d31e63 bne t1,t4,800030a0 <fail>
+
+80002d08 <test_10>:
+80002d08: 00000213 li tp,0
+80002d0c: 0ff010b7 lui ra,0xff01
+80002d10: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002d14: f0f0f137 lui sp,0xf0f0f
+80002d18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002d1c: 0020cf33 xor t5,ra,sp
+80002d20: 00000013 nop
+80002d24: 000f0313 mv t1,t5
+80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d2c: 00200293 li t0,2
+80002d30: fc521ee3 bne tp,t0,80002d0c <test_10+0x4>
+80002d34: ff010eb7 lui t4,0xff010
+80002d38: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002d3c: 00a00193 li gp,10
+80002d40: 37d31063 bne t1,t4,800030a0 <fail>
+
+80002d44 <test_11>:
+80002d44: 00000213 li tp,0
+80002d48: 00ff00b7 lui ra,0xff0
+80002d4c: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002d50: 0f0f1137 lui sp,0xf0f1
+80002d54: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002d58: 0020cf33 xor t5,ra,sp
+80002d5c: 00000013 nop
+80002d60: 00000013 nop
+80002d64: 000f0313 mv t1,t5
+80002d68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d6c: 00200293 li t0,2
+80002d70: fc521ce3 bne tp,t0,80002d48 <test_11+0x4>
+80002d74: 0ff01eb7 lui t4,0xff01
+80002d78: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002d7c: 00b00193 li gp,11
+80002d80: 33d31063 bne t1,t4,800030a0 <fail>
+
+80002d84 <test_12>:
+80002d84: 00000213 li tp,0
+80002d88: ff0100b7 lui ra,0xff010
+80002d8c: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002d90: 0f0f1137 lui sp,0xf0f1
+80002d94: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002d98: 0020cf33 xor t5,ra,sp
+80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002da0: 00200293 li t0,2
+80002da4: fe5212e3 bne tp,t0,80002d88 <test_12+0x4>
+80002da8: f00ffeb7 lui t4,0xf00ff
+80002dac: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002db0: 00c00193 li gp,12
+80002db4: 2fdf1663 bne t5,t4,800030a0 <fail>
+
+80002db8 <test_13>:
+80002db8: 00000213 li tp,0
+80002dbc: 0ff010b7 lui ra,0xff01
+80002dc0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002dc4: f0f0f137 lui sp,0xf0f0f
+80002dc8: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002dcc: 00000013 nop
+80002dd0: 0020cf33 xor t5,ra,sp
+80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dd8: 00200293 li t0,2
+80002ddc: fe5210e3 bne tp,t0,80002dbc <test_13+0x4>
+80002de0: ff010eb7 lui t4,0xff010
+80002de4: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002de8: 00d00193 li gp,13
+80002dec: 2bdf1a63 bne t5,t4,800030a0 <fail>
+
+80002df0 <test_14>:
+80002df0: 00000213 li tp,0
+80002df4: 00ff00b7 lui ra,0xff0
+80002df8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002dfc: 0f0f1137 lui sp,0xf0f1
+80002e00: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002e04: 00000013 nop
+80002e08: 00000013 nop
+80002e0c: 0020cf33 xor t5,ra,sp
+80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e14: 00200293 li t0,2
+80002e18: fc521ee3 bne tp,t0,80002df4 <test_14+0x4>
+80002e1c: 0ff01eb7 lui t4,0xff01
+80002e20: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002e24: 00e00193 li gp,14
+80002e28: 27df1c63 bne t5,t4,800030a0 <fail>
+
+80002e2c <test_15>:
+80002e2c: 00000213 li tp,0
+80002e30: ff0100b7 lui ra,0xff010
+80002e34: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002e38: 00000013 nop
+80002e3c: 0f0f1137 lui sp,0xf0f1
+80002e40: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002e44: 0020cf33 xor t5,ra,sp
+80002e48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e4c: 00200293 li t0,2
+80002e50: fe5210e3 bne tp,t0,80002e30 <test_15+0x4>
+80002e54: f00ffeb7 lui t4,0xf00ff
+80002e58: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002e5c: 00f00193 li gp,15
+80002e60: 25df1063 bne t5,t4,800030a0 <fail>
+
+80002e64 <test_16>:
+80002e64: 00000213 li tp,0
+80002e68: 0ff010b7 lui ra,0xff01
+80002e6c: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002e70: 00000013 nop
+80002e74: f0f0f137 lui sp,0xf0f0f
+80002e78: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002e7c: 00000013 nop
+80002e80: 0020cf33 xor t5,ra,sp
+80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e88: 00200293 li t0,2
+80002e8c: fc521ee3 bne tp,t0,80002e68 <test_16+0x4>
+80002e90: ff010eb7 lui t4,0xff010
+80002e94: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002e98: 01000193 li gp,16
+80002e9c: 21df1263 bne t5,t4,800030a0 <fail>
+
+80002ea0 <test_17>:
+80002ea0: 00000213 li tp,0
+80002ea4: 00ff00b7 lui ra,0xff0
+80002ea8: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002eac: 00000013 nop
+80002eb0: 00000013 nop
+80002eb4: 0f0f1137 lui sp,0xf0f1
+80002eb8: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ebc: 0020cf33 xor t5,ra,sp
+80002ec0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ec4: 00200293 li t0,2
+80002ec8: fc521ee3 bne tp,t0,80002ea4 <test_17+0x4>
+80002ecc: 0ff01eb7 lui t4,0xff01
+80002ed0: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002ed4: 01100193 li gp,17
+80002ed8: 1ddf1463 bne t5,t4,800030a0 <fail>
+
+80002edc <test_18>:
+80002edc: 00000213 li tp,0
+80002ee0: 0f0f1137 lui sp,0xf0f1
+80002ee4: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002ee8: ff0100b7 lui ra,0xff010
+80002eec: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002ef0: 0020cf33 xor t5,ra,sp
+80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ef8: 00200293 li t0,2
+80002efc: fe5212e3 bne tp,t0,80002ee0 <test_18+0x4>
+80002f00: f00ffeb7 lui t4,0xf00ff
+80002f04: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002f08: 01200193 li gp,18
+80002f0c: 19df1a63 bne t5,t4,800030a0 <fail>
+
+80002f10 <test_19>:
+80002f10: 00000213 li tp,0
+80002f14: f0f0f137 lui sp,0xf0f0f
+80002f18: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002f1c: 0ff010b7 lui ra,0xff01
+80002f20: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002f24: 00000013 nop
+80002f28: 0020cf33 xor t5,ra,sp
+80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f30: 00200293 li t0,2
+80002f34: fe5210e3 bne tp,t0,80002f14 <test_19+0x4>
+80002f38: ff010eb7 lui t4,0xff010
+80002f3c: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002f40: 01300193 li gp,19
+80002f44: 15df1e63 bne t5,t4,800030a0 <fail>
+
+80002f48 <test_20>:
+80002f48: 00000213 li tp,0
+80002f4c: 0f0f1137 lui sp,0xf0f1
+80002f50: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002f54: 00ff00b7 lui ra,0xff0
+80002f58: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002f5c: 00000013 nop
+80002f60: 00000013 nop
+80002f64: 0020cf33 xor t5,ra,sp
+80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f6c: 00200293 li t0,2
+80002f70: fc521ee3 bne tp,t0,80002f4c <test_20+0x4>
+80002f74: 0ff01eb7 lui t4,0xff01
+80002f78: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+80002f7c: 01400193 li gp,20
+80002f80: 13df1063 bne t5,t4,800030a0 <fail>
+
+80002f84 <test_21>:
+80002f84: 00000213 li tp,0
+80002f88: 0f0f1137 lui sp,0xf0f1
+80002f8c: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80002f90: 00000013 nop
+80002f94: ff0100b7 lui ra,0xff010
+80002f98: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+80002f9c: 0020cf33 xor t5,ra,sp
+80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa4: 00200293 li t0,2
+80002fa8: fe5210e3 bne tp,t0,80002f88 <test_21+0x4>
+80002fac: f00ffeb7 lui t4,0xf00ff
+80002fb0: 00fe8e93 addi t4,t4,15 # f00ff00f <_end+0x700f8c17>
+80002fb4: 01500193 li gp,21
+80002fb8: 0fdf1463 bne t5,t4,800030a0 <fail>
+
+80002fbc <test_22>:
+80002fbc: 00000213 li tp,0
+80002fc0: f0f0f137 lui sp,0xf0f0f
+80002fc4: 0f010113 addi sp,sp,240 # f0f0f0f0 <_end+0x70f08cf8>
+80002fc8: 00000013 nop
+80002fcc: 0ff010b7 lui ra,0xff01
+80002fd0: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002fd4: 00000013 nop
+80002fd8: 0020cf33 xor t5,ra,sp
+80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe0: 00200293 li t0,2
+80002fe4: fc521ee3 bne tp,t0,80002fc0 <test_22+0x4>
+80002fe8: ff010eb7 lui t4,0xff010
+80002fec: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80002ff0: 01600193 li gp,22
+80002ff4: 0bdf1663 bne t5,t4,800030a0 <fail>
+
+80002ff8 <test_23>:
+80002ff8: 00000213 li tp,0
+80002ffc: 0f0f1137 lui sp,0xf0f1
+80003000: f0f10113 addi sp,sp,-241 # f0f0f0f <_start-0x70f0f0f1>
+80003004: 00000013 nop
+80003008: 00000013 nop
+8000300c: 00ff00b7 lui ra,0xff0
+80003010: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80003014: 0020cf33 xor t5,ra,sp
+80003018: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000301c: 00200293 li t0,2
+80003020: fc521ee3 bne tp,t0,80002ffc <test_23+0x4>
+80003024: 0ff01eb7 lui t4,0xff01
+80003028: ff0e8e93 addi t4,t4,-16 # ff00ff0 <_start-0x700ff010>
+8000302c: 01700193 li gp,23
+80003030: 07df1863 bne t5,t4,800030a0 <fail>
+
+80003034 <test_24>:
+80003034: ff0100b7 lui ra,0xff010
+80003038: f0008093 addi ra,ra,-256 # ff00ff00 <_end+0x7f009b08>
+8000303c: 00104133 xor sp,zero,ra
+80003040: ff010eb7 lui t4,0xff010
+80003044: f00e8e93 addi t4,t4,-256 # ff00ff00 <_end+0x7f009b08>
+80003048: 01800193 li gp,24
+8000304c: 05d11a63 bne sp,t4,800030a0 <fail>
+
+80003050 <test_25>:
+80003050: 00ff00b7 lui ra,0xff0
+80003054: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80003058: 0000c133 xor sp,ra,zero
+8000305c: 00ff0eb7 lui t4,0xff0
+80003060: 0ffe8e93 addi t4,t4,255 # ff00ff <_start-0x7f00ff01>
+80003064: 01900193 li gp,25
+80003068: 03d11c63 bne sp,t4,800030a0 <fail>
+
+8000306c <test_26>:
+8000306c: 000040b3 xor ra,zero,zero
+80003070: 00000e93 li t4,0
+80003074: 01a00193 li gp,26
+80003078: 03d09463 bne ra,t4,800030a0 <fail>
+
+8000307c <test_27>:
+8000307c: 111110b7 lui ra,0x11111
+80003080: 11108093 addi ra,ra,273 # 11111111 <_start-0x6eeeeeef>
+80003084: 22222137 lui sp,0x22222
+80003088: 22210113 addi sp,sp,546 # 22222222 <_start-0x5dddddde>
+8000308c: 0020c033 xor zero,ra,sp
+80003090: 00000e93 li t4,0
+80003094: 01b00193 li gp,27
+80003098: 01d01463 bne zero,t4,800030a0 <fail>
+8000309c: 00301a63 bne zero,gp,800030b0 <pass>
+
+800030a0 <fail>:
+800030a0: 00119513 slli a0,gp,0x1
+800030a4: 00050063 beqz a0,800030a4 <fail+0x4>
+800030a8: 00156513 ori a0,a0,1
+800030ac: 00000073 ecall
+
+800030b0 <pass>:
+800030b0: 00100513 li a0,1
+800030b4: 00000073 ecall
+800030b8: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-xor.elf b/test/riscv-tests/rv32ui-v-xor.elf
new file mode 100644
index 0000000..ca52493
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-xor.elf
Binary files differ
diff --git a/test/riscv-tests/rv32ui-v-xori.dump b/test/riscv-tests/rv32ui-v-xori.dump
new file mode 100644
index 0000000..1bf5b8a
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-xori.dump
@@ -0,0 +1,1055 @@
+
+rv32ui-v-xori: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 91858593 addi a1,a1,-1768 # 80002de0 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 93458593 addi a1,a1,-1740 # 80002e6c <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: 8e058593 addi a1,a1,-1824 # 80002e84 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: 81458593 addi a1,a1,-2028 # 80002e24 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: 80458593 addi a1,a1,-2044 # 80002f4c <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 76c58593 addi a1,a1,1900 # 80002f28 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 66860613 addi a2,a2,1640 # 80002f78 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 57860613 addi a2,a2,1400 # 80002ef4 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 4f860613 addi a2,a2,1272 # 80002ec0 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 01200793 li a5,18
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0d5857b7 lui a5,0xd585
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 22078793 addi a5,a5,544 # d585220 <_start-0x72a7ade0>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00ff10b7 lui ra,0xff1
+80002be4: f0008093 addi ra,ra,-256 # ff0f00 <_start-0x7f00f100>
+80002be8: f0f0cf13 xori t5,ra,-241
+80002bec: ff00feb7 lui t4,0xff00f
+80002bf0: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f009c17>
+80002bf4: 00200193 li gp,2
+80002bf8: 1ddf1663 bne t5,t4,80002dc4 <fail>
+
+80002bfc <test_3>:
+80002bfc: 0ff010b7 lui ra,0xff01
+80002c00: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c04: 0f00cf13 xori t5,ra,240
+80002c08: 0ff01eb7 lui t4,0xff01
+80002c0c: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100>
+80002c10: 00300193 li gp,3
+80002c14: 1bdf1863 bne t5,t4,80002dc4 <fail>
+
+80002c18 <test_4>:
+80002c18: 00ff10b7 lui ra,0xff1
+80002c1c: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701>
+80002c20: 70f0cf13 xori t5,ra,1807
+80002c24: 00ff1eb7 lui t4,0xff1
+80002c28: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010>
+80002c2c: 00400193 li gp,4
+80002c30: 19df1a63 bne t5,t4,80002dc4 <fail>
+
+80002c34 <test_5>:
+80002c34: f00ff0b7 lui ra,0xf00ff
+80002c38: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002c3c: 0f00cf13 xori t5,ra,240
+80002c40: f00ffeb7 lui t4,0xf00ff
+80002c44: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07>
+80002c48: 00500193 li gp,5
+80002c4c: 17df1c63 bne t5,t4,80002dc4 <fail>
+
+80002c50 <test_6>:
+80002c50: ff00f0b7 lui ra,0xff00f
+80002c54: 70008093 addi ra,ra,1792 # ff00f700 <_end+0x7f00a308>
+80002c58: 70f0c093 xori ra,ra,1807
+80002c5c: ff00feb7 lui t4,0xff00f
+80002c60: 00fe8e93 addi t4,t4,15 # ff00f00f <_end+0x7f009c17>
+80002c64: 00600193 li gp,6
+80002c68: 15d09e63 bne ra,t4,80002dc4 <fail>
+
+80002c6c <test_7>:
+80002c6c: 00000213 li tp,0
+80002c70: 0ff010b7 lui ra,0xff01
+80002c74: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002c78: 0f00cf13 xori t5,ra,240
+80002c7c: 000f0313 mv t1,t5
+80002c80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002c84: 00200293 li t0,2
+80002c88: fe5214e3 bne tp,t0,80002c70 <test_7+0x4>
+80002c8c: 0ff01eb7 lui t4,0xff01
+80002c90: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100>
+80002c94: 00700193 li gp,7
+80002c98: 13d31663 bne t1,t4,80002dc4 <fail>
+
+80002c9c <test_8>:
+80002c9c: 00000213 li tp,0
+80002ca0: 00ff10b7 lui ra,0xff1
+80002ca4: 8ff08093 addi ra,ra,-1793 # ff08ff <_start-0x7f00f701>
+80002ca8: 70f0cf13 xori t5,ra,1807
+80002cac: 00000013 nop
+80002cb0: 000f0313 mv t1,t5
+80002cb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cb8: 00200293 li t0,2
+80002cbc: fe5212e3 bne tp,t0,80002ca0 <test_8+0x4>
+80002cc0: 00ff1eb7 lui t4,0xff1
+80002cc4: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010>
+80002cc8: 00800193 li gp,8
+80002ccc: 0fd31c63 bne t1,t4,80002dc4 <fail>
+
+80002cd0 <test_9>:
+80002cd0: 00000213 li tp,0
+80002cd4: f00ff0b7 lui ra,0xf00ff
+80002cd8: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002cdc: 0f00cf13 xori t5,ra,240
+80002ce0: 00000013 nop
+80002ce4: 00000013 nop
+80002ce8: 000f0313 mv t1,t5
+80002cec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002cf0: 00200293 li t0,2
+80002cf4: fe5210e3 bne tp,t0,80002cd4 <test_9+0x4>
+80002cf8: f00ffeb7 lui t4,0xf00ff
+80002cfc: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07>
+80002d00: 00900193 li gp,9
+80002d04: 0dd31063 bne t1,t4,80002dc4 <fail>
+
+80002d08 <test_10>:
+80002d08: 00000213 li tp,0
+80002d0c: 0ff010b7 lui ra,0xff01
+80002d10: ff008093 addi ra,ra,-16 # ff00ff0 <_start-0x700ff010>
+80002d14: 0f00cf13 xori t5,ra,240
+80002d18: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d1c: 00200293 li t0,2
+80002d20: fe5216e3 bne tp,t0,80002d0c <test_10+0x4>
+80002d24: 0ff01eb7 lui t4,0xff01
+80002d28: f00e8e93 addi t4,t4,-256 # ff00f00 <_start-0x700ff100>
+80002d2c: 00a00193 li gp,10
+80002d30: 09df1a63 bne t5,t4,80002dc4 <fail>
+
+80002d34 <test_11>:
+80002d34: 00000213 li tp,0
+80002d38: 00ff10b7 lui ra,0xff1
+80002d3c: fff08093 addi ra,ra,-1 # ff0fff <_start-0x7f00f001>
+80002d40: 00000013 nop
+80002d44: 00f0cf13 xori t5,ra,15
+80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d4c: 00200293 li t0,2
+80002d50: fe5214e3 bne tp,t0,80002d38 <test_11+0x4>
+80002d54: 00ff1eb7 lui t4,0xff1
+80002d58: ff0e8e93 addi t4,t4,-16 # ff0ff0 <_start-0x7f00f010>
+80002d5c: 00b00193 li gp,11
+80002d60: 07df1263 bne t5,t4,80002dc4 <fail>
+
+80002d64 <test_12>:
+80002d64: 00000213 li tp,0
+80002d68: f00ff0b7 lui ra,0xf00ff
+80002d6c: 00f08093 addi ra,ra,15 # f00ff00f <_end+0x700f9c17>
+80002d70: 00000013 nop
+80002d74: 00000013 nop
+80002d78: 0f00cf13 xori t5,ra,240
+80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d80: 00200293 li t0,2
+80002d84: fe5212e3 bne tp,t0,80002d68 <test_12+0x4>
+80002d88: f00ffeb7 lui t4,0xf00ff
+80002d8c: 0ffe8e93 addi t4,t4,255 # f00ff0ff <_end+0x700f9d07>
+80002d90: 00c00193 li gp,12
+80002d94: 03df1863 bne t5,t4,80002dc4 <fail>
+
+80002d98 <test_13>:
+80002d98: 0f004093 xori ra,zero,240
+80002d9c: 0f000e93 li t4,240
+80002da0: 00d00193 li gp,13
+80002da4: 03d09063 bne ra,t4,80002dc4 <fail>
+
+80002da8 <test_14>:
+80002da8: 00ff00b7 lui ra,0xff0
+80002dac: 0ff08093 addi ra,ra,255 # ff00ff <_start-0x7f00ff01>
+80002db0: 70f0c013 xori zero,ra,1807
+80002db4: 00000e93 li t4,0
+80002db8: 00e00193 li gp,14
+80002dbc: 01d01463 bne zero,t4,80002dc4 <fail>
+80002dc0: 00301a63 bne zero,gp,80002dd4 <pass>
+
+80002dc4 <fail>:
+80002dc4: 00119513 slli a0,gp,0x1
+80002dc8: 00050063 beqz a0,80002dc8 <fail+0x4>
+80002dcc: 00156513 ori a0,a0,1
+80002dd0: 00000073 ecall
+
+80002dd4 <pass>:
+80002dd4: 00100513 li a0,1
+80002dd8: 00000073 ecall
+80002ddc: c0001073 unimp
diff --git a/test/riscv-tests/rv32ui-v-xori.elf b/test/riscv-tests/rv32ui-v-xori.elf
new file mode 100644
index 0000000..a2d4e47
--- /dev/null
+++ b/test/riscv-tests/rv32ui-v-xori.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-div.dump b/test/riscv-tests/rv32um-p-div.dump
new file mode 100644
index 0000000..74276c6
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-div.dump
@@ -0,0 +1,168 @@
+
+rv32um-p-div: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 01400093 li ra,20
+80000100: 00600113 li sp,6
+80000104: 0220cf33 div t5,ra,sp
+80000108: 00300e93 li t4,3
+8000010c: 00200193 li gp,2
+80000110: 0ddf1463 bne t5,t4,800001d8 <fail>
+
+80000114 <test_3>:
+80000114: fec00093 li ra,-20
+80000118: 00600113 li sp,6
+8000011c: 0220cf33 div t5,ra,sp
+80000120: ffd00e93 li t4,-3
+80000124: 00300193 li gp,3
+80000128: 0bdf1863 bne t5,t4,800001d8 <fail>
+
+8000012c <test_4>:
+8000012c: 01400093 li ra,20
+80000130: ffa00113 li sp,-6
+80000134: 0220cf33 div t5,ra,sp
+80000138: ffd00e93 li t4,-3
+8000013c: 00400193 li gp,4
+80000140: 09df1c63 bne t5,t4,800001d8 <fail>
+
+80000144 <test_5>:
+80000144: fec00093 li ra,-20
+80000148: ffa00113 li sp,-6
+8000014c: 0220cf33 div t5,ra,sp
+80000150: 00300e93 li t4,3
+80000154: 00500193 li gp,5
+80000158: 09df1063 bne t5,t4,800001d8 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00100113 li sp,1
+80000164: 0220cf33 div t5,ra,sp
+80000168: 80000eb7 lui t4,0x80000
+8000016c: 00600193 li gp,6
+80000170: 07df1463 bne t5,t4,800001d8 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: fff00113 li sp,-1
+8000017c: 0220cf33 div t5,ra,sp
+80000180: 80000eb7 lui t4,0x80000
+80000184: 00700193 li gp,7
+80000188: 05df1863 bne t5,t4,800001d8 <fail>
+
+8000018c <test_8>:
+8000018c: 800000b7 lui ra,0x80000
+80000190: 00000113 li sp,0
+80000194: 0220cf33 div t5,ra,sp
+80000198: fff00e93 li t4,-1
+8000019c: 00800193 li gp,8
+800001a0: 03df1c63 bne t5,t4,800001d8 <fail>
+
+800001a4 <test_9>:
+800001a4: 00100093 li ra,1
+800001a8: 00000113 li sp,0
+800001ac: 0220cf33 div t5,ra,sp
+800001b0: fff00e93 li t4,-1
+800001b4: 00900193 li gp,9
+800001b8: 03df1063 bne t5,t4,800001d8 <fail>
+
+800001bc <test_10>:
+800001bc: 00000093 li ra,0
+800001c0: 00000113 li sp,0
+800001c4: 0220cf33 div t5,ra,sp
+800001c8: fff00e93 li t4,-1
+800001cc: 00a00193 li gp,10
+800001d0: 01df1463 bne t5,t4,800001d8 <fail>
+800001d4: 00301c63 bne zero,gp,800001ec <pass>
+
+800001d8 <fail>:
+800001d8: 0ff0000f fence
+800001dc: 00018063 beqz gp,800001dc <fail+0x4>
+800001e0: 00119193 slli gp,gp,0x1
+800001e4: 0011e193 ori gp,gp,1
+800001e8: 00000073 ecall
+
+800001ec <pass>:
+800001ec: 0ff0000f fence
+800001f0: 00100193 li gp,1
+800001f4: 00000073 ecall
+800001f8: c0001073 unimp
+800001fc: 0000 unimp
+800001fe: 0000 unimp
+80000200: 0000 unimp
+80000202: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-div.elf b/test/riscv-tests/rv32um-p-div.elf
new file mode 100644
index 0000000..121c055
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-div.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-divu.dump b/test/riscv-tests/rv32um-p-divu.dump
new file mode 100644
index 0000000..c76a827
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-divu.dump
@@ -0,0 +1,167 @@
+
+rv32um-p-divu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 01400093 li ra,20
+80000100: 00600113 li sp,6
+80000104: 0220df33 divu t5,ra,sp
+80000108: 00300e93 li t4,3
+8000010c: 00200193 li gp,2
+80000110: 0ddf1663 bne t5,t4,800001dc <fail>
+
+80000114 <test_3>:
+80000114: fec00093 li ra,-20
+80000118: 00600113 li sp,6
+8000011c: 0220df33 divu t5,ra,sp
+80000120: 2aaabeb7 lui t4,0x2aaab
+80000124: aa7e8e93 addi t4,t4,-1369 # 2aaaaaa7 <_start-0x55555559>
+80000128: 00300193 li gp,3
+8000012c: 0bdf1863 bne t5,t4,800001dc <fail>
+
+80000130 <test_4>:
+80000130: 01400093 li ra,20
+80000134: ffa00113 li sp,-6
+80000138: 0220df33 divu t5,ra,sp
+8000013c: 00000e93 li t4,0
+80000140: 00400193 li gp,4
+80000144: 09df1c63 bne t5,t4,800001dc <fail>
+
+80000148 <test_5>:
+80000148: fec00093 li ra,-20
+8000014c: ffa00113 li sp,-6
+80000150: 0220df33 divu t5,ra,sp
+80000154: 00000e93 li t4,0
+80000158: 00500193 li gp,5
+8000015c: 09df1063 bne t5,t4,800001dc <fail>
+
+80000160 <test_6>:
+80000160: 800000b7 lui ra,0x80000
+80000164: 00100113 li sp,1
+80000168: 0220df33 divu t5,ra,sp
+8000016c: 80000eb7 lui t4,0x80000
+80000170: 00600193 li gp,6
+80000174: 07df1463 bne t5,t4,800001dc <fail>
+
+80000178 <test_7>:
+80000178: 800000b7 lui ra,0x80000
+8000017c: fff00113 li sp,-1
+80000180: 0220df33 divu t5,ra,sp
+80000184: 00000e93 li t4,0
+80000188: 00700193 li gp,7
+8000018c: 05df1863 bne t5,t4,800001dc <fail>
+
+80000190 <test_8>:
+80000190: 800000b7 lui ra,0x80000
+80000194: 00000113 li sp,0
+80000198: 0220df33 divu t5,ra,sp
+8000019c: fff00e93 li t4,-1
+800001a0: 00800193 li gp,8
+800001a4: 03df1c63 bne t5,t4,800001dc <fail>
+
+800001a8 <test_9>:
+800001a8: 00100093 li ra,1
+800001ac: 00000113 li sp,0
+800001b0: 0220df33 divu t5,ra,sp
+800001b4: fff00e93 li t4,-1
+800001b8: 00900193 li gp,9
+800001bc: 03df1063 bne t5,t4,800001dc <fail>
+
+800001c0 <test_10>:
+800001c0: 00000093 li ra,0
+800001c4: 00000113 li sp,0
+800001c8: 0220df33 divu t5,ra,sp
+800001cc: fff00e93 li t4,-1
+800001d0: 00a00193 li gp,10
+800001d4: 01df1463 bne t5,t4,800001dc <fail>
+800001d8: 00301c63 bne zero,gp,800001f0 <pass>
+
+800001dc <fail>:
+800001dc: 0ff0000f fence
+800001e0: 00018063 beqz gp,800001e0 <fail+0x4>
+800001e4: 00119193 slli gp,gp,0x1
+800001e8: 0011e193 ori gp,gp,1
+800001ec: 00000073 ecall
+
+800001f0 <pass>:
+800001f0: 0ff0000f fence
+800001f4: 00100193 li gp,1
+800001f8: 00000073 ecall
+800001fc: c0001073 unimp
+80000200: 0000 unimp
+80000202: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-divu.elf b/test/riscv-tests/rv32um-p-divu.elf
new file mode 100644
index 0000000..0c3335f
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-divu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-mul.dump b/test/riscv-tests/rv32um-p-mul.dump
new file mode 100644
index 0000000..e2ff04d
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mul.dump
@@ -0,0 +1,483 @@
+
+rv32um-p-mul: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_32>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_32>:
+800000fc: 000080b7 lui ra,0x8
+80000100: e0008093 addi ra,ra,-512 # 7e00 <_start-0x7fff8200>
+80000104: b6db7137 lui sp,0xb6db7
+80000108: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db4db7>
+8000010c: 02208f33 mul t5,ra,sp
+80000110: 00001eb7 lui t4,0x1
+80000114: 200e8e93 addi t4,t4,512 # 1200 <_start-0x7fffee00>
+80000118: 02000193 li gp,32
+8000011c: 4bdf1463 bne t5,t4,800005c4 <fail>
+
+80000120 <test_33>:
+80000120: 000080b7 lui ra,0x8
+80000124: fc008093 addi ra,ra,-64 # 7fc0 <_start-0x7fff8040>
+80000128: b6db7137 lui sp,0xb6db7
+8000012c: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db4db7>
+80000130: 02208f33 mul t5,ra,sp
+80000134: 00001eb7 lui t4,0x1
+80000138: 240e8e93 addi t4,t4,576 # 1240 <_start-0x7fffedc0>
+8000013c: 02100193 li gp,33
+80000140: 49df1263 bne t5,t4,800005c4 <fail>
+
+80000144 <test_2>:
+80000144: 00000093 li ra,0
+80000148: 00000113 li sp,0
+8000014c: 02208f33 mul t5,ra,sp
+80000150: 00000e93 li t4,0
+80000154: 00200193 li gp,2
+80000158: 47df1663 bne t5,t4,800005c4 <fail>
+
+8000015c <test_3>:
+8000015c: 00100093 li ra,1
+80000160: 00100113 li sp,1
+80000164: 02208f33 mul t5,ra,sp
+80000168: 00100e93 li t4,1
+8000016c: 00300193 li gp,3
+80000170: 45df1a63 bne t5,t4,800005c4 <fail>
+
+80000174 <test_4>:
+80000174: 00300093 li ra,3
+80000178: 00700113 li sp,7
+8000017c: 02208f33 mul t5,ra,sp
+80000180: 01500e93 li t4,21
+80000184: 00400193 li gp,4
+80000188: 43df1e63 bne t5,t4,800005c4 <fail>
+
+8000018c <test_5>:
+8000018c: 00000093 li ra,0
+80000190: ffff8137 lui sp,0xffff8
+80000194: 02208f33 mul t5,ra,sp
+80000198: 00000e93 li t4,0
+8000019c: 00500193 li gp,5
+800001a0: 43df1263 bne t5,t4,800005c4 <fail>
+
+800001a4 <test_6>:
+800001a4: 800000b7 lui ra,0x80000
+800001a8: 00000113 li sp,0
+800001ac: 02208f33 mul t5,ra,sp
+800001b0: 00000e93 li t4,0
+800001b4: 00600193 li gp,6
+800001b8: 41df1663 bne t5,t4,800005c4 <fail>
+
+800001bc <test_7>:
+800001bc: 800000b7 lui ra,0x80000
+800001c0: ffff8137 lui sp,0xffff8
+800001c4: 02208f33 mul t5,ra,sp
+800001c8: 00000e93 li t4,0
+800001cc: 00700193 li gp,7
+800001d0: 3fdf1a63 bne t5,t4,800005c4 <fail>
+
+800001d4 <test_30>:
+800001d4: aaaab0b7 lui ra,0xaaaab
+800001d8: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab>
+800001dc: 00030137 lui sp,0x30
+800001e0: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+800001e4: 02208f33 mul t5,ra,sp
+800001e8: 00010eb7 lui t4,0x10
+800001ec: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081>
+800001f0: 01e00193 li gp,30
+800001f4: 3ddf1863 bne t5,t4,800005c4 <fail>
+
+800001f8 <test_31>:
+800001f8: 000300b7 lui ra,0x30
+800001fc: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+80000200: aaaab137 lui sp,0xaaaab
+80000204: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab>
+80000208: 02208f33 mul t5,ra,sp
+8000020c: 00010eb7 lui t4,0x10
+80000210: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081>
+80000214: 01f00193 li gp,31
+80000218: 3bdf1663 bne t5,t4,800005c4 <fail>
+
+8000021c <test_34>:
+8000021c: ff0000b7 lui ra,0xff000
+80000220: ff000137 lui sp,0xff000
+80000224: 02208f33 mul t5,ra,sp
+80000228: 00000e93 li t4,0
+8000022c: 02200193 li gp,34
+80000230: 39df1a63 bne t5,t4,800005c4 <fail>
+
+80000234 <test_35>:
+80000234: fff00093 li ra,-1
+80000238: fff00113 li sp,-1
+8000023c: 02208f33 mul t5,ra,sp
+80000240: 00100e93 li t4,1
+80000244: 02300193 li gp,35
+80000248: 37df1e63 bne t5,t4,800005c4 <fail>
+
+8000024c <test_36>:
+8000024c: fff00093 li ra,-1
+80000250: 00100113 li sp,1
+80000254: 02208f33 mul t5,ra,sp
+80000258: fff00e93 li t4,-1
+8000025c: 02400193 li gp,36
+80000260: 37df1263 bne t5,t4,800005c4 <fail>
+
+80000264 <test_37>:
+80000264: 00100093 li ra,1
+80000268: fff00113 li sp,-1
+8000026c: 02208f33 mul t5,ra,sp
+80000270: fff00e93 li t4,-1
+80000274: 02500193 li gp,37
+80000278: 35df1663 bne t5,t4,800005c4 <fail>
+
+8000027c <test_8>:
+8000027c: 00d00093 li ra,13
+80000280: 00b00113 li sp,11
+80000284: 022080b3 mul ra,ra,sp
+80000288: 08f00e93 li t4,143
+8000028c: 00800193 li gp,8
+80000290: 33d09a63 bne ra,t4,800005c4 <fail>
+
+80000294 <test_9>:
+80000294: 00e00093 li ra,14
+80000298: 00b00113 li sp,11
+8000029c: 02208133 mul sp,ra,sp
+800002a0: 09a00e93 li t4,154
+800002a4: 00900193 li gp,9
+800002a8: 31d11e63 bne sp,t4,800005c4 <fail>
+
+800002ac <test_10>:
+800002ac: 00d00093 li ra,13
+800002b0: 021080b3 mul ra,ra,ra
+800002b4: 0a900e93 li t4,169
+800002b8: 00a00193 li gp,10
+800002bc: 31d09463 bne ra,t4,800005c4 <fail>
+
+800002c0 <test_11>:
+800002c0: 00000213 li tp,0
+800002c4: 00d00093 li ra,13
+800002c8: 00b00113 li sp,11
+800002cc: 02208f33 mul t5,ra,sp
+800002d0: 000f0313 mv t1,t5
+800002d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d8: 00200293 li t0,2
+800002dc: fe5214e3 bne tp,t0,800002c4 <test_11+0x4>
+800002e0: 08f00e93 li t4,143
+800002e4: 00b00193 li gp,11
+800002e8: 2dd31e63 bne t1,t4,800005c4 <fail>
+
+800002ec <test_12>:
+800002ec: 00000213 li tp,0
+800002f0: 00e00093 li ra,14
+800002f4: 00b00113 li sp,11
+800002f8: 02208f33 mul t5,ra,sp
+800002fc: 00000013 nop
+80000300: 000f0313 mv t1,t5
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5212e3 bne tp,t0,800002f0 <test_12+0x4>
+80000310: 09a00e93 li t4,154
+80000314: 00c00193 li gp,12
+80000318: 2bd31663 bne t1,t4,800005c4 <fail>
+
+8000031c <test_13>:
+8000031c: 00000213 li tp,0
+80000320: 00f00093 li ra,15
+80000324: 00b00113 li sp,11
+80000328: 02208f33 mul t5,ra,sp
+8000032c: 00000013 nop
+80000330: 00000013 nop
+80000334: 000f0313 mv t1,t5
+80000338: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000033c: 00200293 li t0,2
+80000340: fe5210e3 bne tp,t0,80000320 <test_13+0x4>
+80000344: 0a500e93 li t4,165
+80000348: 00d00193 li gp,13
+8000034c: 27d31c63 bne t1,t4,800005c4 <fail>
+
+80000350 <test_14>:
+80000350: 00000213 li tp,0
+80000354: 00d00093 li ra,13
+80000358: 00b00113 li sp,11
+8000035c: 02208f33 mul t5,ra,sp
+80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000364: 00200293 li t0,2
+80000368: fe5216e3 bne tp,t0,80000354 <test_14+0x4>
+8000036c: 08f00e93 li t4,143
+80000370: 00e00193 li gp,14
+80000374: 25df1863 bne t5,t4,800005c4 <fail>
+
+80000378 <test_15>:
+80000378: 00000213 li tp,0
+8000037c: 00e00093 li ra,14
+80000380: 00b00113 li sp,11
+80000384: 00000013 nop
+80000388: 02208f33 mul t5,ra,sp
+8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000390: 00200293 li t0,2
+80000394: fe5214e3 bne tp,t0,8000037c <test_15+0x4>
+80000398: 09a00e93 li t4,154
+8000039c: 00f00193 li gp,15
+800003a0: 23df1263 bne t5,t4,800005c4 <fail>
+
+800003a4 <test_16>:
+800003a4: 00000213 li tp,0
+800003a8: 00f00093 li ra,15
+800003ac: 00b00113 li sp,11
+800003b0: 00000013 nop
+800003b4: 00000013 nop
+800003b8: 02208f33 mul t5,ra,sp
+800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c0: 00200293 li t0,2
+800003c4: fe5212e3 bne tp,t0,800003a8 <test_16+0x4>
+800003c8: 0a500e93 li t4,165
+800003cc: 01000193 li gp,16
+800003d0: 1fdf1a63 bne t5,t4,800005c4 <fail>
+
+800003d4 <test_17>:
+800003d4: 00000213 li tp,0
+800003d8: 00d00093 li ra,13
+800003dc: 00000013 nop
+800003e0: 00b00113 li sp,11
+800003e4: 02208f33 mul t5,ra,sp
+800003e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003ec: 00200293 li t0,2
+800003f0: fe5214e3 bne tp,t0,800003d8 <test_17+0x4>
+800003f4: 08f00e93 li t4,143
+800003f8: 01100193 li gp,17
+800003fc: 1ddf1463 bne t5,t4,800005c4 <fail>
+
+80000400 <test_18>:
+80000400: 00000213 li tp,0
+80000404: 00e00093 li ra,14
+80000408: 00000013 nop
+8000040c: 00b00113 li sp,11
+80000410: 00000013 nop
+80000414: 02208f33 mul t5,ra,sp
+80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000041c: 00200293 li t0,2
+80000420: fe5212e3 bne tp,t0,80000404 <test_18+0x4>
+80000424: 09a00e93 li t4,154
+80000428: 01200193 li gp,18
+8000042c: 19df1c63 bne t5,t4,800005c4 <fail>
+
+80000430 <test_19>:
+80000430: 00000213 li tp,0
+80000434: 00f00093 li ra,15
+80000438: 00000013 nop
+8000043c: 00000013 nop
+80000440: 00b00113 li sp,11
+80000444: 02208f33 mul t5,ra,sp
+80000448: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000044c: 00200293 li t0,2
+80000450: fe5212e3 bne tp,t0,80000434 <test_19+0x4>
+80000454: 0a500e93 li t4,165
+80000458: 01300193 li gp,19
+8000045c: 17df1463 bne t5,t4,800005c4 <fail>
+
+80000460 <test_20>:
+80000460: 00000213 li tp,0
+80000464: 00b00113 li sp,11
+80000468: 00d00093 li ra,13
+8000046c: 02208f33 mul t5,ra,sp
+80000470: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000474: 00200293 li t0,2
+80000478: fe5216e3 bne tp,t0,80000464 <test_20+0x4>
+8000047c: 08f00e93 li t4,143
+80000480: 01400193 li gp,20
+80000484: 15df1063 bne t5,t4,800005c4 <fail>
+
+80000488 <test_21>:
+80000488: 00000213 li tp,0
+8000048c: 00b00113 li sp,11
+80000490: 00e00093 li ra,14
+80000494: 00000013 nop
+80000498: 02208f33 mul t5,ra,sp
+8000049c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004a0: 00200293 li t0,2
+800004a4: fe5214e3 bne tp,t0,8000048c <test_21+0x4>
+800004a8: 09a00e93 li t4,154
+800004ac: 01500193 li gp,21
+800004b0: 11df1a63 bne t5,t4,800005c4 <fail>
+
+800004b4 <test_22>:
+800004b4: 00000213 li tp,0
+800004b8: 00b00113 li sp,11
+800004bc: 00f00093 li ra,15
+800004c0: 00000013 nop
+800004c4: 00000013 nop
+800004c8: 02208f33 mul t5,ra,sp
+800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004d0: 00200293 li t0,2
+800004d4: fe5212e3 bne tp,t0,800004b8 <test_22+0x4>
+800004d8: 0a500e93 li t4,165
+800004dc: 01600193 li gp,22
+800004e0: 0fdf1263 bne t5,t4,800005c4 <fail>
+
+800004e4 <test_23>:
+800004e4: 00000213 li tp,0
+800004e8: 00b00113 li sp,11
+800004ec: 00000013 nop
+800004f0: 00d00093 li ra,13
+800004f4: 02208f33 mul t5,ra,sp
+800004f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004fc: 00200293 li t0,2
+80000500: fe5214e3 bne tp,t0,800004e8 <test_23+0x4>
+80000504: 08f00e93 li t4,143
+80000508: 01700193 li gp,23
+8000050c: 0bdf1c63 bne t5,t4,800005c4 <fail>
+
+80000510 <test_24>:
+80000510: 00000213 li tp,0
+80000514: 00b00113 li sp,11
+80000518: 00000013 nop
+8000051c: 00e00093 li ra,14
+80000520: 00000013 nop
+80000524: 02208f33 mul t5,ra,sp
+80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000052c: 00200293 li t0,2
+80000530: fe5212e3 bne tp,t0,80000514 <test_24+0x4>
+80000534: 09a00e93 li t4,154
+80000538: 01800193 li gp,24
+8000053c: 09df1463 bne t5,t4,800005c4 <fail>
+
+80000540 <test_25>:
+80000540: 00000213 li tp,0
+80000544: 00b00113 li sp,11
+80000548: 00000013 nop
+8000054c: 00000013 nop
+80000550: 00f00093 li ra,15
+80000554: 02208f33 mul t5,ra,sp
+80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000055c: 00200293 li t0,2
+80000560: fe5212e3 bne tp,t0,80000544 <test_25+0x4>
+80000564: 0a500e93 li t4,165
+80000568: 01900193 li gp,25
+8000056c: 05df1c63 bne t5,t4,800005c4 <fail>
+
+80000570 <test_26>:
+80000570: 01f00093 li ra,31
+80000574: 02100133 mul sp,zero,ra
+80000578: 00000e93 li t4,0
+8000057c: 01a00193 li gp,26
+80000580: 05d11263 bne sp,t4,800005c4 <fail>
+
+80000584 <test_27>:
+80000584: 02000093 li ra,32
+80000588: 02008133 mul sp,ra,zero
+8000058c: 00000e93 li t4,0
+80000590: 01b00193 li gp,27
+80000594: 03d11863 bne sp,t4,800005c4 <fail>
+
+80000598 <test_28>:
+80000598: 020000b3 mul ra,zero,zero
+8000059c: 00000e93 li t4,0
+800005a0: 01c00193 li gp,28
+800005a4: 03d09063 bne ra,t4,800005c4 <fail>
+
+800005a8 <test_29>:
+800005a8: 02100093 li ra,33
+800005ac: 02200113 li sp,34
+800005b0: 02208033 mul zero,ra,sp
+800005b4: 00000e93 li t4,0
+800005b8: 01d00193 li gp,29
+800005bc: 01d01463 bne zero,t4,800005c4 <fail>
+800005c0: 00301c63 bne zero,gp,800005d8 <pass>
+
+800005c4 <fail>:
+800005c4: 0ff0000f fence
+800005c8: 00018063 beqz gp,800005c8 <fail+0x4>
+800005cc: 00119193 slli gp,gp,0x1
+800005d0: 0011e193 ori gp,gp,1
+800005d4: 00000073 ecall
+
+800005d8 <pass>:
+800005d8: 0ff0000f fence
+800005dc: 00100193 li gp,1
+800005e0: 00000073 ecall
+800005e4: c0001073 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-mul.elf b/test/riscv-tests/rv32um-p-mul.elf
new file mode 100644
index 0000000..75eebf3
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mul.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-mulh.dump b/test/riscv-tests/rv32um-p-mulh.dump
new file mode 100644
index 0000000..7e26092
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mulh.dump
@@ -0,0 +1,479 @@
+
+rv32um-p-mulh: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 02209f33 mulh t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 02209f33 mulh t5,ra,sp
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 49df1e63 bne t5,t4,800005c4 <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 02209f33 mulh t5,ra,sp
+80000138: 00000e93 li t4,0
+8000013c: 00400193 li gp,4
+80000140: 49df1263 bne t5,t4,800005c4 <fail>
+
+80000144 <test_5>:
+80000144: 00000093 li ra,0
+80000148: ffff8137 lui sp,0xffff8
+8000014c: 02209f33 mulh t5,ra,sp
+80000150: 00000e93 li t4,0
+80000154: 00500193 li gp,5
+80000158: 47df1663 bne t5,t4,800005c4 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00000113 li sp,0
+80000164: 02209f33 mulh t5,ra,sp
+80000168: 00000e93 li t4,0
+8000016c: 00600193 li gp,6
+80000170: 45df1a63 bne t5,t4,800005c4 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: 00000113 li sp,0
+8000017c: 02209f33 mulh t5,ra,sp
+80000180: 00000e93 li t4,0
+80000184: 00700193 li gp,7
+80000188: 43df1e63 bne t5,t4,800005c4 <fail>
+
+8000018c <test_30>:
+8000018c: aaaab0b7 lui ra,0xaaaab
+80000190: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab>
+80000194: 00030137 lui sp,0x30
+80000198: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+8000019c: 02209f33 mulh t5,ra,sp
+800001a0: ffff0eb7 lui t4,0xffff0
+800001a4: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081>
+800001a8: 01e00193 li gp,30
+800001ac: 41df1c63 bne t5,t4,800005c4 <fail>
+
+800001b0 <test_31>:
+800001b0: 000300b7 lui ra,0x30
+800001b4: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+800001b8: aaaab137 lui sp,0xaaaab
+800001bc: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab>
+800001c0: 02209f33 mulh t5,ra,sp
+800001c4: ffff0eb7 lui t4,0xffff0
+800001c8: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081>
+800001cc: 01f00193 li gp,31
+800001d0: 3fdf1a63 bne t5,t4,800005c4 <fail>
+
+800001d4 <test_32>:
+800001d4: ff0000b7 lui ra,0xff000
+800001d8: ff000137 lui sp,0xff000
+800001dc: 02209f33 mulh t5,ra,sp
+800001e0: 00010eb7 lui t4,0x10
+800001e4: 02000193 li gp,32
+800001e8: 3ddf1e63 bne t5,t4,800005c4 <fail>
+
+800001ec <test_33>:
+800001ec: fff00093 li ra,-1
+800001f0: fff00113 li sp,-1
+800001f4: 02209f33 mulh t5,ra,sp
+800001f8: 00000e93 li t4,0
+800001fc: 02100193 li gp,33
+80000200: 3ddf1263 bne t5,t4,800005c4 <fail>
+
+80000204 <test_34>:
+80000204: fff00093 li ra,-1
+80000208: 00100113 li sp,1
+8000020c: 02209f33 mulh t5,ra,sp
+80000210: fff00e93 li t4,-1
+80000214: 02200193 li gp,34
+80000218: 3bdf1663 bne t5,t4,800005c4 <fail>
+
+8000021c <test_35>:
+8000021c: 00100093 li ra,1
+80000220: fff00113 li sp,-1
+80000224: 02209f33 mulh t5,ra,sp
+80000228: fff00e93 li t4,-1
+8000022c: 02300193 li gp,35
+80000230: 39df1a63 bne t5,t4,800005c4 <fail>
+
+80000234 <test_8>:
+80000234: 00d000b7 lui ra,0xd00
+80000238: 00b00137 lui sp,0xb00
+8000023c: 022090b3 mulh ra,ra,sp
+80000240: 00009eb7 lui t4,0x9
+80000244: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000248: 00800193 li gp,8
+8000024c: 37d09c63 bne ra,t4,800005c4 <fail>
+
+80000250 <test_9>:
+80000250: 00e000b7 lui ra,0xe00
+80000254: 00b00137 lui sp,0xb00
+80000258: 02209133 mulh sp,ra,sp
+8000025c: 0000aeb7 lui t4,0xa
+80000260: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000264: 00900193 li gp,9
+80000268: 35d11e63 bne sp,t4,800005c4 <fail>
+
+8000026c <test_10>:
+8000026c: 00d000b7 lui ra,0xd00
+80000270: 021090b3 mulh ra,ra,ra
+80000274: 0000beb7 lui t4,0xb
+80000278: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700>
+8000027c: 00a00193 li gp,10
+80000280: 35d09263 bne ra,t4,800005c4 <fail>
+
+80000284 <test_11>:
+80000284: 00000213 li tp,0
+80000288: 00d000b7 lui ra,0xd00
+8000028c: 00b00137 lui sp,0xb00
+80000290: 02209f33 mulh t5,ra,sp
+80000294: 000f0313 mv t1,t5
+80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000029c: 00200293 li t0,2
+800002a0: fe5214e3 bne tp,t0,80000288 <test_11+0x4>
+800002a4: 00009eb7 lui t4,0x9
+800002a8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+800002ac: 00b00193 li gp,11
+800002b0: 31d31a63 bne t1,t4,800005c4 <fail>
+
+800002b4 <test_12>:
+800002b4: 00000213 li tp,0
+800002b8: 00e000b7 lui ra,0xe00
+800002bc: 00b00137 lui sp,0xb00
+800002c0: 02209f33 mulh t5,ra,sp
+800002c4: 00000013 nop
+800002c8: 000f0313 mv t1,t5
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5212e3 bne tp,t0,800002b8 <test_12+0x4>
+800002d8: 0000aeb7 lui t4,0xa
+800002dc: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+800002e0: 00c00193 li gp,12
+800002e4: 2fd31063 bne t1,t4,800005c4 <fail>
+
+800002e8 <test_13>:
+800002e8: 00000213 li tp,0
+800002ec: 00f000b7 lui ra,0xf00
+800002f0: 00b00137 lui sp,0xb00
+800002f4: 02209f33 mulh t5,ra,sp
+800002f8: 00000013 nop
+800002fc: 00000013 nop
+80000300: 000f0313 mv t1,t5
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5210e3 bne tp,t0,800002ec <test_13+0x4>
+80000310: 0000aeb7 lui t4,0xa
+80000314: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000318: 00d00193 li gp,13
+8000031c: 2bd31463 bne t1,t4,800005c4 <fail>
+
+80000320 <test_14>:
+80000320: 00000213 li tp,0
+80000324: 00d000b7 lui ra,0xd00
+80000328: 00b00137 lui sp,0xb00
+8000032c: 02209f33 mulh t5,ra,sp
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fe5216e3 bne tp,t0,80000324 <test_14+0x4>
+8000033c: 00009eb7 lui t4,0x9
+80000340: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000344: 00e00193 li gp,14
+80000348: 27df1e63 bne t5,t4,800005c4 <fail>
+
+8000034c <test_15>:
+8000034c: 00000213 li tp,0
+80000350: 00e000b7 lui ra,0xe00
+80000354: 00b00137 lui sp,0xb00
+80000358: 00000013 nop
+8000035c: 02209f33 mulh t5,ra,sp
+80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000364: 00200293 li t0,2
+80000368: fe5214e3 bne tp,t0,80000350 <test_15+0x4>
+8000036c: 0000aeb7 lui t4,0xa
+80000370: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000374: 00f00193 li gp,15
+80000378: 25df1663 bne t5,t4,800005c4 <fail>
+
+8000037c <test_16>:
+8000037c: 00000213 li tp,0
+80000380: 00f000b7 lui ra,0xf00
+80000384: 00b00137 lui sp,0xb00
+80000388: 00000013 nop
+8000038c: 00000013 nop
+80000390: 02209f33 mulh t5,ra,sp
+80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000398: 00200293 li t0,2
+8000039c: fe5212e3 bne tp,t0,80000380 <test_16+0x4>
+800003a0: 0000aeb7 lui t4,0xa
+800003a4: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+800003a8: 01000193 li gp,16
+800003ac: 21df1c63 bne t5,t4,800005c4 <fail>
+
+800003b0 <test_17>:
+800003b0: 00000213 li tp,0
+800003b4: 00d000b7 lui ra,0xd00
+800003b8: 00000013 nop
+800003bc: 00b00137 lui sp,0xb00
+800003c0: 02209f33 mulh t5,ra,sp
+800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c8: 00200293 li t0,2
+800003cc: fe5214e3 bne tp,t0,800003b4 <test_17+0x4>
+800003d0: 00009eb7 lui t4,0x9
+800003d4: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+800003d8: 01100193 li gp,17
+800003dc: 1fdf1463 bne t5,t4,800005c4 <fail>
+
+800003e0 <test_18>:
+800003e0: 00000213 li tp,0
+800003e4: 00e000b7 lui ra,0xe00
+800003e8: 00000013 nop
+800003ec: 00b00137 lui sp,0xb00
+800003f0: 00000013 nop
+800003f4: 02209f33 mulh t5,ra,sp
+800003f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003fc: 00200293 li t0,2
+80000400: fe5212e3 bne tp,t0,800003e4 <test_18+0x4>
+80000404: 0000aeb7 lui t4,0xa
+80000408: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+8000040c: 01200193 li gp,18
+80000410: 1bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000414 <test_19>:
+80000414: 00000213 li tp,0
+80000418: 00f000b7 lui ra,0xf00
+8000041c: 00000013 nop
+80000420: 00000013 nop
+80000424: 00b00137 lui sp,0xb00
+80000428: 02209f33 mulh t5,ra,sp
+8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000430: 00200293 li t0,2
+80000434: fe5212e3 bne tp,t0,80000418 <test_19+0x4>
+80000438: 0000aeb7 lui t4,0xa
+8000043c: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000440: 01300193 li gp,19
+80000444: 19df1063 bne t5,t4,800005c4 <fail>
+
+80000448 <test_20>:
+80000448: 00000213 li tp,0
+8000044c: 00b00137 lui sp,0xb00
+80000450: 00d000b7 lui ra,0xd00
+80000454: 02209f33 mulh t5,ra,sp
+80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000045c: 00200293 li t0,2
+80000460: fe5216e3 bne tp,t0,8000044c <test_20+0x4>
+80000464: 00009eb7 lui t4,0x9
+80000468: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+8000046c: 01400193 li gp,20
+80000470: 15df1a63 bne t5,t4,800005c4 <fail>
+
+80000474 <test_21>:
+80000474: 00000213 li tp,0
+80000478: 00b00137 lui sp,0xb00
+8000047c: 00e000b7 lui ra,0xe00
+80000480: 00000013 nop
+80000484: 02209f33 mulh t5,ra,sp
+80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000048c: 00200293 li t0,2
+80000490: fe5214e3 bne tp,t0,80000478 <test_21+0x4>
+80000494: 0000aeb7 lui t4,0xa
+80000498: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+8000049c: 01500193 li gp,21
+800004a0: 13df1263 bne t5,t4,800005c4 <fail>
+
+800004a4 <test_22>:
+800004a4: 00000213 li tp,0
+800004a8: 00b00137 lui sp,0xb00
+800004ac: 00f000b7 lui ra,0xf00
+800004b0: 00000013 nop
+800004b4: 00000013 nop
+800004b8: 02209f33 mulh t5,ra,sp
+800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c0: 00200293 li t0,2
+800004c4: fe5212e3 bne tp,t0,800004a8 <test_22+0x4>
+800004c8: 0000aeb7 lui t4,0xa
+800004cc: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+800004d0: 01600193 li gp,22
+800004d4: 0fdf1863 bne t5,t4,800005c4 <fail>
+
+800004d8 <test_23>:
+800004d8: 00000213 li tp,0
+800004dc: 00b00137 lui sp,0xb00
+800004e0: 00000013 nop
+800004e4: 00d000b7 lui ra,0xd00
+800004e8: 02209f33 mulh t5,ra,sp
+800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004f0: 00200293 li t0,2
+800004f4: fe5214e3 bne tp,t0,800004dc <test_23+0x4>
+800004f8: 00009eb7 lui t4,0x9
+800004fc: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000500: 01700193 li gp,23
+80000504: 0ddf1063 bne t5,t4,800005c4 <fail>
+
+80000508 <test_24>:
+80000508: 00000213 li tp,0
+8000050c: 00b00137 lui sp,0xb00
+80000510: 00000013 nop
+80000514: 00e000b7 lui ra,0xe00
+80000518: 00000013 nop
+8000051c: 02209f33 mulh t5,ra,sp
+80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000524: 00200293 li t0,2
+80000528: fe5212e3 bne tp,t0,8000050c <test_24+0x4>
+8000052c: 0000aeb7 lui t4,0xa
+80000530: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000534: 01800193 li gp,24
+80000538: 09df1663 bne t5,t4,800005c4 <fail>
+
+8000053c <test_25>:
+8000053c: 00000213 li tp,0
+80000540: 00b00137 lui sp,0xb00
+80000544: 00000013 nop
+80000548: 00000013 nop
+8000054c: 00f000b7 lui ra,0xf00
+80000550: 02209f33 mulh t5,ra,sp
+80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000558: 00200293 li t0,2
+8000055c: fe5212e3 bne tp,t0,80000540 <test_25+0x4>
+80000560: 0000aeb7 lui t4,0xa
+80000564: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000568: 01900193 li gp,25
+8000056c: 05df1c63 bne t5,t4,800005c4 <fail>
+
+80000570 <test_26>:
+80000570: 7c0000b7 lui ra,0x7c000
+80000574: 02101133 mulh sp,zero,ra
+80000578: 00000e93 li t4,0
+8000057c: 01a00193 li gp,26
+80000580: 05d11263 bne sp,t4,800005c4 <fail>
+
+80000584 <test_27>:
+80000584: 800000b7 lui ra,0x80000
+80000588: 02009133 mulh sp,ra,zero
+8000058c: 00000e93 li t4,0
+80000590: 01b00193 li gp,27
+80000594: 03d11863 bne sp,t4,800005c4 <fail>
+
+80000598 <test_28>:
+80000598: 020010b3 mulh ra,zero,zero
+8000059c: 00000e93 li t4,0
+800005a0: 01c00193 li gp,28
+800005a4: 03d09063 bne ra,t4,800005c4 <fail>
+
+800005a8 <test_29>:
+800005a8: 021000b7 lui ra,0x2100
+800005ac: 02200137 lui sp,0x2200
+800005b0: 02209033 mulh zero,ra,sp
+800005b4: 00000e93 li t4,0
+800005b8: 01d00193 li gp,29
+800005bc: 01d01463 bne zero,t4,800005c4 <fail>
+800005c0: 00301c63 bne zero,gp,800005d8 <pass>
+
+800005c4 <fail>:
+800005c4: 0ff0000f fence
+800005c8: 00018063 beqz gp,800005c8 <fail+0x4>
+800005cc: 00119193 slli gp,gp,0x1
+800005d0: 0011e193 ori gp,gp,1
+800005d4: 00000073 ecall
+
+800005d8 <pass>:
+800005d8: 0ff0000f fence
+800005dc: 00100193 li gp,1
+800005e0: 00000073 ecall
+800005e4: c0001073 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-mulh.elf b/test/riscv-tests/rv32um-p-mulh.elf
new file mode 100644
index 0000000..38e8ca7
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mulh.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-mulhsu.dump b/test/riscv-tests/rv32um-p-mulhsu.dump
new file mode 100644
index 0000000..d0a5b7e
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mulhsu.dump
@@ -0,0 +1,479 @@
+
+rv32um-p-mulhsu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 0220af33 mulhsu t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 0220af33 mulhsu t5,ra,sp
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 49df1e63 bne t5,t4,800005c4 <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 0220af33 mulhsu t5,ra,sp
+80000138: 00000e93 li t4,0
+8000013c: 00400193 li gp,4
+80000140: 49df1263 bne t5,t4,800005c4 <fail>
+
+80000144 <test_5>:
+80000144: 00000093 li ra,0
+80000148: ffff8137 lui sp,0xffff8
+8000014c: 0220af33 mulhsu t5,ra,sp
+80000150: 00000e93 li t4,0
+80000154: 00500193 li gp,5
+80000158: 47df1663 bne t5,t4,800005c4 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00000113 li sp,0
+80000164: 0220af33 mulhsu t5,ra,sp
+80000168: 00000e93 li t4,0
+8000016c: 00600193 li gp,6
+80000170: 45df1a63 bne t5,t4,800005c4 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: ffff8137 lui sp,0xffff8
+8000017c: 0220af33 mulhsu t5,ra,sp
+80000180: 80004eb7 lui t4,0x80004
+80000184: 00700193 li gp,7
+80000188: 43df1e63 bne t5,t4,800005c4 <fail>
+
+8000018c <test_30>:
+8000018c: aaaab0b7 lui ra,0xaaaab
+80000190: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab>
+80000194: 00030137 lui sp,0x30
+80000198: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+8000019c: 0220af33 mulhsu t5,ra,sp
+800001a0: ffff0eb7 lui t4,0xffff0
+800001a4: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffee081>
+800001a8: 01e00193 li gp,30
+800001ac: 41df1c63 bne t5,t4,800005c4 <fail>
+
+800001b0 <test_31>:
+800001b0: 000300b7 lui ra,0x30
+800001b4: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+800001b8: aaaab137 lui sp,0xaaaab
+800001bc: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab>
+800001c0: 0220af33 mulhsu t5,ra,sp
+800001c4: 00020eb7 lui t4,0x20
+800001c8: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102>
+800001cc: 01f00193 li gp,31
+800001d0: 3fdf1a63 bne t5,t4,800005c4 <fail>
+
+800001d4 <test_32>:
+800001d4: ff0000b7 lui ra,0xff000
+800001d8: ff000137 lui sp,0xff000
+800001dc: 0220af33 mulhsu t5,ra,sp
+800001e0: ff010eb7 lui t4,0xff010
+800001e4: 02000193 li gp,32
+800001e8: 3ddf1e63 bne t5,t4,800005c4 <fail>
+
+800001ec <test_33>:
+800001ec: fff00093 li ra,-1
+800001f0: fff00113 li sp,-1
+800001f4: 0220af33 mulhsu t5,ra,sp
+800001f8: fff00e93 li t4,-1
+800001fc: 02100193 li gp,33
+80000200: 3ddf1263 bne t5,t4,800005c4 <fail>
+
+80000204 <test_34>:
+80000204: fff00093 li ra,-1
+80000208: 00100113 li sp,1
+8000020c: 0220af33 mulhsu t5,ra,sp
+80000210: fff00e93 li t4,-1
+80000214: 02200193 li gp,34
+80000218: 3bdf1663 bne t5,t4,800005c4 <fail>
+
+8000021c <test_35>:
+8000021c: 00100093 li ra,1
+80000220: fff00113 li sp,-1
+80000224: 0220af33 mulhsu t5,ra,sp
+80000228: 00000e93 li t4,0
+8000022c: 02300193 li gp,35
+80000230: 39df1a63 bne t5,t4,800005c4 <fail>
+
+80000234 <test_8>:
+80000234: 00d000b7 lui ra,0xd00
+80000238: 00b00137 lui sp,0xb00
+8000023c: 0220a0b3 mulhsu ra,ra,sp
+80000240: 00009eb7 lui t4,0x9
+80000244: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000248: 00800193 li gp,8
+8000024c: 37d09c63 bne ra,t4,800005c4 <fail>
+
+80000250 <test_9>:
+80000250: 00e000b7 lui ra,0xe00
+80000254: 00b00137 lui sp,0xb00
+80000258: 0220a133 mulhsu sp,ra,sp
+8000025c: 0000aeb7 lui t4,0xa
+80000260: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000264: 00900193 li gp,9
+80000268: 35d11e63 bne sp,t4,800005c4 <fail>
+
+8000026c <test_10>:
+8000026c: 00d000b7 lui ra,0xd00
+80000270: 0210a0b3 mulhsu ra,ra,ra
+80000274: 0000beb7 lui t4,0xb
+80000278: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700>
+8000027c: 00a00193 li gp,10
+80000280: 35d09263 bne ra,t4,800005c4 <fail>
+
+80000284 <test_11>:
+80000284: 00000213 li tp,0
+80000288: 00d000b7 lui ra,0xd00
+8000028c: 00b00137 lui sp,0xb00
+80000290: 0220af33 mulhsu t5,ra,sp
+80000294: 000f0313 mv t1,t5
+80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000029c: 00200293 li t0,2
+800002a0: fe5214e3 bne tp,t0,80000288 <test_11+0x4>
+800002a4: 00009eb7 lui t4,0x9
+800002a8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+800002ac: 00b00193 li gp,11
+800002b0: 31d31a63 bne t1,t4,800005c4 <fail>
+
+800002b4 <test_12>:
+800002b4: 00000213 li tp,0
+800002b8: 00e000b7 lui ra,0xe00
+800002bc: 00b00137 lui sp,0xb00
+800002c0: 0220af33 mulhsu t5,ra,sp
+800002c4: 00000013 nop
+800002c8: 000f0313 mv t1,t5
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5212e3 bne tp,t0,800002b8 <test_12+0x4>
+800002d8: 0000aeb7 lui t4,0xa
+800002dc: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+800002e0: 00c00193 li gp,12
+800002e4: 2fd31063 bne t1,t4,800005c4 <fail>
+
+800002e8 <test_13>:
+800002e8: 00000213 li tp,0
+800002ec: 00f000b7 lui ra,0xf00
+800002f0: 00b00137 lui sp,0xb00
+800002f4: 0220af33 mulhsu t5,ra,sp
+800002f8: 00000013 nop
+800002fc: 00000013 nop
+80000300: 000f0313 mv t1,t5
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5210e3 bne tp,t0,800002ec <test_13+0x4>
+80000310: 0000aeb7 lui t4,0xa
+80000314: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000318: 00d00193 li gp,13
+8000031c: 2bd31463 bne t1,t4,800005c4 <fail>
+
+80000320 <test_14>:
+80000320: 00000213 li tp,0
+80000324: 00d000b7 lui ra,0xd00
+80000328: 00b00137 lui sp,0xb00
+8000032c: 0220af33 mulhsu t5,ra,sp
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fe5216e3 bne tp,t0,80000324 <test_14+0x4>
+8000033c: 00009eb7 lui t4,0x9
+80000340: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000344: 00e00193 li gp,14
+80000348: 27df1e63 bne t5,t4,800005c4 <fail>
+
+8000034c <test_15>:
+8000034c: 00000213 li tp,0
+80000350: 00e000b7 lui ra,0xe00
+80000354: 00b00137 lui sp,0xb00
+80000358: 00000013 nop
+8000035c: 0220af33 mulhsu t5,ra,sp
+80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000364: 00200293 li t0,2
+80000368: fe5214e3 bne tp,t0,80000350 <test_15+0x4>
+8000036c: 0000aeb7 lui t4,0xa
+80000370: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000374: 00f00193 li gp,15
+80000378: 25df1663 bne t5,t4,800005c4 <fail>
+
+8000037c <test_16>:
+8000037c: 00000213 li tp,0
+80000380: 00f000b7 lui ra,0xf00
+80000384: 00b00137 lui sp,0xb00
+80000388: 00000013 nop
+8000038c: 00000013 nop
+80000390: 0220af33 mulhsu t5,ra,sp
+80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000398: 00200293 li t0,2
+8000039c: fe5212e3 bne tp,t0,80000380 <test_16+0x4>
+800003a0: 0000aeb7 lui t4,0xa
+800003a4: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+800003a8: 01000193 li gp,16
+800003ac: 21df1c63 bne t5,t4,800005c4 <fail>
+
+800003b0 <test_17>:
+800003b0: 00000213 li tp,0
+800003b4: 00d000b7 lui ra,0xd00
+800003b8: 00000013 nop
+800003bc: 00b00137 lui sp,0xb00
+800003c0: 0220af33 mulhsu t5,ra,sp
+800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c8: 00200293 li t0,2
+800003cc: fe5214e3 bne tp,t0,800003b4 <test_17+0x4>
+800003d0: 00009eb7 lui t4,0x9
+800003d4: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+800003d8: 01100193 li gp,17
+800003dc: 1fdf1463 bne t5,t4,800005c4 <fail>
+
+800003e0 <test_18>:
+800003e0: 00000213 li tp,0
+800003e4: 00e000b7 lui ra,0xe00
+800003e8: 00000013 nop
+800003ec: 00b00137 lui sp,0xb00
+800003f0: 00000013 nop
+800003f4: 0220af33 mulhsu t5,ra,sp
+800003f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003fc: 00200293 li t0,2
+80000400: fe5212e3 bne tp,t0,800003e4 <test_18+0x4>
+80000404: 0000aeb7 lui t4,0xa
+80000408: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+8000040c: 01200193 li gp,18
+80000410: 1bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000414 <test_19>:
+80000414: 00000213 li tp,0
+80000418: 00f000b7 lui ra,0xf00
+8000041c: 00000013 nop
+80000420: 00000013 nop
+80000424: 00b00137 lui sp,0xb00
+80000428: 0220af33 mulhsu t5,ra,sp
+8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000430: 00200293 li t0,2
+80000434: fe5212e3 bne tp,t0,80000418 <test_19+0x4>
+80000438: 0000aeb7 lui t4,0xa
+8000043c: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000440: 01300193 li gp,19
+80000444: 19df1063 bne t5,t4,800005c4 <fail>
+
+80000448 <test_20>:
+80000448: 00000213 li tp,0
+8000044c: 00b00137 lui sp,0xb00
+80000450: 00d000b7 lui ra,0xd00
+80000454: 0220af33 mulhsu t5,ra,sp
+80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000045c: 00200293 li t0,2
+80000460: fe5216e3 bne tp,t0,8000044c <test_20+0x4>
+80000464: 00009eb7 lui t4,0x9
+80000468: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+8000046c: 01400193 li gp,20
+80000470: 15df1a63 bne t5,t4,800005c4 <fail>
+
+80000474 <test_21>:
+80000474: 00000213 li tp,0
+80000478: 00b00137 lui sp,0xb00
+8000047c: 00e000b7 lui ra,0xe00
+80000480: 00000013 nop
+80000484: 0220af33 mulhsu t5,ra,sp
+80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000048c: 00200293 li t0,2
+80000490: fe5214e3 bne tp,t0,80000478 <test_21+0x4>
+80000494: 0000aeb7 lui t4,0xa
+80000498: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+8000049c: 01500193 li gp,21
+800004a0: 13df1263 bne t5,t4,800005c4 <fail>
+
+800004a4 <test_22>:
+800004a4: 00000213 li tp,0
+800004a8: 00b00137 lui sp,0xb00
+800004ac: 00f000b7 lui ra,0xf00
+800004b0: 00000013 nop
+800004b4: 00000013 nop
+800004b8: 0220af33 mulhsu t5,ra,sp
+800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c0: 00200293 li t0,2
+800004c4: fe5212e3 bne tp,t0,800004a8 <test_22+0x4>
+800004c8: 0000aeb7 lui t4,0xa
+800004cc: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+800004d0: 01600193 li gp,22
+800004d4: 0fdf1863 bne t5,t4,800005c4 <fail>
+
+800004d8 <test_23>:
+800004d8: 00000213 li tp,0
+800004dc: 00b00137 lui sp,0xb00
+800004e0: 00000013 nop
+800004e4: 00d000b7 lui ra,0xd00
+800004e8: 0220af33 mulhsu t5,ra,sp
+800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004f0: 00200293 li t0,2
+800004f4: fe5214e3 bne tp,t0,800004dc <test_23+0x4>
+800004f8: 00009eb7 lui t4,0x9
+800004fc: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000500: 01700193 li gp,23
+80000504: 0ddf1063 bne t5,t4,800005c4 <fail>
+
+80000508 <test_24>:
+80000508: 00000213 li tp,0
+8000050c: 00b00137 lui sp,0xb00
+80000510: 00000013 nop
+80000514: 00e000b7 lui ra,0xe00
+80000518: 00000013 nop
+8000051c: 0220af33 mulhsu t5,ra,sp
+80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000524: 00200293 li t0,2
+80000528: fe5212e3 bne tp,t0,8000050c <test_24+0x4>
+8000052c: 0000aeb7 lui t4,0xa
+80000530: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000534: 01800193 li gp,24
+80000538: 09df1663 bne t5,t4,800005c4 <fail>
+
+8000053c <test_25>:
+8000053c: 00000213 li tp,0
+80000540: 00b00137 lui sp,0xb00
+80000544: 00000013 nop
+80000548: 00000013 nop
+8000054c: 00f000b7 lui ra,0xf00
+80000550: 0220af33 mulhsu t5,ra,sp
+80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000558: 00200293 li t0,2
+8000055c: fe5212e3 bne tp,t0,80000540 <test_25+0x4>
+80000560: 0000aeb7 lui t4,0xa
+80000564: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000568: 01900193 li gp,25
+8000056c: 05df1c63 bne t5,t4,800005c4 <fail>
+
+80000570 <test_26>:
+80000570: 7c0000b7 lui ra,0x7c000
+80000574: 02102133 mulhsu sp,zero,ra
+80000578: 00000e93 li t4,0
+8000057c: 01a00193 li gp,26
+80000580: 05d11263 bne sp,t4,800005c4 <fail>
+
+80000584 <test_27>:
+80000584: 800000b7 lui ra,0x80000
+80000588: 0200a133 mulhsu sp,ra,zero
+8000058c: 00000e93 li t4,0
+80000590: 01b00193 li gp,27
+80000594: 03d11863 bne sp,t4,800005c4 <fail>
+
+80000598 <test_28>:
+80000598: 020020b3 mulhsu ra,zero,zero
+8000059c: 00000e93 li t4,0
+800005a0: 01c00193 li gp,28
+800005a4: 03d09063 bne ra,t4,800005c4 <fail>
+
+800005a8 <test_29>:
+800005a8: 021000b7 lui ra,0x2100
+800005ac: 02200137 lui sp,0x2200
+800005b0: 0220a033 mulhsu zero,ra,sp
+800005b4: 00000e93 li t4,0
+800005b8: 01d00193 li gp,29
+800005bc: 01d01463 bne zero,t4,800005c4 <fail>
+800005c0: 00301c63 bne zero,gp,800005d8 <pass>
+
+800005c4 <fail>:
+800005c4: 0ff0000f fence
+800005c8: 00018063 beqz gp,800005c8 <fail+0x4>
+800005cc: 00119193 slli gp,gp,0x1
+800005d0: 0011e193 ori gp,gp,1
+800005d4: 00000073 ecall
+
+800005d8 <pass>:
+800005d8: 0ff0000f fence
+800005dc: 00100193 li gp,1
+800005e0: 00000073 ecall
+800005e4: c0001073 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-mulhsu.elf b/test/riscv-tests/rv32um-p-mulhsu.elf
new file mode 100644
index 0000000..48f64a1
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mulhsu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-mulhu.dump b/test/riscv-tests/rv32um-p-mulhu.dump
new file mode 100644
index 0000000..642c24b
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mulhu.dump
@@ -0,0 +1,479 @@
+
+rv32um-p-mulhu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 00000093 li ra,0
+80000100: 00000113 li sp,0
+80000104: 0220bf33 mulhu t5,ra,sp
+80000108: 00000e93 li t4,0
+8000010c: 00200193 li gp,2
+80000110: 4bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000114 <test_3>:
+80000114: 00100093 li ra,1
+80000118: 00100113 li sp,1
+8000011c: 0220bf33 mulhu t5,ra,sp
+80000120: 00000e93 li t4,0
+80000124: 00300193 li gp,3
+80000128: 49df1e63 bne t5,t4,800005c4 <fail>
+
+8000012c <test_4>:
+8000012c: 00300093 li ra,3
+80000130: 00700113 li sp,7
+80000134: 0220bf33 mulhu t5,ra,sp
+80000138: 00000e93 li t4,0
+8000013c: 00400193 li gp,4
+80000140: 49df1263 bne t5,t4,800005c4 <fail>
+
+80000144 <test_5>:
+80000144: 00000093 li ra,0
+80000148: ffff8137 lui sp,0xffff8
+8000014c: 0220bf33 mulhu t5,ra,sp
+80000150: 00000e93 li t4,0
+80000154: 00500193 li gp,5
+80000158: 47df1663 bne t5,t4,800005c4 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00000113 li sp,0
+80000164: 0220bf33 mulhu t5,ra,sp
+80000168: 00000e93 li t4,0
+8000016c: 00600193 li gp,6
+80000170: 45df1a63 bne t5,t4,800005c4 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: ffff8137 lui sp,0xffff8
+8000017c: 0220bf33 mulhu t5,ra,sp
+80000180: 7fffceb7 lui t4,0x7fffc
+80000184: 00700193 li gp,7
+80000188: 43df1e63 bne t5,t4,800005c4 <fail>
+
+8000018c <test_30>:
+8000018c: aaaab0b7 lui ra,0xaaaab
+80000190: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa8aab>
+80000194: 00030137 lui sp,0x30
+80000198: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+8000019c: 0220bf33 mulhu t5,ra,sp
+800001a0: 00020eb7 lui t4,0x20
+800001a4: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102>
+800001a8: 01e00193 li gp,30
+800001ac: 41df1c63 bne t5,t4,800005c4 <fail>
+
+800001b0 <test_31>:
+800001b0: 000300b7 lui ra,0x30
+800001b4: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+800001b8: aaaab137 lui sp,0xaaaab
+800001bc: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa8aab>
+800001c0: 0220bf33 mulhu t5,ra,sp
+800001c4: 00020eb7 lui t4,0x20
+800001c8: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102>
+800001cc: 01f00193 li gp,31
+800001d0: 3fdf1a63 bne t5,t4,800005c4 <fail>
+
+800001d4 <test_32>:
+800001d4: ff0000b7 lui ra,0xff000
+800001d8: ff000137 lui sp,0xff000
+800001dc: 0220bf33 mulhu t5,ra,sp
+800001e0: fe010eb7 lui t4,0xfe010
+800001e4: 02000193 li gp,32
+800001e8: 3ddf1e63 bne t5,t4,800005c4 <fail>
+
+800001ec <test_33>:
+800001ec: fff00093 li ra,-1
+800001f0: fff00113 li sp,-1
+800001f4: 0220bf33 mulhu t5,ra,sp
+800001f8: ffe00e93 li t4,-2
+800001fc: 02100193 li gp,33
+80000200: 3ddf1263 bne t5,t4,800005c4 <fail>
+
+80000204 <test_34>:
+80000204: fff00093 li ra,-1
+80000208: 00100113 li sp,1
+8000020c: 0220bf33 mulhu t5,ra,sp
+80000210: 00000e93 li t4,0
+80000214: 02200193 li gp,34
+80000218: 3bdf1663 bne t5,t4,800005c4 <fail>
+
+8000021c <test_35>:
+8000021c: 00100093 li ra,1
+80000220: fff00113 li sp,-1
+80000224: 0220bf33 mulhu t5,ra,sp
+80000228: 00000e93 li t4,0
+8000022c: 02300193 li gp,35
+80000230: 39df1a63 bne t5,t4,800005c4 <fail>
+
+80000234 <test_8>:
+80000234: 00d000b7 lui ra,0xd00
+80000238: 00b00137 lui sp,0xb00
+8000023c: 0220b0b3 mulhu ra,ra,sp
+80000240: 00009eb7 lui t4,0x9
+80000244: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000248: 00800193 li gp,8
+8000024c: 37d09c63 bne ra,t4,800005c4 <fail>
+
+80000250 <test_9>:
+80000250: 00e000b7 lui ra,0xe00
+80000254: 00b00137 lui sp,0xb00
+80000258: 0220b133 mulhu sp,ra,sp
+8000025c: 0000aeb7 lui t4,0xa
+80000260: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000264: 00900193 li gp,9
+80000268: 35d11e63 bne sp,t4,800005c4 <fail>
+
+8000026c <test_10>:
+8000026c: 00d000b7 lui ra,0xd00
+80000270: 0210b0b3 mulhu ra,ra,ra
+80000274: 0000beb7 lui t4,0xb
+80000278: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700>
+8000027c: 00a00193 li gp,10
+80000280: 35d09263 bne ra,t4,800005c4 <fail>
+
+80000284 <test_11>:
+80000284: 00000213 li tp,0
+80000288: 00d000b7 lui ra,0xd00
+8000028c: 00b00137 lui sp,0xb00
+80000290: 0220bf33 mulhu t5,ra,sp
+80000294: 000f0313 mv t1,t5
+80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000029c: 00200293 li t0,2
+800002a0: fe5214e3 bne tp,t0,80000288 <test_11+0x4>
+800002a4: 00009eb7 lui t4,0x9
+800002a8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+800002ac: 00b00193 li gp,11
+800002b0: 31d31a63 bne t1,t4,800005c4 <fail>
+
+800002b4 <test_12>:
+800002b4: 00000213 li tp,0
+800002b8: 00e000b7 lui ra,0xe00
+800002bc: 00b00137 lui sp,0xb00
+800002c0: 0220bf33 mulhu t5,ra,sp
+800002c4: 00000013 nop
+800002c8: 000f0313 mv t1,t5
+800002cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800002d0: 00200293 li t0,2
+800002d4: fe5212e3 bne tp,t0,800002b8 <test_12+0x4>
+800002d8: 0000aeb7 lui t4,0xa
+800002dc: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+800002e0: 00c00193 li gp,12
+800002e4: 2fd31063 bne t1,t4,800005c4 <fail>
+
+800002e8 <test_13>:
+800002e8: 00000213 li tp,0
+800002ec: 00f000b7 lui ra,0xf00
+800002f0: 00b00137 lui sp,0xb00
+800002f4: 0220bf33 mulhu t5,ra,sp
+800002f8: 00000013 nop
+800002fc: 00000013 nop
+80000300: 000f0313 mv t1,t5
+80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000308: 00200293 li t0,2
+8000030c: fe5210e3 bne tp,t0,800002ec <test_13+0x4>
+80000310: 0000aeb7 lui t4,0xa
+80000314: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000318: 00d00193 li gp,13
+8000031c: 2bd31463 bne t1,t4,800005c4 <fail>
+
+80000320 <test_14>:
+80000320: 00000213 li tp,0
+80000324: 00d000b7 lui ra,0xd00
+80000328: 00b00137 lui sp,0xb00
+8000032c: 0220bf33 mulhu t5,ra,sp
+80000330: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000334: 00200293 li t0,2
+80000338: fe5216e3 bne tp,t0,80000324 <test_14+0x4>
+8000033c: 00009eb7 lui t4,0x9
+80000340: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000344: 00e00193 li gp,14
+80000348: 27df1e63 bne t5,t4,800005c4 <fail>
+
+8000034c <test_15>:
+8000034c: 00000213 li tp,0
+80000350: 00e000b7 lui ra,0xe00
+80000354: 00b00137 lui sp,0xb00
+80000358: 00000013 nop
+8000035c: 0220bf33 mulhu t5,ra,sp
+80000360: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000364: 00200293 li t0,2
+80000368: fe5214e3 bne tp,t0,80000350 <test_15+0x4>
+8000036c: 0000aeb7 lui t4,0xa
+80000370: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000374: 00f00193 li gp,15
+80000378: 25df1663 bne t5,t4,800005c4 <fail>
+
+8000037c <test_16>:
+8000037c: 00000213 li tp,0
+80000380: 00f000b7 lui ra,0xf00
+80000384: 00b00137 lui sp,0xb00
+80000388: 00000013 nop
+8000038c: 00000013 nop
+80000390: 0220bf33 mulhu t5,ra,sp
+80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000398: 00200293 li t0,2
+8000039c: fe5212e3 bne tp,t0,80000380 <test_16+0x4>
+800003a0: 0000aeb7 lui t4,0xa
+800003a4: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+800003a8: 01000193 li gp,16
+800003ac: 21df1c63 bne t5,t4,800005c4 <fail>
+
+800003b0 <test_17>:
+800003b0: 00000213 li tp,0
+800003b4: 00d000b7 lui ra,0xd00
+800003b8: 00000013 nop
+800003bc: 00b00137 lui sp,0xb00
+800003c0: 0220bf33 mulhu t5,ra,sp
+800003c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003c8: 00200293 li t0,2
+800003cc: fe5214e3 bne tp,t0,800003b4 <test_17+0x4>
+800003d0: 00009eb7 lui t4,0x9
+800003d4: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+800003d8: 01100193 li gp,17
+800003dc: 1fdf1463 bne t5,t4,800005c4 <fail>
+
+800003e0 <test_18>:
+800003e0: 00000213 li tp,0
+800003e4: 00e000b7 lui ra,0xe00
+800003e8: 00000013 nop
+800003ec: 00b00137 lui sp,0xb00
+800003f0: 00000013 nop
+800003f4: 0220bf33 mulhu t5,ra,sp
+800003f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800003fc: 00200293 li t0,2
+80000400: fe5212e3 bne tp,t0,800003e4 <test_18+0x4>
+80000404: 0000aeb7 lui t4,0xa
+80000408: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+8000040c: 01200193 li gp,18
+80000410: 1bdf1a63 bne t5,t4,800005c4 <fail>
+
+80000414 <test_19>:
+80000414: 00000213 li tp,0
+80000418: 00f000b7 lui ra,0xf00
+8000041c: 00000013 nop
+80000420: 00000013 nop
+80000424: 00b00137 lui sp,0xb00
+80000428: 0220bf33 mulhu t5,ra,sp
+8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000430: 00200293 li t0,2
+80000434: fe5212e3 bne tp,t0,80000418 <test_19+0x4>
+80000438: 0000aeb7 lui t4,0xa
+8000043c: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000440: 01300193 li gp,19
+80000444: 19df1063 bne t5,t4,800005c4 <fail>
+
+80000448 <test_20>:
+80000448: 00000213 li tp,0
+8000044c: 00b00137 lui sp,0xb00
+80000450: 00d000b7 lui ra,0xd00
+80000454: 0220bf33 mulhu t5,ra,sp
+80000458: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000045c: 00200293 li t0,2
+80000460: fe5216e3 bne tp,t0,8000044c <test_20+0x4>
+80000464: 00009eb7 lui t4,0x9
+80000468: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+8000046c: 01400193 li gp,20
+80000470: 15df1a63 bne t5,t4,800005c4 <fail>
+
+80000474 <test_21>:
+80000474: 00000213 li tp,0
+80000478: 00b00137 lui sp,0xb00
+8000047c: 00e000b7 lui ra,0xe00
+80000480: 00000013 nop
+80000484: 0220bf33 mulhu t5,ra,sp
+80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000048c: 00200293 li t0,2
+80000490: fe5214e3 bne tp,t0,80000478 <test_21+0x4>
+80000494: 0000aeb7 lui t4,0xa
+80000498: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+8000049c: 01500193 li gp,21
+800004a0: 13df1263 bne t5,t4,800005c4 <fail>
+
+800004a4 <test_22>:
+800004a4: 00000213 li tp,0
+800004a8: 00b00137 lui sp,0xb00
+800004ac: 00f000b7 lui ra,0xf00
+800004b0: 00000013 nop
+800004b4: 00000013 nop
+800004b8: 0220bf33 mulhu t5,ra,sp
+800004bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004c0: 00200293 li t0,2
+800004c4: fe5212e3 bne tp,t0,800004a8 <test_22+0x4>
+800004c8: 0000aeb7 lui t4,0xa
+800004cc: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+800004d0: 01600193 li gp,22
+800004d4: 0fdf1863 bne t5,t4,800005c4 <fail>
+
+800004d8 <test_23>:
+800004d8: 00000213 li tp,0
+800004dc: 00b00137 lui sp,0xb00
+800004e0: 00000013 nop
+800004e4: 00d000b7 lui ra,0xd00
+800004e8: 0220bf33 mulhu t5,ra,sp
+800004ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+800004f0: 00200293 li t0,2
+800004f4: fe5214e3 bne tp,t0,800004dc <test_23+0x4>
+800004f8: 00009eb7 lui t4,0x9
+800004fc: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80000500: 01700193 li gp,23
+80000504: 0ddf1063 bne t5,t4,800005c4 <fail>
+
+80000508 <test_24>:
+80000508: 00000213 li tp,0
+8000050c: 00b00137 lui sp,0xb00
+80000510: 00000013 nop
+80000514: 00e000b7 lui ra,0xe00
+80000518: 00000013 nop
+8000051c: 0220bf33 mulhu t5,ra,sp
+80000520: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000524: 00200293 li t0,2
+80000528: fe5212e3 bne tp,t0,8000050c <test_24+0x4>
+8000052c: 0000aeb7 lui t4,0xa
+80000530: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80000534: 01800193 li gp,24
+80000538: 09df1663 bne t5,t4,800005c4 <fail>
+
+8000053c <test_25>:
+8000053c: 00000213 li tp,0
+80000540: 00b00137 lui sp,0xb00
+80000544: 00000013 nop
+80000548: 00000013 nop
+8000054c: 00f000b7 lui ra,0xf00
+80000550: 0220bf33 mulhu t5,ra,sp
+80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80000558: 00200293 li t0,2
+8000055c: fe5212e3 bne tp,t0,80000540 <test_25+0x4>
+80000560: 0000aeb7 lui t4,0xa
+80000564: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80000568: 01900193 li gp,25
+8000056c: 05df1c63 bne t5,t4,800005c4 <fail>
+
+80000570 <test_26>:
+80000570: 7c0000b7 lui ra,0x7c000
+80000574: 02103133 mulhu sp,zero,ra
+80000578: 00000e93 li t4,0
+8000057c: 01a00193 li gp,26
+80000580: 05d11263 bne sp,t4,800005c4 <fail>
+
+80000584 <test_27>:
+80000584: 800000b7 lui ra,0x80000
+80000588: 0200b133 mulhu sp,ra,zero
+8000058c: 00000e93 li t4,0
+80000590: 01b00193 li gp,27
+80000594: 03d11863 bne sp,t4,800005c4 <fail>
+
+80000598 <test_28>:
+80000598: 020030b3 mulhu ra,zero,zero
+8000059c: 00000e93 li t4,0
+800005a0: 01c00193 li gp,28
+800005a4: 03d09063 bne ra,t4,800005c4 <fail>
+
+800005a8 <test_29>:
+800005a8: 021000b7 lui ra,0x2100
+800005ac: 02200137 lui sp,0x2200
+800005b0: 0220b033 mulhu zero,ra,sp
+800005b4: 00000e93 li t4,0
+800005b8: 01d00193 li gp,29
+800005bc: 01d01463 bne zero,t4,800005c4 <fail>
+800005c0: 00301c63 bne zero,gp,800005d8 <pass>
+
+800005c4 <fail>:
+800005c4: 0ff0000f fence
+800005c8: 00018063 beqz gp,800005c8 <fail+0x4>
+800005cc: 00119193 slli gp,gp,0x1
+800005d0: 0011e193 ori gp,gp,1
+800005d4: 00000073 ecall
+
+800005d8 <pass>:
+800005d8: 0ff0000f fence
+800005dc: 00100193 li gp,1
+800005e0: 00000073 ecall
+800005e4: c0001073 unimp
+800005e8: 0000 unimp
+800005ea: 0000 unimp
+800005ec: 0000 unimp
+800005ee: 0000 unimp
+800005f0: 0000 unimp
+800005f2: 0000 unimp
+800005f4: 0000 unimp
+800005f6: 0000 unimp
+800005f8: 0000 unimp
+800005fa: 0000 unimp
+800005fc: 0000 unimp
+800005fe: 0000 unimp
+80000600: 0000 unimp
+80000602: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-mulhu.elf b/test/riscv-tests/rv32um-p-mulhu.elf
new file mode 100644
index 0000000..5010a3d
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-mulhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-rem.dump b/test/riscv-tests/rv32um-p-rem.dump
new file mode 100644
index 0000000..de655c2
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-rem.dump
@@ -0,0 +1,168 @@
+
+rv32um-p-rem: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 01400093 li ra,20
+80000100: 00600113 li sp,6
+80000104: 0220ef33 rem t5,ra,sp
+80000108: 00200e93 li t4,2
+8000010c: 00200193 li gp,2
+80000110: 0ddf1463 bne t5,t4,800001d8 <fail>
+
+80000114 <test_3>:
+80000114: fec00093 li ra,-20
+80000118: 00600113 li sp,6
+8000011c: 0220ef33 rem t5,ra,sp
+80000120: ffe00e93 li t4,-2
+80000124: 00300193 li gp,3
+80000128: 0bdf1863 bne t5,t4,800001d8 <fail>
+
+8000012c <test_4>:
+8000012c: 01400093 li ra,20
+80000130: ffa00113 li sp,-6
+80000134: 0220ef33 rem t5,ra,sp
+80000138: 00200e93 li t4,2
+8000013c: 00400193 li gp,4
+80000140: 09df1c63 bne t5,t4,800001d8 <fail>
+
+80000144 <test_5>:
+80000144: fec00093 li ra,-20
+80000148: ffa00113 li sp,-6
+8000014c: 0220ef33 rem t5,ra,sp
+80000150: ffe00e93 li t4,-2
+80000154: 00500193 li gp,5
+80000158: 09df1063 bne t5,t4,800001d8 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00100113 li sp,1
+80000164: 0220ef33 rem t5,ra,sp
+80000168: 00000e93 li t4,0
+8000016c: 00600193 li gp,6
+80000170: 07df1463 bne t5,t4,800001d8 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: fff00113 li sp,-1
+8000017c: 0220ef33 rem t5,ra,sp
+80000180: 00000e93 li t4,0
+80000184: 00700193 li gp,7
+80000188: 05df1863 bne t5,t4,800001d8 <fail>
+
+8000018c <test_8>:
+8000018c: 800000b7 lui ra,0x80000
+80000190: 00000113 li sp,0
+80000194: 0220ef33 rem t5,ra,sp
+80000198: 80000eb7 lui t4,0x80000
+8000019c: 00800193 li gp,8
+800001a0: 03df1c63 bne t5,t4,800001d8 <fail>
+
+800001a4 <test_9>:
+800001a4: 00100093 li ra,1
+800001a8: 00000113 li sp,0
+800001ac: 0220ef33 rem t5,ra,sp
+800001b0: 00100e93 li t4,1
+800001b4: 00900193 li gp,9
+800001b8: 03df1063 bne t5,t4,800001d8 <fail>
+
+800001bc <test_10>:
+800001bc: 00000093 li ra,0
+800001c0: 00000113 li sp,0
+800001c4: 0220ef33 rem t5,ra,sp
+800001c8: 00000e93 li t4,0
+800001cc: 00a00193 li gp,10
+800001d0: 01df1463 bne t5,t4,800001d8 <fail>
+800001d4: 00301c63 bne zero,gp,800001ec <pass>
+
+800001d8 <fail>:
+800001d8: 0ff0000f fence
+800001dc: 00018063 beqz gp,800001dc <fail+0x4>
+800001e0: 00119193 slli gp,gp,0x1
+800001e4: 0011e193 ori gp,gp,1
+800001e8: 00000073 ecall
+
+800001ec <pass>:
+800001ec: 0ff0000f fence
+800001f0: 00100193 li gp,1
+800001f4: 00000073 ecall
+800001f8: c0001073 unimp
+800001fc: 0000 unimp
+800001fe: 0000 unimp
+80000200: 0000 unimp
+80000202: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-rem.elf b/test/riscv-tests/rv32um-p-rem.elf
new file mode 100644
index 0000000..605e403
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-rem.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-p-remu.dump b/test/riscv-tests/rv32um-p-remu.dump
new file mode 100644
index 0000000..ad3ae64
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-remu.dump
@@ -0,0 +1,168 @@
+
+rv32um-p-remu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 04c0006f j 8000004c <reset_vector>
+
+80000004 <trap_vector>:
+80000004: 34202f73 csrr t5,mcause
+80000008: 00800f93 li t6,8
+8000000c: 03ff0a63 beq t5,t6,80000040 <write_tohost>
+80000010: 00900f93 li t6,9
+80000014: 03ff0663 beq t5,t6,80000040 <write_tohost>
+80000018: 00b00f93 li t6,11
+8000001c: 03ff0263 beq t5,t6,80000040 <write_tohost>
+80000020: 80000f17 auipc t5,0x80000
+80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000>
+80000028: 000f0463 beqz t5,80000030 <trap_vector+0x2c>
+8000002c: 000f0067 jr t5
+80000030: 34202f73 csrr t5,mcause
+80000034: 000f5463 bgez t5,8000003c <handle_exception>
+80000038: 0040006f j 8000003c <handle_exception>
+
+8000003c <handle_exception>:
+8000003c: 5391e193 ori gp,gp,1337
+
+80000040 <write_tohost>:
+80000040: 00001f17 auipc t5,0x1
+80000044: fc3f2023 sw gp,-64(t5) # 80001000 <tohost>
+80000048: ff9ff06f j 80000040 <write_tohost>
+
+8000004c <reset_vector>:
+8000004c: f1402573 csrr a0,mhartid
+80000050: 00051063 bnez a0,80000050 <reset_vector+0x4>
+80000054: 00000297 auipc t0,0x0
+80000058: 01028293 addi t0,t0,16 # 80000064 <reset_vector+0x18>
+8000005c: 30529073 csrw mtvec,t0
+80000060: 18005073 csrwi satp,0
+80000064: 00000297 auipc t0,0x0
+80000068: 01c28293 addi t0,t0,28 # 80000080 <reset_vector+0x34>
+8000006c: 30529073 csrw mtvec,t0
+80000070: fff00293 li t0,-1
+80000074: 3b029073 csrw pmpaddr0,t0
+80000078: 01f00293 li t0,31
+8000007c: 3a029073 csrw pmpcfg0,t0
+80000080: 00000297 auipc t0,0x0
+80000084: 01828293 addi t0,t0,24 # 80000098 <reset_vector+0x4c>
+80000088: 30529073 csrw mtvec,t0
+8000008c: 30205073 csrwi medeleg,0
+80000090: 30305073 csrwi mideleg,0
+80000094: 30405073 csrwi mie,0
+80000098: 00000193 li gp,0
+8000009c: 00000297 auipc t0,0x0
+800000a0: f6828293 addi t0,t0,-152 # 80000004 <trap_vector>
+800000a4: 30529073 csrw mtvec,t0
+800000a8: 00100513 li a0,1
+800000ac: 01f51513 slli a0,a0,0x1f
+800000b0: 00054863 bltz a0,800000c0 <reset_vector+0x74>
+800000b4: 0ff0000f fence
+800000b8: 00100193 li gp,1
+800000bc: 00000073 ecall
+800000c0: 80000297 auipc t0,0x80000
+800000c4: f4028293 addi t0,t0,-192 # 0 <_start-0x80000000>
+800000c8: 00028e63 beqz t0,800000e4 <reset_vector+0x98>
+800000cc: 10529073 csrw stvec,t0
+800000d0: 0000b2b7 lui t0,0xb
+800000d4: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7>
+800000d8: 30229073 csrw medeleg,t0
+800000dc: 30202373 csrr t1,medeleg
+800000e0: f4629ee3 bne t0,t1,8000003c <handle_exception>
+800000e4: 30005073 csrwi mstatus,0
+800000e8: 00000297 auipc t0,0x0
+800000ec: 01428293 addi t0,t0,20 # 800000fc <test_2>
+800000f0: 34129073 csrw mepc,t0
+800000f4: f1402573 csrr a0,mhartid
+800000f8: 30200073 mret
+
+800000fc <test_2>:
+800000fc: 01400093 li ra,20
+80000100: 00600113 li sp,6
+80000104: 0220ff33 remu t5,ra,sp
+80000108: 00200e93 li t4,2
+8000010c: 00200193 li gp,2
+80000110: 0ddf1463 bne t5,t4,800001d8 <fail>
+
+80000114 <test_3>:
+80000114: fec00093 li ra,-20
+80000118: 00600113 li sp,6
+8000011c: 0220ff33 remu t5,ra,sp
+80000120: 00200e93 li t4,2
+80000124: 00300193 li gp,3
+80000128: 0bdf1863 bne t5,t4,800001d8 <fail>
+
+8000012c <test_4>:
+8000012c: 01400093 li ra,20
+80000130: ffa00113 li sp,-6
+80000134: 0220ff33 remu t5,ra,sp
+80000138: 01400e93 li t4,20
+8000013c: 00400193 li gp,4
+80000140: 09df1c63 bne t5,t4,800001d8 <fail>
+
+80000144 <test_5>:
+80000144: fec00093 li ra,-20
+80000148: ffa00113 li sp,-6
+8000014c: 0220ff33 remu t5,ra,sp
+80000150: fec00e93 li t4,-20
+80000154: 00500193 li gp,5
+80000158: 09df1063 bne t5,t4,800001d8 <fail>
+
+8000015c <test_6>:
+8000015c: 800000b7 lui ra,0x80000
+80000160: 00100113 li sp,1
+80000164: 0220ff33 remu t5,ra,sp
+80000168: 00000e93 li t4,0
+8000016c: 00600193 li gp,6
+80000170: 07df1463 bne t5,t4,800001d8 <fail>
+
+80000174 <test_7>:
+80000174: 800000b7 lui ra,0x80000
+80000178: fff00113 li sp,-1
+8000017c: 0220ff33 remu t5,ra,sp
+80000180: 80000eb7 lui t4,0x80000
+80000184: 00700193 li gp,7
+80000188: 05df1863 bne t5,t4,800001d8 <fail>
+
+8000018c <test_8>:
+8000018c: 800000b7 lui ra,0x80000
+80000190: 00000113 li sp,0
+80000194: 0220ff33 remu t5,ra,sp
+80000198: 80000eb7 lui t4,0x80000
+8000019c: 00800193 li gp,8
+800001a0: 03df1c63 bne t5,t4,800001d8 <fail>
+
+800001a4 <test_9>:
+800001a4: 00100093 li ra,1
+800001a8: 00000113 li sp,0
+800001ac: 0220ff33 remu t5,ra,sp
+800001b0: 00100e93 li t4,1
+800001b4: 00900193 li gp,9
+800001b8: 03df1063 bne t5,t4,800001d8 <fail>
+
+800001bc <test_10>:
+800001bc: 00000093 li ra,0
+800001c0: 00000113 li sp,0
+800001c4: 0220ff33 remu t5,ra,sp
+800001c8: 00000e93 li t4,0
+800001cc: 00a00193 li gp,10
+800001d0: 01df1463 bne t5,t4,800001d8 <fail>
+800001d4: 00301c63 bne zero,gp,800001ec <pass>
+
+800001d8 <fail>:
+800001d8: 0ff0000f fence
+800001dc: 00018063 beqz gp,800001dc <fail+0x4>
+800001e0: 00119193 slli gp,gp,0x1
+800001e4: 0011e193 ori gp,gp,1
+800001e8: 00000073 ecall
+
+800001ec <pass>:
+800001ec: 0ff0000f fence
+800001f0: 00100193 li gp,1
+800001f4: 00000073 ecall
+800001f8: c0001073 unimp
+800001fc: 0000 unimp
+800001fe: 0000 unimp
+80000200: 0000 unimp
+80000202: 0000 unimp
diff --git a/test/riscv-tests/rv32um-p-remu.elf b/test/riscv-tests/rv32um-p-remu.elf
new file mode 100644
index 0000000..6814ffa
--- /dev/null
+++ b/test/riscv-tests/rv32um-p-remu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-div.dump b/test/riscv-tests/rv32um-v-div.dump
new file mode 100644
index 0000000..0ba0f3a
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-div.dump
@@ -0,0 +1,981 @@
+
+rv32um-v-div: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 81058593 addi a1,a1,-2032 # 80002cd8 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 82c58593 addi a1,a1,-2004 # 80002d64 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 7d858593 addi a1,a1,2008 # 80002d7c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 70c58593 addi a1,a1,1804 # 80002d1c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 6fc58593 addi a1,a1,1788 # 80002e44 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 66458593 addi a1,a1,1636 # 80002e20 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 56060613 addi a2,a2,1376 # 80002e70 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 47060613 addi a2,a2,1136 # 80002dec <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 3f060613 addi a2,a2,1008 # 80002db8 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 00100793 li a5,1
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 077a97b7 lui a5,0x77a9
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 32478793 addi a5,a5,804 # 77a9324 <_start-0x78856cdc>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 01400093 li ra,20
+80002be4: 00600113 li sp,6
+80002be8: 0220cf33 div t5,ra,sp
+80002bec: 00300e93 li t4,3
+80002bf0: 00200193 li gp,2
+80002bf4: 0ddf1463 bne t5,t4,80002cbc <fail>
+
+80002bf8 <test_3>:
+80002bf8: fec00093 li ra,-20
+80002bfc: 00600113 li sp,6
+80002c00: 0220cf33 div t5,ra,sp
+80002c04: ffd00e93 li t4,-3
+80002c08: 00300193 li gp,3
+80002c0c: 0bdf1863 bne t5,t4,80002cbc <fail>
+
+80002c10 <test_4>:
+80002c10: 01400093 li ra,20
+80002c14: ffa00113 li sp,-6
+80002c18: 0220cf33 div t5,ra,sp
+80002c1c: ffd00e93 li t4,-3
+80002c20: 00400193 li gp,4
+80002c24: 09df1c63 bne t5,t4,80002cbc <fail>
+
+80002c28 <test_5>:
+80002c28: fec00093 li ra,-20
+80002c2c: ffa00113 li sp,-6
+80002c30: 0220cf33 div t5,ra,sp
+80002c34: 00300e93 li t4,3
+80002c38: 00500193 li gp,5
+80002c3c: 09df1063 bne t5,t4,80002cbc <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00100113 li sp,1
+80002c48: 0220cf33 div t5,ra,sp
+80002c4c: 80000eb7 lui t4,0x80000
+80002c50: 00600193 li gp,6
+80002c54: 07df1463 bne t5,t4,80002cbc <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: fff00113 li sp,-1
+80002c60: 0220cf33 div t5,ra,sp
+80002c64: 80000eb7 lui t4,0x80000
+80002c68: 00700193 li gp,7
+80002c6c: 05df1863 bne t5,t4,80002cbc <fail>
+
+80002c70 <test_8>:
+80002c70: 800000b7 lui ra,0x80000
+80002c74: 00000113 li sp,0
+80002c78: 0220cf33 div t5,ra,sp
+80002c7c: fff00e93 li t4,-1
+80002c80: 00800193 li gp,8
+80002c84: 03df1c63 bne t5,t4,80002cbc <fail>
+
+80002c88 <test_9>:
+80002c88: 00100093 li ra,1
+80002c8c: 00000113 li sp,0
+80002c90: 0220cf33 div t5,ra,sp
+80002c94: fff00e93 li t4,-1
+80002c98: 00900193 li gp,9
+80002c9c: 03df1063 bne t5,t4,80002cbc <fail>
+
+80002ca0 <test_10>:
+80002ca0: 00000093 li ra,0
+80002ca4: 00000113 li sp,0
+80002ca8: 0220cf33 div t5,ra,sp
+80002cac: fff00e93 li t4,-1
+80002cb0: 00a00193 li gp,10
+80002cb4: 01df1463 bne t5,t4,80002cbc <fail>
+80002cb8: 00301a63 bne zero,gp,80002ccc <pass>
+
+80002cbc <fail>:
+80002cbc: 00119513 slli a0,gp,0x1
+80002cc0: 00050063 beqz a0,80002cc0 <fail+0x4>
+80002cc4: 00156513 ori a0,a0,1
+80002cc8: 00000073 ecall
+
+80002ccc <pass>:
+80002ccc: 00100513 li a0,1
+80002cd0: 00000073 ecall
+80002cd4: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-div.elf b/test/riscv-tests/rv32um-v-div.elf
new file mode 100644
index 0000000..18baeb5
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-div.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-divu.dump b/test/riscv-tests/rv32um-v-divu.dump
new file mode 100644
index 0000000..aaf7f04
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-divu.dump
@@ -0,0 +1,982 @@
+
+rv32um-v-divu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 81458593 addi a1,a1,-2028 # 80002cdc <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 83058593 addi a1,a1,-2000 # 80002d68 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 7dc58593 addi a1,a1,2012 # 80002d80 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 71058593 addi a1,a1,1808 # 80002d20 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 70058593 addi a1,a1,1792 # 80002e48 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 66858593 addi a1,a1,1640 # 80002e24 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 56460613 addi a2,a2,1380 # 80002e74 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 47460613 addi a2,a2,1140 # 80002df0 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 3f460613 addi a2,a2,1012 # 80002dbc <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 02e00793 li a5,46
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0f7eb7b7 lui a5,0xf7eb
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 96e78793 addi a5,a5,-1682 # f7ea96e <_start-0x70815692>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 01400093 li ra,20
+80002be4: 00600113 li sp,6
+80002be8: 0220df33 divu t5,ra,sp
+80002bec: 00300e93 li t4,3
+80002bf0: 00200193 li gp,2
+80002bf4: 0ddf1663 bne t5,t4,80002cc0 <fail>
+
+80002bf8 <test_3>:
+80002bf8: fec00093 li ra,-20
+80002bfc: 00600113 li sp,6
+80002c00: 0220df33 divu t5,ra,sp
+80002c04: 2aaabeb7 lui t4,0x2aaab
+80002c08: aa7e8e93 addi t4,t4,-1369 # 2aaaaaa7 <_start-0x55555559>
+80002c0c: 00300193 li gp,3
+80002c10: 0bdf1863 bne t5,t4,80002cc0 <fail>
+
+80002c14 <test_4>:
+80002c14: 01400093 li ra,20
+80002c18: ffa00113 li sp,-6
+80002c1c: 0220df33 divu t5,ra,sp
+80002c20: 00000e93 li t4,0
+80002c24: 00400193 li gp,4
+80002c28: 09df1c63 bne t5,t4,80002cc0 <fail>
+
+80002c2c <test_5>:
+80002c2c: fec00093 li ra,-20
+80002c30: ffa00113 li sp,-6
+80002c34: 0220df33 divu t5,ra,sp
+80002c38: 00000e93 li t4,0
+80002c3c: 00500193 li gp,5
+80002c40: 09df1063 bne t5,t4,80002cc0 <fail>
+
+80002c44 <test_6>:
+80002c44: 800000b7 lui ra,0x80000
+80002c48: 00100113 li sp,1
+80002c4c: 0220df33 divu t5,ra,sp
+80002c50: 80000eb7 lui t4,0x80000
+80002c54: 00600193 li gp,6
+80002c58: 07df1463 bne t5,t4,80002cc0 <fail>
+
+80002c5c <test_7>:
+80002c5c: 800000b7 lui ra,0x80000
+80002c60: fff00113 li sp,-1
+80002c64: 0220df33 divu t5,ra,sp
+80002c68: 00000e93 li t4,0
+80002c6c: 00700193 li gp,7
+80002c70: 05df1863 bne t5,t4,80002cc0 <fail>
+
+80002c74 <test_8>:
+80002c74: 800000b7 lui ra,0x80000
+80002c78: 00000113 li sp,0
+80002c7c: 0220df33 divu t5,ra,sp
+80002c80: fff00e93 li t4,-1
+80002c84: 00800193 li gp,8
+80002c88: 03df1c63 bne t5,t4,80002cc0 <fail>
+
+80002c8c <test_9>:
+80002c8c: 00100093 li ra,1
+80002c90: 00000113 li sp,0
+80002c94: 0220df33 divu t5,ra,sp
+80002c98: fff00e93 li t4,-1
+80002c9c: 00900193 li gp,9
+80002ca0: 03df1063 bne t5,t4,80002cc0 <fail>
+
+80002ca4 <test_10>:
+80002ca4: 00000093 li ra,0
+80002ca8: 00000113 li sp,0
+80002cac: 0220df33 divu t5,ra,sp
+80002cb0: fff00e93 li t4,-1
+80002cb4: 00a00193 li gp,10
+80002cb8: 01df1463 bne t5,t4,80002cc0 <fail>
+80002cbc: 00301a63 bne zero,gp,80002cd0 <pass>
+
+80002cc0 <fail>:
+80002cc0: 00119513 slli a0,gp,0x1
+80002cc4: 00050063 beqz a0,80002cc4 <fail+0x4>
+80002cc8: 00156513 ori a0,a0,1
+80002ccc: 00000073 ecall
+
+80002cd0 <pass>:
+80002cd0: 00100513 li a0,1
+80002cd4: 00000073 ecall
+80002cd8: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-divu.elf b/test/riscv-tests/rv32um-v-divu.elf
new file mode 100644
index 0000000..87e24b5
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-divu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-mul.dump b/test/riscv-tests/rv32um-v-mul.dump
new file mode 100644
index 0000000..222e8ad
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mul.dump
@@ -0,0 +1,1286 @@
+
+rv32um-v-mul: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1858593 addi a1,a1,-1000 # 80003150 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc458593 addi a1,a1,-1084 # 80003168 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af858593 addi a1,a1,-1288 # 80003108 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae858593 addi a1,a1,-1304 # 80003230 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a5058593 addi a1,a1,-1456 # 8000320c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94c60613 addi a2,a2,-1716 # 8000325c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85c60613 addi a2,a2,-1956 # 800031d8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 01300793 li a5,19
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 000eb7b7 lui a5,0xeb
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 97e78793 addi a5,a5,-1666 # ea97e <_start-0x7ff15682>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 000080b7 lui ra,0x8
+80002be4: e0008093 addi ra,ra,-512 # 7e00 <_start-0x7fff8200>
+80002be8: b6db7137 lui sp,0xb6db7
+80002bec: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db09bf>
+80002bf0: 02208f33 mul t5,ra,sp
+80002bf4: 00001eb7 lui t4,0x1
+80002bf8: 200e8e93 addi t4,t4,512 # 1200 <_start-0x7fffee00>
+80002bfc: 02000193 li gp,32
+80002c00: 4bdf1463 bne t5,t4,800030a8 <fail>
+
+80002c04 <test_33>:
+80002c04: 000080b7 lui ra,0x8
+80002c08: fc008093 addi ra,ra,-64 # 7fc0 <_start-0x7fff8040>
+80002c0c: b6db7137 lui sp,0xb6db7
+80002c10: db710113 addi sp,sp,-585 # b6db6db7 <_end+0x36db09bf>
+80002c14: 02208f33 mul t5,ra,sp
+80002c18: 00001eb7 lui t4,0x1
+80002c1c: 240e8e93 addi t4,t4,576 # 1240 <_start-0x7fffedc0>
+80002c20: 02100193 li gp,33
+80002c24: 49df1263 bne t5,t4,800030a8 <fail>
+
+80002c28 <test_2>:
+80002c28: 00000093 li ra,0
+80002c2c: 00000113 li sp,0
+80002c30: 02208f33 mul t5,ra,sp
+80002c34: 00000e93 li t4,0
+80002c38: 00200193 li gp,2
+80002c3c: 47df1663 bne t5,t4,800030a8 <fail>
+
+80002c40 <test_3>:
+80002c40: 00100093 li ra,1
+80002c44: 00100113 li sp,1
+80002c48: 02208f33 mul t5,ra,sp
+80002c4c: 00100e93 li t4,1
+80002c50: 00300193 li gp,3
+80002c54: 45df1a63 bne t5,t4,800030a8 <fail>
+
+80002c58 <test_4>:
+80002c58: 00300093 li ra,3
+80002c5c: 00700113 li sp,7
+80002c60: 02208f33 mul t5,ra,sp
+80002c64: 01500e93 li t4,21
+80002c68: 00400193 li gp,4
+80002c6c: 43df1e63 bne t5,t4,800030a8 <fail>
+
+80002c70 <test_5>:
+80002c70: 00000093 li ra,0
+80002c74: ffff8137 lui sp,0xffff8
+80002c78: 02208f33 mul t5,ra,sp
+80002c7c: 00000e93 li t4,0
+80002c80: 00500193 li gp,5
+80002c84: 43df1263 bne t5,t4,800030a8 <fail>
+
+80002c88 <test_6>:
+80002c88: 800000b7 lui ra,0x80000
+80002c8c: 00000113 li sp,0
+80002c90: 02208f33 mul t5,ra,sp
+80002c94: 00000e93 li t4,0
+80002c98: 00600193 li gp,6
+80002c9c: 41df1663 bne t5,t4,800030a8 <fail>
+
+80002ca0 <test_7>:
+80002ca0: 800000b7 lui ra,0x80000
+80002ca4: ffff8137 lui sp,0xffff8
+80002ca8: 02208f33 mul t5,ra,sp
+80002cac: 00000e93 li t4,0
+80002cb0: 00700193 li gp,7
+80002cb4: 3fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002cb8 <test_30>:
+80002cb8: aaaab0b7 lui ra,0xaaaab
+80002cbc: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002cc0: 00030137 lui sp,0x30
+80002cc4: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+80002cc8: 02208f33 mul t5,ra,sp
+80002ccc: 00010eb7 lui t4,0x10
+80002cd0: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081>
+80002cd4: 01e00193 li gp,30
+80002cd8: 3ddf1863 bne t5,t4,800030a8 <fail>
+
+80002cdc <test_31>:
+80002cdc: 000300b7 lui ra,0x30
+80002ce0: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+80002ce4: aaaab137 lui sp,0xaaaab
+80002ce8: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002cec: 02208f33 mul t5,ra,sp
+80002cf0: 00010eb7 lui t4,0x10
+80002cf4: f7fe8e93 addi t4,t4,-129 # ff7f <_start-0x7fff0081>
+80002cf8: 01f00193 li gp,31
+80002cfc: 3bdf1663 bne t5,t4,800030a8 <fail>
+
+80002d00 <test_34>:
+80002d00: ff0000b7 lui ra,0xff000
+80002d04: ff000137 lui sp,0xff000
+80002d08: 02208f33 mul t5,ra,sp
+80002d0c: 00000e93 li t4,0
+80002d10: 02200193 li gp,34
+80002d14: 39df1a63 bne t5,t4,800030a8 <fail>
+
+80002d18 <test_35>:
+80002d18: fff00093 li ra,-1
+80002d1c: fff00113 li sp,-1
+80002d20: 02208f33 mul t5,ra,sp
+80002d24: 00100e93 li t4,1
+80002d28: 02300193 li gp,35
+80002d2c: 37df1e63 bne t5,t4,800030a8 <fail>
+
+80002d30 <test_36>:
+80002d30: fff00093 li ra,-1
+80002d34: 00100113 li sp,1
+80002d38: 02208f33 mul t5,ra,sp
+80002d3c: fff00e93 li t4,-1
+80002d40: 02400193 li gp,36
+80002d44: 37df1263 bne t5,t4,800030a8 <fail>
+
+80002d48 <test_37>:
+80002d48: 00100093 li ra,1
+80002d4c: fff00113 li sp,-1
+80002d50: 02208f33 mul t5,ra,sp
+80002d54: fff00e93 li t4,-1
+80002d58: 02500193 li gp,37
+80002d5c: 35df1663 bne t5,t4,800030a8 <fail>
+
+80002d60 <test_8>:
+80002d60: 00d00093 li ra,13
+80002d64: 00b00113 li sp,11
+80002d68: 022080b3 mul ra,ra,sp
+80002d6c: 08f00e93 li t4,143
+80002d70: 00800193 li gp,8
+80002d74: 33d09a63 bne ra,t4,800030a8 <fail>
+
+80002d78 <test_9>:
+80002d78: 00e00093 li ra,14
+80002d7c: 00b00113 li sp,11
+80002d80: 02208133 mul sp,ra,sp
+80002d84: 09a00e93 li t4,154
+80002d88: 00900193 li gp,9
+80002d8c: 31d11e63 bne sp,t4,800030a8 <fail>
+
+80002d90 <test_10>:
+80002d90: 00d00093 li ra,13
+80002d94: 021080b3 mul ra,ra,ra
+80002d98: 0a900e93 li t4,169
+80002d9c: 00a00193 li gp,10
+80002da0: 31d09463 bne ra,t4,800030a8 <fail>
+
+80002da4 <test_11>:
+80002da4: 00000213 li tp,0
+80002da8: 00d00093 li ra,13
+80002dac: 00b00113 li sp,11
+80002db0: 02208f33 mul t5,ra,sp
+80002db4: 000f0313 mv t1,t5
+80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dbc: 00200293 li t0,2
+80002dc0: fe5214e3 bne tp,t0,80002da8 <test_11+0x4>
+80002dc4: 08f00e93 li t4,143
+80002dc8: 00b00193 li gp,11
+80002dcc: 2dd31e63 bne t1,t4,800030a8 <fail>
+
+80002dd0 <test_12>:
+80002dd0: 00000213 li tp,0
+80002dd4: 00e00093 li ra,14
+80002dd8: 00b00113 li sp,11
+80002ddc: 02208f33 mul t5,ra,sp
+80002de0: 00000013 nop
+80002de4: 000f0313 mv t1,t5
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5212e3 bne tp,t0,80002dd4 <test_12+0x4>
+80002df4: 09a00e93 li t4,154
+80002df8: 00c00193 li gp,12
+80002dfc: 2bd31663 bne t1,t4,800030a8 <fail>
+
+80002e00 <test_13>:
+80002e00: 00000213 li tp,0
+80002e04: 00f00093 li ra,15
+80002e08: 00b00113 li sp,11
+80002e0c: 02208f33 mul t5,ra,sp
+80002e10: 00000013 nop
+80002e14: 00000013 nop
+80002e18: 000f0313 mv t1,t5
+80002e1c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e20: 00200293 li t0,2
+80002e24: fe5210e3 bne tp,t0,80002e04 <test_13+0x4>
+80002e28: 0a500e93 li t4,165
+80002e2c: 00d00193 li gp,13
+80002e30: 27d31c63 bne t1,t4,800030a8 <fail>
+
+80002e34 <test_14>:
+80002e34: 00000213 li tp,0
+80002e38: 00d00093 li ra,13
+80002e3c: 00b00113 li sp,11
+80002e40: 02208f33 mul t5,ra,sp
+80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e48: 00200293 li t0,2
+80002e4c: fe5216e3 bne tp,t0,80002e38 <test_14+0x4>
+80002e50: 08f00e93 li t4,143
+80002e54: 00e00193 li gp,14
+80002e58: 25df1863 bne t5,t4,800030a8 <fail>
+
+80002e5c <test_15>:
+80002e5c: 00000213 li tp,0
+80002e60: 00e00093 li ra,14
+80002e64: 00b00113 li sp,11
+80002e68: 00000013 nop
+80002e6c: 02208f33 mul t5,ra,sp
+80002e70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e74: 00200293 li t0,2
+80002e78: fe5214e3 bne tp,t0,80002e60 <test_15+0x4>
+80002e7c: 09a00e93 li t4,154
+80002e80: 00f00193 li gp,15
+80002e84: 23df1263 bne t5,t4,800030a8 <fail>
+
+80002e88 <test_16>:
+80002e88: 00000213 li tp,0
+80002e8c: 00f00093 li ra,15
+80002e90: 00b00113 li sp,11
+80002e94: 00000013 nop
+80002e98: 00000013 nop
+80002e9c: 02208f33 mul t5,ra,sp
+80002ea0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ea4: 00200293 li t0,2
+80002ea8: fe5212e3 bne tp,t0,80002e8c <test_16+0x4>
+80002eac: 0a500e93 li t4,165
+80002eb0: 01000193 li gp,16
+80002eb4: 1fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002eb8 <test_17>:
+80002eb8: 00000213 li tp,0
+80002ebc: 00d00093 li ra,13
+80002ec0: 00000013 nop
+80002ec4: 00b00113 li sp,11
+80002ec8: 02208f33 mul t5,ra,sp
+80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ed0: 00200293 li t0,2
+80002ed4: fe5214e3 bne tp,t0,80002ebc <test_17+0x4>
+80002ed8: 08f00e93 li t4,143
+80002edc: 01100193 li gp,17
+80002ee0: 1ddf1463 bne t5,t4,800030a8 <fail>
+
+80002ee4 <test_18>:
+80002ee4: 00000213 li tp,0
+80002ee8: 00e00093 li ra,14
+80002eec: 00000013 nop
+80002ef0: 00b00113 li sp,11
+80002ef4: 00000013 nop
+80002ef8: 02208f33 mul t5,ra,sp
+80002efc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f00: 00200293 li t0,2
+80002f04: fe5212e3 bne tp,t0,80002ee8 <test_18+0x4>
+80002f08: 09a00e93 li t4,154
+80002f0c: 01200193 li gp,18
+80002f10: 19df1c63 bne t5,t4,800030a8 <fail>
+
+80002f14 <test_19>:
+80002f14: 00000213 li tp,0
+80002f18: 00f00093 li ra,15
+80002f1c: 00000013 nop
+80002f20: 00000013 nop
+80002f24: 00b00113 li sp,11
+80002f28: 02208f33 mul t5,ra,sp
+80002f2c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f30: 00200293 li t0,2
+80002f34: fe5212e3 bne tp,t0,80002f18 <test_19+0x4>
+80002f38: 0a500e93 li t4,165
+80002f3c: 01300193 li gp,19
+80002f40: 17df1463 bne t5,t4,800030a8 <fail>
+
+80002f44 <test_20>:
+80002f44: 00000213 li tp,0
+80002f48: 00b00113 li sp,11
+80002f4c: 00d00093 li ra,13
+80002f50: 02208f33 mul t5,ra,sp
+80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f58: 00200293 li t0,2
+80002f5c: fe5216e3 bne tp,t0,80002f48 <test_20+0x4>
+80002f60: 08f00e93 li t4,143
+80002f64: 01400193 li gp,20
+80002f68: 15df1063 bne t5,t4,800030a8 <fail>
+
+80002f6c <test_21>:
+80002f6c: 00000213 li tp,0
+80002f70: 00b00113 li sp,11
+80002f74: 00e00093 li ra,14
+80002f78: 00000013 nop
+80002f7c: 02208f33 mul t5,ra,sp
+80002f80: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f84: 00200293 li t0,2
+80002f88: fe5214e3 bne tp,t0,80002f70 <test_21+0x4>
+80002f8c: 09a00e93 li t4,154
+80002f90: 01500193 li gp,21
+80002f94: 11df1a63 bne t5,t4,800030a8 <fail>
+
+80002f98 <test_22>:
+80002f98: 00000213 li tp,0
+80002f9c: 00b00113 li sp,11
+80002fa0: 00f00093 li ra,15
+80002fa4: 00000013 nop
+80002fa8: 00000013 nop
+80002fac: 02208f33 mul t5,ra,sp
+80002fb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fb4: 00200293 li t0,2
+80002fb8: fe5212e3 bne tp,t0,80002f9c <test_22+0x4>
+80002fbc: 0a500e93 li t4,165
+80002fc0: 01600193 li gp,22
+80002fc4: 0fdf1263 bne t5,t4,800030a8 <fail>
+
+80002fc8 <test_23>:
+80002fc8: 00000213 li tp,0
+80002fcc: 00b00113 li sp,11
+80002fd0: 00000013 nop
+80002fd4: 00d00093 li ra,13
+80002fd8: 02208f33 mul t5,ra,sp
+80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fe0: 00200293 li t0,2
+80002fe4: fe5214e3 bne tp,t0,80002fcc <test_23+0x4>
+80002fe8: 08f00e93 li t4,143
+80002fec: 01700193 li gp,23
+80002ff0: 0bdf1c63 bne t5,t4,800030a8 <fail>
+
+80002ff4 <test_24>:
+80002ff4: 00000213 li tp,0
+80002ff8: 00b00113 li sp,11
+80002ffc: 00000013 nop
+80003000: 00e00093 li ra,14
+80003004: 00000013 nop
+80003008: 02208f33 mul t5,ra,sp
+8000300c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003010: 00200293 li t0,2
+80003014: fe5212e3 bne tp,t0,80002ff8 <test_24+0x4>
+80003018: 09a00e93 li t4,154
+8000301c: 01800193 li gp,24
+80003020: 09df1463 bne t5,t4,800030a8 <fail>
+
+80003024 <test_25>:
+80003024: 00000213 li tp,0
+80003028: 00b00113 li sp,11
+8000302c: 00000013 nop
+80003030: 00000013 nop
+80003034: 00f00093 li ra,15
+80003038: 02208f33 mul t5,ra,sp
+8000303c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003040: 00200293 li t0,2
+80003044: fe5212e3 bne tp,t0,80003028 <test_25+0x4>
+80003048: 0a500e93 li t4,165
+8000304c: 01900193 li gp,25
+80003050: 05df1c63 bne t5,t4,800030a8 <fail>
+
+80003054 <test_26>:
+80003054: 01f00093 li ra,31
+80003058: 02100133 mul sp,zero,ra
+8000305c: 00000e93 li t4,0
+80003060: 01a00193 li gp,26
+80003064: 05d11263 bne sp,t4,800030a8 <fail>
+
+80003068 <test_27>:
+80003068: 02000093 li ra,32
+8000306c: 02008133 mul sp,ra,zero
+80003070: 00000e93 li t4,0
+80003074: 01b00193 li gp,27
+80003078: 03d11863 bne sp,t4,800030a8 <fail>
+
+8000307c <test_28>:
+8000307c: 020000b3 mul ra,zero,zero
+80003080: 00000e93 li t4,0
+80003084: 01c00193 li gp,28
+80003088: 03d09063 bne ra,t4,800030a8 <fail>
+
+8000308c <test_29>:
+8000308c: 02100093 li ra,33
+80003090: 02200113 li sp,34
+80003094: 02208033 mul zero,ra,sp
+80003098: 00000e93 li t4,0
+8000309c: 01d00193 li gp,29
+800030a0: 01d01463 bne zero,t4,800030a8 <fail>
+800030a4: 00301a63 bne zero,gp,800030b8 <pass>
+
+800030a8 <fail>:
+800030a8: 00119513 slli a0,gp,0x1
+800030ac: 00050063 beqz a0,800030ac <fail+0x4>
+800030b0: 00156513 ori a0,a0,1
+800030b4: 00000073 ecall
+
+800030b8 <pass>:
+800030b8: 00100513 li a0,1
+800030bc: 00000073 ecall
+800030c0: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-mul.elf b/test/riscv-tests/rv32um-v-mul.elf
new file mode 100644
index 0000000..e78ed99
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mul.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-mulh.dump b/test/riscv-tests/rv32um-v-mulh.dump
new file mode 100644
index 0000000..eef2631
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mulh.dump
@@ -0,0 +1,1282 @@
+
+rv32um-v-mulh: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1858593 addi a1,a1,-1000 # 80003150 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc458593 addi a1,a1,-1084 # 80003168 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af858593 addi a1,a1,-1288 # 80003108 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae858593 addi a1,a1,-1304 # 80003230 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a5058593 addi a1,a1,-1456 # 8000320c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94c60613 addi a2,a2,-1716 # 8000325c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85c60613 addi a2,a2,-1956 # 800031d8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03b00793 li a5,59
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0e9837b7 lui a5,0xe983
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 99d78793 addi a5,a5,-1635 # e98299d <_start-0x7167d663>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 02209f33 mulh t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 02209f33 mulh t5,ra,sp
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 49df1e63 bne t5,t4,800030a8 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 02209f33 mulh t5,ra,sp
+80002c1c: 00000e93 li t4,0
+80002c20: 00400193 li gp,4
+80002c24: 49df1263 bne t5,t4,800030a8 <fail>
+
+80002c28 <test_5>:
+80002c28: 00000093 li ra,0
+80002c2c: ffff8137 lui sp,0xffff8
+80002c30: 02209f33 mulh t5,ra,sp
+80002c34: 00000e93 li t4,0
+80002c38: 00500193 li gp,5
+80002c3c: 47df1663 bne t5,t4,800030a8 <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00000113 li sp,0
+80002c48: 02209f33 mulh t5,ra,sp
+80002c4c: 00000e93 li t4,0
+80002c50: 00600193 li gp,6
+80002c54: 45df1a63 bne t5,t4,800030a8 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: 00000113 li sp,0
+80002c60: 02209f33 mulh t5,ra,sp
+80002c64: 00000e93 li t4,0
+80002c68: 00700193 li gp,7
+80002c6c: 43df1e63 bne t5,t4,800030a8 <fail>
+
+80002c70 <test_30>:
+80002c70: aaaab0b7 lui ra,0xaaaab
+80002c74: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002c78: 00030137 lui sp,0x30
+80002c7c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+80002c80: 02209f33 mulh t5,ra,sp
+80002c84: ffff0eb7 lui t4,0xffff0
+80002c88: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffe9c89>
+80002c8c: 01e00193 li gp,30
+80002c90: 41df1c63 bne t5,t4,800030a8 <fail>
+
+80002c94 <test_31>:
+80002c94: 000300b7 lui ra,0x30
+80002c98: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+80002c9c: aaaab137 lui sp,0xaaaab
+80002ca0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002ca4: 02209f33 mulh t5,ra,sp
+80002ca8: ffff0eb7 lui t4,0xffff0
+80002cac: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffe9c89>
+80002cb0: 01f00193 li gp,31
+80002cb4: 3fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002cb8 <test_32>:
+80002cb8: ff0000b7 lui ra,0xff000
+80002cbc: ff000137 lui sp,0xff000
+80002cc0: 02209f33 mulh t5,ra,sp
+80002cc4: 00010eb7 lui t4,0x10
+80002cc8: 02000193 li gp,32
+80002ccc: 3ddf1e63 bne t5,t4,800030a8 <fail>
+
+80002cd0 <test_33>:
+80002cd0: fff00093 li ra,-1
+80002cd4: fff00113 li sp,-1
+80002cd8: 02209f33 mulh t5,ra,sp
+80002cdc: 00000e93 li t4,0
+80002ce0: 02100193 li gp,33
+80002ce4: 3ddf1263 bne t5,t4,800030a8 <fail>
+
+80002ce8 <test_34>:
+80002ce8: fff00093 li ra,-1
+80002cec: 00100113 li sp,1
+80002cf0: 02209f33 mulh t5,ra,sp
+80002cf4: fff00e93 li t4,-1
+80002cf8: 02200193 li gp,34
+80002cfc: 3bdf1663 bne t5,t4,800030a8 <fail>
+
+80002d00 <test_35>:
+80002d00: 00100093 li ra,1
+80002d04: fff00113 li sp,-1
+80002d08: 02209f33 mulh t5,ra,sp
+80002d0c: fff00e93 li t4,-1
+80002d10: 02300193 li gp,35
+80002d14: 39df1a63 bne t5,t4,800030a8 <fail>
+
+80002d18 <test_8>:
+80002d18: 00d000b7 lui ra,0xd00
+80002d1c: 00b00137 lui sp,0xb00
+80002d20: 022090b3 mulh ra,ra,sp
+80002d24: 00009eb7 lui t4,0x9
+80002d28: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002d2c: 00800193 li gp,8
+80002d30: 37d09c63 bne ra,t4,800030a8 <fail>
+
+80002d34 <test_9>:
+80002d34: 00e000b7 lui ra,0xe00
+80002d38: 00b00137 lui sp,0xb00
+80002d3c: 02209133 mulh sp,ra,sp
+80002d40: 0000aeb7 lui t4,0xa
+80002d44: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002d48: 00900193 li gp,9
+80002d4c: 35d11e63 bne sp,t4,800030a8 <fail>
+
+80002d50 <test_10>:
+80002d50: 00d000b7 lui ra,0xd00
+80002d54: 021090b3 mulh ra,ra,ra
+80002d58: 0000beb7 lui t4,0xb
+80002d5c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700>
+80002d60: 00a00193 li gp,10
+80002d64: 35d09263 bne ra,t4,800030a8 <fail>
+
+80002d68 <test_11>:
+80002d68: 00000213 li tp,0
+80002d6c: 00d000b7 lui ra,0xd00
+80002d70: 00b00137 lui sp,0xb00
+80002d74: 02209f33 mulh t5,ra,sp
+80002d78: 000f0313 mv t1,t5
+80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d80: 00200293 li t0,2
+80002d84: fe5214e3 bne tp,t0,80002d6c <test_11+0x4>
+80002d88: 00009eb7 lui t4,0x9
+80002d8c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002d90: 00b00193 li gp,11
+80002d94: 31d31a63 bne t1,t4,800030a8 <fail>
+
+80002d98 <test_12>:
+80002d98: 00000213 li tp,0
+80002d9c: 00e000b7 lui ra,0xe00
+80002da0: 00b00137 lui sp,0xb00
+80002da4: 02209f33 mulh t5,ra,sp
+80002da8: 00000013 nop
+80002dac: 000f0313 mv t1,t5
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5212e3 bne tp,t0,80002d9c <test_12+0x4>
+80002dbc: 0000aeb7 lui t4,0xa
+80002dc0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002dc4: 00c00193 li gp,12
+80002dc8: 2fd31063 bne t1,t4,800030a8 <fail>
+
+80002dcc <test_13>:
+80002dcc: 00000213 li tp,0
+80002dd0: 00f000b7 lui ra,0xf00
+80002dd4: 00b00137 lui sp,0xb00
+80002dd8: 02209f33 mulh t5,ra,sp
+80002ddc: 00000013 nop
+80002de0: 00000013 nop
+80002de4: 000f0313 mv t1,t5
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5210e3 bne tp,t0,80002dd0 <test_13+0x4>
+80002df4: 0000aeb7 lui t4,0xa
+80002df8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002dfc: 00d00193 li gp,13
+80002e00: 2bd31463 bne t1,t4,800030a8 <fail>
+
+80002e04 <test_14>:
+80002e04: 00000213 li tp,0
+80002e08: 00d000b7 lui ra,0xd00
+80002e0c: 00b00137 lui sp,0xb00
+80002e10: 02209f33 mulh t5,ra,sp
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fe5216e3 bne tp,t0,80002e08 <test_14+0x4>
+80002e20: 00009eb7 lui t4,0x9
+80002e24: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002e28: 00e00193 li gp,14
+80002e2c: 27df1e63 bne t5,t4,800030a8 <fail>
+
+80002e30 <test_15>:
+80002e30: 00000213 li tp,0
+80002e34: 00e000b7 lui ra,0xe00
+80002e38: 00b00137 lui sp,0xb00
+80002e3c: 00000013 nop
+80002e40: 02209f33 mulh t5,ra,sp
+80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e48: 00200293 li t0,2
+80002e4c: fe5214e3 bne tp,t0,80002e34 <test_15+0x4>
+80002e50: 0000aeb7 lui t4,0xa
+80002e54: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002e58: 00f00193 li gp,15
+80002e5c: 25df1663 bne t5,t4,800030a8 <fail>
+
+80002e60 <test_16>:
+80002e60: 00000213 li tp,0
+80002e64: 00f000b7 lui ra,0xf00
+80002e68: 00b00137 lui sp,0xb00
+80002e6c: 00000013 nop
+80002e70: 00000013 nop
+80002e74: 02209f33 mulh t5,ra,sp
+80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e7c: 00200293 li t0,2
+80002e80: fe5212e3 bne tp,t0,80002e64 <test_16+0x4>
+80002e84: 0000aeb7 lui t4,0xa
+80002e88: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002e8c: 01000193 li gp,16
+80002e90: 21df1c63 bne t5,t4,800030a8 <fail>
+
+80002e94 <test_17>:
+80002e94: 00000213 li tp,0
+80002e98: 00d000b7 lui ra,0xd00
+80002e9c: 00000013 nop
+80002ea0: 00b00137 lui sp,0xb00
+80002ea4: 02209f33 mulh t5,ra,sp
+80002ea8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002eac: 00200293 li t0,2
+80002eb0: fe5214e3 bne tp,t0,80002e98 <test_17+0x4>
+80002eb4: 00009eb7 lui t4,0x9
+80002eb8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002ebc: 01100193 li gp,17
+80002ec0: 1fdf1463 bne t5,t4,800030a8 <fail>
+
+80002ec4 <test_18>:
+80002ec4: 00000213 li tp,0
+80002ec8: 00e000b7 lui ra,0xe00
+80002ecc: 00000013 nop
+80002ed0: 00b00137 lui sp,0xb00
+80002ed4: 00000013 nop
+80002ed8: 02209f33 mulh t5,ra,sp
+80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ee0: 00200293 li t0,2
+80002ee4: fe5212e3 bne tp,t0,80002ec8 <test_18+0x4>
+80002ee8: 0000aeb7 lui t4,0xa
+80002eec: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002ef0: 01200193 li gp,18
+80002ef4: 1bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002ef8 <test_19>:
+80002ef8: 00000213 li tp,0
+80002efc: 00f000b7 lui ra,0xf00
+80002f00: 00000013 nop
+80002f04: 00000013 nop
+80002f08: 00b00137 lui sp,0xb00
+80002f0c: 02209f33 mulh t5,ra,sp
+80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f14: 00200293 li t0,2
+80002f18: fe5212e3 bne tp,t0,80002efc <test_19+0x4>
+80002f1c: 0000aeb7 lui t4,0xa
+80002f20: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002f24: 01300193 li gp,19
+80002f28: 19df1063 bne t5,t4,800030a8 <fail>
+
+80002f2c <test_20>:
+80002f2c: 00000213 li tp,0
+80002f30: 00b00137 lui sp,0xb00
+80002f34: 00d000b7 lui ra,0xd00
+80002f38: 02209f33 mulh t5,ra,sp
+80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f40: 00200293 li t0,2
+80002f44: fe5216e3 bne tp,t0,80002f30 <test_20+0x4>
+80002f48: 00009eb7 lui t4,0x9
+80002f4c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002f50: 01400193 li gp,20
+80002f54: 15df1a63 bne t5,t4,800030a8 <fail>
+
+80002f58 <test_21>:
+80002f58: 00000213 li tp,0
+80002f5c: 00b00137 lui sp,0xb00
+80002f60: 00e000b7 lui ra,0xe00
+80002f64: 00000013 nop
+80002f68: 02209f33 mulh t5,ra,sp
+80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f70: 00200293 li t0,2
+80002f74: fe5214e3 bne tp,t0,80002f5c <test_21+0x4>
+80002f78: 0000aeb7 lui t4,0xa
+80002f7c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002f80: 01500193 li gp,21
+80002f84: 13df1263 bne t5,t4,800030a8 <fail>
+
+80002f88 <test_22>:
+80002f88: 00000213 li tp,0
+80002f8c: 00b00137 lui sp,0xb00
+80002f90: 00f000b7 lui ra,0xf00
+80002f94: 00000013 nop
+80002f98: 00000013 nop
+80002f9c: 02209f33 mulh t5,ra,sp
+80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa4: 00200293 li t0,2
+80002fa8: fe5212e3 bne tp,t0,80002f8c <test_22+0x4>
+80002fac: 0000aeb7 lui t4,0xa
+80002fb0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002fb4: 01600193 li gp,22
+80002fb8: 0fdf1863 bne t5,t4,800030a8 <fail>
+
+80002fbc <test_23>:
+80002fbc: 00000213 li tp,0
+80002fc0: 00b00137 lui sp,0xb00
+80002fc4: 00000013 nop
+80002fc8: 00d000b7 lui ra,0xd00
+80002fcc: 02209f33 mulh t5,ra,sp
+80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fd4: 00200293 li t0,2
+80002fd8: fe5214e3 bne tp,t0,80002fc0 <test_23+0x4>
+80002fdc: 00009eb7 lui t4,0x9
+80002fe0: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002fe4: 01700193 li gp,23
+80002fe8: 0ddf1063 bne t5,t4,800030a8 <fail>
+
+80002fec <test_24>:
+80002fec: 00000213 li tp,0
+80002ff0: 00b00137 lui sp,0xb00
+80002ff4: 00000013 nop
+80002ff8: 00e000b7 lui ra,0xe00
+80002ffc: 00000013 nop
+80003000: 02209f33 mulh t5,ra,sp
+80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003008: 00200293 li t0,2
+8000300c: fe5212e3 bne tp,t0,80002ff0 <test_24+0x4>
+80003010: 0000aeb7 lui t4,0xa
+80003014: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80003018: 01800193 li gp,24
+8000301c: 09df1663 bne t5,t4,800030a8 <fail>
+
+80003020 <test_25>:
+80003020: 00000213 li tp,0
+80003024: 00b00137 lui sp,0xb00
+80003028: 00000013 nop
+8000302c: 00000013 nop
+80003030: 00f000b7 lui ra,0xf00
+80003034: 02209f33 mulh t5,ra,sp
+80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000303c: 00200293 li t0,2
+80003040: fe5212e3 bne tp,t0,80003024 <test_25+0x4>
+80003044: 0000aeb7 lui t4,0xa
+80003048: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+8000304c: 01900193 li gp,25
+80003050: 05df1c63 bne t5,t4,800030a8 <fail>
+
+80003054 <test_26>:
+80003054: 7c0000b7 lui ra,0x7c000
+80003058: 02101133 mulh sp,zero,ra
+8000305c: 00000e93 li t4,0
+80003060: 01a00193 li gp,26
+80003064: 05d11263 bne sp,t4,800030a8 <fail>
+
+80003068 <test_27>:
+80003068: 800000b7 lui ra,0x80000
+8000306c: 02009133 mulh sp,ra,zero
+80003070: 00000e93 li t4,0
+80003074: 01b00193 li gp,27
+80003078: 03d11863 bne sp,t4,800030a8 <fail>
+
+8000307c <test_28>:
+8000307c: 020010b3 mulh ra,zero,zero
+80003080: 00000e93 li t4,0
+80003084: 01c00193 li gp,28
+80003088: 03d09063 bne ra,t4,800030a8 <fail>
+
+8000308c <test_29>:
+8000308c: 021000b7 lui ra,0x2100
+80003090: 02200137 lui sp,0x2200
+80003094: 02209033 mulh zero,ra,sp
+80003098: 00000e93 li t4,0
+8000309c: 01d00193 li gp,29
+800030a0: 01d01463 bne zero,t4,800030a8 <fail>
+800030a4: 00301a63 bne zero,gp,800030b8 <pass>
+
+800030a8 <fail>:
+800030a8: 00119513 slli a0,gp,0x1
+800030ac: 00050063 beqz a0,800030ac <fail+0x4>
+800030b0: 00156513 ori a0,a0,1
+800030b4: 00000073 ecall
+
+800030b8 <pass>:
+800030b8: 00100513 li a0,1
+800030bc: 00000073 ecall
+800030c0: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-mulh.elf b/test/riscv-tests/rv32um-v-mulh.elf
new file mode 100644
index 0000000..0b26d3d
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mulh.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-mulhsu.dump b/test/riscv-tests/rv32um-v-mulhsu.dump
new file mode 100644
index 0000000..e9681e4
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mulhsu.dump
@@ -0,0 +1,1282 @@
+
+rv32um-v-mulhsu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1858593 addi a1,a1,-1000 # 80003150 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc458593 addi a1,a1,-1084 # 80003168 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af858593 addi a1,a1,-1288 # 80003108 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae858593 addi a1,a1,-1304 # 80003230 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a5058593 addi a1,a1,-1456 # 8000320c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94c60613 addi a2,a2,-1716 # 8000325c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85c60613 addi a2,a2,-1956 # 800031d8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03a00793 li a5,58
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 00fb27b7 lui a5,0xfb2
+80002b9c: 00080637 lui a2,0x80
+80002ba0: f0c78793 addi a5,a5,-244 # fb1f0c <_start-0x7f04e0f4>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 0220af33 mulhsu t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 0220af33 mulhsu t5,ra,sp
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 49df1e63 bne t5,t4,800030a8 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 0220af33 mulhsu t5,ra,sp
+80002c1c: 00000e93 li t4,0
+80002c20: 00400193 li gp,4
+80002c24: 49df1263 bne t5,t4,800030a8 <fail>
+
+80002c28 <test_5>:
+80002c28: 00000093 li ra,0
+80002c2c: ffff8137 lui sp,0xffff8
+80002c30: 0220af33 mulhsu t5,ra,sp
+80002c34: 00000e93 li t4,0
+80002c38: 00500193 li gp,5
+80002c3c: 47df1663 bne t5,t4,800030a8 <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00000113 li sp,0
+80002c48: 0220af33 mulhsu t5,ra,sp
+80002c4c: 00000e93 li t4,0
+80002c50: 00600193 li gp,6
+80002c54: 45df1a63 bne t5,t4,800030a8 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: ffff8137 lui sp,0xffff8
+80002c60: 0220af33 mulhsu t5,ra,sp
+80002c64: 80004eb7 lui t4,0x80004
+80002c68: 00700193 li gp,7
+80002c6c: 43df1e63 bne t5,t4,800030a8 <fail>
+
+80002c70 <test_30>:
+80002c70: aaaab0b7 lui ra,0xaaaab
+80002c74: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002c78: 00030137 lui sp,0x30
+80002c7c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+80002c80: 0220af33 mulhsu t5,ra,sp
+80002c84: ffff0eb7 lui t4,0xffff0
+80002c88: 081e8e93 addi t4,t4,129 # ffff0081 <_end+0x7ffe9c89>
+80002c8c: 01e00193 li gp,30
+80002c90: 41df1c63 bne t5,t4,800030a8 <fail>
+
+80002c94 <test_31>:
+80002c94: 000300b7 lui ra,0x30
+80002c98: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+80002c9c: aaaab137 lui sp,0xaaaab
+80002ca0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002ca4: 0220af33 mulhsu t5,ra,sp
+80002ca8: 00020eb7 lui t4,0x20
+80002cac: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102>
+80002cb0: 01f00193 li gp,31
+80002cb4: 3fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002cb8 <test_32>:
+80002cb8: ff0000b7 lui ra,0xff000
+80002cbc: ff000137 lui sp,0xff000
+80002cc0: 0220af33 mulhsu t5,ra,sp
+80002cc4: ff010eb7 lui t4,0xff010
+80002cc8: 02000193 li gp,32
+80002ccc: 3ddf1e63 bne t5,t4,800030a8 <fail>
+
+80002cd0 <test_33>:
+80002cd0: fff00093 li ra,-1
+80002cd4: fff00113 li sp,-1
+80002cd8: 0220af33 mulhsu t5,ra,sp
+80002cdc: fff00e93 li t4,-1
+80002ce0: 02100193 li gp,33
+80002ce4: 3ddf1263 bne t5,t4,800030a8 <fail>
+
+80002ce8 <test_34>:
+80002ce8: fff00093 li ra,-1
+80002cec: 00100113 li sp,1
+80002cf0: 0220af33 mulhsu t5,ra,sp
+80002cf4: fff00e93 li t4,-1
+80002cf8: 02200193 li gp,34
+80002cfc: 3bdf1663 bne t5,t4,800030a8 <fail>
+
+80002d00 <test_35>:
+80002d00: 00100093 li ra,1
+80002d04: fff00113 li sp,-1
+80002d08: 0220af33 mulhsu t5,ra,sp
+80002d0c: 00000e93 li t4,0
+80002d10: 02300193 li gp,35
+80002d14: 39df1a63 bne t5,t4,800030a8 <fail>
+
+80002d18 <test_8>:
+80002d18: 00d000b7 lui ra,0xd00
+80002d1c: 00b00137 lui sp,0xb00
+80002d20: 0220a0b3 mulhsu ra,ra,sp
+80002d24: 00009eb7 lui t4,0x9
+80002d28: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002d2c: 00800193 li gp,8
+80002d30: 37d09c63 bne ra,t4,800030a8 <fail>
+
+80002d34 <test_9>:
+80002d34: 00e000b7 lui ra,0xe00
+80002d38: 00b00137 lui sp,0xb00
+80002d3c: 0220a133 mulhsu sp,ra,sp
+80002d40: 0000aeb7 lui t4,0xa
+80002d44: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002d48: 00900193 li gp,9
+80002d4c: 35d11e63 bne sp,t4,800030a8 <fail>
+
+80002d50 <test_10>:
+80002d50: 00d000b7 lui ra,0xd00
+80002d54: 0210a0b3 mulhsu ra,ra,ra
+80002d58: 0000beb7 lui t4,0xb
+80002d5c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700>
+80002d60: 00a00193 li gp,10
+80002d64: 35d09263 bne ra,t4,800030a8 <fail>
+
+80002d68 <test_11>:
+80002d68: 00000213 li tp,0
+80002d6c: 00d000b7 lui ra,0xd00
+80002d70: 00b00137 lui sp,0xb00
+80002d74: 0220af33 mulhsu t5,ra,sp
+80002d78: 000f0313 mv t1,t5
+80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d80: 00200293 li t0,2
+80002d84: fe5214e3 bne tp,t0,80002d6c <test_11+0x4>
+80002d88: 00009eb7 lui t4,0x9
+80002d8c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002d90: 00b00193 li gp,11
+80002d94: 31d31a63 bne t1,t4,800030a8 <fail>
+
+80002d98 <test_12>:
+80002d98: 00000213 li tp,0
+80002d9c: 00e000b7 lui ra,0xe00
+80002da0: 00b00137 lui sp,0xb00
+80002da4: 0220af33 mulhsu t5,ra,sp
+80002da8: 00000013 nop
+80002dac: 000f0313 mv t1,t5
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5212e3 bne tp,t0,80002d9c <test_12+0x4>
+80002dbc: 0000aeb7 lui t4,0xa
+80002dc0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002dc4: 00c00193 li gp,12
+80002dc8: 2fd31063 bne t1,t4,800030a8 <fail>
+
+80002dcc <test_13>:
+80002dcc: 00000213 li tp,0
+80002dd0: 00f000b7 lui ra,0xf00
+80002dd4: 00b00137 lui sp,0xb00
+80002dd8: 0220af33 mulhsu t5,ra,sp
+80002ddc: 00000013 nop
+80002de0: 00000013 nop
+80002de4: 000f0313 mv t1,t5
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5210e3 bne tp,t0,80002dd0 <test_13+0x4>
+80002df4: 0000aeb7 lui t4,0xa
+80002df8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002dfc: 00d00193 li gp,13
+80002e00: 2bd31463 bne t1,t4,800030a8 <fail>
+
+80002e04 <test_14>:
+80002e04: 00000213 li tp,0
+80002e08: 00d000b7 lui ra,0xd00
+80002e0c: 00b00137 lui sp,0xb00
+80002e10: 0220af33 mulhsu t5,ra,sp
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fe5216e3 bne tp,t0,80002e08 <test_14+0x4>
+80002e20: 00009eb7 lui t4,0x9
+80002e24: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002e28: 00e00193 li gp,14
+80002e2c: 27df1e63 bne t5,t4,800030a8 <fail>
+
+80002e30 <test_15>:
+80002e30: 00000213 li tp,0
+80002e34: 00e000b7 lui ra,0xe00
+80002e38: 00b00137 lui sp,0xb00
+80002e3c: 00000013 nop
+80002e40: 0220af33 mulhsu t5,ra,sp
+80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e48: 00200293 li t0,2
+80002e4c: fe5214e3 bne tp,t0,80002e34 <test_15+0x4>
+80002e50: 0000aeb7 lui t4,0xa
+80002e54: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002e58: 00f00193 li gp,15
+80002e5c: 25df1663 bne t5,t4,800030a8 <fail>
+
+80002e60 <test_16>:
+80002e60: 00000213 li tp,0
+80002e64: 00f000b7 lui ra,0xf00
+80002e68: 00b00137 lui sp,0xb00
+80002e6c: 00000013 nop
+80002e70: 00000013 nop
+80002e74: 0220af33 mulhsu t5,ra,sp
+80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e7c: 00200293 li t0,2
+80002e80: fe5212e3 bne tp,t0,80002e64 <test_16+0x4>
+80002e84: 0000aeb7 lui t4,0xa
+80002e88: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002e8c: 01000193 li gp,16
+80002e90: 21df1c63 bne t5,t4,800030a8 <fail>
+
+80002e94 <test_17>:
+80002e94: 00000213 li tp,0
+80002e98: 00d000b7 lui ra,0xd00
+80002e9c: 00000013 nop
+80002ea0: 00b00137 lui sp,0xb00
+80002ea4: 0220af33 mulhsu t5,ra,sp
+80002ea8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002eac: 00200293 li t0,2
+80002eb0: fe5214e3 bne tp,t0,80002e98 <test_17+0x4>
+80002eb4: 00009eb7 lui t4,0x9
+80002eb8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002ebc: 01100193 li gp,17
+80002ec0: 1fdf1463 bne t5,t4,800030a8 <fail>
+
+80002ec4 <test_18>:
+80002ec4: 00000213 li tp,0
+80002ec8: 00e000b7 lui ra,0xe00
+80002ecc: 00000013 nop
+80002ed0: 00b00137 lui sp,0xb00
+80002ed4: 00000013 nop
+80002ed8: 0220af33 mulhsu t5,ra,sp
+80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ee0: 00200293 li t0,2
+80002ee4: fe5212e3 bne tp,t0,80002ec8 <test_18+0x4>
+80002ee8: 0000aeb7 lui t4,0xa
+80002eec: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002ef0: 01200193 li gp,18
+80002ef4: 1bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002ef8 <test_19>:
+80002ef8: 00000213 li tp,0
+80002efc: 00f000b7 lui ra,0xf00
+80002f00: 00000013 nop
+80002f04: 00000013 nop
+80002f08: 00b00137 lui sp,0xb00
+80002f0c: 0220af33 mulhsu t5,ra,sp
+80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f14: 00200293 li t0,2
+80002f18: fe5212e3 bne tp,t0,80002efc <test_19+0x4>
+80002f1c: 0000aeb7 lui t4,0xa
+80002f20: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002f24: 01300193 li gp,19
+80002f28: 19df1063 bne t5,t4,800030a8 <fail>
+
+80002f2c <test_20>:
+80002f2c: 00000213 li tp,0
+80002f30: 00b00137 lui sp,0xb00
+80002f34: 00d000b7 lui ra,0xd00
+80002f38: 0220af33 mulhsu t5,ra,sp
+80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f40: 00200293 li t0,2
+80002f44: fe5216e3 bne tp,t0,80002f30 <test_20+0x4>
+80002f48: 00009eb7 lui t4,0x9
+80002f4c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002f50: 01400193 li gp,20
+80002f54: 15df1a63 bne t5,t4,800030a8 <fail>
+
+80002f58 <test_21>:
+80002f58: 00000213 li tp,0
+80002f5c: 00b00137 lui sp,0xb00
+80002f60: 00e000b7 lui ra,0xe00
+80002f64: 00000013 nop
+80002f68: 0220af33 mulhsu t5,ra,sp
+80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f70: 00200293 li t0,2
+80002f74: fe5214e3 bne tp,t0,80002f5c <test_21+0x4>
+80002f78: 0000aeb7 lui t4,0xa
+80002f7c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002f80: 01500193 li gp,21
+80002f84: 13df1263 bne t5,t4,800030a8 <fail>
+
+80002f88 <test_22>:
+80002f88: 00000213 li tp,0
+80002f8c: 00b00137 lui sp,0xb00
+80002f90: 00f000b7 lui ra,0xf00
+80002f94: 00000013 nop
+80002f98: 00000013 nop
+80002f9c: 0220af33 mulhsu t5,ra,sp
+80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa4: 00200293 li t0,2
+80002fa8: fe5212e3 bne tp,t0,80002f8c <test_22+0x4>
+80002fac: 0000aeb7 lui t4,0xa
+80002fb0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002fb4: 01600193 li gp,22
+80002fb8: 0fdf1863 bne t5,t4,800030a8 <fail>
+
+80002fbc <test_23>:
+80002fbc: 00000213 li tp,0
+80002fc0: 00b00137 lui sp,0xb00
+80002fc4: 00000013 nop
+80002fc8: 00d000b7 lui ra,0xd00
+80002fcc: 0220af33 mulhsu t5,ra,sp
+80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fd4: 00200293 li t0,2
+80002fd8: fe5214e3 bne tp,t0,80002fc0 <test_23+0x4>
+80002fdc: 00009eb7 lui t4,0x9
+80002fe0: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002fe4: 01700193 li gp,23
+80002fe8: 0ddf1063 bne t5,t4,800030a8 <fail>
+
+80002fec <test_24>:
+80002fec: 00000213 li tp,0
+80002ff0: 00b00137 lui sp,0xb00
+80002ff4: 00000013 nop
+80002ff8: 00e000b7 lui ra,0xe00
+80002ffc: 00000013 nop
+80003000: 0220af33 mulhsu t5,ra,sp
+80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003008: 00200293 li t0,2
+8000300c: fe5212e3 bne tp,t0,80002ff0 <test_24+0x4>
+80003010: 0000aeb7 lui t4,0xa
+80003014: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80003018: 01800193 li gp,24
+8000301c: 09df1663 bne t5,t4,800030a8 <fail>
+
+80003020 <test_25>:
+80003020: 00000213 li tp,0
+80003024: 00b00137 lui sp,0xb00
+80003028: 00000013 nop
+8000302c: 00000013 nop
+80003030: 00f000b7 lui ra,0xf00
+80003034: 0220af33 mulhsu t5,ra,sp
+80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000303c: 00200293 li t0,2
+80003040: fe5212e3 bne tp,t0,80003024 <test_25+0x4>
+80003044: 0000aeb7 lui t4,0xa
+80003048: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+8000304c: 01900193 li gp,25
+80003050: 05df1c63 bne t5,t4,800030a8 <fail>
+
+80003054 <test_26>:
+80003054: 7c0000b7 lui ra,0x7c000
+80003058: 02102133 mulhsu sp,zero,ra
+8000305c: 00000e93 li t4,0
+80003060: 01a00193 li gp,26
+80003064: 05d11263 bne sp,t4,800030a8 <fail>
+
+80003068 <test_27>:
+80003068: 800000b7 lui ra,0x80000
+8000306c: 0200a133 mulhsu sp,ra,zero
+80003070: 00000e93 li t4,0
+80003074: 01b00193 li gp,27
+80003078: 03d11863 bne sp,t4,800030a8 <fail>
+
+8000307c <test_28>:
+8000307c: 020020b3 mulhsu ra,zero,zero
+80003080: 00000e93 li t4,0
+80003084: 01c00193 li gp,28
+80003088: 03d09063 bne ra,t4,800030a8 <fail>
+
+8000308c <test_29>:
+8000308c: 021000b7 lui ra,0x2100
+80003090: 02200137 lui sp,0x2200
+80003094: 0220a033 mulhsu zero,ra,sp
+80003098: 00000e93 li t4,0
+8000309c: 01d00193 li gp,29
+800030a0: 01d01463 bne zero,t4,800030a8 <fail>
+800030a4: 00301a63 bne zero,gp,800030b8 <pass>
+
+800030a8 <fail>:
+800030a8: 00119513 slli a0,gp,0x1
+800030ac: 00050063 beqz a0,800030ac <fail+0x4>
+800030b0: 00156513 ori a0,a0,1
+800030b4: 00000073 ecall
+
+800030b8 <pass>:
+800030b8: 00100513 li a0,1
+800030bc: 00000073 ecall
+800030c0: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-mulhsu.elf b/test/riscv-tests/rv32um-v-mulhsu.elf
new file mode 100644
index 0000000..780b1e8
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mulhsu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-mulhu.dump b/test/riscv-tests/rv32um-v-mulhu.dump
new file mode 100644
index 0000000..74dc8e7
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mulhu.dump
@@ -0,0 +1,1282 @@
+
+rv32um-v-mulhu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00007117 auipc sp,0x7
+8000001c: 35010113 addi sp,sp,848 # 80007368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00002317 auipc t1,0x2
+80002370: c9430313 addi t1,t1,-876 # 80004000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00004797 auipc a5,0x4
+8000238c: 06c78793 addi a5,a5,108 # 800063f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00004717 auipc a4,0x4
+800023a0: 05470713 addi a4,a4,84 # 800063f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00004697 auipc a3,0x4
+800023ac: 04f6a623 sw a5,76(a3) # 800063f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00004717 auipc a4,0x4
+800023dc: e2070713 addi a4,a4,-480 # 800061f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbf9c08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00004797 auipc a5,0x4
+800024bc: f207ac23 sw zero,-200(a5) # 800063f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: bfc58593 addi a1,a1,-1028 # 800030c4 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: c1858593 addi a1,a1,-1000 # 80003150 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00001597 auipc a1,0x1
+800025a8: bc458593 addi a1,a1,-1084 # 80003168 <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00001597 auipc a1,0x1
+80002614: af858593 addi a1,a1,-1288 # 80003108 <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00001597 auipc a1,0x1
+8000274c: ae858593 addi a1,a1,-1304 # 80003230 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00001597 auipc a1,0x1
+800027c0: a5058593 addi a1,a1,-1456 # 8000320c <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00004b17 auipc s6,0x4
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800061f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00001d17 auipc s10,0x1
+80002840: 7c4d0d13 addi s10,s10,1988 # 80004000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00004717 auipc a4,0x4
+8000285c: b8f72c23 sw a5,-1128(a4) # 800063f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00004717 auipc a4,0x4
+800028e8: b0c70713 addi a4,a4,-1268 # 800063f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00004717 auipc a4,0x4
+800028fc: aef72c23 sw a5,-1288(a4) # 800063f0 <freelist_tail>
+80002900: 00004717 auipc a4,0x4
+80002904: aef72a23 sw a5,-1292(a4) # 800063f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00001617 auipc a2,0x1
+80002914: 94c60613 addi a2,a2,-1716 # 8000325c <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00001617 auipc a2,0x1
+80002980: 85c60613 addi a2,a2,-1956 # 800031d8 <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 7dc60613 addi a2,a2,2012 # 800031a4 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00002797 auipc a5,0x2
+80002a4c: 5b878793 addi a5,a5,1464 # 80005000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00001697 auipc a3,0x1
+80002a60: 5af6a223 sw a5,1444(a3) # 80004000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00001717 auipc a4,0x1
+80002a6c: 59870713 addi a4,a4,1432 # 80004000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00002697 auipc a3,0x2
+80002a7c: 58f6a223 sw a5,1412(a3) # 80004ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbf9ccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc03797 auipc a5,0x7fc03
+80002aec: 51878793 addi a5,a5,1304 # ffc06000 <_end+0x7fbffc08>
+80002af0: 00004717 auipc a4,0x4
+80002af4: 90f72223 sw a5,-1788(a4) # 800063f4 <freelist_head>
+80002af8: 7fc03797 auipc a5,0x7fc03
+80002afc: 6f878793 addi a5,a5,1784 # ffc061f0 <_end+0x7fbffdf8>
+80002b00: 00004717 auipc a4,0x4
+80002b04: 8ef72823 sw a5,-1808(a4) # 800063f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00003717 auipc a4,0x3
+80002b10: 4f470713 addi a4,a4,1268 # 80006000 <freelist_nodes>
+80002b14: 00003317 auipc t1,0x3
+80002b18: 6e430313 addi t1,t1,1764 # 800061f8 <user_mapping>
+80002b1c: 03b00793 li a5,59
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00003797 auipc a5,0x3
+80002b6c: 6807a623 sw zero,1676(a5) # 800061f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 0ee8b7b7 lui a5,0xee8b
+80002b9c: 00080637 lui a2,0x80
+80002ba0: 5cf78793 addi a5,a5,1487 # ee8b5cf <_start-0x71174a31>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 00000093 li ra,0
+80002be4: 00000113 li sp,0
+80002be8: 0220bf33 mulhu t5,ra,sp
+80002bec: 00000e93 li t4,0
+80002bf0: 00200193 li gp,2
+80002bf4: 4bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002bf8 <test_3>:
+80002bf8: 00100093 li ra,1
+80002bfc: 00100113 li sp,1
+80002c00: 0220bf33 mulhu t5,ra,sp
+80002c04: 00000e93 li t4,0
+80002c08: 00300193 li gp,3
+80002c0c: 49df1e63 bne t5,t4,800030a8 <fail>
+
+80002c10 <test_4>:
+80002c10: 00300093 li ra,3
+80002c14: 00700113 li sp,7
+80002c18: 0220bf33 mulhu t5,ra,sp
+80002c1c: 00000e93 li t4,0
+80002c20: 00400193 li gp,4
+80002c24: 49df1263 bne t5,t4,800030a8 <fail>
+
+80002c28 <test_5>:
+80002c28: 00000093 li ra,0
+80002c2c: ffff8137 lui sp,0xffff8
+80002c30: 0220bf33 mulhu t5,ra,sp
+80002c34: 00000e93 li t4,0
+80002c38: 00500193 li gp,5
+80002c3c: 47df1663 bne t5,t4,800030a8 <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00000113 li sp,0
+80002c48: 0220bf33 mulhu t5,ra,sp
+80002c4c: 00000e93 li t4,0
+80002c50: 00600193 li gp,6
+80002c54: 45df1a63 bne t5,t4,800030a8 <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: ffff8137 lui sp,0xffff8
+80002c60: 0220bf33 mulhu t5,ra,sp
+80002c64: 7fffceb7 lui t4,0x7fffc
+80002c68: 00700193 li gp,7
+80002c6c: 43df1e63 bne t5,t4,800030a8 <fail>
+
+80002c70 <test_30>:
+80002c70: aaaab0b7 lui ra,0xaaaab
+80002c74: aab08093 addi ra,ra,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002c78: 00030137 lui sp,0x30
+80002c7c: e7d10113 addi sp,sp,-387 # 2fe7d <_start-0x7ffd0183>
+80002c80: 0220bf33 mulhu t5,ra,sp
+80002c84: 00020eb7 lui t4,0x20
+80002c88: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102>
+80002c8c: 01e00193 li gp,30
+80002c90: 41df1c63 bne t5,t4,800030a8 <fail>
+
+80002c94 <test_31>:
+80002c94: 000300b7 lui ra,0x30
+80002c98: e7d08093 addi ra,ra,-387 # 2fe7d <_start-0x7ffd0183>
+80002c9c: aaaab137 lui sp,0xaaaab
+80002ca0: aab10113 addi sp,sp,-1365 # aaaaaaab <_end+0x2aaa46b3>
+80002ca4: 0220bf33 mulhu t5,ra,sp
+80002ca8: 00020eb7 lui t4,0x20
+80002cac: efee8e93 addi t4,t4,-258 # 1fefe <_start-0x7ffe0102>
+80002cb0: 01f00193 li gp,31
+80002cb4: 3fdf1a63 bne t5,t4,800030a8 <fail>
+
+80002cb8 <test_32>:
+80002cb8: ff0000b7 lui ra,0xff000
+80002cbc: ff000137 lui sp,0xff000
+80002cc0: 0220bf33 mulhu t5,ra,sp
+80002cc4: fe010eb7 lui t4,0xfe010
+80002cc8: 02000193 li gp,32
+80002ccc: 3ddf1e63 bne t5,t4,800030a8 <fail>
+
+80002cd0 <test_33>:
+80002cd0: fff00093 li ra,-1
+80002cd4: fff00113 li sp,-1
+80002cd8: 0220bf33 mulhu t5,ra,sp
+80002cdc: ffe00e93 li t4,-2
+80002ce0: 02100193 li gp,33
+80002ce4: 3ddf1263 bne t5,t4,800030a8 <fail>
+
+80002ce8 <test_34>:
+80002ce8: fff00093 li ra,-1
+80002cec: 00100113 li sp,1
+80002cf0: 0220bf33 mulhu t5,ra,sp
+80002cf4: 00000e93 li t4,0
+80002cf8: 02200193 li gp,34
+80002cfc: 3bdf1663 bne t5,t4,800030a8 <fail>
+
+80002d00 <test_35>:
+80002d00: 00100093 li ra,1
+80002d04: fff00113 li sp,-1
+80002d08: 0220bf33 mulhu t5,ra,sp
+80002d0c: 00000e93 li t4,0
+80002d10: 02300193 li gp,35
+80002d14: 39df1a63 bne t5,t4,800030a8 <fail>
+
+80002d18 <test_8>:
+80002d18: 00d000b7 lui ra,0xd00
+80002d1c: 00b00137 lui sp,0xb00
+80002d20: 0220b0b3 mulhu ra,ra,sp
+80002d24: 00009eb7 lui t4,0x9
+80002d28: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002d2c: 00800193 li gp,8
+80002d30: 37d09c63 bne ra,t4,800030a8 <fail>
+
+80002d34 <test_9>:
+80002d34: 00e000b7 lui ra,0xe00
+80002d38: 00b00137 lui sp,0xb00
+80002d3c: 0220b133 mulhu sp,ra,sp
+80002d40: 0000aeb7 lui t4,0xa
+80002d44: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002d48: 00900193 li gp,9
+80002d4c: 35d11e63 bne sp,t4,800030a8 <fail>
+
+80002d50 <test_10>:
+80002d50: 00d000b7 lui ra,0xd00
+80002d54: 0210b0b3 mulhu ra,ra,ra
+80002d58: 0000beb7 lui t4,0xb
+80002d5c: 900e8e93 addi t4,t4,-1792 # a900 <_start-0x7fff5700>
+80002d60: 00a00193 li gp,10
+80002d64: 35d09263 bne ra,t4,800030a8 <fail>
+
+80002d68 <test_11>:
+80002d68: 00000213 li tp,0
+80002d6c: 00d000b7 lui ra,0xd00
+80002d70: 00b00137 lui sp,0xb00
+80002d74: 0220bf33 mulhu t5,ra,sp
+80002d78: 000f0313 mv t1,t5
+80002d7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002d80: 00200293 li t0,2
+80002d84: fe5214e3 bne tp,t0,80002d6c <test_11+0x4>
+80002d88: 00009eb7 lui t4,0x9
+80002d8c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002d90: 00b00193 li gp,11
+80002d94: 31d31a63 bne t1,t4,800030a8 <fail>
+
+80002d98 <test_12>:
+80002d98: 00000213 li tp,0
+80002d9c: 00e000b7 lui ra,0xe00
+80002da0: 00b00137 lui sp,0xb00
+80002da4: 0220bf33 mulhu t5,ra,sp
+80002da8: 00000013 nop
+80002dac: 000f0313 mv t1,t5
+80002db0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002db4: 00200293 li t0,2
+80002db8: fe5212e3 bne tp,t0,80002d9c <test_12+0x4>
+80002dbc: 0000aeb7 lui t4,0xa
+80002dc0: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002dc4: 00c00193 li gp,12
+80002dc8: 2fd31063 bne t1,t4,800030a8 <fail>
+
+80002dcc <test_13>:
+80002dcc: 00000213 li tp,0
+80002dd0: 00f000b7 lui ra,0xf00
+80002dd4: 00b00137 lui sp,0xb00
+80002dd8: 0220bf33 mulhu t5,ra,sp
+80002ddc: 00000013 nop
+80002de0: 00000013 nop
+80002de4: 000f0313 mv t1,t5
+80002de8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002dec: 00200293 li t0,2
+80002df0: fe5210e3 bne tp,t0,80002dd0 <test_13+0x4>
+80002df4: 0000aeb7 lui t4,0xa
+80002df8: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002dfc: 00d00193 li gp,13
+80002e00: 2bd31463 bne t1,t4,800030a8 <fail>
+
+80002e04 <test_14>:
+80002e04: 00000213 li tp,0
+80002e08: 00d000b7 lui ra,0xd00
+80002e0c: 00b00137 lui sp,0xb00
+80002e10: 0220bf33 mulhu t5,ra,sp
+80002e14: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e18: 00200293 li t0,2
+80002e1c: fe5216e3 bne tp,t0,80002e08 <test_14+0x4>
+80002e20: 00009eb7 lui t4,0x9
+80002e24: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002e28: 00e00193 li gp,14
+80002e2c: 27df1e63 bne t5,t4,800030a8 <fail>
+
+80002e30 <test_15>:
+80002e30: 00000213 li tp,0
+80002e34: 00e000b7 lui ra,0xe00
+80002e38: 00b00137 lui sp,0xb00
+80002e3c: 00000013 nop
+80002e40: 0220bf33 mulhu t5,ra,sp
+80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e48: 00200293 li t0,2
+80002e4c: fe5214e3 bne tp,t0,80002e34 <test_15+0x4>
+80002e50: 0000aeb7 lui t4,0xa
+80002e54: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002e58: 00f00193 li gp,15
+80002e5c: 25df1663 bne t5,t4,800030a8 <fail>
+
+80002e60 <test_16>:
+80002e60: 00000213 li tp,0
+80002e64: 00f000b7 lui ra,0xf00
+80002e68: 00b00137 lui sp,0xb00
+80002e6c: 00000013 nop
+80002e70: 00000013 nop
+80002e74: 0220bf33 mulhu t5,ra,sp
+80002e78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002e7c: 00200293 li t0,2
+80002e80: fe5212e3 bne tp,t0,80002e64 <test_16+0x4>
+80002e84: 0000aeb7 lui t4,0xa
+80002e88: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002e8c: 01000193 li gp,16
+80002e90: 21df1c63 bne t5,t4,800030a8 <fail>
+
+80002e94 <test_17>:
+80002e94: 00000213 li tp,0
+80002e98: 00d000b7 lui ra,0xd00
+80002e9c: 00000013 nop
+80002ea0: 00b00137 lui sp,0xb00
+80002ea4: 0220bf33 mulhu t5,ra,sp
+80002ea8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002eac: 00200293 li t0,2
+80002eb0: fe5214e3 bne tp,t0,80002e98 <test_17+0x4>
+80002eb4: 00009eb7 lui t4,0x9
+80002eb8: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002ebc: 01100193 li gp,17
+80002ec0: 1fdf1463 bne t5,t4,800030a8 <fail>
+
+80002ec4 <test_18>:
+80002ec4: 00000213 li tp,0
+80002ec8: 00e000b7 lui ra,0xe00
+80002ecc: 00000013 nop
+80002ed0: 00b00137 lui sp,0xb00
+80002ed4: 00000013 nop
+80002ed8: 0220bf33 mulhu t5,ra,sp
+80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002ee0: 00200293 li t0,2
+80002ee4: fe5212e3 bne tp,t0,80002ec8 <test_18+0x4>
+80002ee8: 0000aeb7 lui t4,0xa
+80002eec: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002ef0: 01200193 li gp,18
+80002ef4: 1bdf1a63 bne t5,t4,800030a8 <fail>
+
+80002ef8 <test_19>:
+80002ef8: 00000213 li tp,0
+80002efc: 00f000b7 lui ra,0xf00
+80002f00: 00000013 nop
+80002f04: 00000013 nop
+80002f08: 00b00137 lui sp,0xb00
+80002f0c: 0220bf33 mulhu t5,ra,sp
+80002f10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f14: 00200293 li t0,2
+80002f18: fe5212e3 bne tp,t0,80002efc <test_19+0x4>
+80002f1c: 0000aeb7 lui t4,0xa
+80002f20: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002f24: 01300193 li gp,19
+80002f28: 19df1063 bne t5,t4,800030a8 <fail>
+
+80002f2c <test_20>:
+80002f2c: 00000213 li tp,0
+80002f30: 00b00137 lui sp,0xb00
+80002f34: 00d000b7 lui ra,0xd00
+80002f38: 0220bf33 mulhu t5,ra,sp
+80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f40: 00200293 li t0,2
+80002f44: fe5216e3 bne tp,t0,80002f30 <test_20+0x4>
+80002f48: 00009eb7 lui t4,0x9
+80002f4c: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002f50: 01400193 li gp,20
+80002f54: 15df1a63 bne t5,t4,800030a8 <fail>
+
+80002f58 <test_21>:
+80002f58: 00000213 li tp,0
+80002f5c: 00b00137 lui sp,0xb00
+80002f60: 00e000b7 lui ra,0xe00
+80002f64: 00000013 nop
+80002f68: 0220bf33 mulhu t5,ra,sp
+80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002f70: 00200293 li t0,2
+80002f74: fe5214e3 bne tp,t0,80002f5c <test_21+0x4>
+80002f78: 0000aeb7 lui t4,0xa
+80002f7c: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80002f80: 01500193 li gp,21
+80002f84: 13df1263 bne t5,t4,800030a8 <fail>
+
+80002f88 <test_22>:
+80002f88: 00000213 li tp,0
+80002f8c: 00b00137 lui sp,0xb00
+80002f90: 00f000b7 lui ra,0xf00
+80002f94: 00000013 nop
+80002f98: 00000013 nop
+80002f9c: 0220bf33 mulhu t5,ra,sp
+80002fa0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fa4: 00200293 li t0,2
+80002fa8: fe5212e3 bne tp,t0,80002f8c <test_22+0x4>
+80002fac: 0000aeb7 lui t4,0xa
+80002fb0: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+80002fb4: 01600193 li gp,22
+80002fb8: 0fdf1863 bne t5,t4,800030a8 <fail>
+
+80002fbc <test_23>:
+80002fbc: 00000213 li tp,0
+80002fc0: 00b00137 lui sp,0xb00
+80002fc4: 00000013 nop
+80002fc8: 00d000b7 lui ra,0xd00
+80002fcc: 0220bf33 mulhu t5,ra,sp
+80002fd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80002fd4: 00200293 li t0,2
+80002fd8: fe5214e3 bne tp,t0,80002fc0 <test_23+0x4>
+80002fdc: 00009eb7 lui t4,0x9
+80002fe0: f00e8e93 addi t4,t4,-256 # 8f00 <_start-0x7fff7100>
+80002fe4: 01700193 li gp,23
+80002fe8: 0ddf1063 bne t5,t4,800030a8 <fail>
+
+80002fec <test_24>:
+80002fec: 00000213 li tp,0
+80002ff0: 00b00137 lui sp,0xb00
+80002ff4: 00000013 nop
+80002ff8: 00e000b7 lui ra,0xe00
+80002ffc: 00000013 nop
+80003000: 0220bf33 mulhu t5,ra,sp
+80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+80003008: 00200293 li t0,2
+8000300c: fe5212e3 bne tp,t0,80002ff0 <test_24+0x4>
+80003010: 0000aeb7 lui t4,0xa
+80003014: a00e8e93 addi t4,t4,-1536 # 9a00 <_start-0x7fff6600>
+80003018: 01800193 li gp,24
+8000301c: 09df1663 bne t5,t4,800030a8 <fail>
+
+80003020 <test_25>:
+80003020: 00000213 li tp,0
+80003024: 00b00137 lui sp,0xb00
+80003028: 00000013 nop
+8000302c: 00000013 nop
+80003030: 00f000b7 lui ra,0xf00
+80003034: 0220bf33 mulhu t5,ra,sp
+80003038: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+8000303c: 00200293 li t0,2
+80003040: fe5212e3 bne tp,t0,80003024 <test_25+0x4>
+80003044: 0000aeb7 lui t4,0xa
+80003048: 500e8e93 addi t4,t4,1280 # a500 <_start-0x7fff5b00>
+8000304c: 01900193 li gp,25
+80003050: 05df1c63 bne t5,t4,800030a8 <fail>
+
+80003054 <test_26>:
+80003054: 7c0000b7 lui ra,0x7c000
+80003058: 02103133 mulhu sp,zero,ra
+8000305c: 00000e93 li t4,0
+80003060: 01a00193 li gp,26
+80003064: 05d11263 bne sp,t4,800030a8 <fail>
+
+80003068 <test_27>:
+80003068: 800000b7 lui ra,0x80000
+8000306c: 0200b133 mulhu sp,ra,zero
+80003070: 00000e93 li t4,0
+80003074: 01b00193 li gp,27
+80003078: 03d11863 bne sp,t4,800030a8 <fail>
+
+8000307c <test_28>:
+8000307c: 020030b3 mulhu ra,zero,zero
+80003080: 00000e93 li t4,0
+80003084: 01c00193 li gp,28
+80003088: 03d09063 bne ra,t4,800030a8 <fail>
+
+8000308c <test_29>:
+8000308c: 021000b7 lui ra,0x2100
+80003090: 02200137 lui sp,0x2200
+80003094: 0220b033 mulhu zero,ra,sp
+80003098: 00000e93 li t4,0
+8000309c: 01d00193 li gp,29
+800030a0: 01d01463 bne zero,t4,800030a8 <fail>
+800030a4: 00301a63 bne zero,gp,800030b8 <pass>
+
+800030a8 <fail>:
+800030a8: 00119513 slli a0,gp,0x1
+800030ac: 00050063 beqz a0,800030ac <fail+0x4>
+800030b0: 00156513 ori a0,a0,1
+800030b4: 00000073 ecall
+
+800030b8 <pass>:
+800030b8: 00100513 li a0,1
+800030bc: 00000073 ecall
+800030c0: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-mulhu.elf b/test/riscv-tests/rv32um-v-mulhu.elf
new file mode 100644
index 0000000..29dde86
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-mulhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-rem.dump b/test/riscv-tests/rv32um-v-rem.dump
new file mode 100644
index 0000000..801467e
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-rem.dump
@@ -0,0 +1,981 @@
+
+rv32um-v-rem: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 81058593 addi a1,a1,-2032 # 80002cd8 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 82c58593 addi a1,a1,-2004 # 80002d64 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 7d858593 addi a1,a1,2008 # 80002d7c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 70c58593 addi a1,a1,1804 # 80002d1c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 6fc58593 addi a1,a1,1788 # 80002e44 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 66458593 addi a1,a1,1636 # 80002e20 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 56060613 addi a2,a2,1376 # 80002e70 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 47060613 addi a2,a2,1136 # 80002dec <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 3f060613 addi a2,a2,1008 # 80002db8 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 00400793 li a5,4
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 05b927b7 lui a5,0x5b92
+80002b9c: 00080637 lui a2,0x80
+80002ba0: b5078793 addi a5,a5,-1200 # 5b91b50 <_start-0x7a46e4b0>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 01400093 li ra,20
+80002be4: 00600113 li sp,6
+80002be8: 0220ef33 rem t5,ra,sp
+80002bec: 00200e93 li t4,2
+80002bf0: 00200193 li gp,2
+80002bf4: 0ddf1463 bne t5,t4,80002cbc <fail>
+
+80002bf8 <test_3>:
+80002bf8: fec00093 li ra,-20
+80002bfc: 00600113 li sp,6
+80002c00: 0220ef33 rem t5,ra,sp
+80002c04: ffe00e93 li t4,-2
+80002c08: 00300193 li gp,3
+80002c0c: 0bdf1863 bne t5,t4,80002cbc <fail>
+
+80002c10 <test_4>:
+80002c10: 01400093 li ra,20
+80002c14: ffa00113 li sp,-6
+80002c18: 0220ef33 rem t5,ra,sp
+80002c1c: 00200e93 li t4,2
+80002c20: 00400193 li gp,4
+80002c24: 09df1c63 bne t5,t4,80002cbc <fail>
+
+80002c28 <test_5>:
+80002c28: fec00093 li ra,-20
+80002c2c: ffa00113 li sp,-6
+80002c30: 0220ef33 rem t5,ra,sp
+80002c34: ffe00e93 li t4,-2
+80002c38: 00500193 li gp,5
+80002c3c: 09df1063 bne t5,t4,80002cbc <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00100113 li sp,1
+80002c48: 0220ef33 rem t5,ra,sp
+80002c4c: 00000e93 li t4,0
+80002c50: 00600193 li gp,6
+80002c54: 07df1463 bne t5,t4,80002cbc <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: fff00113 li sp,-1
+80002c60: 0220ef33 rem t5,ra,sp
+80002c64: 00000e93 li t4,0
+80002c68: 00700193 li gp,7
+80002c6c: 05df1863 bne t5,t4,80002cbc <fail>
+
+80002c70 <test_8>:
+80002c70: 800000b7 lui ra,0x80000
+80002c74: 00000113 li sp,0
+80002c78: 0220ef33 rem t5,ra,sp
+80002c7c: 80000eb7 lui t4,0x80000
+80002c80: 00800193 li gp,8
+80002c84: 03df1c63 bne t5,t4,80002cbc <fail>
+
+80002c88 <test_9>:
+80002c88: 00100093 li ra,1
+80002c8c: 00000113 li sp,0
+80002c90: 0220ef33 rem t5,ra,sp
+80002c94: 00100e93 li t4,1
+80002c98: 00900193 li gp,9
+80002c9c: 03df1063 bne t5,t4,80002cbc <fail>
+
+80002ca0 <test_10>:
+80002ca0: 00000093 li ra,0
+80002ca4: 00000113 li sp,0
+80002ca8: 0220ef33 rem t5,ra,sp
+80002cac: 00000e93 li t4,0
+80002cb0: 00a00193 li gp,10
+80002cb4: 01df1463 bne t5,t4,80002cbc <fail>
+80002cb8: 00301a63 bne zero,gp,80002ccc <pass>
+
+80002cbc <fail>:
+80002cbc: 00119513 slli a0,gp,0x1
+80002cc0: 00050063 beqz a0,80002cc0 <fail+0x4>
+80002cc4: 00156513 ori a0,a0,1
+80002cc8: 00000073 ecall
+
+80002ccc <pass>:
+80002ccc: 00100513 li a0,1
+80002cd0: 00000073 ecall
+80002cd4: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-rem.elf b/test/riscv-tests/rv32um-v-rem.elf
new file mode 100644
index 0000000..07d246e
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-rem.elf
Binary files differ
diff --git a/test/riscv-tests/rv32um-v-remu.dump b/test/riscv-tests/rv32um-v-remu.dump
new file mode 100644
index 0000000..600e796
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-remu.dump
@@ -0,0 +1,981 @@
+
+rv32um-v-remu: file format elf32-littleriscv
+
+
+Disassembly of section .text.init:
+
+80000000 <_start>:
+80000000: 00c0006f j 8000000c <handle_reset>
+
+80000004 <nmi_vector>:
+80000004: 2780206f j 8000227c <wtf>
+
+80000008 <trap_vector>:
+80000008: 2740206f j 8000227c <wtf>
+
+8000000c <handle_reset>:
+8000000c: 00000297 auipc t0,0x0
+80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
+80000014: 30529073 csrw mtvec,t0
+80000018: 00006117 auipc sp,0x6
+8000001c: 35010113 addi sp,sp,848 # 80006368 <_end+0xf70>
+80000020: f14022f3 csrr t0,mhartid
+80000024: 00c29293 slli t0,t0,0xc
+80000028: 00510133 add sp,sp,t0
+8000002c: 34011073 csrw mscratch,sp
+80000030: 00003517 auipc a0,0x3
+80000034: bb050513 addi a0,a0,-1104 # 80002be0 <userstart>
+80000038: 2090206f j 80002a40 <vm_boot>
+
+8000003c <pop_tf>:
+8000003c: 08452283 lw t0,132(a0)
+80000040: 14129073 csrw sepc,t0
+80000044: 00452083 lw ra,4(a0)
+80000048: 00852103 lw sp,8(a0)
+8000004c: 00c52183 lw gp,12(a0)
+80000050: 01052203 lw tp,16(a0)
+80000054: 01452283 lw t0,20(a0)
+80000058: 01852303 lw t1,24(a0)
+8000005c: 01c52383 lw t2,28(a0)
+80000060: 02052403 lw s0,32(a0)
+80000064: 02452483 lw s1,36(a0)
+80000068: 02c52583 lw a1,44(a0)
+8000006c: 03052603 lw a2,48(a0)
+80000070: 03452683 lw a3,52(a0)
+80000074: 03852703 lw a4,56(a0)
+80000078: 03c52783 lw a5,60(a0)
+8000007c: 04052803 lw a6,64(a0)
+80000080: 04452883 lw a7,68(a0)
+80000084: 04852903 lw s2,72(a0)
+80000088: 04c52983 lw s3,76(a0)
+8000008c: 05052a03 lw s4,80(a0)
+80000090: 05452a83 lw s5,84(a0)
+80000094: 05852b03 lw s6,88(a0)
+80000098: 05c52b83 lw s7,92(a0)
+8000009c: 06052c03 lw s8,96(a0)
+800000a0: 06452c83 lw s9,100(a0)
+800000a4: 06852d03 lw s10,104(a0)
+800000a8: 06c52d83 lw s11,108(a0)
+800000ac: 07052e03 lw t3,112(a0)
+800000b0: 07452e83 lw t4,116(a0)
+800000b4: 07852f03 lw t5,120(a0)
+800000b8: 07c52f83 lw t6,124(a0)
+800000bc: 02852503 lw a0,40(a0)
+800000c0: 10200073 sret
+
+800000c4 <trap_entry>:
+800000c4: 14011173 csrrw sp,sscratch,sp
+800000c8: 00112223 sw ra,4(sp)
+800000cc: 00312623 sw gp,12(sp)
+800000d0: 00412823 sw tp,16(sp)
+800000d4: 00512a23 sw t0,20(sp)
+800000d8: 00612c23 sw t1,24(sp)
+800000dc: 00712e23 sw t2,28(sp)
+800000e0: 02812023 sw s0,32(sp)
+800000e4: 02912223 sw s1,36(sp)
+800000e8: 02a12423 sw a0,40(sp)
+800000ec: 02b12623 sw a1,44(sp)
+800000f0: 02c12823 sw a2,48(sp)
+800000f4: 02d12a23 sw a3,52(sp)
+800000f8: 02e12c23 sw a4,56(sp)
+800000fc: 02f12e23 sw a5,60(sp)
+80000100: 05012023 sw a6,64(sp)
+80000104: 05112223 sw a7,68(sp)
+80000108: 05212423 sw s2,72(sp)
+8000010c: 05312623 sw s3,76(sp)
+80000110: 05412823 sw s4,80(sp)
+80000114: 05512a23 sw s5,84(sp)
+80000118: 05612c23 sw s6,88(sp)
+8000011c: 05712e23 sw s7,92(sp)
+80000120: 07812023 sw s8,96(sp)
+80000124: 07912223 sw s9,100(sp)
+80000128: 07a12423 sw s10,104(sp)
+8000012c: 07b12623 sw s11,108(sp)
+80000130: 07c12823 sw t3,112(sp)
+80000134: 07d12a23 sw t4,116(sp)
+80000138: 07e12c23 sw t5,120(sp)
+8000013c: 07f12e23 sw t6,124(sp)
+80000140: 140112f3 csrrw t0,sscratch,sp
+80000144: 00512423 sw t0,8(sp)
+80000148: 100022f3 csrr t0,sstatus
+8000014c: 08512023 sw t0,128(sp)
+80000150: 141022f3 csrr t0,sepc
+80000154: 08512223 sw t0,132(sp)
+80000158: 143022f3 csrr t0,stval
+8000015c: 08512423 sw t0,136(sp)
+80000160: 142022f3 csrr t0,scause
+80000164: 08512623 sw t0,140(sp)
+80000168: 00010513 mv a0,sp
+8000016c: 50c0206f j 80002678 <handle_trap>
+
+Disassembly of section .text:
+
+80002000 <memcpy>:
+80002000: 00c5e7b3 or a5,a1,a2
+80002004: 00f567b3 or a5,a0,a5
+80002008: 0037f793 andi a5,a5,3
+8000200c: 00c506b3 add a3,a0,a2
+80002010: 02078463 beqz a5,80002038 <memcpy+0x38>
+80002014: 00c58633 add a2,a1,a2
+80002018: 00050793 mv a5,a0
+8000201c: 02d57e63 bleu a3,a0,80002058 <memcpy+0x58>
+80002020: 00158593 addi a1,a1,1
+80002024: fff5c703 lbu a4,-1(a1)
+80002028: 00178793 addi a5,a5,1
+8000202c: fee78fa3 sb a4,-1(a5)
+80002030: feb618e3 bne a2,a1,80002020 <memcpy+0x20>
+80002034: 00008067 ret
+80002038: fed57ee3 bleu a3,a0,80002034 <memcpy+0x34>
+8000203c: 00050793 mv a5,a0
+80002040: 00458593 addi a1,a1,4
+80002044: ffc5a703 lw a4,-4(a1)
+80002048: 00478793 addi a5,a5,4
+8000204c: fee7ae23 sw a4,-4(a5)
+80002050: fed7e8e3 bltu a5,a3,80002040 <memcpy+0x40>
+80002054: 00008067 ret
+80002058: 00008067 ret
+
+8000205c <memset>:
+8000205c: 00c567b3 or a5,a0,a2
+80002060: 0037f793 andi a5,a5,3
+80002064: 00c50633 add a2,a0,a2
+80002068: 02078063 beqz a5,80002088 <memset+0x2c>
+8000206c: 0ff5f593 andi a1,a1,255
+80002070: 00050793 mv a5,a0
+80002074: 04c57063 bleu a2,a0,800020b4 <memset+0x58>
+80002078: 00178793 addi a5,a5,1
+8000207c: feb78fa3 sb a1,-1(a5)
+80002080: fef61ce3 bne a2,a5,80002078 <memset+0x1c>
+80002084: 00008067 ret
+80002088: 0ff5f593 andi a1,a1,255
+8000208c: 00859793 slli a5,a1,0x8
+80002090: 00b7e7b3 or a5,a5,a1
+80002094: 01079593 slli a1,a5,0x10
+80002098: 00f5e5b3 or a1,a1,a5
+8000209c: fec574e3 bleu a2,a0,80002084 <memset+0x28>
+800020a0: 00050793 mv a5,a0
+800020a4: 00478793 addi a5,a5,4
+800020a8: feb7ae23 sw a1,-4(a5)
+800020ac: fec7ece3 bltu a5,a2,800020a4 <memset+0x48>
+800020b0: 00008067 ret
+800020b4: 00008067 ret
+
+800020b8 <strlen>:
+800020b8: 00054783 lbu a5,0(a0)
+800020bc: 00050713 mv a4,a0
+800020c0: 00078c63 beqz a5,800020d8 <strlen+0x20>
+800020c4: 00150513 addi a0,a0,1
+800020c8: 00054783 lbu a5,0(a0)
+800020cc: fe079ce3 bnez a5,800020c4 <strlen+0xc>
+800020d0: 40e50533 sub a0,a0,a4
+800020d4: 00008067 ret
+800020d8: 00000513 li a0,0
+800020dc: 00008067 ret
+
+800020e0 <strcmp>:
+800020e0: 00150513 addi a0,a0,1
+800020e4: fff54783 lbu a5,-1(a0)
+800020e8: 00158593 addi a1,a1,1
+800020ec: fff5c703 lbu a4,-1(a1)
+800020f0: 00078863 beqz a5,80002100 <strcmp+0x20>
+800020f4: fee786e3 beq a5,a4,800020e0 <strcmp>
+800020f8: 40e78533 sub a0,a5,a4
+800020fc: 00008067 ret
+80002100: 00000793 li a5,0
+80002104: ff5ff06f j 800020f8 <strcmp+0x18>
+
+80002108 <memcmp>:
+80002108: 00b567b3 or a5,a0,a1
+8000210c: 0037f793 andi a5,a5,3
+80002110: 04079263 bnez a5,80002154 <memcmp+0x4c>
+80002114: ffc67693 andi a3,a2,-4
+80002118: 00d506b3 add a3,a0,a3
+8000211c: 00050813 mv a6,a0
+80002120: 02d57a63 bleu a3,a0,80002154 <memcmp+0x4c>
+80002124: 00052703 lw a4,0(a0)
+80002128: 0005a783 lw a5,0(a1)
+8000212c: 00f70a63 beq a4,a5,80002140 <memcmp+0x38>
+80002130: 0240006f j 80002154 <memcmp+0x4c>
+80002134: 00052703 lw a4,0(a0)
+80002138: 0005a783 lw a5,0(a1)
+8000213c: 00f71863 bne a4,a5,8000214c <memcmp+0x44>
+80002140: 00450513 addi a0,a0,4
+80002144: 00458593 addi a1,a1,4
+80002148: fed566e3 bltu a0,a3,80002134 <memcmp+0x2c>
+8000214c: 41050833 sub a6,a0,a6
+80002150: 41060633 sub a2,a2,a6
+80002154: 00c58633 add a2,a1,a2
+80002158: 0140006f j 8000216c <memcmp+0x64>
+8000215c: 00158593 addi a1,a1,1
+80002160: fff54783 lbu a5,-1(a0)
+80002164: fff5c703 lbu a4,-1(a1)
+80002168: 00e79a63 bne a5,a4,8000217c <memcmp+0x74>
+8000216c: 00150513 addi a0,a0,1
+80002170: fec596e3 bne a1,a2,8000215c <memcmp+0x54>
+80002174: 00000513 li a0,0
+80002178: 00008067 ret
+8000217c: 40e78533 sub a0,a5,a4
+80002180: 00008067 ret
+
+80002184 <strcpy>:
+80002184: 00050793 mv a5,a0
+80002188: 00158593 addi a1,a1,1
+8000218c: fff5c703 lbu a4,-1(a1)
+80002190: 00178793 addi a5,a5,1
+80002194: fee78fa3 sb a4,-1(a5)
+80002198: fe0718e3 bnez a4,80002188 <strcpy+0x4>
+8000219c: 00008067 ret
+
+800021a0 <atol>:
+800021a0: 00054783 lbu a5,0(a0)
+800021a4: 02000713 li a4,32
+800021a8: 00e79863 bne a5,a4,800021b8 <atol+0x18>
+800021ac: 00150513 addi a0,a0,1
+800021b0: 00054783 lbu a5,0(a0)
+800021b4: fee78ce3 beq a5,a4,800021ac <atol+0xc>
+800021b8: fd578713 addi a4,a5,-43
+800021bc: 0fd77713 andi a4,a4,253
+800021c0: 04070263 beqz a4,80002204 <atol+0x64>
+800021c4: 00054683 lbu a3,0(a0)
+800021c8: 00050793 mv a5,a0
+800021cc: 00000613 li a2,0
+800021d0: 04068863 beqz a3,80002220 <atol+0x80>
+800021d4: 00000513 li a0,0
+800021d8: 00178793 addi a5,a5,1
+800021dc: fd068593 addi a1,a3,-48
+800021e0: 00251713 slli a4,a0,0x2
+800021e4: 0007c683 lbu a3,0(a5)
+800021e8: 00a70533 add a0,a4,a0
+800021ec: 00151513 slli a0,a0,0x1
+800021f0: 00a58533 add a0,a1,a0
+800021f4: fe0692e3 bnez a3,800021d8 <atol+0x38>
+800021f8: 00060463 beqz a2,80002200 <atol+0x60>
+800021fc: 40a00533 neg a0,a0
+80002200: 00008067 ret
+80002204: 00154683 lbu a3,1(a0)
+80002208: fd378793 addi a5,a5,-45
+8000220c: 0017b613 seqz a2,a5
+80002210: 00150793 addi a5,a0,1
+80002214: fc0690e3 bnez a3,800021d4 <atol+0x34>
+80002218: 00000513 li a0,0
+8000221c: fddff06f j 800021f8 <atol+0x58>
+80002220: 00000513 li a0,0
+80002224: 00008067 ret
+
+80002228 <terminate>:
+80002228: fffff697 auipc a3,0xfffff
+8000222c: dd868693 addi a3,a3,-552 # 80001000 <tohost>
+80002230: 0006a703 lw a4,0(a3)
+80002234: 0046a783 lw a5,4(a3)
+80002238: 00050813 mv a6,a0
+8000223c: 41f55893 srai a7,a0,0x1f
+80002240: 00f76733 or a4,a4,a5
+80002244: 02070663 beqz a4,80002270 <terminate+0x48>
+80002248: fffff617 auipc a2,0xfffff
+8000224c: df860613 addi a2,a2,-520 # 80001040 <fromhost>
+80002250: 00000713 li a4,0
+80002254: 00e62023 sw a4,0(a2)
+80002258: 00000793 li a5,0
+8000225c: 00f62223 sw a5,4(a2)
+80002260: 0006a703 lw a4,0(a3)
+80002264: 0046a783 lw a5,4(a3)
+80002268: 00f76733 or a4,a4,a5
+8000226c: fe0712e3 bnez a4,80002250 <terminate+0x28>
+80002270: 0106a023 sw a6,0(a3)
+80002274: 0116a223 sw a7,4(a3)
+80002278: 0000006f j 80002278 <terminate+0x50>
+
+8000227c <wtf>:
+8000227c: ff010113 addi sp,sp,-16
+80002280: 34900513 li a0,841
+80002284: 00112623 sw ra,12(sp)
+80002288: fa1ff0ef jal ra,80002228 <terminate>
+
+8000228c <printhex>:
+8000228c: fe010113 addi sp,sp,-32
+80002290: 01b10793 addi a5,sp,27
+80002294: 00b10e93 addi t4,sp,11
+80002298: 00900e13 li t3,9
+8000229c: 00f57693 andi a3,a0,15
+800022a0: 01c59313 slli t1,a1,0x1c
+800022a4: 00455513 srli a0,a0,0x4
+800022a8: 05700613 li a2,87
+800022ac: 0ff6f713 andi a4,a3,255
+800022b0: 00de6463 bltu t3,a3,800022b8 <printhex+0x2c>
+800022b4: 03000613 li a2,48
+800022b8: 00c70733 add a4,a4,a2
+800022bc: 00e78023 sb a4,0(a5)
+800022c0: fff78793 addi a5,a5,-1
+800022c4: 00a36533 or a0,t1,a0
+800022c8: 0045d593 srli a1,a1,0x4
+800022cc: fdd798e3 bne a5,t4,8000229c <printhex+0x10>
+800022d0: 00c14583 lbu a1,12(sp)
+800022d4: 00010e23 sb zero,28(sp)
+800022d8: 06058263 beqz a1,8000233c <printhex+0xb0>
+800022dc: 00c10513 addi a0,sp,12
+800022e0: fffff697 auipc a3,0xfffff
+800022e4: d2068693 addi a3,a3,-736 # 80001000 <tohost>
+800022e8: fffff617 auipc a2,0xfffff
+800022ec: d5860613 addi a2,a2,-680 # 80001040 <fromhost>
+800022f0: 0006a703 lw a4,0(a3)
+800022f4: 0046a783 lw a5,4(a3)
+800022f8: 00058813 mv a6,a1
+800022fc: 00150513 addi a0,a0,1
+80002300: 00f76733 or a4,a4,a5
+80002304: 010108b7 lui a7,0x1010
+80002308: 02070263 beqz a4,8000232c <printhex+0xa0>
+8000230c: 00000713 li a4,0
+80002310: 00e62023 sw a4,0(a2)
+80002314: 00000793 li a5,0
+80002318: 00f62223 sw a5,4(a2)
+8000231c: 0006a703 lw a4,0(a3)
+80002320: 0046a783 lw a5,4(a3)
+80002324: 00f76733 or a4,a4,a5
+80002328: fe0712e3 bnez a4,8000230c <printhex+0x80>
+8000232c: 00054583 lbu a1,0(a0)
+80002330: 0106a023 sw a6,0(a3)
+80002334: 0116a223 sw a7,4(a3)
+80002338: fa059ce3 bnez a1,800022f0 <printhex+0x64>
+8000233c: 02010113 addi sp,sp,32
+80002340: 00008067 ret
+
+80002344 <handle_fault>:
+80002344: ff010113 addi sp,sp,-16
+80002348: fffff6b7 lui a3,0xfffff
+8000234c: 00112623 sw ra,12(sp)
+80002350: 00812423 sw s0,8(sp)
+80002354: 00912223 sw s1,4(sp)
+80002358: 00d50733 add a4,a0,a3
+8000235c: 0003e7b7 lui a5,0x3e
+80002360: 16f77263 bleu a5,a4,800024c4 <handle_fault+0x180>
+80002364: 00c55613 srli a2,a0,0xc
+80002368: 40060e13 addi t3,a2,1024
+8000236c: 00001317 auipc t1,0x1
+80002370: c9430313 addi t1,t1,-876 # 80003000 <begin_signature>
+80002374: 002e1793 slli a5,t3,0x2
+80002378: 00f307b3 add a5,t1,a5
+8000237c: 0007a703 lw a4,0(a5) # 3e000 <_start-0x7ffc2000>
+80002380: 00d57533 and a0,a0,a3
+80002384: 0e071863 bnez a4,80002474 <handle_fault+0x130>
+80002388: 00003797 auipc a5,0x3
+8000238c: 06c78793 addi a5,a5,108 # 800053f4 <freelist_head>
+80002390: 0007a583 lw a1,0(a5)
+80002394: 1a058063 beqz a1,80002534 <handle_fault+0x1f0>
+80002398: 0045a783 lw a5,4(a1)
+8000239c: 00003717 auipc a4,0x3
+800023a0: 05470713 addi a4,a4,84 # 800053f0 <freelist_tail>
+800023a4: 00072703 lw a4,0(a4)
+800023a8: 00003697 auipc a3,0x3
+800023ac: 04f6a623 sw a5,76(a3) # 800053f4 <freelist_head>
+800023b0: 10e78463 beq a5,a4,800024b8 <handle_fault+0x174>
+800023b4: 0005a703 lw a4,0(a1)
+800023b8: 002e1793 slli a5,t3,0x2
+800023bc: 00f307b3 add a5,t1,a5
+800023c0: 00c75713 srli a4,a4,0xc
+800023c4: 00a71713 slli a4,a4,0xa
+800023c8: 0df76e93 ori t4,a4,223
+800023cc: 01f76693 ori a3,a4,31
+800023d0: 01d7a023 sw t4,0(a5)
+800023d4: 12050073 sfence.vma a0
+800023d8: 00003717 auipc a4,0x3
+800023dc: e2070713 addi a4,a4,-480 # 800051f8 <user_mapping>
+800023e0: 00361793 slli a5,a2,0x3
+800023e4: 00f707b3 add a5,a4,a5
+800023e8: 0007a703 lw a4,0(a5)
+800023ec: 1a071a63 bnez a4,800025a0 <handle_fault+0x25c>
+800023f0: 0005a703 lw a4,0(a1)
+800023f4: 00e7a023 sw a4,0(a5)
+800023f8: 0045a703 lw a4,4(a1)
+800023fc: 00e7a223 sw a4,4(a5)
+80002400: 000407b7 lui a5,0x40
+80002404: 1007a5f3 csrrs a1,sstatus,a5
+80002408: ffc007b7 lui a5,0xffc00
+8000240c: 00f507b3 add a5,a0,a5
+80002410: 00001637 lui a2,0x1
+80002414: 00050713 mv a4,a0
+80002418: 00c78633 add a2,a5,a2
+8000241c: 0007af03 lw t5,0(a5) # ffc00000 <_end+0x7fbfac08>
+80002420: 0047ae83 lw t4,4(a5)
+80002424: 0087a883 lw a7,8(a5)
+80002428: 00c7a803 lw a6,12(a5)
+8000242c: 01e72023 sw t5,0(a4)
+80002430: 01d72223 sw t4,4(a4)
+80002434: 01172423 sw a7,8(a4)
+80002438: 01072623 sw a6,12(a4)
+8000243c: 01078793 addi a5,a5,16
+80002440: 01070713 addi a4,a4,16
+80002444: fcc79ce3 bne a5,a2,8000241c <handle_fault+0xd8>
+80002448: 10059073 csrw sstatus,a1
+8000244c: 002e1e13 slli t3,t3,0x2
+80002450: 01c30333 add t1,t1,t3
+80002454: 00d32023 sw a3,0(t1)
+80002458: 12050073 sfence.vma a0
+8000245c: 0000100f fence.i
+80002460: 00c12083 lw ra,12(sp)
+80002464: 00812403 lw s0,8(sp)
+80002468: 00412483 lw s1,4(sp)
+8000246c: 01010113 addi sp,sp,16
+80002470: 00008067 ret
+80002474: 04077693 andi a3,a4,64
+80002478: 02069263 bnez a3,8000249c <handle_fault+0x158>
+8000247c: 04076713 ori a4,a4,64
+80002480: 00e7a023 sw a4,0(a5)
+80002484: 12050073 sfence.vma a0
+80002488: 00c12083 lw ra,12(sp)
+8000248c: 00812403 lw s0,8(sp)
+80002490: 00412483 lw s1,4(sp)
+80002494: 01010113 addi sp,sp,16
+80002498: 00008067 ret
+8000249c: 08077693 andi a3,a4,128
+800024a0: 16069663 bnez a3,8000260c <handle_fault+0x2c8>
+800024a4: 00f00693 li a3,15
+800024a8: 16d59263 bne a1,a3,8000260c <handle_fault+0x2c8>
+800024ac: 08076713 ori a4,a4,128
+800024b0: 00e7a023 sw a4,0(a5)
+800024b4: fd1ff06f j 80002484 <handle_fault+0x140>
+800024b8: 00003797 auipc a5,0x3
+800024bc: f207ac23 sw zero,-200(a5) # 800053f0 <freelist_tail>
+800024c0: ef5ff06f j 800023b4 <handle_fault+0x70>
+800024c4: 04100513 li a0,65
+800024c8: 00001597 auipc a1,0x1
+800024cc: 81058593 addi a1,a1,-2032 # 80002cd8 <pass+0xc>
+800024d0: fffff697 auipc a3,0xfffff
+800024d4: b3068693 addi a3,a3,-1232 # 80001000 <tohost>
+800024d8: fffff617 auipc a2,0xfffff
+800024dc: b6860613 addi a2,a2,-1176 # 80001040 <fromhost>
+800024e0: 0006a703 lw a4,0(a3)
+800024e4: 0046a783 lw a5,4(a3)
+800024e8: 00050313 mv t1,a0
+800024ec: 00158593 addi a1,a1,1
+800024f0: 00f76733 or a4,a4,a5
+800024f4: 010103b7 lui t2,0x1010
+800024f8: 02070263 beqz a4,8000251c <handle_fault+0x1d8>
+800024fc: 00000793 li a5,0
+80002500: 00f62023 sw a5,0(a2)
+80002504: 00000813 li a6,0
+80002508: 01062223 sw a6,4(a2)
+8000250c: 0006a703 lw a4,0(a3)
+80002510: 0046a783 lw a5,4(a3)
+80002514: 00f76733 or a4,a4,a5
+80002518: fe0712e3 bnez a4,800024fc <handle_fault+0x1b8>
+8000251c: 0005c503 lbu a0,0(a1)
+80002520: 0066a023 sw t1,0(a3)
+80002524: 0076a223 sw t2,4(a3)
+80002528: fa051ce3 bnez a0,800024e0 <handle_fault+0x19c>
+8000252c: 00300513 li a0,3
+80002530: cf9ff0ef jal ra,80002228 <terminate>
+80002534: 04100513 li a0,65
+80002538: 00001597 auipc a1,0x1
+8000253c: 82c58593 addi a1,a1,-2004 # 80002d64 <pass+0x98>
+80002540: fffff697 auipc a3,0xfffff
+80002544: ac068693 addi a3,a3,-1344 # 80001000 <tohost>
+80002548: fffff617 auipc a2,0xfffff
+8000254c: af860613 addi a2,a2,-1288 # 80001040 <fromhost>
+80002550: 0006a703 lw a4,0(a3)
+80002554: 0046a783 lw a5,4(a3)
+80002558: 00050f13 mv t5,a0
+8000255c: 00158593 addi a1,a1,1
+80002560: 00f76733 or a4,a4,a5
+80002564: 01010fb7 lui t6,0x1010
+80002568: 02070263 beqz a4,8000258c <handle_fault+0x248>
+8000256c: 00000793 li a5,0
+80002570: 00f62023 sw a5,0(a2)
+80002574: 00000813 li a6,0
+80002578: 01062223 sw a6,4(a2)
+8000257c: 0006a703 lw a4,0(a3)
+80002580: 0046a783 lw a5,4(a3)
+80002584: 00f76733 or a4,a4,a5
+80002588: fe0712e3 bnez a4,8000256c <handle_fault+0x228>
+8000258c: 0005c503 lbu a0,0(a1)
+80002590: 01e6a023 sw t5,0(a3)
+80002594: 01f6a223 sw t6,4(a3)
+80002598: fa051ce3 bnez a0,80002550 <handle_fault+0x20c>
+8000259c: f91ff06f j 8000252c <handle_fault+0x1e8>
+800025a0: 04100513 li a0,65
+800025a4: 00000597 auipc a1,0x0
+800025a8: 7d858593 addi a1,a1,2008 # 80002d7c <pass+0xb0>
+800025ac: fffff697 auipc a3,0xfffff
+800025b0: a5468693 addi a3,a3,-1452 # 80001000 <tohost>
+800025b4: fffff617 auipc a2,0xfffff
+800025b8: a8c60613 addi a2,a2,-1396 # 80001040 <fromhost>
+800025bc: 0006a703 lw a4,0(a3)
+800025c0: 0046a783 lw a5,4(a3)
+800025c4: 00050813 mv a6,a0
+800025c8: 00158593 addi a1,a1,1
+800025cc: 00f76733 or a4,a4,a5
+800025d0: 010108b7 lui a7,0x1010
+800025d4: 02070263 beqz a4,800025f8 <handle_fault+0x2b4>
+800025d8: 00000713 li a4,0
+800025dc: 00e62023 sw a4,0(a2)
+800025e0: 00000793 li a5,0
+800025e4: 00f62223 sw a5,4(a2)
+800025e8: 0006a703 lw a4,0(a3)
+800025ec: 0046a783 lw a5,4(a3)
+800025f0: 00f76733 or a4,a4,a5
+800025f4: fe0712e3 bnez a4,800025d8 <handle_fault+0x294>
+800025f8: 0005c503 lbu a0,0(a1)
+800025fc: 0106a023 sw a6,0(a3)
+80002600: 0116a223 sw a7,4(a3)
+80002604: fa051ce3 bnez a0,800025bc <handle_fault+0x278>
+80002608: f25ff06f j 8000252c <handle_fault+0x1e8>
+8000260c: 04100793 li a5,65
+80002610: 00000597 auipc a1,0x0
+80002614: 70c58593 addi a1,a1,1804 # 80002d1c <pass+0x50>
+80002618: fffff697 auipc a3,0xfffff
+8000261c: 9e868693 addi a3,a3,-1560 # 80001000 <tohost>
+80002620: fffff617 auipc a2,0xfffff
+80002624: a2060613 addi a2,a2,-1504 # 80001040 <fromhost>
+80002628: 0006a803 lw a6,0(a3)
+8000262c: 0046a883 lw a7,4(a3)
+80002630: 00078413 mv s0,a5
+80002634: 00158593 addi a1,a1,1
+80002638: 01186833 or a6,a6,a7
+8000263c: 010104b7 lui s1,0x1010
+80002640: 02080263 beqz a6,80002664 <handle_fault+0x320>
+80002644: 00000793 li a5,0
+80002648: 00f62023 sw a5,0(a2)
+8000264c: 00000813 li a6,0
+80002650: 01062223 sw a6,4(a2)
+80002654: 0006a703 lw a4,0(a3)
+80002658: 0046a783 lw a5,4(a3)
+8000265c: 00f76733 or a4,a4,a5
+80002660: fe0712e3 bnez a4,80002644 <handle_fault+0x300>
+80002664: 0005c783 lbu a5,0(a1)
+80002668: 0086a023 sw s0,0(a3)
+8000266c: 0096a223 sw s1,4(a3)
+80002670: fa079ce3 bnez a5,80002628 <handle_fault+0x2e4>
+80002674: eb9ff06f j 8000252c <handle_fault+0x1e8>
+
+80002678 <handle_trap>:
+80002678: 08c52583 lw a1,140(a0)
+8000267c: fb010113 addi sp,sp,-80
+80002680: 03412c23 sw s4,56(sp)
+80002684: 04112623 sw ra,76(sp)
+80002688: 04812423 sw s0,72(sp)
+8000268c: 04912223 sw s1,68(sp)
+80002690: 05212023 sw s2,64(sp)
+80002694: 03312e23 sw s3,60(sp)
+80002698: 03512a23 sw s5,52(sp)
+8000269c: 03612823 sw s6,48(sp)
+800026a0: 03712623 sw s7,44(sp)
+800026a4: 03812423 sw s8,40(sp)
+800026a8: 03912223 sw s9,36(sp)
+800026ac: 03a12023 sw s10,32(sp)
+800026b0: 01b12e23 sw s11,28(sp)
+800026b4: 00800793 li a5,8
+800026b8: 00050a13 mv s4,a0
+800026bc: 16f58663 beq a1,a5,80002828 <handle_trap+0x1b0>
+800026c0: 00200793 li a5,2
+800026c4: 06f58063 beq a1,a5,80002724 <handle_trap+0xac>
+800026c8: ff458793 addi a5,a1,-12
+800026cc: 00100713 li a4,1
+800026d0: 00f77663 bleu a5,a4,800026dc <handle_trap+0x64>
+800026d4: 00f00793 li a5,15
+800026d8: 22f59a63 bne a1,a5,8000290c <handle_trap+0x294>
+800026dc: 088a2503 lw a0,136(s4)
+800026e0: c65ff0ef jal ra,80002344 <handle_fault>
+800026e4: 04812403 lw s0,72(sp)
+800026e8: 04c12083 lw ra,76(sp)
+800026ec: 04412483 lw s1,68(sp)
+800026f0: 04012903 lw s2,64(sp)
+800026f4: 03c12983 lw s3,60(sp)
+800026f8: 03412a83 lw s5,52(sp)
+800026fc: 03012b03 lw s6,48(sp)
+80002700: 02c12b83 lw s7,44(sp)
+80002704: 02812c03 lw s8,40(sp)
+80002708: 02412c83 lw s9,36(sp)
+8000270c: 02012d03 lw s10,32(sp)
+80002710: 01c12d83 lw s11,28(sp)
+80002714: 000a0513 mv a0,s4
+80002718: 03812a03 lw s4,56(sp)
+8000271c: 05010113 addi sp,sp,80
+80002720: 91dfd06f j 8000003c <pop_tf>
+80002724: 08452703 lw a4,132(a0)
+80002728: 00377793 andi a5,a4,3
+8000272c: 08079863 bnez a5,800027bc <handle_trap+0x144>
+80002730: 008007ef jal a5,80002738 <handle_trap+0xc0>
+80002734: 00301073 fssr zero
+80002738: 00072703 lw a4,0(a4)
+8000273c: 0007a783 lw a5,0(a5)
+80002740: 06f70a63 beq a4,a5,800027b4 <handle_trap+0x13c>
+80002744: 04100513 li a0,65
+80002748: 00000597 auipc a1,0x0
+8000274c: 6fc58593 addi a1,a1,1788 # 80002e44 <pass+0x178>
+80002750: fffff697 auipc a3,0xfffff
+80002754: 8b068693 addi a3,a3,-1872 # 80001000 <tohost>
+80002758: fffff617 auipc a2,0xfffff
+8000275c: 8e860613 addi a2,a2,-1816 # 80001040 <fromhost>
+80002760: 0006a703 lw a4,0(a3)
+80002764: 0046a783 lw a5,4(a3)
+80002768: 00050813 mv a6,a0
+8000276c: 00158593 addi a1,a1,1
+80002770: 00f76733 or a4,a4,a5
+80002774: 010108b7 lui a7,0x1010
+80002778: 02070263 beqz a4,8000279c <handle_trap+0x124>
+8000277c: 00000713 li a4,0
+80002780: 00e62023 sw a4,0(a2)
+80002784: 00000793 li a5,0
+80002788: 00f62223 sw a5,4(a2)
+8000278c: 0006a703 lw a4,0(a3)
+80002790: 0046a783 lw a5,4(a3)
+80002794: 00f76733 or a4,a4,a5
+80002798: fe0712e3 bnez a4,8000277c <handle_trap+0x104>
+8000279c: 0005c503 lbu a0,0(a1)
+800027a0: 0106a023 sw a6,0(a3)
+800027a4: 0116a223 sw a7,4(a3)
+800027a8: fa051ce3 bnez a0,80002760 <handle_trap+0xe8>
+800027ac: 00300513 li a0,3
+800027b0: a79ff0ef jal ra,80002228 <terminate>
+800027b4: 00100513 li a0,1
+800027b8: a71ff0ef jal ra,80002228 <terminate>
+800027bc: 00000597 auipc a1,0x0
+800027c0: 66458593 addi a1,a1,1636 # 80002e20 <pass+0x154>
+800027c4: 04100613 li a2,65
+800027c8: fffff697 auipc a3,0xfffff
+800027cc: 83868693 addi a3,a3,-1992 # 80001000 <tohost>
+800027d0: fffff517 auipc a0,0xfffff
+800027d4: 87050513 addi a0,a0,-1936 # 80001040 <fromhost>
+800027d8: 0006a703 lw a4,0(a3)
+800027dc: 0046a783 lw a5,4(a3)
+800027e0: 00060e13 mv t3,a2
+800027e4: 00158593 addi a1,a1,1
+800027e8: 00f76733 or a4,a4,a5
+800027ec: 01010eb7 lui t4,0x1010
+800027f0: 02070263 beqz a4,80002814 <handle_trap+0x19c>
+800027f4: 00000793 li a5,0
+800027f8: 00f52023 sw a5,0(a0)
+800027fc: 00000813 li a6,0
+80002800: 01052223 sw a6,4(a0)
+80002804: 0006a703 lw a4,0(a3)
+80002808: 0046a783 lw a5,4(a3)
+8000280c: 00f76733 or a4,a4,a5
+80002810: fe0712e3 bnez a4,800027f4 <handle_trap+0x17c>
+80002814: 0005c603 lbu a2,0(a1)
+80002818: 01c6a023 sw t3,0(a3)
+8000281c: 01d6a223 sw t4,4(a3)
+80002820: fa061ce3 bnez a2,800027d8 <handle_trap+0x160>
+80002824: f89ff06f j 800027ac <handle_trap+0x134>
+80002828: 02852783 lw a5,40(a0)
+8000282c: 00001a37 lui s4,0x1
+80002830: 00003b17 auipc s6,0x3
+80002834: 9c8b0b13 addi s6,s6,-1592 # 800051f8 <user_mapping>
+80002838: 00f12223 sw a5,4(sp)
+8000283c: 00000d17 auipc s10,0x0
+80002840: 7c4d0d13 addi s10,s10,1988 # 80003000 <begin_signature>
+80002844: 00040cb7 lui s9,0x40
+80002848: ffc00c37 lui s8,0xffc00
+8000284c: 0003fab7 lui s5,0x3f
+80002850: 01c0006f j 8000286c <handle_trap+0x1f4>
+80002854: 00f72223 sw a5,4(a4)
+80002858: 00003717 auipc a4,0x3
+8000285c: b8f72c23 sw a5,-1128(a4) # 800053f0 <freelist_tail>
+80002860: 000017b7 lui a5,0x1
+80002864: 00fa0a33 add s4,s4,a5
+80002868: 1b5a0463 beq s4,s5,80002a10 <handle_trap+0x398>
+8000286c: 00ca5713 srli a4,s4,0xc
+80002870: 00371b93 slli s7,a4,0x3
+80002874: 017b0633 add a2,s6,s7
+80002878: 00062603 lw a2,0(a2)
+8000287c: fe0602e3 beqz a2,80002860 <handle_trap+0x1e8>
+80002880: 40070713 addi a4,a4,1024
+80002884: 00271713 slli a4,a4,0x2
+80002888: 00ed0733 add a4,s10,a4
+8000288c: 00072703 lw a4,0(a4)
+80002890: 04077613 andi a2,a4,64
+80002894: 12060863 beqz a2,800029c4 <handle_trap+0x34c>
+80002898: 00e12623 sw a4,12(sp)
+8000289c: 100cadf3 csrrs s11,sstatus,s9
+800028a0: 018a0833 add a6,s4,s8
+800028a4: 00001637 lui a2,0x1
+800028a8: 00080593 mv a1,a6
+800028ac: 000a0513 mv a0,s4
+800028b0: 01012423 sw a6,8(sp)
+800028b4: 855ff0ef jal ra,80002108 <memcmp>
+800028b8: 02050263 beqz a0,800028dc <handle_trap+0x264>
+800028bc: 00c12703 lw a4,12(sp)
+800028c0: 00812803 lw a6,8(sp)
+800028c4: 08077713 andi a4,a4,128
+800028c8: 0a070863 beqz a4,80002978 <handle_trap+0x300>
+800028cc: 00001637 lui a2,0x1
+800028d0: 00080593 mv a1,a6
+800028d4: 000a0513 mv a0,s4
+800028d8: f28ff0ef jal ra,80002000 <memcpy>
+800028dc: 017b07b3 add a5,s6,s7
+800028e0: 100d9073 csrw sstatus,s11
+800028e4: 00003717 auipc a4,0x3
+800028e8: b0c70713 addi a4,a4,-1268 # 800053f0 <freelist_tail>
+800028ec: 00072703 lw a4,0(a4)
+800028f0: 0007a023 sw zero,0(a5) # 1000 <_start-0x7ffff000>
+800028f4: f60710e3 bnez a4,80002854 <handle_trap+0x1dc>
+800028f8: 00003717 auipc a4,0x3
+800028fc: aef72c23 sw a5,-1288(a4) # 800053f0 <freelist_tail>
+80002900: 00003717 auipc a4,0x3
+80002904: aef72a23 sw a5,-1292(a4) # 800053f4 <freelist_head>
+80002908: f59ff06f j 80002860 <handle_trap+0x1e8>
+8000290c: 04100593 li a1,65
+80002910: 00000617 auipc a2,0x0
+80002914: 56060613 addi a2,a2,1376 # 80002e70 <pass+0x1a4>
+80002918: ffffe697 auipc a3,0xffffe
+8000291c: 6e868693 addi a3,a3,1768 # 80001000 <tohost>
+80002920: ffffe517 auipc a0,0xffffe
+80002924: 72050513 addi a0,a0,1824 # 80001040 <fromhost>
+80002928: 0006a703 lw a4,0(a3)
+8000292c: 0046a783 lw a5,4(a3)
+80002930: 00058313 mv t1,a1
+80002934: 00160613 addi a2,a2,1
+80002938: 00f76733 or a4,a4,a5
+8000293c: 010103b7 lui t2,0x1010
+80002940: 02070263 beqz a4,80002964 <handle_trap+0x2ec>
+80002944: 00000793 li a5,0
+80002948: 00f52023 sw a5,0(a0)
+8000294c: 00000813 li a6,0
+80002950: 01052223 sw a6,4(a0)
+80002954: 0006a703 lw a4,0(a3)
+80002958: 0046a783 lw a5,4(a3)
+8000295c: 00f76733 or a4,a4,a5
+80002960: fe0712e3 bnez a4,80002944 <handle_trap+0x2cc>
+80002964: 00064583 lbu a1,0(a2)
+80002968: 0066a023 sw t1,0(a3)
+8000296c: 0076a223 sw t2,4(a3)
+80002970: fa059ce3 bnez a1,80002928 <handle_trap+0x2b0>
+80002974: e39ff06f j 800027ac <handle_trap+0x134>
+80002978: 04100793 li a5,65
+8000297c: 00000617 auipc a2,0x0
+80002980: 47060613 addi a2,a2,1136 # 80002dec <pass+0x120>
+80002984: ffffe697 auipc a3,0xffffe
+80002988: 67c68693 addi a3,a3,1660 # 80001000 <tohost>
+8000298c: ffffe597 auipc a1,0xffffe
+80002990: 6b458593 addi a1,a1,1716 # 80001040 <fromhost>
+80002994: 00078413 mv s0,a5
+80002998: 00160613 addi a2,a2,1
+8000299c: 010104b7 lui s1,0x1010
+800029a0: 0006a703 lw a4,0(a3)
+800029a4: 0046a783 lw a5,4(a3)
+800029a8: 00f76733 or a4,a4,a5
+800029ac: 06070663 beqz a4,80002a18 <handle_trap+0x3a0>
+800029b0: 00000793 li a5,0
+800029b4: 00000813 li a6,0
+800029b8: 00f5a023 sw a5,0(a1)
+800029bc: 0105a223 sw a6,4(a1)
+800029c0: fe1ff06f j 800029a0 <handle_trap+0x328>
+800029c4: 04100793 li a5,65
+800029c8: 00000617 auipc a2,0x0
+800029cc: 3f060613 addi a2,a2,1008 # 80002db8 <pass+0xec>
+800029d0: ffffe697 auipc a3,0xffffe
+800029d4: 63068693 addi a3,a3,1584 # 80001000 <tohost>
+800029d8: ffffe597 auipc a1,0xffffe
+800029dc: 66858593 addi a1,a1,1640 # 80001040 <fromhost>
+800029e0: 00078913 mv s2,a5
+800029e4: 00160613 addi a2,a2,1
+800029e8: 010109b7 lui s3,0x1010
+800029ec: 0006a703 lw a4,0(a3)
+800029f0: 0046a783 lw a5,4(a3)
+800029f4: 00f76733 or a4,a4,a5
+800029f8: 02070a63 beqz a4,80002a2c <handle_trap+0x3b4>
+800029fc: 00000793 li a5,0
+80002a00: 00000813 li a6,0
+80002a04: 00f5a023 sw a5,0(a1)
+80002a08: 0105a223 sw a6,4(a1)
+80002a0c: fe1ff06f j 800029ec <handle_trap+0x374>
+80002a10: 00412503 lw a0,4(sp)
+80002a14: 815ff0ef jal ra,80002228 <terminate>
+80002a18: 00064783 lbu a5,0(a2)
+80002a1c: 0086a023 sw s0,0(a3)
+80002a20: 0096a223 sw s1,4(a3)
+80002a24: f60798e3 bnez a5,80002994 <handle_trap+0x31c>
+80002a28: d85ff06f j 800027ac <handle_trap+0x134>
+80002a2c: 00064783 lbu a5,0(a2)
+80002a30: 0126a023 sw s2,0(a3)
+80002a34: 0136a223 sw s3,4(a3)
+80002a38: fa0794e3 bnez a5,800029e0 <handle_trap+0x368>
+80002a3c: d71ff06f j 800027ac <handle_trap+0x134>
+
+80002a40 <vm_boot>:
+80002a40: f14027f3 csrr a5,mhartid
+80002a44: 14079a63 bnez a5,80002b98 <vm_boot+0x158>
+80002a48: 00001797 auipc a5,0x1
+80002a4c: 5b878793 addi a5,a5,1464 # 80004000 <begin_signature+0x1000>
+80002a50: 00c7d793 srli a5,a5,0xc
+80002a54: 00a79793 slli a5,a5,0xa
+80002a58: 0017e793 ori a5,a5,1
+80002a5c: 00000697 auipc a3,0x0
+80002a60: 5af6a223 sw a5,1444(a3) # 80003000 <begin_signature>
+80002a64: 200007b7 lui a5,0x20000
+80002a68: 00000717 auipc a4,0x0
+80002a6c: 59870713 addi a4,a4,1432 # 80003000 <begin_signature>
+80002a70: 0cf78793 addi a5,a5,207 # 200000cf <_start-0x5fffff31>
+80002a74: f6010113 addi sp,sp,-160
+80002a78: 00001697 auipc a3,0x1
+80002a7c: 58f6a223 sw a5,1412(a3) # 80003ffc <begin_signature+0xffc>
+80002a80: 00c75793 srli a5,a4,0xc
+80002a84: 80000737 lui a4,0x80000
+80002a88: 08112e23 sw ra,156(sp)
+80002a8c: 08812c23 sw s0,152(sp)
+80002a90: 00e7e7b3 or a5,a5,a4
+80002a94: 18079073 csrw satp,a5
+80002a98: 01f00793 li a5,31
+80002a9c: fff00713 li a4,-1
+80002aa0: 00000297 auipc t0,0x0
+80002aa4: 01428293 addi t0,t0,20 # 80002ab4 <vm_boot+0x74>
+80002aa8: 305292f3 csrrw t0,mtvec,t0
+80002aac: 3b071073 csrw pmpaddr0,a4
+80002ab0: 3a079073 csrw pmpcfg0,a5
+80002ab4: 7fbfd797 auipc a5,0x7fbfd
+80002ab8: 61078793 addi a5,a5,1552 # ffc000c4 <_end+0x7fbfaccc>
+80002abc: 10579073 csrw stvec,a5
+80002ac0: 340027f3 csrr a5,mscratch
+80002ac4: 7fc00837 lui a6,0x7fc00
+80002ac8: 010787b3 add a5,a5,a6
+80002acc: 14079073 csrw sscratch,a5
+80002ad0: 0000b7b7 lui a5,0xb
+80002ad4: 10078793 addi a5,a5,256 # b100 <_start-0x7fff4f00>
+80002ad8: 30279073 csrw medeleg,a5
+80002adc: 0001e7b7 lui a5,0x1e
+80002ae0: 30079073 csrw mstatus,a5
+80002ae4: 30405073 csrwi mie,0
+80002ae8: 7fc02797 auipc a5,0x7fc02
+80002aec: 51878793 addi a5,a5,1304 # ffc05000 <_end+0x7fbffc08>
+80002af0: 00003717 auipc a4,0x3
+80002af4: 90f72223 sw a5,-1788(a4) # 800053f4 <freelist_head>
+80002af8: 7fc02797 auipc a5,0x7fc02
+80002afc: 6f878793 addi a5,a5,1784 # ffc051f0 <_end+0x7fbffdf8>
+80002b00: 00003717 auipc a4,0x3
+80002b04: 8ef72823 sw a5,-1808(a4) # 800053f0 <freelist_tail>
+80002b08: 000808b7 lui a7,0x80
+80002b0c: 00002717 auipc a4,0x2
+80002b10: 4f470713 addi a4,a4,1268 # 80005000 <freelist_nodes>
+80002b14: 00002317 auipc t1,0x2
+80002b18: 6e430313 addi t1,t1,1764 # 800051f8 <user_mapping>
+80002b1c: 02000793 li a5,32
+80002b20: 03f88893 addi a7,a7,63 # 8003f <_start-0x7ff7ffc1>
+80002b24: 00880813 addi a6,a6,8 # 7fc00008 <_start-0x3ffff8>
+80002b28: 0017d613 srli a2,a5,0x1
+80002b2c: 011786b3 add a3,a5,a7
+80002b30: 00f647b3 xor a5,a2,a5
+80002b34: 010705b3 add a1,a4,a6
+80002b38: 00c69693 slli a3,a3,0xc
+80002b3c: 00579793 slli a5,a5,0x5
+80002b40: 00d72023 sw a3,0(a4)
+80002b44: 00b72223 sw a1,4(a4)
+80002b48: 0207f793 andi a5,a5,32
+80002b4c: 00870713 addi a4,a4,8
+80002b50: 00f667b3 or a5,a2,a5
+80002b54: fce31ae3 bne t1,a4,80002b28 <vm_boot+0xe8>
+80002b58: 00050413 mv s0,a0
+80002b5c: 09000613 li a2,144
+80002b60: 00000593 li a1,0
+80002b64: 00010513 mv a0,sp
+80002b68: 00002797 auipc a5,0x2
+80002b6c: 6807a623 sw zero,1676(a5) # 800051f4 <freelist_nodes+0x1f4>
+80002b70: cecff0ef jal ra,8000205c <memset>
+80002b74: 800007b7 lui a5,0x80000
+80002b78: 00f40433 add s0,s0,a5
+80002b7c: 00010513 mv a0,sp
+80002b80: 08812223 sw s0,132(sp)
+80002b84: cb8fd0ef jal ra,8000003c <pop_tf>
+80002b88: 09c12083 lw ra,156(sp)
+80002b8c: 09812403 lw s0,152(sp)
+80002b90: 0a010113 addi sp,sp,160
+80002b94: 00008067 ret
+80002b98: 081b87b7 lui a5,0x81b8
+80002b9c: 00080637 lui a2,0x80
+80002ba0: a6f78793 addi a5,a5,-1425 # 81b7a6f <_start-0x77e48591>
+80002ba4: ffc60613 addi a2,a2,-4 # 7fffc <_start-0x7ff80004>
+80002ba8: 800005b7 lui a1,0x80000
+80002bac: 00c7f733 and a4,a5,a2
+80002bb0: 0017f693 andi a3,a5,1
+80002bb4: 00b70733 add a4,a4,a1
+80002bb8: 00068e63 beqz a3,80002bd4 <vm_boot+0x194>
+80002bbc: 0007202f amoadd.w zero,zero,(a4)
+80002bc0: 0017d793 srli a5,a5,0x1
+80002bc4: 00c7f733 and a4,a5,a2
+80002bc8: 0017f693 andi a3,a5,1
+80002bcc: 00b70733 add a4,a4,a1
+80002bd0: fe0696e3 bnez a3,80002bbc <vm_boot+0x17c>
+80002bd4: 00072003 lw zero,0(a4)
+80002bd8: 0017d793 srli a5,a5,0x1
+80002bdc: fe9ff06f j 80002bc4 <vm_boot+0x184>
+
+80002be0 <userstart>:
+80002be0: 01400093 li ra,20
+80002be4: 00600113 li sp,6
+80002be8: 0220ff33 remu t5,ra,sp
+80002bec: 00200e93 li t4,2
+80002bf0: 00200193 li gp,2
+80002bf4: 0ddf1463 bne t5,t4,80002cbc <fail>
+
+80002bf8 <test_3>:
+80002bf8: fec00093 li ra,-20
+80002bfc: 00600113 li sp,6
+80002c00: 0220ff33 remu t5,ra,sp
+80002c04: 00200e93 li t4,2
+80002c08: 00300193 li gp,3
+80002c0c: 0bdf1863 bne t5,t4,80002cbc <fail>
+
+80002c10 <test_4>:
+80002c10: 01400093 li ra,20
+80002c14: ffa00113 li sp,-6
+80002c18: 0220ff33 remu t5,ra,sp
+80002c1c: 01400e93 li t4,20
+80002c20: 00400193 li gp,4
+80002c24: 09df1c63 bne t5,t4,80002cbc <fail>
+
+80002c28 <test_5>:
+80002c28: fec00093 li ra,-20
+80002c2c: ffa00113 li sp,-6
+80002c30: 0220ff33 remu t5,ra,sp
+80002c34: fec00e93 li t4,-20
+80002c38: 00500193 li gp,5
+80002c3c: 09df1063 bne t5,t4,80002cbc <fail>
+
+80002c40 <test_6>:
+80002c40: 800000b7 lui ra,0x80000
+80002c44: 00100113 li sp,1
+80002c48: 0220ff33 remu t5,ra,sp
+80002c4c: 00000e93 li t4,0
+80002c50: 00600193 li gp,6
+80002c54: 07df1463 bne t5,t4,80002cbc <fail>
+
+80002c58 <test_7>:
+80002c58: 800000b7 lui ra,0x80000
+80002c5c: fff00113 li sp,-1
+80002c60: 0220ff33 remu t5,ra,sp
+80002c64: 80000eb7 lui t4,0x80000
+80002c68: 00700193 li gp,7
+80002c6c: 05df1863 bne t5,t4,80002cbc <fail>
+
+80002c70 <test_8>:
+80002c70: 800000b7 lui ra,0x80000
+80002c74: 00000113 li sp,0
+80002c78: 0220ff33 remu t5,ra,sp
+80002c7c: 80000eb7 lui t4,0x80000
+80002c80: 00800193 li gp,8
+80002c84: 03df1c63 bne t5,t4,80002cbc <fail>
+
+80002c88 <test_9>:
+80002c88: 00100093 li ra,1
+80002c8c: 00000113 li sp,0
+80002c90: 0220ff33 remu t5,ra,sp
+80002c94: 00100e93 li t4,1
+80002c98: 00900193 li gp,9
+80002c9c: 03df1063 bne t5,t4,80002cbc <fail>
+
+80002ca0 <test_10>:
+80002ca0: 00000093 li ra,0
+80002ca4: 00000113 li sp,0
+80002ca8: 0220ff33 remu t5,ra,sp
+80002cac: 00000e93 li t4,0
+80002cb0: 00a00193 li gp,10
+80002cb4: 01df1463 bne t5,t4,80002cbc <fail>
+80002cb8: 00301a63 bne zero,gp,80002ccc <pass>
+
+80002cbc <fail>:
+80002cbc: 00119513 slli a0,gp,0x1
+80002cc0: 00050063 beqz a0,80002cc0 <fail+0x4>
+80002cc4: 00156513 ori a0,a0,1
+80002cc8: 00000073 ecall
+
+80002ccc <pass>:
+80002ccc: 00100513 li a0,1
+80002cd0: 00000073 ecall
+80002cd4: c0001073 unimp
diff --git a/test/riscv-tests/rv32um-v-remu.elf b/test/riscv-tests/rv32um-v-remu.elf
new file mode 100644
index 0000000..f384383
--- /dev/null
+++ b/test/riscv-tests/rv32um-v-remu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-breakpoint.elf b/test/riscv-tests/rv64mi-p-breakpoint.elf
index 04af6b2..571bfd7 100644
--- a/test/riscv-tests/rv64mi-p-breakpoint.elf
+++ b/test/riscv-tests/rv64mi-p-breakpoint.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-csr.elf b/test/riscv-tests/rv64mi-p-csr.elf
index d7c74bc..be07922 100644
--- a/test/riscv-tests/rv64mi-p-csr.elf
+++ b/test/riscv-tests/rv64mi-p-csr.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-illegal.dump b/test/riscv-tests/rv64mi-p-illegal.dump
index 56485c4..f3f6c62 100644
--- a/test/riscv-tests/rv64mi-p-illegal.dump
+++ b/test/riscv-tests/rv64mi-p-illegal.dump
@@ -257,54 +257,53 @@ Disassembly of section .text.init:
80000344: 342022f3 csrr t0,mcause
80000348: ea629ee3 bne t0,t1,80000204 <fail>
8000034c: 341022f3 csrr t0,mepc
- 80000350: 343023f3 csrr t2,mbadaddr
- 80000354: 00038c63 beqz t2,8000036c <synchronous_exception+0x2c>
- 80000358: 0002de03 lhu t3,0(t0)
- 8000035c: 0022de83 lhu t4,2(t0)
- 80000360: 010e9e93 slli t4,t4,0x10
- 80000364: 01de6e33 or t3,t3,t4
- 80000368: e9c39ee3 bne t2,t3,80000204 <fail>
- 8000036c: 00000317 auipc t1,0x0
- 80000370: da030313 addi t1,t1,-608 # 8000010c <bad2>
- 80000374: 04628e63 beq t0,t1,800003d0 <synchronous_exception+0x90>
- 80000378: 00000317 auipc t1,0x0
- 8000037c: e1c30313 addi t1,t1,-484 # 80000194 <bad3>
- 80000380: 04628e63 beq t0,t1,800003dc <synchronous_exception+0x9c>
- 80000384: 00000317 auipc t1,0x0
- 80000388: e1830313 addi t1,t1,-488 # 8000019c <bad4>
- 8000038c: 04628263 beq t0,t1,800003d0 <synchronous_exception+0x90>
- 80000390: 00000317 auipc t1,0x0
- 80000394: e1c30313 addi t1,t1,-484 # 800001ac <bad5>
- 80000398: 04628863 beq t0,t1,800003e8 <synchronous_exception+0xa8>
- 8000039c: 00000317 auipc t1,0x0
- 800003a0: e1830313 addi t1,t1,-488 # 800001b4 <bad6>
- 800003a4: 02628663 beq t0,t1,800003d0 <synchronous_exception+0x90>
- 800003a8: 00000317 auipc t1,0x0
- 800003ac: e1430313 addi t1,t1,-492 # 800001bc <bad7>
- 800003b0: 02628063 beq t0,t1,800003d0 <synchronous_exception+0x90>
- 800003b4: 00000317 auipc t1,0x0
- 800003b8: e3030313 addi t1,t1,-464 # 800001e4 <bad8>
- 800003bc: 02628c63 beq t0,t1,800003f4 <synchronous_exception+0xb4>
- 800003c0: 00000317 auipc t1,0x0
- 800003c4: e3830313 addi t1,t1,-456 # 800001f8 <bad9>
- 800003c8: 02628c63 beq t0,t1,80000400 <synchronous_exception+0xc0>
- 800003cc: e39ff06f j 80000204 <fail>
- 800003d0: 00828293 addi t0,t0,8
- 800003d4: 34129073 csrw mepc,t0
- 800003d8: 30200073 mret
- 800003dc: 00200337 lui t1,0x200
- 800003e0: 30032073 csrs mstatus,t1
- 800003e4: fedff06f j 800003d0 <synchronous_exception+0x90>
- 800003e8: 00100337 lui t1,0x100
- 800003ec: 30032073 csrs mstatus,t1
- 800003f0: fe1ff06f j 800003d0 <synchronous_exception+0x90>
- 800003f4: 00400337 lui t1,0x400
- 800003f8: 30032073 csrs mstatus,t1
- 800003fc: fd5ff06f j 800003d0 <synchronous_exception+0x90>
- 80000400: fd1ff06f j 800003d0 <synchronous_exception+0x90>
- 80000404: c0001073 unimp
- 80000408: 0000 unimp
- 8000040a: 0000 unimp
+ 80000350: 343023f3 csrr t2,mtval
+ 80000354: 00038e63 beqz t2,80000370 <synchronous_exception+0x30>
+ 80000358: 0002d303 lhu t1,0(t0)
+ 8000035c: 0063c3b3 xor t2,t2,t1
+ 80000360: 0022d303 lhu t1,2(t0)
+ 80000364: 01031313 slli t1,t1,0x10
+ 80000368: 0063c3b3 xor t2,t2,t1
+ 8000036c: e8039ce3 bnez t2,80000204 <fail>
+ 80000370: 00000317 auipc t1,0x0
+ 80000374: d9c30313 addi t1,t1,-612 # 8000010c <bad2>
+ 80000378: 04628e63 beq t0,t1,800003d4 <synchronous_exception+0x94>
+ 8000037c: 00000317 auipc t1,0x0
+ 80000380: e1830313 addi t1,t1,-488 # 80000194 <bad3>
+ 80000384: 04628e63 beq t0,t1,800003e0 <synchronous_exception+0xa0>
+ 80000388: 00000317 auipc t1,0x0
+ 8000038c: e1430313 addi t1,t1,-492 # 8000019c <bad4>
+ 80000390: 04628263 beq t0,t1,800003d4 <synchronous_exception+0x94>
+ 80000394: 00000317 auipc t1,0x0
+ 80000398: e1830313 addi t1,t1,-488 # 800001ac <bad5>
+ 8000039c: 04628863 beq t0,t1,800003ec <synchronous_exception+0xac>
+ 800003a0: 00000317 auipc t1,0x0
+ 800003a4: e1430313 addi t1,t1,-492 # 800001b4 <bad6>
+ 800003a8: 02628663 beq t0,t1,800003d4 <synchronous_exception+0x94>
+ 800003ac: 00000317 auipc t1,0x0
+ 800003b0: e1030313 addi t1,t1,-496 # 800001bc <bad7>
+ 800003b4: 02628063 beq t0,t1,800003d4 <synchronous_exception+0x94>
+ 800003b8: 00000317 auipc t1,0x0
+ 800003bc: e2c30313 addi t1,t1,-468 # 800001e4 <bad8>
+ 800003c0: 02628c63 beq t0,t1,800003f8 <synchronous_exception+0xb8>
+ 800003c4: 00000317 auipc t1,0x0
+ 800003c8: e3430313 addi t1,t1,-460 # 800001f8 <bad9>
+ 800003cc: 02628c63 beq t0,t1,80000404 <synchronous_exception+0xc4>
+ 800003d0: e35ff06f j 80000204 <fail>
+ 800003d4: 00828293 addi t0,t0,8
+ 800003d8: 34129073 csrw mepc,t0
+ 800003dc: 30200073 mret
+ 800003e0: 00200337 lui t1,0x200
+ 800003e4: 30032073 csrs mstatus,t1
+ 800003e8: fedff06f j 800003d4 <synchronous_exception+0x94>
+ 800003ec: 00100337 lui t1,0x100
+ 800003f0: 30032073 csrs mstatus,t1
+ 800003f4: fe1ff06f j 800003d4 <synchronous_exception+0x94>
+ 800003f8: 00400337 lui t1,0x400
+ 800003fc: 30032073 csrs mstatus,t1
+ 80000400: fd5ff06f j 800003d4 <synchronous_exception+0x94>
+ 80000404: fd1ff06f j 800003d4 <synchronous_exception+0x94>
+ 80000408: c0001073 unimp
8000040c: 0000 unimp
8000040e: 0000 unimp
80000410: 0000 unimp
diff --git a/test/riscv-tests/rv64mi-p-illegal.elf b/test/riscv-tests/rv64mi-p-illegal.elf
index 7441498..d301049 100644
--- a/test/riscv-tests/rv64mi-p-illegal.elf
+++ b/test/riscv-tests/rv64mi-p-illegal.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-ma_addr.dump b/test/riscv-tests/rv64mi-p-ma_addr.dump
index b559567..596e009 100644
--- a/test/riscv-tests/rv64mi-p-ma_addr.dump
+++ b/test/riscv-tests/rv64mi-p-ma_addr.dump
@@ -407,7 +407,7 @@ Disassembly of section .text.init:
0000000080000608 <mtvec_handler>:
80000608: 342022f3 csrr t0,mcause
8000060c: fc929ee3 bne t0,s1,800005e8 <fail>
- 80000610: 343022f3 csrr t0,mbadaddr
+ 80000610: 343022f3 csrr t0,mtval
80000614: fc629ae3 bne t0,t1,800005e8 <fail>
80000618: 00028283 lb t0,0(t0)
8000061c: fc0286e3 beqz t0,800005e8 <fail>
diff --git a/test/riscv-tests/rv64mi-p-ma_addr.elf b/test/riscv-tests/rv64mi-p-ma_addr.elf
index fc32662..e5eadd5 100644
--- a/test/riscv-tests/rv64mi-p-ma_addr.elf
+++ b/test/riscv-tests/rv64mi-p-ma_addr.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-ma_fetch.dump b/test/riscv-tests/rv64mi-p-ma_fetch.dump
index 6a5285a..ab4b9d0 100644
--- a/test/riscv-tests/rv64mi-p-ma_fetch.dump
+++ b/test/riscv-tests/rv64mi-p-ma_fetch.dump
@@ -179,7 +179,7 @@ Disassembly of section .text.init:
8000025c: 341025f3 csrr a1,mepc
80000260: 00458593 addi a1,a1,4
80000264: fab292e3 bne t0,a1,80000208 <fail>
- 80000268: 34302573 csrr a0,mbadaddr
+ 80000268: 34302573 csrr a0,mtval
8000026c: 00050663 beqz a0,80000278 <mtvec_handler+0x50>
80000270: ffe50513 addi a0,a0,-2 # 1ffe <_start-0x7fffe002>
80000274: f8551ae3 bne a0,t0,80000208 <fail>
diff --git a/test/riscv-tests/rv64mi-p-ma_fetch.elf b/test/riscv-tests/rv64mi-p-ma_fetch.elf
index 40ffdf3..4d66e69 100644
--- a/test/riscv-tests/rv64mi-p-ma_fetch.elf
+++ b/test/riscv-tests/rv64mi-p-ma_fetch.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-mcsr.elf b/test/riscv-tests/rv64mi-p-mcsr.elf
index 4ce3d35..796100b 100644
--- a/test/riscv-tests/rv64mi-p-mcsr.elf
+++ b/test/riscv-tests/rv64mi-p-mcsr.elf
Binary files differ
diff --git a/test/riscv-tests/rv64mi-p-scall.dump b/test/riscv-tests/rv64mi-p-scall.dump
index 940db03..f5f3402 100644
--- a/test/riscv-tests/rv64mi-p-scall.dump
+++ b/test/riscv-tests/rv64mi-p-scall.dump
@@ -84,8 +84,8 @@ Disassembly of section .text.init:
80000110: 000022b7 lui t0,0x2
80000114: 8002829b addiw t0,t0,-2048
80000118: 3002b073 csrc mstatus,t0
- 8000011c: 30002373 csrr t1,mstatus
- 80000120: 0062f2b3 and t0,t0,t1
+ 8000011c: 300023f3 csrr t2,mstatus
+ 80000120: 0072f2b3 and t0,t0,t2
80000124: 00028463 beqz t0,8000012c <reset_vector+0xe0>
80000128: 00b00313 li t1,11
8000012c: 000022b7 lui t0,0x2
diff --git a/test/riscv-tests/rv64mi-p-scall.elf b/test/riscv-tests/rv64mi-p-scall.elf
index bbb1526..f82dea5 100644
--- a/test/riscv-tests/rv64mi-p-scall.elf
+++ b/test/riscv-tests/rv64mi-p-scall.elf
Binary files differ
diff --git a/test/riscv-tests/rv64si-p-csr.elf b/test/riscv-tests/rv64si-p-csr.elf
index 3f0921c..a6290ef 100644
--- a/test/riscv-tests/rv64si-p-csr.elf
+++ b/test/riscv-tests/rv64si-p-csr.elf
Binary files differ
diff --git a/test/riscv-tests/rv64si-p-dirty.elf b/test/riscv-tests/rv64si-p-dirty.elf
index 7ff11e5..a15a033 100644
--- a/test/riscv-tests/rv64si-p-dirty.elf
+++ b/test/riscv-tests/rv64si-p-dirty.elf
Binary files differ
diff --git a/test/riscv-tests/rv64si-p-ma_fetch.dump b/test/riscv-tests/rv64si-p-ma_fetch.dump
index bd8178b..1ca5922 100644
--- a/test/riscv-tests/rv64si-p-ma_fetch.dump
+++ b/test/riscv-tests/rv64si-p-ma_fetch.dump
@@ -157,7 +157,7 @@ Disassembly of section .text.init:
80000208: 141025f3 csrr a1,sepc
8000020c: 00458593 addi a1,a1,4
80000210: fab292e3 bne t0,a1,800001b4 <fail>
- 80000214: 14302573 csrr a0,sbadaddr
+ 80000214: 14302573 csrr a0,stval
80000218: 00050663 beqz a0,80000224 <stvec_handler+0x50>
8000021c: ffe50513 addi a0,a0,-2 # ffe <_start-0x7ffff002>
80000220: f8551ae3 bne a0,t0,800001b4 <fail>
diff --git a/test/riscv-tests/rv64si-p-ma_fetch.elf b/test/riscv-tests/rv64si-p-ma_fetch.elf
index 23977ad..02155e5 100644
--- a/test/riscv-tests/rv64si-p-ma_fetch.elf
+++ b/test/riscv-tests/rv64si-p-ma_fetch.elf
Binary files differ
diff --git a/test/riscv-tests/rv64si-p-scall.elf b/test/riscv-tests/rv64si-p-scall.elf
index 4d7dc27..5eb47e1 100644
--- a/test/riscv-tests/rv64si-p-scall.elf
+++ b/test/riscv-tests/rv64si-p-scall.elf
Binary files differ
diff --git a/test/riscv-tests/rv64si-p-wfi.elf b/test/riscv-tests/rv64si-p-wfi.elf
index 23d0c0c..46e1115 100644
--- a/test/riscv-tests/rv64si-p-wfi.elf
+++ b/test/riscv-tests/rv64si-p-wfi.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoadd_d.elf b/test/riscv-tests/rv64ua-p-amoadd_d.elf
index e20d290..359f604 100644
--- a/test/riscv-tests/rv64ua-p-amoadd_d.elf
+++ b/test/riscv-tests/rv64ua-p-amoadd_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoadd_w.elf b/test/riscv-tests/rv64ua-p-amoadd_w.elf
index f8c15af..a76f604 100644
--- a/test/riscv-tests/rv64ua-p-amoadd_w.elf
+++ b/test/riscv-tests/rv64ua-p-amoadd_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoand_d.elf b/test/riscv-tests/rv64ua-p-amoand_d.elf
index 6f9ec5c..091e7f7 100644
--- a/test/riscv-tests/rv64ua-p-amoand_d.elf
+++ b/test/riscv-tests/rv64ua-p-amoand_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoand_w.elf b/test/riscv-tests/rv64ua-p-amoand_w.elf
index fefc4fc..edf0588 100644
--- a/test/riscv-tests/rv64ua-p-amoand_w.elf
+++ b/test/riscv-tests/rv64ua-p-amoand_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amomax_d.elf b/test/riscv-tests/rv64ua-p-amomax_d.elf
index 051cf48..c8867f8 100644
--- a/test/riscv-tests/rv64ua-p-amomax_d.elf
+++ b/test/riscv-tests/rv64ua-p-amomax_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amomax_w.elf b/test/riscv-tests/rv64ua-p-amomax_w.elf
index 59d12a1..e7d9ea5 100644
--- a/test/riscv-tests/rv64ua-p-amomax_w.elf
+++ b/test/riscv-tests/rv64ua-p-amomax_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amomaxu_d.elf b/test/riscv-tests/rv64ua-p-amomaxu_d.elf
index 4c13c12..dab4026 100644
--- a/test/riscv-tests/rv64ua-p-amomaxu_d.elf
+++ b/test/riscv-tests/rv64ua-p-amomaxu_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amomaxu_w.elf b/test/riscv-tests/rv64ua-p-amomaxu_w.elf
index 0c97a3a..6486fa46 100644
--- a/test/riscv-tests/rv64ua-p-amomaxu_w.elf
+++ b/test/riscv-tests/rv64ua-p-amomaxu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amomin_d.elf b/test/riscv-tests/rv64ua-p-amomin_d.elf
index 791c78f..425c72c 100644
--- a/test/riscv-tests/rv64ua-p-amomin_d.elf
+++ b/test/riscv-tests/rv64ua-p-amomin_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amomin_w.elf b/test/riscv-tests/rv64ua-p-amomin_w.elf
index 7bf86a3..2cdb17e 100644
--- a/test/riscv-tests/rv64ua-p-amomin_w.elf
+++ b/test/riscv-tests/rv64ua-p-amomin_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amominu_d.elf b/test/riscv-tests/rv64ua-p-amominu_d.elf
index 1c6d6ad..20d1b6f 100644
--- a/test/riscv-tests/rv64ua-p-amominu_d.elf
+++ b/test/riscv-tests/rv64ua-p-amominu_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amominu_w.elf b/test/riscv-tests/rv64ua-p-amominu_w.elf
index af14db9..6a73fc4 100644
--- a/test/riscv-tests/rv64ua-p-amominu_w.elf
+++ b/test/riscv-tests/rv64ua-p-amominu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoor_d.elf b/test/riscv-tests/rv64ua-p-amoor_d.elf
index a00b97c..71a3215 100644
--- a/test/riscv-tests/rv64ua-p-amoor_d.elf
+++ b/test/riscv-tests/rv64ua-p-amoor_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoor_w.elf b/test/riscv-tests/rv64ua-p-amoor_w.elf
index e35c29f..33196ad 100644
--- a/test/riscv-tests/rv64ua-p-amoor_w.elf
+++ b/test/riscv-tests/rv64ua-p-amoor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoswap_d.elf b/test/riscv-tests/rv64ua-p-amoswap_d.elf
index 63d01a7..2b2200c 100644
--- a/test/riscv-tests/rv64ua-p-amoswap_d.elf
+++ b/test/riscv-tests/rv64ua-p-amoswap_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoswap_w.elf b/test/riscv-tests/rv64ua-p-amoswap_w.elf
index 011d5e2..39ee63f 100644
--- a/test/riscv-tests/rv64ua-p-amoswap_w.elf
+++ b/test/riscv-tests/rv64ua-p-amoswap_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoxor_d.elf b/test/riscv-tests/rv64ua-p-amoxor_d.elf
index 4bec6cc..cb45e31 100644
--- a/test/riscv-tests/rv64ua-p-amoxor_d.elf
+++ b/test/riscv-tests/rv64ua-p-amoxor_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-amoxor_w.elf b/test/riscv-tests/rv64ua-p-amoxor_w.elf
index 22e8ba9..c2d3412 100644
--- a/test/riscv-tests/rv64ua-p-amoxor_w.elf
+++ b/test/riscv-tests/rv64ua-p-amoxor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-p-lrsc.dump b/test/riscv-tests/rv64ua-p-lrsc.dump
index bcca392..4f87408 100644
--- a/test/riscv-tests/rv64ua-p-lrsc.dump
+++ b/test/riscv-tests/rv64ua-p-lrsc.dump
@@ -88,77 +88,95 @@ Disassembly of section .text.init:
000000008000011c <test_2>:
8000011c: 00002517 auipc a0,0x2
80000120: eec50513 addi a0,a0,-276 # 80002008 <foo>
- 80000124: 1805272f sc.w a4,zero,(a0)
- 80000128: 00100e93 li t4,1
- 8000012c: 00200193 li gp,2
- 80000130: 09d71a63 bne a4,t4,800001c4 <fail>
+ 80000124: 000387b7 lui a5,0x38
+ 80000128: ab77879b addiw a5,a5,-1353
+ 8000012c: 00e79793 slli a5,a5,0xe
+ 80000130: eef78793 addi a5,a5,-273 # 37eef <_start-0x7ffc8111>
+ 80000134: 18f5272f sc.w a4,a5,(a0)
+ 80000138: 00100e93 li t4,1
+ 8000013c: 00200193 li gp,2
+ 80000140: 0dd71663 bne a4,t4,8000020c <fail>
-0000000080000134 <test_3>:
- 80000134: 00002517 auipc a0,0x2
- 80000138: ed450513 addi a0,a0,-300 # 80002008 <foo>
- 8000013c: 00002597 auipc a1,0x2
- 80000140: 2d058593 addi a1,a1,720 # 8000240c <fooTest3>
- 80000144: 1005a5af lr.w a1,(a1)
- 80000148: 18b5272f sc.w a4,a1,(a0)
- 8000014c: 00100e93 li t4,1
+0000000080000144 <test_3>:
+ 80000144: 00002717 auipc a4,0x2
+ 80000148: ec472703 lw a4,-316(a4) # 80002008 <foo>
+ 8000014c: 00000e93 li t4,0
80000150: 00300193 li gp,3
- 80000154: 07d71863 bne a4,t4,800001c4 <fail>
+ 80000154: 0bd71c63 bne a4,t4,8000020c <fail>
+
+0000000080000158 <test_4>:
80000158: 00002517 auipc a0,0x2
8000015c: eb050513 addi a0,a0,-336 # 80002008 <foo>
- 80000160: 40000593 li a1,1024
- 80000164: 00160613 addi a2,a2,1
- 80000168: 1005272f lr.w a4,(a0)
- 8000016c: 00c70733 add a4,a4,a2
- 80000170: 18e5272f sc.w a4,a4,(a0)
- 80000174: fe071ae3 bnez a4,80000168 <test_3+0x34>
- 80000178: fff58593 addi a1,a1,-1
- 8000017c: fe0596e3 bnez a1,80000168 <test_3+0x34>
- 80000180: 00002517 auipc a0,0x2
- 80000184: e8450513 addi a0,a0,-380 # 80002004 <barrier>
- 80000188: 00100593 li a1,1
- 8000018c: 00b5202f amoadd.w zero,a1,(a0)
- 80000190: 00052583 lw a1,0(a0)
- 80000194: fed5cee3 blt a1,a3,80000190 <test_3+0x5c>
- 80000198: 0ff0000f fence
+ 80000160: 00002597 auipc a1,0x2
+ 80000164: 2ac58593 addi a1,a1,684 # 8000240c <fooTest3>
+ 80000168: 1005a5af lr.w a1,(a1)
+ 8000016c: 18b5272f sc.w a4,a1,(a0)
+ 80000170: 00100e93 li t4,1
+ 80000174: 00400193 li gp,4
+ 80000178: 09d71a63 bne a4,t4,8000020c <fail>
+ 8000017c: 00002517 auipc a0,0x2
+ 80000180: e8c50513 addi a0,a0,-372 # 80002008 <foo>
+ 80000184: 40000593 li a1,1024
+ 80000188: 00160613 addi a2,a2,1
+ 8000018c: 1005272f lr.w a4,(a0)
+ 80000190: 00c70733 add a4,a4,a2
+ 80000194: 18e5272f sc.w a4,a4,(a0)
+ 80000198: fe071ae3 bnez a4,8000018c <test_4+0x34>
+ 8000019c: fff58593 addi a1,a1,-1
+ 800001a0: fe0596e3 bnez a1,8000018c <test_4+0x34>
+ 800001a4: 00002517 auipc a0,0x2
+ 800001a8: e6050513 addi a0,a0,-416 # 80002004 <barrier>
+ 800001ac: 00100593 li a1,1
+ 800001b0: 00b5202f amoadd.w zero,a1,(a0)
+ 800001b4: 00052583 lw a1,0(a0)
+ 800001b8: fed5cee3 blt a1,a3,800001b4 <test_4+0x5c>
+ 800001bc: 0ff0000f fence
+
+00000000800001c0 <test_5>:
+ 800001c0: 00002517 auipc a0,0x2
+ 800001c4: e4852503 lw a0,-440(a0) # 80002008 <foo>
+ 800001c8: 00969593 slli a1,a3,0x9
+ 800001cc: 40b50533 sub a0,a0,a1
+ 800001d0: fff68693 addi a3,a3,-1
+ 800001d4: fe06dce3 bgez a3,800001cc <test_5+0xc>
+ 800001d8: 00000e93 li t4,0
+ 800001dc: 00500193 li gp,5
+ 800001e0: 03d51663 bne a0,t4,8000020c <fail>
-000000008000019c <test_4>:
- 8000019c: 00002517 auipc a0,0x2
- 800001a0: e6c52503 lw a0,-404(a0) # 80002008 <foo>
- 800001a4: 00969593 slli a1,a3,0x9
- 800001a8: 40b50533 sub a0,a0,a1
- 800001ac: fff68693 addi a3,a3,-1
- 800001b0: fe06dce3 bgez a3,800001a8 <test_4+0xc>
- 800001b4: 00000e93 li t4,0
- 800001b8: 00400193 li gp,4
- 800001bc: 01d51463 bne a0,t4,800001c4 <fail>
- 800001c0: 00301c63 bne zero,gp,800001d8 <pass>
+00000000800001e4 <test_6>:
+ 800001e4: 00002517 auipc a0,0x2
+ 800001e8: e2450513 addi a0,a0,-476 # 80002008 <foo>
+ 800001ec: 100525af lr.w a1,(a0)
+ 800001f0: 180525af sc.w a1,zero,(a0)
+ 800001f4: fe059ce3 bnez a1,800001ec <test_6+0x8>
+ 800001f8: 180525af sc.w a1,zero,(a0)
+ 800001fc: 00100e93 li t4,1
+ 80000200: 00600193 li gp,6
+ 80000204: 01d59463 bne a1,t4,8000020c <fail>
+ 80000208: 00301c63 bne zero,gp,80000220 <pass>
-00000000800001c4 <fail>:
- 800001c4: 0ff0000f fence
- 800001c8: 00018063 beqz gp,800001c8 <fail+0x4>
- 800001cc: 00119193 slli gp,gp,0x1
- 800001d0: 0011e193 ori gp,gp,1
- 800001d4: 00000073 ecall
+000000008000020c <fail>:
+ 8000020c: 0ff0000f fence
+ 80000210: 00018063 beqz gp,80000210 <fail+0x4>
+ 80000214: 00119193 slli gp,gp,0x1
+ 80000218: 0011e193 ori gp,gp,1
+ 8000021c: 00000073 ecall
-00000000800001d8 <pass>:
- 800001d8: 0ff0000f fence
- 800001dc: 00100193 li gp,1
- 800001e0: 00000073 ecall
- 800001e4: c0001073 unimp
- 800001e8: 0000 unimp
- 800001ea: 0000 unimp
- 800001ec: 0000 unimp
- 800001ee: 0000 unimp
- 800001f0: 0000 unimp
- 800001f2: 0000 unimp
- 800001f4: 0000 unimp
- 800001f6: 0000 unimp
- 800001f8: 0000 unimp
- 800001fa: 0000 unimp
- 800001fc: 0000 unimp
- 800001fe: 0000 unimp
- 80000200: 0000 unimp
- 80000202: 0000 unimp
+0000000080000220 <pass>:
+ 80000220: 0ff0000f fence
+ 80000224: 00100193 li gp,1
+ 80000228: 00000073 ecall
+ 8000022c: c0001073 unimp
+ 80000230: 0000 unimp
+ 80000232: 0000 unimp
+ 80000234: 0000 unimp
+ 80000236: 0000 unimp
+ 80000238: 0000 unimp
+ 8000023a: 0000 unimp
+ 8000023c: 0000 unimp
+ 8000023e: 0000 unimp
+ 80000240: 0000 unimp
+ 80000242: 0000 unimp
Disassembly of section .data:
diff --git a/test/riscv-tests/rv64ua-p-lrsc.elf b/test/riscv-tests/rv64ua-p-lrsc.elf
index 0fb5b44..c443cf2 100755..100644
--- a/test/riscv-tests/rv64ua-p-lrsc.elf
+++ b/test/riscv-tests/rv64ua-p-lrsc.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoadd_d.dump b/test/riscv-tests/rv64ua-v-amoadd_d.dump
index 6e2c614..b61d38e 100644
--- a/test/riscv-tests/rv64ua-v-amoadd_d.dump
+++ b/test/riscv-tests/rv64ua-v-amoadd_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoadd_d.elf b/test/riscv-tests/rv64ua-v-amoadd_d.elf
index 655f27c..43d3ed9 100644
--- a/test/riscv-tests/rv64ua-v-amoadd_d.elf
+++ b/test/riscv-tests/rv64ua-v-amoadd_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoadd_w.dump b/test/riscv-tests/rv64ua-v-amoadd_w.dump
index b8ca9c8..16a1d4c 100644
--- a/test/riscv-tests/rv64ua-v-amoadd_w.dump
+++ b/test/riscv-tests/rv64ua-v-amoadd_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoadd_w.elf b/test/riscv-tests/rv64ua-v-amoadd_w.elf
index 32d6c1a..975ae5f 100644
--- a/test/riscv-tests/rv64ua-v-amoadd_w.elf
+++ b/test/riscv-tests/rv64ua-v-amoadd_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoand_d.dump b/test/riscv-tests/rv64ua-v-amoand_d.dump
index 89e4722..7409814 100644
--- a/test/riscv-tests/rv64ua-v-amoand_d.dump
+++ b/test/riscv-tests/rv64ua-v-amoand_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoand_d.elf b/test/riscv-tests/rv64ua-v-amoand_d.elf
index ae0fa7c..4964a75 100644
--- a/test/riscv-tests/rv64ua-v-amoand_d.elf
+++ b/test/riscv-tests/rv64ua-v-amoand_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoand_w.dump b/test/riscv-tests/rv64ua-v-amoand_w.dump
index 0fdbc13..1d74a70 100644
--- a/test/riscv-tests/rv64ua-v-amoand_w.dump
+++ b/test/riscv-tests/rv64ua-v-amoand_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoand_w.elf b/test/riscv-tests/rv64ua-v-amoand_w.elf
index 97e45f4..a16a0bf 100644
--- a/test/riscv-tests/rv64ua-v-amoand_w.elf
+++ b/test/riscv-tests/rv64ua-v-amoand_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amomax_d.dump b/test/riscv-tests/rv64ua-v-amomax_d.dump
index d69d15d..bea2a85 100644
--- a/test/riscv-tests/rv64ua-v-amomax_d.dump
+++ b/test/riscv-tests/rv64ua-v-amomax_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amomax_d.elf b/test/riscv-tests/rv64ua-v-amomax_d.elf
index 04dfdae..d7baebb 100644
--- a/test/riscv-tests/rv64ua-v-amomax_d.elf
+++ b/test/riscv-tests/rv64ua-v-amomax_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amomax_w.dump b/test/riscv-tests/rv64ua-v-amomax_w.dump
index eb204ee..fcc9aa7 100644
--- a/test/riscv-tests/rv64ua-v-amomax_w.dump
+++ b/test/riscv-tests/rv64ua-v-amomax_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amomax_w.elf b/test/riscv-tests/rv64ua-v-amomax_w.elf
index 4952179..904bbd3 100644
--- a/test/riscv-tests/rv64ua-v-amomax_w.elf
+++ b/test/riscv-tests/rv64ua-v-amomax_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amomaxu_d.dump b/test/riscv-tests/rv64ua-v-amomaxu_d.dump
index 271a03c..0ffd7a5 100644
--- a/test/riscv-tests/rv64ua-v-amomaxu_d.dump
+++ b/test/riscv-tests/rv64ua-v-amomaxu_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amomaxu_d.elf b/test/riscv-tests/rv64ua-v-amomaxu_d.elf
index 0b9930f..78418a5 100644
--- a/test/riscv-tests/rv64ua-v-amomaxu_d.elf
+++ b/test/riscv-tests/rv64ua-v-amomaxu_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amomaxu_w.dump b/test/riscv-tests/rv64ua-v-amomaxu_w.dump
index d6f336e..9b516a8 100644
--- a/test/riscv-tests/rv64ua-v-amomaxu_w.dump
+++ b/test/riscv-tests/rv64ua-v-amomaxu_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amomaxu_w.elf b/test/riscv-tests/rv64ua-v-amomaxu_w.elf
index 989ad0c..b4dafed 100644
--- a/test/riscv-tests/rv64ua-v-amomaxu_w.elf
+++ b/test/riscv-tests/rv64ua-v-amomaxu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amomin_d.dump b/test/riscv-tests/rv64ua-v-amomin_d.dump
index a97febd..78b7f27 100644
--- a/test/riscv-tests/rv64ua-v-amomin_d.dump
+++ b/test/riscv-tests/rv64ua-v-amomin_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amomin_d.elf b/test/riscv-tests/rv64ua-v-amomin_d.elf
index c136408..a61a830 100644
--- a/test/riscv-tests/rv64ua-v-amomin_d.elf
+++ b/test/riscv-tests/rv64ua-v-amomin_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amomin_w.dump b/test/riscv-tests/rv64ua-v-amomin_w.dump
index a436c95..c06a0b3 100644
--- a/test/riscv-tests/rv64ua-v-amomin_w.dump
+++ b/test/riscv-tests/rv64ua-v-amomin_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amomin_w.elf b/test/riscv-tests/rv64ua-v-amomin_w.elf
index 46fa3ac..378c3b4 100644
--- a/test/riscv-tests/rv64ua-v-amomin_w.elf
+++ b/test/riscv-tests/rv64ua-v-amomin_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amominu_d.dump b/test/riscv-tests/rv64ua-v-amominu_d.dump
index 693d6a6..5051a91 100644
--- a/test/riscv-tests/rv64ua-v-amominu_d.dump
+++ b/test/riscv-tests/rv64ua-v-amominu_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amominu_d.elf b/test/riscv-tests/rv64ua-v-amominu_d.elf
index 1c7e7db..bfb401c 100644
--- a/test/riscv-tests/rv64ua-v-amominu_d.elf
+++ b/test/riscv-tests/rv64ua-v-amominu_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amominu_w.dump b/test/riscv-tests/rv64ua-v-amominu_w.dump
index ac8240d..6a3660d 100644
--- a/test/riscv-tests/rv64ua-v-amominu_w.dump
+++ b/test/riscv-tests/rv64ua-v-amominu_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amominu_w.elf b/test/riscv-tests/rv64ua-v-amominu_w.elf
index b255689..0070c6b 100644
--- a/test/riscv-tests/rv64ua-v-amominu_w.elf
+++ b/test/riscv-tests/rv64ua-v-amominu_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoor_d.dump b/test/riscv-tests/rv64ua-v-amoor_d.dump
index 6bf5fa1..f4c96df 100644
--- a/test/riscv-tests/rv64ua-v-amoor_d.dump
+++ b/test/riscv-tests/rv64ua-v-amoor_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoor_d.elf b/test/riscv-tests/rv64ua-v-amoor_d.elf
index ce15b22..a0c8b24 100644
--- a/test/riscv-tests/rv64ua-v-amoor_d.elf
+++ b/test/riscv-tests/rv64ua-v-amoor_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoor_w.dump b/test/riscv-tests/rv64ua-v-amoor_w.dump
index 71a4ebe..19662ac 100644
--- a/test/riscv-tests/rv64ua-v-amoor_w.dump
+++ b/test/riscv-tests/rv64ua-v-amoor_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoor_w.elf b/test/riscv-tests/rv64ua-v-amoor_w.elf
index 44f0a91..2a225a6 100644
--- a/test/riscv-tests/rv64ua-v-amoor_w.elf
+++ b/test/riscv-tests/rv64ua-v-amoor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoswap_d.dump b/test/riscv-tests/rv64ua-v-amoswap_d.dump
index bcb607b..192cfb8 100644
--- a/test/riscv-tests/rv64ua-v-amoswap_d.dump
+++ b/test/riscv-tests/rv64ua-v-amoswap_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoswap_d.elf b/test/riscv-tests/rv64ua-v-amoswap_d.elf
index 6f8a817..22c5a8d 100644
--- a/test/riscv-tests/rv64ua-v-amoswap_d.elf
+++ b/test/riscv-tests/rv64ua-v-amoswap_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoswap_w.dump b/test/riscv-tests/rv64ua-v-amoswap_w.dump
index 2369b0d..96a8e04 100644
--- a/test/riscv-tests/rv64ua-v-amoswap_w.dump
+++ b/test/riscv-tests/rv64ua-v-amoswap_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoswap_w.elf b/test/riscv-tests/rv64ua-v-amoswap_w.elf
index 58a23d3..5972a03 100644
--- a/test/riscv-tests/rv64ua-v-amoswap_w.elf
+++ b/test/riscv-tests/rv64ua-v-amoswap_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoxor_d.dump b/test/riscv-tests/rv64ua-v-amoxor_d.dump
index 6fa564d..e9b240a 100644
--- a/test/riscv-tests/rv64ua-v-amoxor_d.dump
+++ b/test/riscv-tests/rv64ua-v-amoxor_d.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoxor_d.elf b/test/riscv-tests/rv64ua-v-amoxor_d.elf
index 963af59..29fab28 100644
--- a/test/riscv-tests/rv64ua-v-amoxor_d.elf
+++ b/test/riscv-tests/rv64ua-v-amoxor_d.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-amoxor_w.dump b/test/riscv-tests/rv64ua-v-amoxor_w.dump
index 6ced740..a403da5 100644
--- a/test/riscv-tests/rv64ua-v-amoxor_w.dump
+++ b/test/riscv-tests/rv64ua-v-amoxor_w.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ua-v-amoxor_w.elf b/test/riscv-tests/rv64ua-v-amoxor_w.elf
index 3b91cc1..2f462de 100644
--- a/test/riscv-tests/rv64ua-v-amoxor_w.elf
+++ b/test/riscv-tests/rv64ua-v-amoxor_w.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ua-v-lrsc.dump b/test/riscv-tests/rv64ua-v-lrsc.dump
index 5678673..79c042f 100644
--- a/test/riscv-tests/rv64ua-v-lrsc.dump
+++ b/test/riscv-tests/rv64ua-v-lrsc.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -410,7 +410,7 @@ Disassembly of section .text:
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00000697 auipc a3,0x0
- 8000245c: 75868693 addi a3,a3,1880 # 80002bb0 <pass+0x10>
+ 8000245c: 7a068693 addi a3,a3,1952 # 80002bf8 <pass+0x10>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00000617 auipc a2,0x0
- 800024b8: 78c60613 addi a2,a2,1932 # 80002c40 <pass+0xa0>
+ 800024b8: 7d460613 addi a2,a2,2004 # 80002c88 <pass+0xa0>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00000617 auipc a2,0x0
- 80002508: 75460613 addi a2,a2,1876 # 80002c58 <pass+0xb8>
+ 80002508: 79c60613 addi a2,a2,1948 # 80002ca0 <pass+0xb8>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00000697 auipc a3,0x0
- 80002558: 6a468693 addi a3,a3,1700 # 80002bf8 <pass+0x58>
+ 80002558: 6ec68693 addi a3,a3,1772 # 80002c40 <pass+0x58>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00000697 auipc a3,0x0
- 80002674: 6c068693 addi a3,a3,1728 # 80002d30 <pass+0x190>
+ 80002674: 70868693 addi a3,a3,1800 # 80002d78 <pass+0x190>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -568,7 +568,7 @@ Disassembly of section .text:
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
800026c8: 00000617 auipc a2,0x0
- 800026cc: 64060613 addi a2,a2,1600 # 80002d08 <pass+0x168>
+ 800026cc: 68860613 addi a2,a2,1672 # 80002d50 <pass+0x168>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -641,7 +641,7 @@ Disassembly of section .text:
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
800027ec: 00000697 auipc a3,0x0
- 800027f0: 57468693 addi a3,a3,1396 # 80002d60 <pass+0x1c0>
+ 800027f0: 5bc68693 addi a3,a3,1468 # 80002da8 <pass+0x1c0>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00000697 auipc a3,0x0
- 80002840: 49468693 addi a3,a3,1172 # 80002cd0 <pass+0x130>
+ 80002840: 4dc68693 addi a3,a3,1244 # 80002d18 <pass+0x130>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00000697 auipc a3,0x0
- 80002878: 42468693 addi a3,a3,1060 # 80002c98 <pass+0xf8>
+ 80002878: 46c68693 addi a3,a3,1132 # 80002ce0 <pass+0xf8>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -839,61 +839,83 @@ Disassembly of section .text:
0000000080002ae8 <test_2>:
80002ae8: 00000517 auipc a0,0x0
80002aec: 52050513 addi a0,a0,1312 # 80003008 <foo>
- 80002af0: 1805272f sc.w a4,zero,(a0)
- 80002af4: 00100e93 li t4,1
- 80002af8: 00200193 li gp,2
- 80002afc: 09d71a63 bne a4,t4,80002b90 <fail>
+ 80002af0: 000387b7 lui a5,0x38
+ 80002af4: ab77879b addiw a5,a5,-1353
+ 80002af8: 00e79793 slli a5,a5,0xe
+ 80002afc: eef78793 addi a5,a5,-273 # 37eef <_start-0x7ffc8111>
+ 80002b00: 18f5272f sc.w a4,a5,(a0)
+ 80002b04: 00100e93 li t4,1
+ 80002b08: 00200193 li gp,2
+ 80002b0c: 0dd71663 bne a4,t4,80002bd8 <fail>
-0000000080002b00 <test_3>:
- 80002b00: 00000517 auipc a0,0x0
- 80002b04: 50850513 addi a0,a0,1288 # 80003008 <foo>
- 80002b08: 00001597 auipc a1,0x1
- 80002b0c: 90458593 addi a1,a1,-1788 # 8000340c <fooTest3>
- 80002b10: 1005a5af lr.w a1,(a1)
- 80002b14: 18b5272f sc.w a4,a1,(a0)
- 80002b18: 00100e93 li t4,1
+0000000080002b10 <test_3>:
+ 80002b10: 00000717 auipc a4,0x0
+ 80002b14: 4f872703 lw a4,1272(a4) # 80003008 <foo>
+ 80002b18: 00000e93 li t4,0
80002b1c: 00300193 li gp,3
- 80002b20: 07d71863 bne a4,t4,80002b90 <fail>
+ 80002b20: 0bd71c63 bne a4,t4,80002bd8 <fail>
+
+0000000080002b24 <test_4>:
80002b24: 00000517 auipc a0,0x0
80002b28: 4e450513 addi a0,a0,1252 # 80003008 <foo>
- 80002b2c: 40000593 li a1,1024
- 80002b30: 00160613 addi a2,a2,1
- 80002b34: 1005272f lr.w a4,(a0)
- 80002b38: 00c70733 add a4,a4,a2
- 80002b3c: 18e5272f sc.w a4,a4,(a0)
- 80002b40: fe071ae3 bnez a4,80002b34 <test_3+0x34>
- 80002b44: fff58593 addi a1,a1,-1
- 80002b48: fe0596e3 bnez a1,80002b34 <test_3+0x34>
- 80002b4c: 00000517 auipc a0,0x0
- 80002b50: 4b850513 addi a0,a0,1208 # 80003004 <barrier>
- 80002b54: 00100593 li a1,1
- 80002b58: 00b5202f amoadd.w zero,a1,(a0)
- 80002b5c: 00052583 lw a1,0(a0)
- 80002b60: fed5cee3 blt a1,a3,80002b5c <test_3+0x5c>
- 80002b64: 0ff0000f fence
+ 80002b2c: 00001597 auipc a1,0x1
+ 80002b30: 8e058593 addi a1,a1,-1824 # 8000340c <fooTest3>
+ 80002b34: 1005a5af lr.w a1,(a1)
+ 80002b38: 18b5272f sc.w a4,a1,(a0)
+ 80002b3c: 00100e93 li t4,1
+ 80002b40: 00400193 li gp,4
+ 80002b44: 09d71a63 bne a4,t4,80002bd8 <fail>
+ 80002b48: 00000517 auipc a0,0x0
+ 80002b4c: 4c050513 addi a0,a0,1216 # 80003008 <foo>
+ 80002b50: 40000593 li a1,1024
+ 80002b54: 00160613 addi a2,a2,1
+ 80002b58: 1005272f lr.w a4,(a0)
+ 80002b5c: 00c70733 add a4,a4,a2
+ 80002b60: 18e5272f sc.w a4,a4,(a0)
+ 80002b64: fe071ae3 bnez a4,80002b58 <test_4+0x34>
+ 80002b68: fff58593 addi a1,a1,-1
+ 80002b6c: fe0596e3 bnez a1,80002b58 <test_4+0x34>
+ 80002b70: 00000517 auipc a0,0x0
+ 80002b74: 49450513 addi a0,a0,1172 # 80003004 <barrier>
+ 80002b78: 00100593 li a1,1
+ 80002b7c: 00b5202f amoadd.w zero,a1,(a0)
+ 80002b80: 00052583 lw a1,0(a0)
+ 80002b84: fed5cee3 blt a1,a3,80002b80 <test_4+0x5c>
+ 80002b88: 0ff0000f fence
+
+0000000080002b8c <test_5>:
+ 80002b8c: 00000517 auipc a0,0x0
+ 80002b90: 47c52503 lw a0,1148(a0) # 80003008 <foo>
+ 80002b94: 00969593 slli a1,a3,0x9
+ 80002b98: 40b50533 sub a0,a0,a1
+ 80002b9c: fff68693 addi a3,a3,-1
+ 80002ba0: fe06dce3 bgez a3,80002b98 <test_5+0xc>
+ 80002ba4: 00000e93 li t4,0
+ 80002ba8: 00500193 li gp,5
+ 80002bac: 03d51663 bne a0,t4,80002bd8 <fail>
-0000000080002b68 <test_4>:
- 80002b68: 00000517 auipc a0,0x0
- 80002b6c: 4a052503 lw a0,1184(a0) # 80003008 <foo>
- 80002b70: 00969593 slli a1,a3,0x9
- 80002b74: 40b50533 sub a0,a0,a1
- 80002b78: fff68693 addi a3,a3,-1
- 80002b7c: fe06dce3 bgez a3,80002b74 <test_4+0xc>
- 80002b80: 00000e93 li t4,0
- 80002b84: 00400193 li gp,4
- 80002b88: 01d51463 bne a0,t4,80002b90 <fail>
- 80002b8c: 00301a63 bne zero,gp,80002ba0 <pass>
+0000000080002bb0 <test_6>:
+ 80002bb0: 00000517 auipc a0,0x0
+ 80002bb4: 45850513 addi a0,a0,1112 # 80003008 <foo>
+ 80002bb8: 100525af lr.w a1,(a0)
+ 80002bbc: 180525af sc.w a1,zero,(a0)
+ 80002bc0: fe059ce3 bnez a1,80002bb8 <test_6+0x8>
+ 80002bc4: 180525af sc.w a1,zero,(a0)
+ 80002bc8: 00100e93 li t4,1
+ 80002bcc: 00600193 li gp,6
+ 80002bd0: 01d59463 bne a1,t4,80002bd8 <fail>
+ 80002bd4: 00301a63 bne zero,gp,80002be8 <pass>
-0000000080002b90 <fail>:
- 80002b90: 00119513 slli a0,gp,0x1
- 80002b94: 00050063 beqz a0,80002b94 <fail+0x4>
- 80002b98: 00156513 ori a0,a0,1
- 80002b9c: 00000073 ecall
+0000000080002bd8 <fail>:
+ 80002bd8: 00119513 slli a0,gp,0x1
+ 80002bdc: 00050063 beqz a0,80002bdc <fail+0x4>
+ 80002be0: 00156513 ori a0,a0,1
+ 80002be4: 00000073 ecall
-0000000080002ba0 <pass>:
- 80002ba0: 00100513 li a0,1
- 80002ba4: 00000073 ecall
- 80002ba8: c0001073 unimp
+0000000080002be8 <pass>:
+ 80002be8: 00100513 li a0,1
+ 80002bec: 00000073 ecall
+ 80002bf0: c0001073 unimp
Disassembly of section .data:
diff --git a/test/riscv-tests/rv64ua-v-lrsc.elf b/test/riscv-tests/rv64ua-v-lrsc.elf
index 3f49c87..61ee7d4 100755..100644
--- a/test/riscv-tests/rv64ua-v-lrsc.elf
+++ b/test/riscv-tests/rv64ua-v-lrsc.elf
Binary files differ
diff --git a/test/riscv-tests/rv64uc-p-rvc.elf b/test/riscv-tests/rv64uc-p-rvc.elf
index 3421d31..ee821eb 100644
--- a/test/riscv-tests/rv64uc-p-rvc.elf
+++ b/test/riscv-tests/rv64uc-p-rvc.elf
Binary files differ
diff --git a/test/riscv-tests/rv64uc-v-rvc.dump b/test/riscv-tests/rv64uc-v-rvc.dump
index 696b038..a4c2392 100644
--- a/test/riscv-tests/rv64uc-v-rvc.dump
+++ b/test/riscv-tests/rv64uc-v-rvc.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64uc-v-rvc.elf b/test/riscv-tests/rv64uc-v-rvc.elf
index 89152b9..329f542 100644
--- a/test/riscv-tests/rv64uc-v-rvc.elf
+++ b/test/riscv-tests/rv64uc-v-rvc.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-add.elf b/test/riscv-tests/rv64ui-p-add.elf
index 711d4fc..74330e9 100644
--- a/test/riscv-tests/rv64ui-p-add.elf
+++ b/test/riscv-tests/rv64ui-p-add.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-addi.elf b/test/riscv-tests/rv64ui-p-addi.elf
index 511253a..d83a9a7 100644
--- a/test/riscv-tests/rv64ui-p-addi.elf
+++ b/test/riscv-tests/rv64ui-p-addi.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-addiw.elf b/test/riscv-tests/rv64ui-p-addiw.elf
index c58d521..1556eea 100644
--- a/test/riscv-tests/rv64ui-p-addiw.elf
+++ b/test/riscv-tests/rv64ui-p-addiw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-addw.elf b/test/riscv-tests/rv64ui-p-addw.elf
index b4cc491..7949631 100644
--- a/test/riscv-tests/rv64ui-p-addw.elf
+++ b/test/riscv-tests/rv64ui-p-addw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-and.elf b/test/riscv-tests/rv64ui-p-and.elf
index 6450bbc..9dda5d1 100644
--- a/test/riscv-tests/rv64ui-p-and.elf
+++ b/test/riscv-tests/rv64ui-p-and.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-andi.elf b/test/riscv-tests/rv64ui-p-andi.elf
index 26396d9..39d71d3 100644
--- a/test/riscv-tests/rv64ui-p-andi.elf
+++ b/test/riscv-tests/rv64ui-p-andi.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-auipc.elf b/test/riscv-tests/rv64ui-p-auipc.elf
index 841136e..cf2211c 100644
--- a/test/riscv-tests/rv64ui-p-auipc.elf
+++ b/test/riscv-tests/rv64ui-p-auipc.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-beq.elf b/test/riscv-tests/rv64ui-p-beq.elf
index 74d6392..5b89865 100644
--- a/test/riscv-tests/rv64ui-p-beq.elf
+++ b/test/riscv-tests/rv64ui-p-beq.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-bge.elf b/test/riscv-tests/rv64ui-p-bge.elf
index 6a5c2ef..972d7fa 100644
--- a/test/riscv-tests/rv64ui-p-bge.elf
+++ b/test/riscv-tests/rv64ui-p-bge.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-bgeu.elf b/test/riscv-tests/rv64ui-p-bgeu.elf
index a1ae7fe..cd7e7e3 100644
--- a/test/riscv-tests/rv64ui-p-bgeu.elf
+++ b/test/riscv-tests/rv64ui-p-bgeu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-blt.elf b/test/riscv-tests/rv64ui-p-blt.elf
index 53f06fa..e3676a3 100644
--- a/test/riscv-tests/rv64ui-p-blt.elf
+++ b/test/riscv-tests/rv64ui-p-blt.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-bltu.elf b/test/riscv-tests/rv64ui-p-bltu.elf
index a5d0639..e4e6077 100644
--- a/test/riscv-tests/rv64ui-p-bltu.elf
+++ b/test/riscv-tests/rv64ui-p-bltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-bne.elf b/test/riscv-tests/rv64ui-p-bne.elf
index 9a83bec..d28d9aa 100644
--- a/test/riscv-tests/rv64ui-p-bne.elf
+++ b/test/riscv-tests/rv64ui-p-bne.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-fence_i.elf b/test/riscv-tests/rv64ui-p-fence_i.elf
index 9f8d772..682802e 100644
--- a/test/riscv-tests/rv64ui-p-fence_i.elf
+++ b/test/riscv-tests/rv64ui-p-fence_i.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-jal.elf b/test/riscv-tests/rv64ui-p-jal.elf
index 3741bbb..8250b75 100644
--- a/test/riscv-tests/rv64ui-p-jal.elf
+++ b/test/riscv-tests/rv64ui-p-jal.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-jalr.elf b/test/riscv-tests/rv64ui-p-jalr.elf
index 9682d86..4d111a5 100644
--- a/test/riscv-tests/rv64ui-p-jalr.elf
+++ b/test/riscv-tests/rv64ui-p-jalr.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lb.elf b/test/riscv-tests/rv64ui-p-lb.elf
index 7e0a8a4..13970ac 100644
--- a/test/riscv-tests/rv64ui-p-lb.elf
+++ b/test/riscv-tests/rv64ui-p-lb.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lbu.elf b/test/riscv-tests/rv64ui-p-lbu.elf
index 14f1586..b68b199 100644
--- a/test/riscv-tests/rv64ui-p-lbu.elf
+++ b/test/riscv-tests/rv64ui-p-lbu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-ld.elf b/test/riscv-tests/rv64ui-p-ld.elf
index df2a734..b4e6596 100644
--- a/test/riscv-tests/rv64ui-p-ld.elf
+++ b/test/riscv-tests/rv64ui-p-ld.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lh.elf b/test/riscv-tests/rv64ui-p-lh.elf
index fcff462..5d6b965 100644
--- a/test/riscv-tests/rv64ui-p-lh.elf
+++ b/test/riscv-tests/rv64ui-p-lh.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lhu.elf b/test/riscv-tests/rv64ui-p-lhu.elf
index 78bb0e9..1b2550d 100644
--- a/test/riscv-tests/rv64ui-p-lhu.elf
+++ b/test/riscv-tests/rv64ui-p-lhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lui.elf b/test/riscv-tests/rv64ui-p-lui.elf
index 67dfe10..300ef0d 100644
--- a/test/riscv-tests/rv64ui-p-lui.elf
+++ b/test/riscv-tests/rv64ui-p-lui.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lw.elf b/test/riscv-tests/rv64ui-p-lw.elf
index 714ae85..6c77ab8 100644
--- a/test/riscv-tests/rv64ui-p-lw.elf
+++ b/test/riscv-tests/rv64ui-p-lw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-lwu.elf b/test/riscv-tests/rv64ui-p-lwu.elf
index de88bd2..b920704 100644
--- a/test/riscv-tests/rv64ui-p-lwu.elf
+++ b/test/riscv-tests/rv64ui-p-lwu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-or.elf b/test/riscv-tests/rv64ui-p-or.elf
index fbd5299..b3772ca 100644
--- a/test/riscv-tests/rv64ui-p-or.elf
+++ b/test/riscv-tests/rv64ui-p-or.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-ori.elf b/test/riscv-tests/rv64ui-p-ori.elf
index 81868c2..d3a6b6d 100644
--- a/test/riscv-tests/rv64ui-p-ori.elf
+++ b/test/riscv-tests/rv64ui-p-ori.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sb.elf b/test/riscv-tests/rv64ui-p-sb.elf
index 0f672c3..20fdd3c 100644
--- a/test/riscv-tests/rv64ui-p-sb.elf
+++ b/test/riscv-tests/rv64ui-p-sb.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sd.elf b/test/riscv-tests/rv64ui-p-sd.elf
index 8ebb0db..d3e68ea 100644
--- a/test/riscv-tests/rv64ui-p-sd.elf
+++ b/test/riscv-tests/rv64ui-p-sd.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sh.elf b/test/riscv-tests/rv64ui-p-sh.elf
index 5ba031e..4a38a06 100644
--- a/test/riscv-tests/rv64ui-p-sh.elf
+++ b/test/riscv-tests/rv64ui-p-sh.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-simple.elf b/test/riscv-tests/rv64ui-p-simple.elf
index bc8cb92..68457c2 100644
--- a/test/riscv-tests/rv64ui-p-simple.elf
+++ b/test/riscv-tests/rv64ui-p-simple.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sll.elf b/test/riscv-tests/rv64ui-p-sll.elf
index 75144ab..0c615ca 100644
--- a/test/riscv-tests/rv64ui-p-sll.elf
+++ b/test/riscv-tests/rv64ui-p-sll.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-slli.elf b/test/riscv-tests/rv64ui-p-slli.elf
index 5214f29..c5f99f5 100644
--- a/test/riscv-tests/rv64ui-p-slli.elf
+++ b/test/riscv-tests/rv64ui-p-slli.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-slliw.dump b/test/riscv-tests/rv64ui-p-slliw.dump
index b821b9f..6246bdb 100644
--- a/test/riscv-tests/rv64ui-p-slliw.dump
+++ b/test/riscv-tests/rv64ui-p-slliw.dump
@@ -82,70 +82,70 @@ Disassembly of section .text.init:
80000100: 00009f1b slliw t5,ra,0x0
80000104: 00100e93 li t4,1
80000108: 00200193 li gp,2
- 8000010c: 27df1a63 bne t5,t4,80000380 <fail>
+ 8000010c: 31df1263 bne t5,t4,80000410 <fail>
0000000080000110 <test_3>:
80000110: 00100093 li ra,1
80000114: 00109f1b slliw t5,ra,0x1
80000118: 00200e93 li t4,2
8000011c: 00300193 li gp,3
- 80000120: 27df1063 bne t5,t4,80000380 <fail>
+ 80000120: 2fdf1863 bne t5,t4,80000410 <fail>
0000000080000124 <test_4>:
80000124: 00100093 li ra,1
80000128: 00709f1b slliw t5,ra,0x7
8000012c: 08000e93 li t4,128
80000130: 00400193 li gp,4
- 80000134: 25df1663 bne t5,t4,80000380 <fail>
+ 80000134: 2ddf1e63 bne t5,t4,80000410 <fail>
0000000080000138 <test_5>:
80000138: 00100093 li ra,1
8000013c: 00e09f1b slliw t5,ra,0xe
80000140: 00004eb7 lui t4,0x4
80000144: 00500193 li gp,5
- 80000148: 23df1c63 bne t5,t4,80000380 <fail>
+ 80000148: 2ddf1463 bne t5,t4,80000410 <fail>
000000008000014c <test_6>:
8000014c: 00100093 li ra,1
80000150: 01f09f1b slliw t5,ra,0x1f
80000154: 80000eb7 lui t4,0x80000
80000158: 00600193 li gp,6
- 8000015c: 23df1263 bne t5,t4,80000380 <fail>
+ 8000015c: 2bdf1a63 bne t5,t4,80000410 <fail>
0000000080000160 <test_7>:
80000160: fff00093 li ra,-1
80000164: 00009f1b slliw t5,ra,0x0
80000168: fff00e93 li t4,-1
8000016c: 00700193 li gp,7
- 80000170: 21df1863 bne t5,t4,80000380 <fail>
+ 80000170: 2bdf1063 bne t5,t4,80000410 <fail>
0000000080000174 <test_8>:
80000174: fff00093 li ra,-1
80000178: 00109f1b slliw t5,ra,0x1
8000017c: ffe00e93 li t4,-2
80000180: 00800193 li gp,8
- 80000184: 1fdf1e63 bne t5,t4,80000380 <fail>
+ 80000184: 29df1663 bne t5,t4,80000410 <fail>
0000000080000188 <test_9>:
80000188: fff00093 li ra,-1
8000018c: 00709f1b slliw t5,ra,0x7
80000190: f8000e93 li t4,-128
80000194: 00900193 li gp,9
- 80000198: 1fdf1463 bne t5,t4,80000380 <fail>
+ 80000198: 27df1c63 bne t5,t4,80000410 <fail>
000000008000019c <test_10>:
8000019c: fff00093 li ra,-1
800001a0: 00e09f1b slliw t5,ra,0xe
800001a4: ffffceb7 lui t4,0xffffc
800001a8: 00a00193 li gp,10
- 800001ac: 1ddf1a63 bne t5,t4,80000380 <fail>
+ 800001ac: 27df1263 bne t5,t4,80000410 <fail>
00000000800001b0 <test_11>:
800001b0: fff00093 li ra,-1
800001b4: 01f09f1b slliw t5,ra,0x1f
800001b8: 80000eb7 lui t4,0x80000
800001bc: 00b00193 li gp,11
- 800001c0: 1ddf1063 bne t5,t4,80000380 <fail>
+ 800001c0: 25df1863 bne t5,t4,80000410 <fail>
00000000800001c4 <test_12>:
800001c4: 212120b7 lui ra,0x21212
@@ -154,7 +154,7 @@ Disassembly of section .text.init:
800001d0: 21212eb7 lui t4,0x21212
800001d4: 121e8e9b addiw t4,t4,289
800001d8: 00c00193 li gp,12
- 800001dc: 1bdf1263 bne t5,t4,80000380 <fail>
+ 800001dc: 23df1a63 bne t5,t4,80000410 <fail>
00000000800001e0 <test_13>:
800001e0: 212120b7 lui ra,0x21212
@@ -163,7 +163,7 @@ Disassembly of section .text.init:
800001ec: 42424eb7 lui t4,0x42424
800001f0: 242e8e9b addiw t4,t4,578
800001f4: 00d00193 li gp,13
- 800001f8: 19df1463 bne t5,t4,80000380 <fail>
+ 800001f8: 21df1c63 bne t5,t4,80000410 <fail>
00000000800001fc <test_14>:
800001fc: 212120b7 lui ra,0x21212
@@ -172,7 +172,7 @@ Disassembly of section .text.init:
80000208: 90909eb7 lui t4,0x90909
8000020c: 080e8e9b addiw t4,t4,128
80000210: 00e00193 li gp,14
- 80000214: 17df1663 bne t5,t4,80000380 <fail>
+ 80000214: 1fdf1e63 bne t5,t4,80000410 <fail>
0000000080000218 <test_15>:
80000218: 212120b7 lui ra,0x21212
@@ -180,7 +180,7 @@ Disassembly of section .text.init:
80000220: 00e09f1b slliw t5,ra,0xe
80000224: 48484eb7 lui t4,0x48484
80000228: 00f00193 li gp,15
- 8000022c: 15df1a63 bne t5,t4,80000380 <fail>
+ 8000022c: 1fdf1263 bne t5,t4,80000410 <fail>
0000000080000230 <test_16>:
80000230: 212120b7 lui ra,0x21212
@@ -188,129 +188,165 @@ Disassembly of section .text.init:
80000238: 01f09f1b slliw t5,ra,0x1f
8000023c: 80000eb7 lui t4,0x80000
80000240: 01000193 li gp,16
- 80000244: 13df1e63 bne t5,t4,80000380 <fail>
-
-0000000080000248 <test_17>:
- 80000248: 00100093 li ra,1
- 8000024c: 0070909b slliw ra,ra,0x7
- 80000250: 08000e93 li t4,128
- 80000254: 01100193 li gp,17
- 80000258: 13d09463 bne ra,t4,80000380 <fail>
-
-000000008000025c <test_18>:
- 8000025c: 00000213 li tp,0
- 80000260: 00100093 li ra,1
- 80000264: 00709f1b slliw t5,ra,0x7
- 80000268: 000f0313 mv t1,t5
- 8000026c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000270: 00200293 li t0,2
- 80000274: fe5216e3 bne tp,t0,80000260 <test_18+0x4>
- 80000278: 08000e93 li t4,128
- 8000027c: 01200193 li gp,18
- 80000280: 11d31063 bne t1,t4,80000380 <fail>
-
-0000000080000284 <test_19>:
- 80000284: 00000213 li tp,0
- 80000288: 00100093 li ra,1
- 8000028c: 00e09f1b slliw t5,ra,0xe
- 80000290: 00000013 nop
- 80000294: 000f0313 mv t1,t5
- 80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000029c: 00200293 li t0,2
- 800002a0: fe5214e3 bne tp,t0,80000288 <test_19+0x4>
- 800002a4: 00004eb7 lui t4,0x4
- 800002a8: 01300193 li gp,19
- 800002ac: 0dd31a63 bne t1,t4,80000380 <fail>
-
-00000000800002b0 <test_20>:
- 800002b0: 00000213 li tp,0
- 800002b4: 00100093 li ra,1
- 800002b8: 01f09f1b slliw t5,ra,0x1f
- 800002bc: 00000013 nop
- 800002c0: 00000013 nop
- 800002c4: 000f0313 mv t1,t5
- 800002c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800002cc: 00200293 li t0,2
- 800002d0: fe5212e3 bne tp,t0,800002b4 <test_20+0x4>
- 800002d4: 80000eb7 lui t4,0x80000
- 800002d8: 01400193 li gp,20
- 800002dc: 0bd31263 bne t1,t4,80000380 <fail>
-
-00000000800002e0 <test_21>:
- 800002e0: 00000213 li tp,0
- 800002e4: 00100093 li ra,1
- 800002e8: 00709f1b slliw t5,ra,0x7
- 800002ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800002f0: 00200293 li t0,2
- 800002f4: fe5218e3 bne tp,t0,800002e4 <test_21+0x4>
- 800002f8: 08000e93 li t4,128
- 800002fc: 01500193 li gp,21
- 80000300: 09df1063 bne t5,t4,80000380 <fail>
-
-0000000080000304 <test_22>:
- 80000304: 00000213 li tp,0
- 80000308: 00100093 li ra,1
- 8000030c: 00000013 nop
- 80000310: 00e09f1b slliw t5,ra,0xe
- 80000314: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000318: 00200293 li t0,2
- 8000031c: fe5216e3 bne tp,t0,80000308 <test_22+0x4>
- 80000320: 00004eb7 lui t4,0x4
- 80000324: 01600193 li gp,22
- 80000328: 05df1c63 bne t5,t4,80000380 <fail>
-
-000000008000032c <test_23>:
- 8000032c: 00000213 li tp,0
- 80000330: 00100093 li ra,1
- 80000334: 00000013 nop
- 80000338: 00000013 nop
- 8000033c: 01f09f1b slliw t5,ra,0x1f
- 80000340: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000344: 00200293 li t0,2
- 80000348: fe5214e3 bne tp,t0,80000330 <test_23+0x4>
- 8000034c: 80000eb7 lui t4,0x80000
- 80000350: 01700193 li gp,23
- 80000354: 03df1663 bne t5,t4,80000380 <fail>
-
-0000000080000358 <test_24>:
- 80000358: 01f0109b slliw ra,zero,0x1f
- 8000035c: 00000e93 li t4,0
- 80000360: 01800193 li gp,24
- 80000364: 01d09e63 bne ra,t4,80000380 <fail>
-
-0000000080000368 <test_25>:
- 80000368: 01f00093 li ra,31
- 8000036c: 01c0901b slliw zero,ra,0x1c
- 80000370: 00000e93 li t4,0
- 80000374: 01900193 li gp,25
- 80000378: 01d01463 bne zero,t4,80000380 <fail>
- 8000037c: 00301c63 bne zero,gp,80000394 <pass>
-
-0000000080000380 <fail>:
- 80000380: 0ff0000f fence
- 80000384: 00018063 beqz gp,80000384 <fail+0x4>
- 80000388: 00119193 slli gp,gp,0x1
- 8000038c: 0011e193 ori gp,gp,1
- 80000390: 00000073 ecall
-
-0000000080000394 <pass>:
- 80000394: 0ff0000f fence
- 80000398: 00100193 li gp,1
- 8000039c: 00000073 ecall
- 800003a0: c0001073 unimp
- 800003a4: 0000 unimp
- 800003a6: 0000 unimp
- 800003a8: 0000 unimp
- 800003aa: 0000 unimp
- 800003ac: 0000 unimp
- 800003ae: 0000 unimp
- 800003b0: 0000 unimp
- 800003b2: 0000 unimp
- 800003b4: 0000 unimp
- 800003b6: 0000 unimp
- 800003b8: 0000 unimp
- 800003ba: 0000 unimp
- 800003bc: 0000 unimp
- 800003be: 0000 unimp
- 800003c0: 0000 unimp
- 800003c2: 0000 unimp
+ 80000244: 1ddf1663 bne t5,t4,80000410 <fail>
+
+0000000080000248 <test_44>:
+ 80000248: fff120b7 lui ra,0xfff12
+ 8000024c: 3450809b addiw ra,ra,837
+ 80000250: 00c09093 slli ra,ra,0xc
+ 80000254: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 80000258: 00009f1b slliw t5,ra,0x0
+ 8000025c: 12345eb7 lui t4,0x12345
+ 80000260: 678e8e9b addiw t4,t4,1656
+ 80000264: 02c00193 li gp,44
+ 80000268: 1bdf1463 bne t5,t4,80000410 <fail>
+
+000000008000026c <test_45>:
+ 8000026c: fff120b7 lui ra,0xfff12
+ 80000270: 3450809b addiw ra,ra,837
+ 80000274: 00c09093 slli ra,ra,0xc
+ 80000278: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 8000027c: 00409f1b slliw t5,ra,0x4
+ 80000280: 23456eb7 lui t4,0x23456
+ 80000284: 780e8e9b addiw t4,t4,1920
+ 80000288: 02d00193 li gp,45
+ 8000028c: 19df1263 bne t5,t4,80000410 <fail>
+
+0000000080000290 <test_46>:
+ 80000290: 000920b7 lui ra,0x92
+ 80000294: 3450809b addiw ra,ra,837
+ 80000298: 00c09093 slli ra,ra,0xc
+ 8000029c: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800002a0: 00009f1b slliw t5,ra,0x0
+ 800002a4: 92345eb7 lui t4,0x92345
+ 800002a8: 678e8e9b addiw t4,t4,1656
+ 800002ac: 02e00193 li gp,46
+ 800002b0: 17df1063 bne t5,t4,80000410 <fail>
+
+00000000800002b4 <test_47>:
+ 800002b4: 000990b7 lui ra,0x99
+ 800002b8: 3450809b addiw ra,ra,837
+ 800002bc: 00c09093 slli ra,ra,0xc
+ 800002c0: 67808093 addi ra,ra,1656 # 99678 <_start-0x7ff66988>
+ 800002c4: 00409f1b slliw t5,ra,0x4
+ 800002c8: 93456eb7 lui t4,0x93456
+ 800002cc: 780e8e9b addiw t4,t4,1920
+ 800002d0: 02f00193 li gp,47
+ 800002d4: 13df1e63 bne t5,t4,80000410 <fail>
+
+00000000800002d8 <test_17>:
+ 800002d8: 00100093 li ra,1
+ 800002dc: 0070909b slliw ra,ra,0x7
+ 800002e0: 08000e93 li t4,128
+ 800002e4: 01100193 li gp,17
+ 800002e8: 13d09463 bne ra,t4,80000410 <fail>
+
+00000000800002ec <test_18>:
+ 800002ec: 00000213 li tp,0
+ 800002f0: 00100093 li ra,1
+ 800002f4: 00709f1b slliw t5,ra,0x7
+ 800002f8: 000f0313 mv t1,t5
+ 800002fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000300: 00200293 li t0,2
+ 80000304: fe5216e3 bne tp,t0,800002f0 <test_18+0x4>
+ 80000308: 08000e93 li t4,128
+ 8000030c: 01200193 li gp,18
+ 80000310: 11d31063 bne t1,t4,80000410 <fail>
+
+0000000080000314 <test_19>:
+ 80000314: 00000213 li tp,0
+ 80000318: 00100093 li ra,1
+ 8000031c: 00e09f1b slliw t5,ra,0xe
+ 80000320: 00000013 nop
+ 80000324: 000f0313 mv t1,t5
+ 80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000032c: 00200293 li t0,2
+ 80000330: fe5214e3 bne tp,t0,80000318 <test_19+0x4>
+ 80000334: 00004eb7 lui t4,0x4
+ 80000338: 01300193 li gp,19
+ 8000033c: 0dd31a63 bne t1,t4,80000410 <fail>
+
+0000000080000340 <test_20>:
+ 80000340: 00000213 li tp,0
+ 80000344: 00100093 li ra,1
+ 80000348: 01f09f1b slliw t5,ra,0x1f
+ 8000034c: 00000013 nop
+ 80000350: 00000013 nop
+ 80000354: 000f0313 mv t1,t5
+ 80000358: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000035c: 00200293 li t0,2
+ 80000360: fe5212e3 bne tp,t0,80000344 <test_20+0x4>
+ 80000364: 80000eb7 lui t4,0x80000
+ 80000368: 01400193 li gp,20
+ 8000036c: 0bd31263 bne t1,t4,80000410 <fail>
+
+0000000080000370 <test_21>:
+ 80000370: 00000213 li tp,0
+ 80000374: 00100093 li ra,1
+ 80000378: 00709f1b slliw t5,ra,0x7
+ 8000037c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000380: 00200293 li t0,2
+ 80000384: fe5218e3 bne tp,t0,80000374 <test_21+0x4>
+ 80000388: 08000e93 li t4,128
+ 8000038c: 01500193 li gp,21
+ 80000390: 09df1063 bne t5,t4,80000410 <fail>
+
+0000000080000394 <test_22>:
+ 80000394: 00000213 li tp,0
+ 80000398: 00100093 li ra,1
+ 8000039c: 00000013 nop
+ 800003a0: 00e09f1b slliw t5,ra,0xe
+ 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800003a8: 00200293 li t0,2
+ 800003ac: fe5216e3 bne tp,t0,80000398 <test_22+0x4>
+ 800003b0: 00004eb7 lui t4,0x4
+ 800003b4: 01600193 li gp,22
+ 800003b8: 05df1c63 bne t5,t4,80000410 <fail>
+
+00000000800003bc <test_23>:
+ 800003bc: 00000213 li tp,0
+ 800003c0: 00100093 li ra,1
+ 800003c4: 00000013 nop
+ 800003c8: 00000013 nop
+ 800003cc: 01f09f1b slliw t5,ra,0x1f
+ 800003d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800003d4: 00200293 li t0,2
+ 800003d8: fe5214e3 bne tp,t0,800003c0 <test_23+0x4>
+ 800003dc: 80000eb7 lui t4,0x80000
+ 800003e0: 01700193 li gp,23
+ 800003e4: 03df1663 bne t5,t4,80000410 <fail>
+
+00000000800003e8 <test_24>:
+ 800003e8: 01f0109b slliw ra,zero,0x1f
+ 800003ec: 00000e93 li t4,0
+ 800003f0: 01800193 li gp,24
+ 800003f4: 01d09e63 bne ra,t4,80000410 <fail>
+
+00000000800003f8 <test_25>:
+ 800003f8: 01f00093 li ra,31
+ 800003fc: 01c0901b slliw zero,ra,0x1c
+ 80000400: 00000e93 li t4,0
+ 80000404: 01900193 li gp,25
+ 80000408: 01d01463 bne zero,t4,80000410 <fail>
+ 8000040c: 00301c63 bne zero,gp,80000424 <pass>
+
+0000000080000410 <fail>:
+ 80000410: 0ff0000f fence
+ 80000414: 00018063 beqz gp,80000414 <fail+0x4>
+ 80000418: 00119193 slli gp,gp,0x1
+ 8000041c: 0011e193 ori gp,gp,1
+ 80000420: 00000073 ecall
+
+0000000080000424 <pass>:
+ 80000424: 0ff0000f fence
+ 80000428: 00100193 li gp,1
+ 8000042c: 00000073 ecall
+ 80000430: c0001073 unimp
+ 80000434: 0000 unimp
+ 80000436: 0000 unimp
+ 80000438: 0000 unimp
+ 8000043a: 0000 unimp
+ 8000043c: 0000 unimp
+ 8000043e: 0000 unimp
+ 80000440: 0000 unimp
+ 80000442: 0000 unimp
diff --git a/test/riscv-tests/rv64ui-p-slliw.elf b/test/riscv-tests/rv64ui-p-slliw.elf
index 556a77e..cb8909f 100644
--- a/test/riscv-tests/rv64ui-p-slliw.elf
+++ b/test/riscv-tests/rv64ui-p-slliw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sllw.dump b/test/riscv-tests/rv64ui-p-sllw.dump
index 45f030a..251c853 100644
--- a/test/riscv-tests/rv64ui-p-sllw.dump
+++ b/test/riscv-tests/rv64ui-p-sllw.dump
@@ -83,7 +83,7 @@ Disassembly of section .text.init:
80000104: 00209f3b sllw t5,ra,sp
80000108: 00100e93 li t4,1
8000010c: 00200193 li gp,2
- 80000110: 55df1c63 bne t5,t4,80000668 <fail>
+ 80000110: 5fdf1c63 bne t5,t4,80000708 <fail>
0000000080000114 <test_3>:
80000114: 00100093 li ra,1
@@ -91,7 +91,7 @@ Disassembly of section .text.init:
8000011c: 00209f3b sllw t5,ra,sp
80000120: 00200e93 li t4,2
80000124: 00300193 li gp,3
- 80000128: 55df1063 bne t5,t4,80000668 <fail>
+ 80000128: 5fdf1063 bne t5,t4,80000708 <fail>
000000008000012c <test_4>:
8000012c: 00100093 li ra,1
@@ -99,7 +99,7 @@ Disassembly of section .text.init:
80000134: 00209f3b sllw t5,ra,sp
80000138: 08000e93 li t4,128
8000013c: 00400193 li gp,4
- 80000140: 53df1463 bne t5,t4,80000668 <fail>
+ 80000140: 5ddf1463 bne t5,t4,80000708 <fail>
0000000080000144 <test_5>:
80000144: 00100093 li ra,1
@@ -107,7 +107,7 @@ Disassembly of section .text.init:
8000014c: 00209f3b sllw t5,ra,sp
80000150: 00004eb7 lui t4,0x4
80000154: 00500193 li gp,5
- 80000158: 51df1863 bne t5,t4,80000668 <fail>
+ 80000158: 5bdf1863 bne t5,t4,80000708 <fail>
000000008000015c <test_6>:
8000015c: 00100093 li ra,1
@@ -115,7 +115,7 @@ Disassembly of section .text.init:
80000164: 00209f3b sllw t5,ra,sp
80000168: 80000eb7 lui t4,0x80000
8000016c: 00600193 li gp,6
- 80000170: 4fdf1c63 bne t5,t4,80000668 <fail>
+ 80000170: 59df1c63 bne t5,t4,80000708 <fail>
0000000080000174 <test_7>:
80000174: fff00093 li ra,-1
@@ -123,7 +123,7 @@ Disassembly of section .text.init:
8000017c: 00209f3b sllw t5,ra,sp
80000180: fff00e93 li t4,-1
80000184: 00700193 li gp,7
- 80000188: 4fdf1063 bne t5,t4,80000668 <fail>
+ 80000188: 59df1063 bne t5,t4,80000708 <fail>
000000008000018c <test_8>:
8000018c: fff00093 li ra,-1
@@ -131,7 +131,7 @@ Disassembly of section .text.init:
80000194: 00209f3b sllw t5,ra,sp
80000198: ffe00e93 li t4,-2
8000019c: 00800193 li gp,8
- 800001a0: 4ddf1463 bne t5,t4,80000668 <fail>
+ 800001a0: 57df1463 bne t5,t4,80000708 <fail>
00000000800001a4 <test_9>:
800001a4: fff00093 li ra,-1
@@ -139,7 +139,7 @@ Disassembly of section .text.init:
800001ac: 00209f3b sllw t5,ra,sp
800001b0: f8000e93 li t4,-128
800001b4: 00900193 li gp,9
- 800001b8: 4bdf1863 bne t5,t4,80000668 <fail>
+ 800001b8: 55df1863 bne t5,t4,80000708 <fail>
00000000800001bc <test_10>:
800001bc: fff00093 li ra,-1
@@ -147,7 +147,7 @@ Disassembly of section .text.init:
800001c4: 00209f3b sllw t5,ra,sp
800001c8: ffffceb7 lui t4,0xffffc
800001cc: 00a00193 li gp,10
- 800001d0: 49df1c63 bne t5,t4,80000668 <fail>
+ 800001d0: 53df1c63 bne t5,t4,80000708 <fail>
00000000800001d4 <test_11>:
800001d4: fff00093 li ra,-1
@@ -155,7 +155,7 @@ Disassembly of section .text.init:
800001dc: 00209f3b sllw t5,ra,sp
800001e0: 80000eb7 lui t4,0x80000
800001e4: 00b00193 li gp,11
- 800001e8: 49df1063 bne t5,t4,80000668 <fail>
+ 800001e8: 53df1063 bne t5,t4,80000708 <fail>
00000000800001ec <test_12>:
800001ec: 212120b7 lui ra,0x21212
@@ -165,7 +165,7 @@ Disassembly of section .text.init:
800001fc: 21212eb7 lui t4,0x21212
80000200: 121e8e9b addiw t4,t4,289
80000204: 00c00193 li gp,12
- 80000208: 47df1063 bne t5,t4,80000668 <fail>
+ 80000208: 51df1063 bne t5,t4,80000708 <fail>
000000008000020c <test_13>:
8000020c: 212120b7 lui ra,0x21212
@@ -175,7 +175,7 @@ Disassembly of section .text.init:
8000021c: 42424eb7 lui t4,0x42424
80000220: 242e8e9b addiw t4,t4,578
80000224: 00d00193 li gp,13
- 80000228: 45df1063 bne t5,t4,80000668 <fail>
+ 80000228: 4fdf1063 bne t5,t4,80000708 <fail>
000000008000022c <test_14>:
8000022c: 212120b7 lui ra,0x21212
@@ -185,7 +185,7 @@ Disassembly of section .text.init:
8000023c: 90909eb7 lui t4,0x90909
80000240: 080e8e9b addiw t4,t4,128
80000244: 00e00193 li gp,14
- 80000248: 43df1063 bne t5,t4,80000668 <fail>
+ 80000248: 4ddf1063 bne t5,t4,80000708 <fail>
000000008000024c <test_15>:
8000024c: 212120b7 lui ra,0x21212
@@ -194,7 +194,7 @@ Disassembly of section .text.init:
80000258: 00209f3b sllw t5,ra,sp
8000025c: 48484eb7 lui t4,0x48484
80000260: 00f00193 li gp,15
- 80000264: 41df1263 bne t5,t4,80000668 <fail>
+ 80000264: 4bdf1263 bne t5,t4,80000708 <fail>
0000000080000268 <test_16>:
80000268: 212120b7 lui ra,0x21212
@@ -203,7 +203,7 @@ Disassembly of section .text.init:
80000274: 00209f3b sllw t5,ra,sp
80000278: 80000eb7 lui t4,0x80000
8000027c: 01000193 li gp,16
- 80000280: 3fdf1463 bne t5,t4,80000668 <fail>
+ 80000280: 49df1463 bne t5,t4,80000708 <fail>
0000000080000284 <test_17>:
80000284: 212120b7 lui ra,0x21212
@@ -213,7 +213,7 @@ Disassembly of section .text.init:
80000294: 21212eb7 lui t4,0x21212
80000298: 121e8e9b addiw t4,t4,289
8000029c: 01100193 li gp,17
- 800002a0: 3ddf1463 bne t5,t4,80000668 <fail>
+ 800002a0: 47df1463 bne t5,t4,80000708 <fail>
00000000800002a4 <test_18>:
800002a4: 212120b7 lui ra,0x21212
@@ -223,7 +223,7 @@ Disassembly of section .text.init:
800002b4: 42424eb7 lui t4,0x42424
800002b8: 242e8e9b addiw t4,t4,578
800002bc: 01200193 li gp,18
- 800002c0: 3bdf1463 bne t5,t4,80000668 <fail>
+ 800002c0: 45df1463 bne t5,t4,80000708 <fail>
00000000800002c4 <test_19>:
800002c4: 212120b7 lui ra,0x21212
@@ -233,7 +233,7 @@ Disassembly of section .text.init:
800002d4: 90909eb7 lui t4,0x90909
800002d8: 080e8e9b addiw t4,t4,128
800002dc: 01300193 li gp,19
- 800002e0: 39df1463 bne t5,t4,80000668 <fail>
+ 800002e0: 43df1463 bne t5,t4,80000708 <fail>
00000000800002e4 <test_20>:
800002e4: 212120b7 lui ra,0x21212
@@ -242,7 +242,7 @@ Disassembly of section .text.init:
800002f0: 00209f3b sllw t5,ra,sp
800002f4: 48484eb7 lui t4,0x48484
800002f8: 01400193 li gp,20
- 800002fc: 37df1663 bne t5,t4,80000668 <fail>
+ 800002fc: 41df1663 bne t5,t4,80000708 <fail>
0000000080000300 <test_21>:
80000300: 212120b7 lui ra,0x21212
@@ -251,300 +251,332 @@ Disassembly of section .text.init:
8000030c: 00209f3b sllw t5,ra,sp
80000310: 80000eb7 lui t4,0x80000
80000314: 01500193 li gp,21
- 80000318: 35df1863 bne t5,t4,80000668 <fail>
-
-000000008000031c <test_22>:
- 8000031c: 00100093 li ra,1
- 80000320: 00700113 li sp,7
- 80000324: 002090bb sllw ra,ra,sp
- 80000328: 08000e93 li t4,128
- 8000032c: 01600193 li gp,22
- 80000330: 33d09c63 bne ra,t4,80000668 <fail>
-
-0000000080000334 <test_23>:
- 80000334: 00100093 li ra,1
- 80000338: 00e00113 li sp,14
- 8000033c: 0020913b sllw sp,ra,sp
- 80000340: 00004eb7 lui t4,0x4
- 80000344: 01700193 li gp,23
- 80000348: 33d11063 bne sp,t4,80000668 <fail>
-
-000000008000034c <test_24>:
- 8000034c: 00300093 li ra,3
- 80000350: 001090bb sllw ra,ra,ra
- 80000354: 01800e93 li t4,24
- 80000358: 01800193 li gp,24
- 8000035c: 31d09663 bne ra,t4,80000668 <fail>
-
-0000000080000360 <test_25>:
- 80000360: 00000213 li tp,0
- 80000364: 00100093 li ra,1
- 80000368: 00700113 li sp,7
- 8000036c: 00209f3b sllw t5,ra,sp
- 80000370: 000f0313 mv t1,t5
- 80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000378: 00200293 li t0,2
- 8000037c: fe5214e3 bne tp,t0,80000364 <test_25+0x4>
- 80000380: 08000e93 li t4,128
- 80000384: 01900193 li gp,25
- 80000388: 2fd31063 bne t1,t4,80000668 <fail>
-
-000000008000038c <test_26>:
- 8000038c: 00000213 li tp,0
- 80000390: 00100093 li ra,1
- 80000394: 00e00113 li sp,14
- 80000398: 00209f3b sllw t5,ra,sp
- 8000039c: 00000013 nop
- 800003a0: 000f0313 mv t1,t5
- 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800003a8: 00200293 li t0,2
- 800003ac: fe5212e3 bne tp,t0,80000390 <test_26+0x4>
- 800003b0: 00004eb7 lui t4,0x4
- 800003b4: 01a00193 li gp,26
- 800003b8: 2bd31863 bne t1,t4,80000668 <fail>
-
-00000000800003bc <test_27>:
- 800003bc: 00000213 li tp,0
- 800003c0: 00100093 li ra,1
- 800003c4: 01f00113 li sp,31
- 800003c8: 00209f3b sllw t5,ra,sp
- 800003cc: 00000013 nop
- 800003d0: 00000013 nop
- 800003d4: 000f0313 mv t1,t5
- 800003d8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800003dc: 00200293 li t0,2
- 800003e0: fe5210e3 bne tp,t0,800003c0 <test_27+0x4>
- 800003e4: 80000eb7 lui t4,0x80000
- 800003e8: 01b00193 li gp,27
- 800003ec: 27d31e63 bne t1,t4,80000668 <fail>
-
-00000000800003f0 <test_28>:
- 800003f0: 00000213 li tp,0
- 800003f4: 00100093 li ra,1
- 800003f8: 00700113 li sp,7
- 800003fc: 00209f3b sllw t5,ra,sp
- 80000400: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000404: 00200293 li t0,2
- 80000408: fe5216e3 bne tp,t0,800003f4 <test_28+0x4>
- 8000040c: 08000e93 li t4,128
- 80000410: 01c00193 li gp,28
- 80000414: 25df1a63 bne t5,t4,80000668 <fail>
-
-0000000080000418 <test_29>:
- 80000418: 00000213 li tp,0
- 8000041c: 00100093 li ra,1
- 80000420: 00e00113 li sp,14
- 80000424: 00000013 nop
- 80000428: 00209f3b sllw t5,ra,sp
- 8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000430: 00200293 li t0,2
- 80000434: fe5214e3 bne tp,t0,8000041c <test_29+0x4>
- 80000438: 00004eb7 lui t4,0x4
- 8000043c: 01d00193 li gp,29
- 80000440: 23df1463 bne t5,t4,80000668 <fail>
-
-0000000080000444 <test_30>:
- 80000444: 00000213 li tp,0
- 80000448: 00100093 li ra,1
- 8000044c: 01f00113 li sp,31
- 80000450: 00000013 nop
- 80000454: 00000013 nop
- 80000458: 00209f3b sllw t5,ra,sp
- 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000460: 00200293 li t0,2
- 80000464: fe5212e3 bne tp,t0,80000448 <test_30+0x4>
- 80000468: 80000eb7 lui t4,0x80000
- 8000046c: 01e00193 li gp,30
- 80000470: 1fdf1c63 bne t5,t4,80000668 <fail>
-
-0000000080000474 <test_31>:
- 80000474: 00000213 li tp,0
- 80000478: 00100093 li ra,1
- 8000047c: 00000013 nop
- 80000480: 00700113 li sp,7
- 80000484: 00209f3b sllw t5,ra,sp
- 80000488: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000048c: 00200293 li t0,2
- 80000490: fe5214e3 bne tp,t0,80000478 <test_31+0x4>
- 80000494: 08000e93 li t4,128
- 80000498: 01f00193 li gp,31
- 8000049c: 1ddf1663 bne t5,t4,80000668 <fail>
-
-00000000800004a0 <test_32>:
- 800004a0: 00000213 li tp,0
- 800004a4: 00100093 li ra,1
- 800004a8: 00000013 nop
- 800004ac: 00e00113 li sp,14
- 800004b0: 00000013 nop
- 800004b4: 00209f3b sllw t5,ra,sp
- 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800004bc: 00200293 li t0,2
- 800004c0: fe5212e3 bne tp,t0,800004a4 <test_32+0x4>
- 800004c4: 00004eb7 lui t4,0x4
- 800004c8: 02000193 li gp,32
- 800004cc: 19df1e63 bne t5,t4,80000668 <fail>
-
-00000000800004d0 <test_33>:
- 800004d0: 00000213 li tp,0
- 800004d4: 00100093 li ra,1
- 800004d8: 00000013 nop
- 800004dc: 00000013 nop
- 800004e0: 01f00113 li sp,31
- 800004e4: 00209f3b sllw t5,ra,sp
- 800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800004ec: 00200293 li t0,2
- 800004f0: fe5212e3 bne tp,t0,800004d4 <test_33+0x4>
- 800004f4: 80000eb7 lui t4,0x80000
- 800004f8: 02100193 li gp,33
- 800004fc: 17df1663 bne t5,t4,80000668 <fail>
-
-0000000080000500 <test_34>:
- 80000500: 00000213 li tp,0
- 80000504: 00700113 li sp,7
- 80000508: 00100093 li ra,1
- 8000050c: 00209f3b sllw t5,ra,sp
- 80000510: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000514: 00200293 li t0,2
- 80000518: fe5216e3 bne tp,t0,80000504 <test_34+0x4>
- 8000051c: 08000e93 li t4,128
- 80000520: 02200193 li gp,34
- 80000524: 15df1263 bne t5,t4,80000668 <fail>
-
-0000000080000528 <test_35>:
- 80000528: 00000213 li tp,0
- 8000052c: 00e00113 li sp,14
- 80000530: 00100093 li ra,1
- 80000534: 00000013 nop
- 80000538: 00209f3b sllw t5,ra,sp
- 8000053c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000540: 00200293 li t0,2
- 80000544: fe5214e3 bne tp,t0,8000052c <test_35+0x4>
- 80000548: 00004eb7 lui t4,0x4
- 8000054c: 02300193 li gp,35
- 80000550: 11df1c63 bne t5,t4,80000668 <fail>
-
-0000000080000554 <test_36>:
- 80000554: 00000213 li tp,0
- 80000558: 01f00113 li sp,31
- 8000055c: 00100093 li ra,1
- 80000560: 00000013 nop
- 80000564: 00000013 nop
- 80000568: 00209f3b sllw t5,ra,sp
- 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000570: 00200293 li t0,2
- 80000574: fe5212e3 bne tp,t0,80000558 <test_36+0x4>
- 80000578: 80000eb7 lui t4,0x80000
- 8000057c: 02400193 li gp,36
- 80000580: 0fdf1463 bne t5,t4,80000668 <fail>
-
-0000000080000584 <test_37>:
- 80000584: 00000213 li tp,0
- 80000588: 00700113 li sp,7
- 8000058c: 00000013 nop
- 80000590: 00100093 li ra,1
- 80000594: 00209f3b sllw t5,ra,sp
- 80000598: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000059c: 00200293 li t0,2
- 800005a0: fe5214e3 bne tp,t0,80000588 <test_37+0x4>
- 800005a4: 08000e93 li t4,128
- 800005a8: 02500193 li gp,37
- 800005ac: 0bdf1e63 bne t5,t4,80000668 <fail>
-
-00000000800005b0 <test_38>:
- 800005b0: 00000213 li tp,0
- 800005b4: 00e00113 li sp,14
- 800005b8: 00000013 nop
- 800005bc: 00100093 li ra,1
- 800005c0: 00000013 nop
- 800005c4: 00209f3b sllw t5,ra,sp
- 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005cc: 00200293 li t0,2
- 800005d0: fe5212e3 bne tp,t0,800005b4 <test_38+0x4>
- 800005d4: 00004eb7 lui t4,0x4
- 800005d8: 02600193 li gp,38
- 800005dc: 09df1663 bne t5,t4,80000668 <fail>
-
-00000000800005e0 <test_39>:
- 800005e0: 00000213 li tp,0
- 800005e4: 01f00113 li sp,31
- 800005e8: 00000013 nop
- 800005ec: 00000013 nop
- 800005f0: 00100093 li ra,1
- 800005f4: 00209f3b sllw t5,ra,sp
- 800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005fc: 00200293 li t0,2
- 80000600: fe5212e3 bne tp,t0,800005e4 <test_39+0x4>
- 80000604: 80000eb7 lui t4,0x80000
- 80000608: 02700193 li gp,39
- 8000060c: 05df1e63 bne t5,t4,80000668 <fail>
-
-0000000080000610 <test_40>:
- 80000610: 00f00093 li ra,15
- 80000614: 0010113b sllw sp,zero,ra
- 80000618: 00000e93 li t4,0
- 8000061c: 02800193 li gp,40
- 80000620: 05d11463 bne sp,t4,80000668 <fail>
-
-0000000080000624 <test_41>:
- 80000624: 02000093 li ra,32
- 80000628: 0000913b sllw sp,ra,zero
- 8000062c: 02000e93 li t4,32
- 80000630: 02900193 li gp,41
- 80000634: 03d11a63 bne sp,t4,80000668 <fail>
-
-0000000080000638 <test_42>:
- 80000638: 000010bb sllw ra,zero,zero
- 8000063c: 00000e93 li t4,0
- 80000640: 02a00193 li gp,42
- 80000644: 03d09263 bne ra,t4,80000668 <fail>
-
-0000000080000648 <test_43>:
- 80000648: 40000093 li ra,1024
- 8000064c: 00001137 lui sp,0x1
- 80000650: 8001011b addiw sp,sp,-2048
- 80000654: 0020903b sllw zero,ra,sp
- 80000658: 00000e93 li t4,0
- 8000065c: 02b00193 li gp,43
- 80000660: 01d01463 bne zero,t4,80000668 <fail>
- 80000664: 00301c63 bne zero,gp,8000067c <pass>
-
-0000000080000668 <fail>:
- 80000668: 0ff0000f fence
- 8000066c: 00018063 beqz gp,8000066c <fail+0x4>
- 80000670: 00119193 slli gp,gp,0x1
- 80000674: 0011e193 ori gp,gp,1
- 80000678: 00000073 ecall
-
-000000008000067c <pass>:
- 8000067c: 0ff0000f fence
- 80000680: 00100193 li gp,1
- 80000684: 00000073 ecall
- 80000688: c0001073 unimp
- 8000068c: 0000 unimp
- 8000068e: 0000 unimp
- 80000690: 0000 unimp
- 80000692: 0000 unimp
- 80000694: 0000 unimp
- 80000696: 0000 unimp
- 80000698: 0000 unimp
- 8000069a: 0000 unimp
- 8000069c: 0000 unimp
- 8000069e: 0000 unimp
- 800006a0: 0000 unimp
- 800006a2: 0000 unimp
- 800006a4: 0000 unimp
- 800006a6: 0000 unimp
- 800006a8: 0000 unimp
- 800006aa: 0000 unimp
- 800006ac: 0000 unimp
- 800006ae: 0000 unimp
- 800006b0: 0000 unimp
- 800006b2: 0000 unimp
- 800006b4: 0000 unimp
- 800006b6: 0000 unimp
- 800006b8: 0000 unimp
- 800006ba: 0000 unimp
- 800006bc: 0000 unimp
- 800006be: 0000 unimp
- 800006c0: 0000 unimp
- 800006c2: 0000 unimp
+ 80000318: 3fdf1863 bne t5,t4,80000708 <fail>
+
+000000008000031c <test_44>:
+ 8000031c: fff120b7 lui ra,0xfff12
+ 80000320: 3450809b addiw ra,ra,837
+ 80000324: 00c09093 slli ra,ra,0xc
+ 80000328: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 8000032c: 00000113 li sp,0
+ 80000330: 00209f3b sllw t5,ra,sp
+ 80000334: 12345eb7 lui t4,0x12345
+ 80000338: 678e8e9b addiw t4,t4,1656
+ 8000033c: 02c00193 li gp,44
+ 80000340: 3ddf1463 bne t5,t4,80000708 <fail>
+
+0000000080000344 <test_45>:
+ 80000344: fff120b7 lui ra,0xfff12
+ 80000348: 3450809b addiw ra,ra,837
+ 8000034c: 00c09093 slli ra,ra,0xc
+ 80000350: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 80000354: 00400113 li sp,4
+ 80000358: 00209f3b sllw t5,ra,sp
+ 8000035c: 23456eb7 lui t4,0x23456
+ 80000360: 780e8e9b addiw t4,t4,1920
+ 80000364: 02d00193 li gp,45
+ 80000368: 3bdf1063 bne t5,t4,80000708 <fail>
+
+000000008000036c <test_46>:
+ 8000036c: 000920b7 lui ra,0x92
+ 80000370: 3450809b addiw ra,ra,837
+ 80000374: 00c09093 slli ra,ra,0xc
+ 80000378: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 8000037c: 00000113 li sp,0
+ 80000380: 00209f3b sllw t5,ra,sp
+ 80000384: 92345eb7 lui t4,0x92345
+ 80000388: 678e8e9b addiw t4,t4,1656
+ 8000038c: 02e00193 li gp,46
+ 80000390: 37df1c63 bne t5,t4,80000708 <fail>
+
+0000000080000394 <test_47>:
+ 80000394: 000990b7 lui ra,0x99
+ 80000398: 3450809b addiw ra,ra,837
+ 8000039c: 00c09093 slli ra,ra,0xc
+ 800003a0: 67808093 addi ra,ra,1656 # 99678 <_start-0x7ff66988>
+ 800003a4: 00400113 li sp,4
+ 800003a8: 00209f3b sllw t5,ra,sp
+ 800003ac: 93456eb7 lui t4,0x93456
+ 800003b0: 780e8e9b addiw t4,t4,1920
+ 800003b4: 02f00193 li gp,47
+ 800003b8: 35df1863 bne t5,t4,80000708 <fail>
+
+00000000800003bc <test_22>:
+ 800003bc: 00100093 li ra,1
+ 800003c0: 00700113 li sp,7
+ 800003c4: 002090bb sllw ra,ra,sp
+ 800003c8: 08000e93 li t4,128
+ 800003cc: 01600193 li gp,22
+ 800003d0: 33d09c63 bne ra,t4,80000708 <fail>
+
+00000000800003d4 <test_23>:
+ 800003d4: 00100093 li ra,1
+ 800003d8: 00e00113 li sp,14
+ 800003dc: 0020913b sllw sp,ra,sp
+ 800003e0: 00004eb7 lui t4,0x4
+ 800003e4: 01700193 li gp,23
+ 800003e8: 33d11063 bne sp,t4,80000708 <fail>
+
+00000000800003ec <test_24>:
+ 800003ec: 00300093 li ra,3
+ 800003f0: 001090bb sllw ra,ra,ra
+ 800003f4: 01800e93 li t4,24
+ 800003f8: 01800193 li gp,24
+ 800003fc: 31d09663 bne ra,t4,80000708 <fail>
+
+0000000080000400 <test_25>:
+ 80000400: 00000213 li tp,0
+ 80000404: 00100093 li ra,1
+ 80000408: 00700113 li sp,7
+ 8000040c: 00209f3b sllw t5,ra,sp
+ 80000410: 000f0313 mv t1,t5
+ 80000414: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000418: 00200293 li t0,2
+ 8000041c: fe5214e3 bne tp,t0,80000404 <test_25+0x4>
+ 80000420: 08000e93 li t4,128
+ 80000424: 01900193 li gp,25
+ 80000428: 2fd31063 bne t1,t4,80000708 <fail>
+
+000000008000042c <test_26>:
+ 8000042c: 00000213 li tp,0
+ 80000430: 00100093 li ra,1
+ 80000434: 00e00113 li sp,14
+ 80000438: 00209f3b sllw t5,ra,sp
+ 8000043c: 00000013 nop
+ 80000440: 000f0313 mv t1,t5
+ 80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000448: 00200293 li t0,2
+ 8000044c: fe5212e3 bne tp,t0,80000430 <test_26+0x4>
+ 80000450: 00004eb7 lui t4,0x4
+ 80000454: 01a00193 li gp,26
+ 80000458: 2bd31863 bne t1,t4,80000708 <fail>
+
+000000008000045c <test_27>:
+ 8000045c: 00000213 li tp,0
+ 80000460: 00100093 li ra,1
+ 80000464: 01f00113 li sp,31
+ 80000468: 00209f3b sllw t5,ra,sp
+ 8000046c: 00000013 nop
+ 80000470: 00000013 nop
+ 80000474: 000f0313 mv t1,t5
+ 80000478: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000047c: 00200293 li t0,2
+ 80000480: fe5210e3 bne tp,t0,80000460 <test_27+0x4>
+ 80000484: 80000eb7 lui t4,0x80000
+ 80000488: 01b00193 li gp,27
+ 8000048c: 27d31e63 bne t1,t4,80000708 <fail>
+
+0000000080000490 <test_28>:
+ 80000490: 00000213 li tp,0
+ 80000494: 00100093 li ra,1
+ 80000498: 00700113 li sp,7
+ 8000049c: 00209f3b sllw t5,ra,sp
+ 800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800004a4: 00200293 li t0,2
+ 800004a8: fe5216e3 bne tp,t0,80000494 <test_28+0x4>
+ 800004ac: 08000e93 li t4,128
+ 800004b0: 01c00193 li gp,28
+ 800004b4: 25df1a63 bne t5,t4,80000708 <fail>
+
+00000000800004b8 <test_29>:
+ 800004b8: 00000213 li tp,0
+ 800004bc: 00100093 li ra,1
+ 800004c0: 00e00113 li sp,14
+ 800004c4: 00000013 nop
+ 800004c8: 00209f3b sllw t5,ra,sp
+ 800004cc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800004d0: 00200293 li t0,2
+ 800004d4: fe5214e3 bne tp,t0,800004bc <test_29+0x4>
+ 800004d8: 00004eb7 lui t4,0x4
+ 800004dc: 01d00193 li gp,29
+ 800004e0: 23df1463 bne t5,t4,80000708 <fail>
+
+00000000800004e4 <test_30>:
+ 800004e4: 00000213 li tp,0
+ 800004e8: 00100093 li ra,1
+ 800004ec: 01f00113 li sp,31
+ 800004f0: 00000013 nop
+ 800004f4: 00000013 nop
+ 800004f8: 00209f3b sllw t5,ra,sp
+ 800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000500: 00200293 li t0,2
+ 80000504: fe5212e3 bne tp,t0,800004e8 <test_30+0x4>
+ 80000508: 80000eb7 lui t4,0x80000
+ 8000050c: 01e00193 li gp,30
+ 80000510: 1fdf1c63 bne t5,t4,80000708 <fail>
+
+0000000080000514 <test_31>:
+ 80000514: 00000213 li tp,0
+ 80000518: 00100093 li ra,1
+ 8000051c: 00000013 nop
+ 80000520: 00700113 li sp,7
+ 80000524: 00209f3b sllw t5,ra,sp
+ 80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000052c: 00200293 li t0,2
+ 80000530: fe5214e3 bne tp,t0,80000518 <test_31+0x4>
+ 80000534: 08000e93 li t4,128
+ 80000538: 01f00193 li gp,31
+ 8000053c: 1ddf1663 bne t5,t4,80000708 <fail>
+
+0000000080000540 <test_32>:
+ 80000540: 00000213 li tp,0
+ 80000544: 00100093 li ra,1
+ 80000548: 00000013 nop
+ 8000054c: 00e00113 li sp,14
+ 80000550: 00000013 nop
+ 80000554: 00209f3b sllw t5,ra,sp
+ 80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000055c: 00200293 li t0,2
+ 80000560: fe5212e3 bne tp,t0,80000544 <test_32+0x4>
+ 80000564: 00004eb7 lui t4,0x4
+ 80000568: 02000193 li gp,32
+ 8000056c: 19df1e63 bne t5,t4,80000708 <fail>
+
+0000000080000570 <test_33>:
+ 80000570: 00000213 li tp,0
+ 80000574: 00100093 li ra,1
+ 80000578: 00000013 nop
+ 8000057c: 00000013 nop
+ 80000580: 01f00113 li sp,31
+ 80000584: 00209f3b sllw t5,ra,sp
+ 80000588: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000058c: 00200293 li t0,2
+ 80000590: fe5212e3 bne tp,t0,80000574 <test_33+0x4>
+ 80000594: 80000eb7 lui t4,0x80000
+ 80000598: 02100193 li gp,33
+ 8000059c: 17df1663 bne t5,t4,80000708 <fail>
+
+00000000800005a0 <test_34>:
+ 800005a0: 00000213 li tp,0
+ 800005a4: 00700113 li sp,7
+ 800005a8: 00100093 li ra,1
+ 800005ac: 00209f3b sllw t5,ra,sp
+ 800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005b4: 00200293 li t0,2
+ 800005b8: fe5216e3 bne tp,t0,800005a4 <test_34+0x4>
+ 800005bc: 08000e93 li t4,128
+ 800005c0: 02200193 li gp,34
+ 800005c4: 15df1263 bne t5,t4,80000708 <fail>
+
+00000000800005c8 <test_35>:
+ 800005c8: 00000213 li tp,0
+ 800005cc: 00e00113 li sp,14
+ 800005d0: 00100093 li ra,1
+ 800005d4: 00000013 nop
+ 800005d8: 00209f3b sllw t5,ra,sp
+ 800005dc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005e0: 00200293 li t0,2
+ 800005e4: fe5214e3 bne tp,t0,800005cc <test_35+0x4>
+ 800005e8: 00004eb7 lui t4,0x4
+ 800005ec: 02300193 li gp,35
+ 800005f0: 11df1c63 bne t5,t4,80000708 <fail>
+
+00000000800005f4 <test_36>:
+ 800005f4: 00000213 li tp,0
+ 800005f8: 01f00113 li sp,31
+ 800005fc: 00100093 li ra,1
+ 80000600: 00000013 nop
+ 80000604: 00000013 nop
+ 80000608: 00209f3b sllw t5,ra,sp
+ 8000060c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000610: 00200293 li t0,2
+ 80000614: fe5212e3 bne tp,t0,800005f8 <test_36+0x4>
+ 80000618: 80000eb7 lui t4,0x80000
+ 8000061c: 02400193 li gp,36
+ 80000620: 0fdf1463 bne t5,t4,80000708 <fail>
+
+0000000080000624 <test_37>:
+ 80000624: 00000213 li tp,0
+ 80000628: 00700113 li sp,7
+ 8000062c: 00000013 nop
+ 80000630: 00100093 li ra,1
+ 80000634: 00209f3b sllw t5,ra,sp
+ 80000638: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000063c: 00200293 li t0,2
+ 80000640: fe5214e3 bne tp,t0,80000628 <test_37+0x4>
+ 80000644: 08000e93 li t4,128
+ 80000648: 02500193 li gp,37
+ 8000064c: 0bdf1e63 bne t5,t4,80000708 <fail>
+
+0000000080000650 <test_38>:
+ 80000650: 00000213 li tp,0
+ 80000654: 00e00113 li sp,14
+ 80000658: 00000013 nop
+ 8000065c: 00100093 li ra,1
+ 80000660: 00000013 nop
+ 80000664: 00209f3b sllw t5,ra,sp
+ 80000668: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000066c: 00200293 li t0,2
+ 80000670: fe5212e3 bne tp,t0,80000654 <test_38+0x4>
+ 80000674: 00004eb7 lui t4,0x4
+ 80000678: 02600193 li gp,38
+ 8000067c: 09df1663 bne t5,t4,80000708 <fail>
+
+0000000080000680 <test_39>:
+ 80000680: 00000213 li tp,0
+ 80000684: 01f00113 li sp,31
+ 80000688: 00000013 nop
+ 8000068c: 00000013 nop
+ 80000690: 00100093 li ra,1
+ 80000694: 00209f3b sllw t5,ra,sp
+ 80000698: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000069c: 00200293 li t0,2
+ 800006a0: fe5212e3 bne tp,t0,80000684 <test_39+0x4>
+ 800006a4: 80000eb7 lui t4,0x80000
+ 800006a8: 02700193 li gp,39
+ 800006ac: 05df1e63 bne t5,t4,80000708 <fail>
+
+00000000800006b0 <test_40>:
+ 800006b0: 00f00093 li ra,15
+ 800006b4: 0010113b sllw sp,zero,ra
+ 800006b8: 00000e93 li t4,0
+ 800006bc: 02800193 li gp,40
+ 800006c0: 05d11463 bne sp,t4,80000708 <fail>
+
+00000000800006c4 <test_41>:
+ 800006c4: 02000093 li ra,32
+ 800006c8: 0000913b sllw sp,ra,zero
+ 800006cc: 02000e93 li t4,32
+ 800006d0: 02900193 li gp,41
+ 800006d4: 03d11a63 bne sp,t4,80000708 <fail>
+
+00000000800006d8 <test_42>:
+ 800006d8: 000010bb sllw ra,zero,zero
+ 800006dc: 00000e93 li t4,0
+ 800006e0: 02a00193 li gp,42
+ 800006e4: 03d09263 bne ra,t4,80000708 <fail>
+
+00000000800006e8 <test_43>:
+ 800006e8: 40000093 li ra,1024
+ 800006ec: 00001137 lui sp,0x1
+ 800006f0: 8001011b addiw sp,sp,-2048
+ 800006f4: 0020903b sllw zero,ra,sp
+ 800006f8: 00000e93 li t4,0
+ 800006fc: 02b00193 li gp,43
+ 80000700: 01d01463 bne zero,t4,80000708 <fail>
+ 80000704: 00301c63 bne zero,gp,8000071c <pass>
+
+0000000080000708 <fail>:
+ 80000708: 0ff0000f fence
+ 8000070c: 00018063 beqz gp,8000070c <fail+0x4>
+ 80000710: 00119193 slli gp,gp,0x1
+ 80000714: 0011e193 ori gp,gp,1
+ 80000718: 00000073 ecall
+
+000000008000071c <pass>:
+ 8000071c: 0ff0000f fence
+ 80000720: 00100193 li gp,1
+ 80000724: 00000073 ecall
+ 80000728: c0001073 unimp
+ 8000072c: 0000 unimp
+ 8000072e: 0000 unimp
+ 80000730: 0000 unimp
+ 80000732: 0000 unimp
+ 80000734: 0000 unimp
+ 80000736: 0000 unimp
+ 80000738: 0000 unimp
+ 8000073a: 0000 unimp
+ 8000073c: 0000 unimp
+ 8000073e: 0000 unimp
+ 80000740: 0000 unimp
+ 80000742: 0000 unimp
diff --git a/test/riscv-tests/rv64ui-p-sllw.elf b/test/riscv-tests/rv64ui-p-sllw.elf
index 4a1c421..e839d1b 100644
--- a/test/riscv-tests/rv64ui-p-sllw.elf
+++ b/test/riscv-tests/rv64ui-p-sllw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-slt.elf b/test/riscv-tests/rv64ui-p-slt.elf
index eef5e47..1feb7df 100644
--- a/test/riscv-tests/rv64ui-p-slt.elf
+++ b/test/riscv-tests/rv64ui-p-slt.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-slti.elf b/test/riscv-tests/rv64ui-p-slti.elf
index 190f81f..681c963 100644
--- a/test/riscv-tests/rv64ui-p-slti.elf
+++ b/test/riscv-tests/rv64ui-p-slti.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sltiu.elf b/test/riscv-tests/rv64ui-p-sltiu.elf
index 8347ab8..a52072b 100644
--- a/test/riscv-tests/rv64ui-p-sltiu.elf
+++ b/test/riscv-tests/rv64ui-p-sltiu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sltu.elf b/test/riscv-tests/rv64ui-p-sltu.elf
index a1ef113..16264cc 100644
--- a/test/riscv-tests/rv64ui-p-sltu.elf
+++ b/test/riscv-tests/rv64ui-p-sltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sra.elf b/test/riscv-tests/rv64ui-p-sra.elf
index f03501d..fc9a1d9 100644
--- a/test/riscv-tests/rv64ui-p-sra.elf
+++ b/test/riscv-tests/rv64ui-p-sra.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-srai.elf b/test/riscv-tests/rv64ui-p-srai.elf
index c670ee9..8efee58 100644
--- a/test/riscv-tests/rv64ui-p-srai.elf
+++ b/test/riscv-tests/rv64ui-p-srai.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sraiw.dump b/test/riscv-tests/rv64ui-p-sraiw.dump
index c45179f..e36435f 100644
--- a/test/riscv-tests/rv64ui-p-sraiw.dump
+++ b/test/riscv-tests/rv64ui-p-sraiw.dump
@@ -82,28 +82,28 @@ Disassembly of section .text.init:
80000100: 4000df1b sraiw t5,ra,0x0
80000104: 80000eb7 lui t4,0x80000
80000108: 00200193 li gp,2
- 8000010c: 2ddf1c63 bne t5,t4,800003e4 <fail>
+ 8000010c: 37df1463 bne t5,t4,80000474 <fail>
0000000080000110 <test_3>:
80000110: 800000b7 lui ra,0x80000
80000114: 4010df1b sraiw t5,ra,0x1
80000118: c0000eb7 lui t4,0xc0000
8000011c: 00300193 li gp,3
- 80000120: 2ddf1263 bne t5,t4,800003e4 <fail>
+ 80000120: 35df1a63 bne t5,t4,80000474 <fail>
0000000080000124 <test_4>:
80000124: 800000b7 lui ra,0x80000
80000128: 4070df1b sraiw t5,ra,0x7
8000012c: ff000eb7 lui t4,0xff000
80000130: 00400193 li gp,4
- 80000134: 2bdf1863 bne t5,t4,800003e4 <fail>
+ 80000134: 35df1063 bne t5,t4,80000474 <fail>
0000000080000138 <test_5>:
80000138: 800000b7 lui ra,0x80000
8000013c: 40e0df1b sraiw t5,ra,0xe
80000140: fffe0eb7 lui t4,0xfffe0
80000144: 00500193 li gp,5
- 80000148: 29df1e63 bne t5,t4,800003e4 <fail>
+ 80000148: 33df1663 bne t5,t4,80000474 <fail>
000000008000014c <test_6>:
8000014c: 800000b7 lui ra,0x80000
@@ -111,7 +111,7 @@ Disassembly of section .text.init:
80000154: 41f0df1b sraiw t5,ra,0x1f
80000158: fff00e93 li t4,-1
8000015c: 00600193 li gp,6
- 80000160: 29df1263 bne t5,t4,800003e4 <fail>
+ 80000160: 31df1a63 bne t5,t4,80000474 <fail>
0000000080000164 <test_7>:
80000164: 800000b7 lui ra,0x80000
@@ -120,7 +120,7 @@ Disassembly of section .text.init:
80000170: 80000eb7 lui t4,0x80000
80000174: fffe8e9b addiw t4,t4,-1
80000178: 00700193 li gp,7
- 8000017c: 27df1463 bne t5,t4,800003e4 <fail>
+ 8000017c: 2fdf1c63 bne t5,t4,80000474 <fail>
0000000080000180 <test_8>:
80000180: 800000b7 lui ra,0x80000
@@ -129,7 +129,7 @@ Disassembly of section .text.init:
8000018c: 40000eb7 lui t4,0x40000
80000190: fffe8e9b addiw t4,t4,-1
80000194: 00800193 li gp,8
- 80000198: 25df1663 bne t5,t4,800003e4 <fail>
+ 80000198: 2ddf1e63 bne t5,t4,80000474 <fail>
000000008000019c <test_9>:
8000019c: 800000b7 lui ra,0x80000
@@ -138,7 +138,7 @@ Disassembly of section .text.init:
800001a8: 01000eb7 lui t4,0x1000
800001ac: fffe8e9b addiw t4,t4,-1
800001b0: 00900193 li gp,9
- 800001b4: 23df1863 bne t5,t4,800003e4 <fail>
+ 800001b4: 2ddf1063 bne t5,t4,80000474 <fail>
00000000800001b8 <test_10>:
800001b8: 800000b7 lui ra,0x80000
@@ -147,7 +147,7 @@ Disassembly of section .text.init:
800001c4: 00020eb7 lui t4,0x20
800001c8: fffe8e9b addiw t4,t4,-1
800001cc: 00a00193 li gp,10
- 800001d0: 21df1a63 bne t5,t4,800003e4 <fail>
+ 800001d0: 2bdf1263 bne t5,t4,80000474 <fail>
00000000800001d4 <test_11>:
800001d4: 800000b7 lui ra,0x80000
@@ -155,7 +155,7 @@ Disassembly of section .text.init:
800001dc: 41f0df1b sraiw t5,ra,0x1f
800001e0: 00000e93 li t4,0
800001e4: 00b00193 li gp,11
- 800001e8: 1fdf1e63 bne t5,t4,800003e4 <fail>
+ 800001e8: 29df1663 bne t5,t4,80000474 <fail>
00000000800001ec <test_12>:
800001ec: 818180b7 lui ra,0x81818
@@ -164,7 +164,7 @@ Disassembly of section .text.init:
800001f8: 81818eb7 lui t4,0x81818
800001fc: 181e8e9b addiw t4,t4,385
80000200: 00c00193 li gp,12
- 80000204: 1fdf1063 bne t5,t4,800003e4 <fail>
+ 80000204: 27df1863 bne t5,t4,80000474 <fail>
0000000080000208 <test_13>:
80000208: 818180b7 lui ra,0x81818
@@ -173,7 +173,7 @@ Disassembly of section .text.init:
80000214: c0c0ceb7 lui t4,0xc0c0c
80000218: 0c0e8e9b addiw t4,t4,192
8000021c: 00d00193 li gp,13
- 80000220: 1ddf1263 bne t5,t4,800003e4 <fail>
+ 80000220: 25df1a63 bne t5,t4,80000474 <fail>
0000000080000224 <test_14>:
80000224: 818180b7 lui ra,0x81818
@@ -182,7 +182,7 @@ Disassembly of section .text.init:
80000230: ff030eb7 lui t4,0xff030
80000234: 303e8e9b addiw t4,t4,771
80000238: 00e00193 li gp,14
- 8000023c: 1bdf1463 bne t5,t4,800003e4 <fail>
+ 8000023c: 23df1c63 bne t5,t4,80000474 <fail>
0000000080000240 <test_15>:
80000240: 818180b7 lui ra,0x81818
@@ -191,7 +191,7 @@ Disassembly of section .text.init:
8000024c: fffe0eb7 lui t4,0xfffe0
80000250: 606e8e9b addiw t4,t4,1542
80000254: 00f00193 li gp,15
- 80000258: 19df1663 bne t5,t4,800003e4 <fail>
+ 80000258: 21df1e63 bne t5,t4,80000474 <fail>
000000008000025c <test_16>:
8000025c: 818180b7 lui ra,0x81818
@@ -199,161 +199,197 @@ Disassembly of section .text.init:
80000264: 41f0df1b sraiw t5,ra,0x1f
80000268: fff00e93 li t4,-1
8000026c: 01000193 li gp,16
- 80000270: 17df1a63 bne t5,t4,800003e4 <fail>
-
-0000000080000274 <test_17>:
- 80000274: 800000b7 lui ra,0x80000
- 80000278: 4070d09b sraiw ra,ra,0x7
- 8000027c: ff000eb7 lui t4,0xff000
- 80000280: 01100193 li gp,17
- 80000284: 17d09063 bne ra,t4,800003e4 <fail>
-
-0000000080000288 <test_18>:
- 80000288: 00000213 li tp,0
- 8000028c: 800000b7 lui ra,0x80000
- 80000290: 4070df1b sraiw t5,ra,0x7
- 80000294: 000f0313 mv t1,t5
- 80000298: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000029c: 00200293 li t0,2
- 800002a0: fe5216e3 bne tp,t0,8000028c <test_18+0x4>
- 800002a4: ff000eb7 lui t4,0xff000
- 800002a8: 01200193 li gp,18
- 800002ac: 13d31c63 bne t1,t4,800003e4 <fail>
-
-00000000800002b0 <test_19>:
- 800002b0: 00000213 li tp,0
- 800002b4: 800000b7 lui ra,0x80000
- 800002b8: 40e0df1b sraiw t5,ra,0xe
- 800002bc: 00000013 nop
- 800002c0: 000f0313 mv t1,t5
- 800002c4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800002c8: 00200293 li t0,2
- 800002cc: fe5214e3 bne tp,t0,800002b4 <test_19+0x4>
- 800002d0: fffe0eb7 lui t4,0xfffe0
- 800002d4: 01300193 li gp,19
- 800002d8: 11d31663 bne t1,t4,800003e4 <fail>
-
-00000000800002dc <test_20>:
- 800002dc: 00000213 li tp,0
- 800002e0: 800000b7 lui ra,0x80000
- 800002e4: 0010809b addiw ra,ra,1
- 800002e8: 41f0df1b sraiw t5,ra,0x1f
- 800002ec: 00000013 nop
- 800002f0: 00000013 nop
- 800002f4: 000f0313 mv t1,t5
- 800002f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800002fc: 00200293 li t0,2
- 80000300: fe5210e3 bne tp,t0,800002e0 <test_20+0x4>
- 80000304: fff00e93 li t4,-1
- 80000308: 01400193 li gp,20
- 8000030c: 0dd31c63 bne t1,t4,800003e4 <fail>
-
-0000000080000310 <test_21>:
- 80000310: 00000213 li tp,0
- 80000314: 800000b7 lui ra,0x80000
- 80000318: 4070df1b sraiw t5,ra,0x7
- 8000031c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000320: 00200293 li t0,2
- 80000324: fe5218e3 bne tp,t0,80000314 <test_21+0x4>
- 80000328: ff000eb7 lui t4,0xff000
- 8000032c: 01500193 li gp,21
- 80000330: 0bdf1a63 bne t5,t4,800003e4 <fail>
-
-0000000080000334 <test_22>:
- 80000334: 00000213 li tp,0
- 80000338: 800000b7 lui ra,0x80000
- 8000033c: 00000013 nop
- 80000340: 40e0df1b sraiw t5,ra,0xe
- 80000344: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000348: 00200293 li t0,2
- 8000034c: fe5216e3 bne tp,t0,80000338 <test_22+0x4>
- 80000350: fffe0eb7 lui t4,0xfffe0
- 80000354: 01600193 li gp,22
- 80000358: 09df1663 bne t5,t4,800003e4 <fail>
-
-000000008000035c <test_23>:
- 8000035c: 00000213 li tp,0
- 80000360: 800000b7 lui ra,0x80000
- 80000364: 0010809b addiw ra,ra,1
- 80000368: 00000013 nop
- 8000036c: 00000013 nop
- 80000370: 41f0df1b sraiw t5,ra,0x1f
- 80000374: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000378: 00200293 li t0,2
- 8000037c: fe5212e3 bne tp,t0,80000360 <test_23+0x4>
- 80000380: fff00e93 li t4,-1
- 80000384: 01700193 li gp,23
- 80000388: 05df1e63 bne t5,t4,800003e4 <fail>
-
-000000008000038c <test_24>:
- 8000038c: 41f0509b sraiw ra,zero,0x1f
- 80000390: 00000e93 li t4,0
- 80000394: 01800193 li gp,24
- 80000398: 05d09663 bne ra,t4,800003e4 <fail>
-
-000000008000039c <test_25>:
- 8000039c: 01f00093 li ra,31
- 800003a0: 41c0d01b sraiw zero,ra,0x1c
- 800003a4: 00000e93 li t4,0
- 800003a8: 01900193 li gp,25
- 800003ac: 03d01c63 bne zero,t4,800003e4 <fail>
-
-00000000800003b0 <test_26>:
- 800003b0: 0070009b addiw ra,zero,7
- 800003b4: 03509093 slli ra,ra,0x35
- 800003b8: 41c0df1b sraiw t5,ra,0x1c
- 800003bc: 00000e93 li t4,0
- 800003c0: 01a00193 li gp,26
- 800003c4: 03df1063 bne t5,t4,800003e4 <fail>
-
-00000000800003c8 <test_27>:
- 800003c8: 00f0009b addiw ra,zero,15
- 800003cc: 01c09093 slli ra,ra,0x1c
- 800003d0: 4040df1b sraiw t5,ra,0x4
- 800003d4: ff000eb7 lui t4,0xff000
- 800003d8: 01b00193 li gp,27
- 800003dc: 01df1463 bne t5,t4,800003e4 <fail>
- 800003e0: 00301c63 bne zero,gp,800003f8 <pass>
-
-00000000800003e4 <fail>:
- 800003e4: 0ff0000f fence
- 800003e8: 00018063 beqz gp,800003e8 <fail+0x4>
- 800003ec: 00119193 slli gp,gp,0x1
- 800003f0: 0011e193 ori gp,gp,1
- 800003f4: 00000073 ecall
-
-00000000800003f8 <pass>:
- 800003f8: 0ff0000f fence
- 800003fc: 00100193 li gp,1
- 80000400: 00000073 ecall
- 80000404: c0001073 unimp
- 80000408: 0000 unimp
- 8000040a: 0000 unimp
- 8000040c: 0000 unimp
- 8000040e: 0000 unimp
- 80000410: 0000 unimp
- 80000412: 0000 unimp
- 80000414: 0000 unimp
- 80000416: 0000 unimp
- 80000418: 0000 unimp
- 8000041a: 0000 unimp
- 8000041c: 0000 unimp
- 8000041e: 0000 unimp
- 80000420: 0000 unimp
- 80000422: 0000 unimp
- 80000424: 0000 unimp
- 80000426: 0000 unimp
- 80000428: 0000 unimp
- 8000042a: 0000 unimp
- 8000042c: 0000 unimp
- 8000042e: 0000 unimp
- 80000430: 0000 unimp
- 80000432: 0000 unimp
- 80000434: 0000 unimp
- 80000436: 0000 unimp
- 80000438: 0000 unimp
- 8000043a: 0000 unimp
- 8000043c: 0000 unimp
- 8000043e: 0000 unimp
- 80000440: 0000 unimp
- 80000442: 0000 unimp
+ 80000270: 21df1263 bne t5,t4,80000474 <fail>
+
+0000000080000274 <test_44>:
+ 80000274: fff120b7 lui ra,0xfff12
+ 80000278: 3450809b addiw ra,ra,837
+ 8000027c: 00c09093 slli ra,ra,0xc
+ 80000280: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 80000284: 4000df1b sraiw t5,ra,0x0
+ 80000288: 12345eb7 lui t4,0x12345
+ 8000028c: 678e8e9b addiw t4,t4,1656
+ 80000290: 02c00193 li gp,44
+ 80000294: 1fdf1063 bne t5,t4,80000474 <fail>
+
+0000000080000298 <test_45>:
+ 80000298: fff120b7 lui ra,0xfff12
+ 8000029c: 3450809b addiw ra,ra,837
+ 800002a0: 00c09093 slli ra,ra,0xc
+ 800002a4: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 800002a8: 4040df1b sraiw t5,ra,0x4
+ 800002ac: 01234eb7 lui t4,0x1234
+ 800002b0: 567e8e9b addiw t4,t4,1383
+ 800002b4: 02d00193 li gp,45
+ 800002b8: 1bdf1e63 bne t5,t4,80000474 <fail>
+
+00000000800002bc <test_46>:
+ 800002bc: 000920b7 lui ra,0x92
+ 800002c0: 3450809b addiw ra,ra,837
+ 800002c4: 00c09093 slli ra,ra,0xc
+ 800002c8: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800002cc: 4000df1b sraiw t5,ra,0x0
+ 800002d0: 92345eb7 lui t4,0x92345
+ 800002d4: 678e8e9b addiw t4,t4,1656
+ 800002d8: 02e00193 li gp,46
+ 800002dc: 19df1c63 bne t5,t4,80000474 <fail>
+
+00000000800002e0 <test_47>:
+ 800002e0: 000920b7 lui ra,0x92
+ 800002e4: 3450809b addiw ra,ra,837
+ 800002e8: 00c09093 slli ra,ra,0xc
+ 800002ec: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800002f0: 4040df1b sraiw t5,ra,0x4
+ 800002f4: f9234eb7 lui t4,0xf9234
+ 800002f8: 567e8e9b addiw t4,t4,1383
+ 800002fc: 02f00193 li gp,47
+ 80000300: 17df1a63 bne t5,t4,80000474 <fail>
+
+0000000080000304 <test_17>:
+ 80000304: 800000b7 lui ra,0x80000
+ 80000308: 4070d09b sraiw ra,ra,0x7
+ 8000030c: ff000eb7 lui t4,0xff000
+ 80000310: 01100193 li gp,17
+ 80000314: 17d09063 bne ra,t4,80000474 <fail>
+
+0000000080000318 <test_18>:
+ 80000318: 00000213 li tp,0
+ 8000031c: 800000b7 lui ra,0x80000
+ 80000320: 4070df1b sraiw t5,ra,0x7
+ 80000324: 000f0313 mv t1,t5
+ 80000328: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000032c: 00200293 li t0,2
+ 80000330: fe5216e3 bne tp,t0,8000031c <test_18+0x4>
+ 80000334: ff000eb7 lui t4,0xff000
+ 80000338: 01200193 li gp,18
+ 8000033c: 13d31c63 bne t1,t4,80000474 <fail>
+
+0000000080000340 <test_19>:
+ 80000340: 00000213 li tp,0
+ 80000344: 800000b7 lui ra,0x80000
+ 80000348: 40e0df1b sraiw t5,ra,0xe
+ 8000034c: 00000013 nop
+ 80000350: 000f0313 mv t1,t5
+ 80000354: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000358: 00200293 li t0,2
+ 8000035c: fe5214e3 bne tp,t0,80000344 <test_19+0x4>
+ 80000360: fffe0eb7 lui t4,0xfffe0
+ 80000364: 01300193 li gp,19
+ 80000368: 11d31663 bne t1,t4,80000474 <fail>
+
+000000008000036c <test_20>:
+ 8000036c: 00000213 li tp,0
+ 80000370: 800000b7 lui ra,0x80000
+ 80000374: 0010809b addiw ra,ra,1
+ 80000378: 41f0df1b sraiw t5,ra,0x1f
+ 8000037c: 00000013 nop
+ 80000380: 00000013 nop
+ 80000384: 000f0313 mv t1,t5
+ 80000388: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000038c: 00200293 li t0,2
+ 80000390: fe5210e3 bne tp,t0,80000370 <test_20+0x4>
+ 80000394: fff00e93 li t4,-1
+ 80000398: 01400193 li gp,20
+ 8000039c: 0dd31c63 bne t1,t4,80000474 <fail>
+
+00000000800003a0 <test_21>:
+ 800003a0: 00000213 li tp,0
+ 800003a4: 800000b7 lui ra,0x80000
+ 800003a8: 4070df1b sraiw t5,ra,0x7
+ 800003ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800003b0: 00200293 li t0,2
+ 800003b4: fe5218e3 bne tp,t0,800003a4 <test_21+0x4>
+ 800003b8: ff000eb7 lui t4,0xff000
+ 800003bc: 01500193 li gp,21
+ 800003c0: 0bdf1a63 bne t5,t4,80000474 <fail>
+
+00000000800003c4 <test_22>:
+ 800003c4: 00000213 li tp,0
+ 800003c8: 800000b7 lui ra,0x80000
+ 800003cc: 00000013 nop
+ 800003d0: 40e0df1b sraiw t5,ra,0xe
+ 800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800003d8: 00200293 li t0,2
+ 800003dc: fe5216e3 bne tp,t0,800003c8 <test_22+0x4>
+ 800003e0: fffe0eb7 lui t4,0xfffe0
+ 800003e4: 01600193 li gp,22
+ 800003e8: 09df1663 bne t5,t4,80000474 <fail>
+
+00000000800003ec <test_23>:
+ 800003ec: 00000213 li tp,0
+ 800003f0: 800000b7 lui ra,0x80000
+ 800003f4: 0010809b addiw ra,ra,1
+ 800003f8: 00000013 nop
+ 800003fc: 00000013 nop
+ 80000400: 41f0df1b sraiw t5,ra,0x1f
+ 80000404: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000408: 00200293 li t0,2
+ 8000040c: fe5212e3 bne tp,t0,800003f0 <test_23+0x4>
+ 80000410: fff00e93 li t4,-1
+ 80000414: 01700193 li gp,23
+ 80000418: 05df1e63 bne t5,t4,80000474 <fail>
+
+000000008000041c <test_24>:
+ 8000041c: 41f0509b sraiw ra,zero,0x1f
+ 80000420: 00000e93 li t4,0
+ 80000424: 01800193 li gp,24
+ 80000428: 05d09663 bne ra,t4,80000474 <fail>
+
+000000008000042c <test_25>:
+ 8000042c: 01f00093 li ra,31
+ 80000430: 41c0d01b sraiw zero,ra,0x1c
+ 80000434: 00000e93 li t4,0
+ 80000438: 01900193 li gp,25
+ 8000043c: 03d01c63 bne zero,t4,80000474 <fail>
+
+0000000080000440 <test_26>:
+ 80000440: 0070009b addiw ra,zero,7
+ 80000444: 03509093 slli ra,ra,0x35
+ 80000448: 41c0df1b sraiw t5,ra,0x1c
+ 8000044c: 00000e93 li t4,0
+ 80000450: 01a00193 li gp,26
+ 80000454: 03df1063 bne t5,t4,80000474 <fail>
+
+0000000080000458 <test_27>:
+ 80000458: 00f0009b addiw ra,zero,15
+ 8000045c: 01c09093 slli ra,ra,0x1c
+ 80000460: 4040df1b sraiw t5,ra,0x4
+ 80000464: ff000eb7 lui t4,0xff000
+ 80000468: 01b00193 li gp,27
+ 8000046c: 01df1463 bne t5,t4,80000474 <fail>
+ 80000470: 00301c63 bne zero,gp,80000488 <pass>
+
+0000000080000474 <fail>:
+ 80000474: 0ff0000f fence
+ 80000478: 00018063 beqz gp,80000478 <fail+0x4>
+ 8000047c: 00119193 slli gp,gp,0x1
+ 80000480: 0011e193 ori gp,gp,1
+ 80000484: 00000073 ecall
+
+0000000080000488 <pass>:
+ 80000488: 0ff0000f fence
+ 8000048c: 00100193 li gp,1
+ 80000490: 00000073 ecall
+ 80000494: c0001073 unimp
+ 80000498: 0000 unimp
+ 8000049a: 0000 unimp
+ 8000049c: 0000 unimp
+ 8000049e: 0000 unimp
+ 800004a0: 0000 unimp
+ 800004a2: 0000 unimp
+ 800004a4: 0000 unimp
+ 800004a6: 0000 unimp
+ 800004a8: 0000 unimp
+ 800004aa: 0000 unimp
+ 800004ac: 0000 unimp
+ 800004ae: 0000 unimp
+ 800004b0: 0000 unimp
+ 800004b2: 0000 unimp
+ 800004b4: 0000 unimp
+ 800004b6: 0000 unimp
+ 800004b8: 0000 unimp
+ 800004ba: 0000 unimp
+ 800004bc: 0000 unimp
+ 800004be: 0000 unimp
+ 800004c0: 0000 unimp
+ 800004c2: 0000 unimp
diff --git a/test/riscv-tests/rv64ui-p-sraiw.elf b/test/riscv-tests/rv64ui-p-sraiw.elf
index e4cab28..d3a9099 100644
--- a/test/riscv-tests/rv64ui-p-sraiw.elf
+++ b/test/riscv-tests/rv64ui-p-sraiw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sraw.dump b/test/riscv-tests/rv64ui-p-sraw.dump
index dc65ff4..d98eeca 100644
--- a/test/riscv-tests/rv64ui-p-sraw.dump
+++ b/test/riscv-tests/rv64ui-p-sraw.dump
@@ -83,7 +83,7 @@ Disassembly of section .text.init:
80000104: 4020df3b sraw t5,ra,sp
80000108: 80000eb7 lui t4,0x80000
8000010c: 00200193 li gp,2
- 80000110: 59df1463 bne t5,t4,80000698 <fail>
+ 80000110: 63df1463 bne t5,t4,80000738 <fail>
0000000080000114 <test_3>:
80000114: 800000b7 lui ra,0x80000
@@ -91,7 +91,7 @@ Disassembly of section .text.init:
8000011c: 4020df3b sraw t5,ra,sp
80000120: c0000eb7 lui t4,0xc0000
80000124: 00300193 li gp,3
- 80000128: 57df1863 bne t5,t4,80000698 <fail>
+ 80000128: 61df1863 bne t5,t4,80000738 <fail>
000000008000012c <test_4>:
8000012c: 800000b7 lui ra,0x80000
@@ -99,7 +99,7 @@ Disassembly of section .text.init:
80000134: 4020df3b sraw t5,ra,sp
80000138: ff000eb7 lui t4,0xff000
8000013c: 00400193 li gp,4
- 80000140: 55df1c63 bne t5,t4,80000698 <fail>
+ 80000140: 5fdf1c63 bne t5,t4,80000738 <fail>
0000000080000144 <test_5>:
80000144: 800000b7 lui ra,0x80000
@@ -107,7 +107,7 @@ Disassembly of section .text.init:
8000014c: 4020df3b sraw t5,ra,sp
80000150: fffe0eb7 lui t4,0xfffe0
80000154: 00500193 li gp,5
- 80000158: 55df1063 bne t5,t4,80000698 <fail>
+ 80000158: 5fdf1063 bne t5,t4,80000738 <fail>
000000008000015c <test_6>:
8000015c: 800000b7 lui ra,0x80000
@@ -116,7 +116,7 @@ Disassembly of section .text.init:
80000168: 4020df3b sraw t5,ra,sp
8000016c: fff00e93 li t4,-1
80000170: 00600193 li gp,6
- 80000174: 53df1263 bne t5,t4,80000698 <fail>
+ 80000174: 5ddf1263 bne t5,t4,80000738 <fail>
0000000080000178 <test_7>:
80000178: 800000b7 lui ra,0x80000
@@ -126,7 +126,7 @@ Disassembly of section .text.init:
80000188: 80000eb7 lui t4,0x80000
8000018c: fffe8e9b addiw t4,t4,-1
80000190: 00700193 li gp,7
- 80000194: 51df1263 bne t5,t4,80000698 <fail>
+ 80000194: 5bdf1263 bne t5,t4,80000738 <fail>
0000000080000198 <test_8>:
80000198: 800000b7 lui ra,0x80000
@@ -136,7 +136,7 @@ Disassembly of section .text.init:
800001a8: 40000eb7 lui t4,0x40000
800001ac: fffe8e9b addiw t4,t4,-1
800001b0: 00800193 li gp,8
- 800001b4: 4fdf1263 bne t5,t4,80000698 <fail>
+ 800001b4: 59df1263 bne t5,t4,80000738 <fail>
00000000800001b8 <test_9>:
800001b8: 800000b7 lui ra,0x80000
@@ -146,7 +146,7 @@ Disassembly of section .text.init:
800001c8: 01000eb7 lui t4,0x1000
800001cc: fffe8e9b addiw t4,t4,-1
800001d0: 00900193 li gp,9
- 800001d4: 4ddf1263 bne t5,t4,80000698 <fail>
+ 800001d4: 57df1263 bne t5,t4,80000738 <fail>
00000000800001d8 <test_10>:
800001d8: 800000b7 lui ra,0x80000
@@ -156,7 +156,7 @@ Disassembly of section .text.init:
800001e8: 00020eb7 lui t4,0x20
800001ec: fffe8e9b addiw t4,t4,-1
800001f0: 00a00193 li gp,10
- 800001f4: 4bdf1263 bne t5,t4,80000698 <fail>
+ 800001f4: 55df1263 bne t5,t4,80000738 <fail>
00000000800001f8 <test_11>:
800001f8: 800000b7 lui ra,0x80000
@@ -165,7 +165,7 @@ Disassembly of section .text.init:
80000204: 4020df3b sraw t5,ra,sp
80000208: 00000e93 li t4,0
8000020c: 00b00193 li gp,11
- 80000210: 49df1463 bne t5,t4,80000698 <fail>
+ 80000210: 53df1463 bne t5,t4,80000738 <fail>
0000000080000214 <test_12>:
80000214: 818180b7 lui ra,0x81818
@@ -175,7 +175,7 @@ Disassembly of section .text.init:
80000224: 81818eb7 lui t4,0x81818
80000228: 181e8e9b addiw t4,t4,385
8000022c: 00c00193 li gp,12
- 80000230: 47df1463 bne t5,t4,80000698 <fail>
+ 80000230: 51df1463 bne t5,t4,80000738 <fail>
0000000080000234 <test_13>:
80000234: 818180b7 lui ra,0x81818
@@ -185,7 +185,7 @@ Disassembly of section .text.init:
80000244: c0c0ceb7 lui t4,0xc0c0c
80000248: 0c0e8e9b addiw t4,t4,192
8000024c: 00d00193 li gp,13
- 80000250: 45df1463 bne t5,t4,80000698 <fail>
+ 80000250: 4fdf1463 bne t5,t4,80000738 <fail>
0000000080000254 <test_14>:
80000254: 818180b7 lui ra,0x81818
@@ -195,7 +195,7 @@ Disassembly of section .text.init:
80000264: ff030eb7 lui t4,0xff030
80000268: 303e8e9b addiw t4,t4,771
8000026c: 00e00193 li gp,14
- 80000270: 43df1463 bne t5,t4,80000698 <fail>
+ 80000270: 4ddf1463 bne t5,t4,80000738 <fail>
0000000080000274 <test_15>:
80000274: 818180b7 lui ra,0x81818
@@ -205,7 +205,7 @@ Disassembly of section .text.init:
80000284: fffe0eb7 lui t4,0xfffe0
80000288: 606e8e9b addiw t4,t4,1542
8000028c: 00f00193 li gp,15
- 80000290: 41df1463 bne t5,t4,80000698 <fail>
+ 80000290: 4bdf1463 bne t5,t4,80000738 <fail>
0000000080000294 <test_16>:
80000294: 818180b7 lui ra,0x81818
@@ -214,7 +214,7 @@ Disassembly of section .text.init:
800002a0: 4020df3b sraw t5,ra,sp
800002a4: fff00e93 li t4,-1
800002a8: 01000193 li gp,16
- 800002ac: 3fdf1663 bne t5,t4,80000698 <fail>
+ 800002ac: 49df1663 bne t5,t4,80000738 <fail>
00000000800002b0 <test_17>:
800002b0: 818180b7 lui ra,0x81818
@@ -224,7 +224,7 @@ Disassembly of section .text.init:
800002c0: 81818eb7 lui t4,0x81818
800002c4: 181e8e9b addiw t4,t4,385
800002c8: 01100193 li gp,17
- 800002cc: 3ddf1663 bne t5,t4,80000698 <fail>
+ 800002cc: 47df1663 bne t5,t4,80000738 <fail>
00000000800002d0 <test_18>:
800002d0: 818180b7 lui ra,0x81818
@@ -234,7 +234,7 @@ Disassembly of section .text.init:
800002e0: c0c0ceb7 lui t4,0xc0c0c
800002e4: 0c0e8e9b addiw t4,t4,192
800002e8: 01200193 li gp,18
- 800002ec: 3bdf1663 bne t5,t4,80000698 <fail>
+ 800002ec: 45df1663 bne t5,t4,80000738 <fail>
00000000800002f0 <test_19>:
800002f0: 818180b7 lui ra,0x81818
@@ -244,7 +244,7 @@ Disassembly of section .text.init:
80000300: ff030eb7 lui t4,0xff030
80000304: 303e8e9b addiw t4,t4,771
80000308: 01300193 li gp,19
- 8000030c: 39df1663 bne t5,t4,80000698 <fail>
+ 8000030c: 43df1663 bne t5,t4,80000738 <fail>
0000000080000310 <test_20>:
80000310: 818180b7 lui ra,0x81818
@@ -254,7 +254,7 @@ Disassembly of section .text.init:
80000320: fffe0eb7 lui t4,0xfffe0
80000324: 606e8e9b addiw t4,t4,1542
80000328: 01400193 li gp,20
- 8000032c: 37df1663 bne t5,t4,80000698 <fail>
+ 8000032c: 41df1663 bne t5,t4,80000738 <fail>
0000000080000330 <test_21>:
80000330: 818180b7 lui ra,0x81818
@@ -263,276 +263,340 @@ Disassembly of section .text.init:
8000033c: 4020df3b sraw t5,ra,sp
80000340: fff00e93 li t4,-1
80000344: 01500193 li gp,21
- 80000348: 35df1863 bne t5,t4,80000698 <fail>
-
-000000008000034c <test_22>:
- 8000034c: 800000b7 lui ra,0x80000
- 80000350: 00700113 li sp,7
- 80000354: 4020d0bb sraw ra,ra,sp
- 80000358: ff000eb7 lui t4,0xff000
- 8000035c: 01600193 li gp,22
- 80000360: 33d09c63 bne ra,t4,80000698 <fail>
-
-0000000080000364 <test_23>:
- 80000364: 800000b7 lui ra,0x80000
- 80000368: 00e00113 li sp,14
- 8000036c: 4020d13b sraw sp,ra,sp
- 80000370: fffe0eb7 lui t4,0xfffe0
- 80000374: 01700193 li gp,23
- 80000378: 33d11063 bne sp,t4,80000698 <fail>
-
-000000008000037c <test_24>:
- 8000037c: 00700093 li ra,7
- 80000380: 4010d0bb sraw ra,ra,ra
- 80000384: 00000e93 li t4,0
- 80000388: 01800193 li gp,24
- 8000038c: 31d09663 bne ra,t4,80000698 <fail>
-
-0000000080000390 <test_25>:
- 80000390: 00000213 li tp,0
- 80000394: 800000b7 lui ra,0x80000
- 80000398: 00700113 li sp,7
- 8000039c: 4020df3b sraw t5,ra,sp
- 800003a0: 000f0313 mv t1,t5
- 800003a4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800003a8: 00200293 li t0,2
- 800003ac: fe5214e3 bne tp,t0,80000394 <test_25+0x4>
- 800003b0: ff000eb7 lui t4,0xff000
- 800003b4: 01900193 li gp,25
- 800003b8: 2fd31063 bne t1,t4,80000698 <fail>
-
-00000000800003bc <test_26>:
- 800003bc: 00000213 li tp,0
- 800003c0: 800000b7 lui ra,0x80000
- 800003c4: 00e00113 li sp,14
- 800003c8: 4020df3b sraw t5,ra,sp
- 800003cc: 00000013 nop
- 800003d0: 000f0313 mv t1,t5
- 800003d4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800003d8: 00200293 li t0,2
- 800003dc: fe5212e3 bne tp,t0,800003c0 <test_26+0x4>
- 800003e0: fffe0eb7 lui t4,0xfffe0
- 800003e4: 01a00193 li gp,26
- 800003e8: 2bd31863 bne t1,t4,80000698 <fail>
-
-00000000800003ec <test_27>:
- 800003ec: 00000213 li tp,0
- 800003f0: 800000b7 lui ra,0x80000
- 800003f4: 01f00113 li sp,31
- 800003f8: 4020df3b sraw t5,ra,sp
- 800003fc: 00000013 nop
- 80000400: 00000013 nop
- 80000404: 000f0313 mv t1,t5
- 80000408: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000040c: 00200293 li t0,2
- 80000410: fe5210e3 bne tp,t0,800003f0 <test_27+0x4>
- 80000414: fff00e93 li t4,-1
- 80000418: 01b00193 li gp,27
- 8000041c: 27d31e63 bne t1,t4,80000698 <fail>
-
-0000000080000420 <test_28>:
- 80000420: 00000213 li tp,0
- 80000424: 800000b7 lui ra,0x80000
- 80000428: 00700113 li sp,7
- 8000042c: 4020df3b sraw t5,ra,sp
- 80000430: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000434: 00200293 li t0,2
- 80000438: fe5216e3 bne tp,t0,80000424 <test_28+0x4>
- 8000043c: ff000eb7 lui t4,0xff000
- 80000440: 01c00193 li gp,28
- 80000444: 25df1a63 bne t5,t4,80000698 <fail>
-
-0000000080000448 <test_29>:
- 80000448: 00000213 li tp,0
- 8000044c: 800000b7 lui ra,0x80000
- 80000450: 00e00113 li sp,14
- 80000454: 00000013 nop
- 80000458: 4020df3b sraw t5,ra,sp
- 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000460: 00200293 li t0,2
- 80000464: fe5214e3 bne tp,t0,8000044c <test_29+0x4>
- 80000468: fffe0eb7 lui t4,0xfffe0
- 8000046c: 01d00193 li gp,29
- 80000470: 23df1463 bne t5,t4,80000698 <fail>
-
-0000000080000474 <test_30>:
- 80000474: 00000213 li tp,0
- 80000478: 800000b7 lui ra,0x80000
- 8000047c: 01f00113 li sp,31
- 80000480: 00000013 nop
- 80000484: 00000013 nop
- 80000488: 4020df3b sraw t5,ra,sp
- 8000048c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000490: 00200293 li t0,2
- 80000494: fe5212e3 bne tp,t0,80000478 <test_30+0x4>
- 80000498: fff00e93 li t4,-1
- 8000049c: 01e00193 li gp,30
- 800004a0: 1fdf1c63 bne t5,t4,80000698 <fail>
-
-00000000800004a4 <test_31>:
- 800004a4: 00000213 li tp,0
- 800004a8: 800000b7 lui ra,0x80000
- 800004ac: 00000013 nop
- 800004b0: 00700113 li sp,7
- 800004b4: 4020df3b sraw t5,ra,sp
- 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800004bc: 00200293 li t0,2
- 800004c0: fe5214e3 bne tp,t0,800004a8 <test_31+0x4>
- 800004c4: ff000eb7 lui t4,0xff000
- 800004c8: 01f00193 li gp,31
- 800004cc: 1ddf1663 bne t5,t4,80000698 <fail>
-
-00000000800004d0 <test_32>:
- 800004d0: 00000213 li tp,0
- 800004d4: 800000b7 lui ra,0x80000
- 800004d8: 00000013 nop
- 800004dc: 00e00113 li sp,14
- 800004e0: 00000013 nop
- 800004e4: 4020df3b sraw t5,ra,sp
- 800004e8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800004ec: 00200293 li t0,2
- 800004f0: fe5212e3 bne tp,t0,800004d4 <test_32+0x4>
- 800004f4: fffe0eb7 lui t4,0xfffe0
- 800004f8: 02000193 li gp,32
- 800004fc: 19df1e63 bne t5,t4,80000698 <fail>
-
-0000000080000500 <test_33>:
- 80000500: 00000213 li tp,0
- 80000504: 800000b7 lui ra,0x80000
- 80000508: 00000013 nop
- 8000050c: 00000013 nop
- 80000510: 01f00113 li sp,31
- 80000514: 4020df3b sraw t5,ra,sp
- 80000518: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000051c: 00200293 li t0,2
- 80000520: fe5212e3 bne tp,t0,80000504 <test_33+0x4>
- 80000524: fff00e93 li t4,-1
- 80000528: 02100193 li gp,33
- 8000052c: 17df1663 bne t5,t4,80000698 <fail>
-
-0000000080000530 <test_34>:
- 80000530: 00000213 li tp,0
- 80000534: 00700113 li sp,7
- 80000538: 800000b7 lui ra,0x80000
- 8000053c: 4020df3b sraw t5,ra,sp
- 80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000544: 00200293 li t0,2
- 80000548: fe5216e3 bne tp,t0,80000534 <test_34+0x4>
- 8000054c: ff000eb7 lui t4,0xff000
- 80000550: 02200193 li gp,34
- 80000554: 15df1263 bne t5,t4,80000698 <fail>
-
-0000000080000558 <test_35>:
- 80000558: 00000213 li tp,0
- 8000055c: 00e00113 li sp,14
- 80000560: 800000b7 lui ra,0x80000
- 80000564: 00000013 nop
- 80000568: 4020df3b sraw t5,ra,sp
- 8000056c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000570: 00200293 li t0,2
- 80000574: fe5214e3 bne tp,t0,8000055c <test_35+0x4>
- 80000578: fffe0eb7 lui t4,0xfffe0
- 8000057c: 02300193 li gp,35
- 80000580: 11df1c63 bne t5,t4,80000698 <fail>
-
-0000000080000584 <test_36>:
- 80000584: 00000213 li tp,0
- 80000588: 01f00113 li sp,31
- 8000058c: 800000b7 lui ra,0x80000
- 80000590: 00000013 nop
- 80000594: 00000013 nop
- 80000598: 4020df3b sraw t5,ra,sp
- 8000059c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005a0: 00200293 li t0,2
- 800005a4: fe5212e3 bne tp,t0,80000588 <test_36+0x4>
- 800005a8: fff00e93 li t4,-1
- 800005ac: 02400193 li gp,36
- 800005b0: 0fdf1463 bne t5,t4,80000698 <fail>
-
-00000000800005b4 <test_37>:
- 800005b4: 00000213 li tp,0
- 800005b8: 00700113 li sp,7
- 800005bc: 00000013 nop
- 800005c0: 800000b7 lui ra,0x80000
- 800005c4: 4020df3b sraw t5,ra,sp
- 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005cc: 00200293 li t0,2
- 800005d0: fe5214e3 bne tp,t0,800005b8 <test_37+0x4>
- 800005d4: ff000eb7 lui t4,0xff000
- 800005d8: 02500193 li gp,37
- 800005dc: 0bdf1e63 bne t5,t4,80000698 <fail>
-
-00000000800005e0 <test_38>:
- 800005e0: 00000213 li tp,0
- 800005e4: 00e00113 li sp,14
- 800005e8: 00000013 nop
- 800005ec: 800000b7 lui ra,0x80000
- 800005f0: 00000013 nop
- 800005f4: 4020df3b sraw t5,ra,sp
- 800005f8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005fc: 00200293 li t0,2
- 80000600: fe5212e3 bne tp,t0,800005e4 <test_38+0x4>
- 80000604: fffe0eb7 lui t4,0xfffe0
- 80000608: 02600193 li gp,38
- 8000060c: 09df1663 bne t5,t4,80000698 <fail>
-
-0000000080000610 <test_39>:
- 80000610: 00000213 li tp,0
- 80000614: 01f00113 li sp,31
- 80000618: 00000013 nop
- 8000061c: 00000013 nop
- 80000620: 800000b7 lui ra,0x80000
- 80000624: 4020df3b sraw t5,ra,sp
- 80000628: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000062c: 00200293 li t0,2
- 80000630: fe5212e3 bne tp,t0,80000614 <test_39+0x4>
- 80000634: fff00e93 li t4,-1
- 80000638: 02700193 li gp,39
- 8000063c: 05df1e63 bne t5,t4,80000698 <fail>
-
-0000000080000640 <test_40>:
- 80000640: 00f00093 li ra,15
- 80000644: 4010513b sraw sp,zero,ra
- 80000648: 00000e93 li t4,0
- 8000064c: 02800193 li gp,40
- 80000650: 05d11463 bne sp,t4,80000698 <fail>
-
-0000000080000654 <test_41>:
- 80000654: 02000093 li ra,32
- 80000658: 4000d13b sraw sp,ra,zero
- 8000065c: 02000e93 li t4,32
- 80000660: 02900193 li gp,41
- 80000664: 03d11a63 bne sp,t4,80000698 <fail>
-
-0000000080000668 <test_42>:
- 80000668: 400050bb sraw ra,zero,zero
- 8000066c: 00000e93 li t4,0
- 80000670: 02a00193 li gp,42
- 80000674: 03d09263 bne ra,t4,80000698 <fail>
-
-0000000080000678 <test_43>:
- 80000678: 40000093 li ra,1024
- 8000067c: 00001137 lui sp,0x1
- 80000680: 8001011b addiw sp,sp,-2048
- 80000684: 4020d03b sraw zero,ra,sp
- 80000688: 00000e93 li t4,0
- 8000068c: 02b00193 li gp,43
- 80000690: 01d01463 bne zero,t4,80000698 <fail>
- 80000694: 00301c63 bne zero,gp,800006ac <pass>
-
-0000000080000698 <fail>:
- 80000698: 0ff0000f fence
- 8000069c: 00018063 beqz gp,8000069c <fail+0x4>
- 800006a0: 00119193 slli gp,gp,0x1
- 800006a4: 0011e193 ori gp,gp,1
- 800006a8: 00000073 ecall
-
-00000000800006ac <pass>:
- 800006ac: 0ff0000f fence
- 800006b0: 00100193 li gp,1
- 800006b4: 00000073 ecall
- 800006b8: c0001073 unimp
- 800006bc: 0000 unimp
- 800006be: 0000 unimp
- 800006c0: 0000 unimp
- 800006c2: 0000 unimp
+ 80000348: 3fdf1863 bne t5,t4,80000738 <fail>
+
+000000008000034c <test_44>:
+ 8000034c: fff120b7 lui ra,0xfff12
+ 80000350: 3450809b addiw ra,ra,837
+ 80000354: 00c09093 slli ra,ra,0xc
+ 80000358: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 8000035c: 00000113 li sp,0
+ 80000360: 4020df3b sraw t5,ra,sp
+ 80000364: 12345eb7 lui t4,0x12345
+ 80000368: 678e8e9b addiw t4,t4,1656
+ 8000036c: 02c00193 li gp,44
+ 80000370: 3ddf1463 bne t5,t4,80000738 <fail>
+
+0000000080000374 <test_45>:
+ 80000374: fff120b7 lui ra,0xfff12
+ 80000378: 3450809b addiw ra,ra,837
+ 8000037c: 00c09093 slli ra,ra,0xc
+ 80000380: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 80000384: 00400113 li sp,4
+ 80000388: 4020df3b sraw t5,ra,sp
+ 8000038c: 01234eb7 lui t4,0x1234
+ 80000390: 567e8e9b addiw t4,t4,1383
+ 80000394: 02d00193 li gp,45
+ 80000398: 3bdf1063 bne t5,t4,80000738 <fail>
+
+000000008000039c <test_46>:
+ 8000039c: 000920b7 lui ra,0x92
+ 800003a0: 3450809b addiw ra,ra,837
+ 800003a4: 00c09093 slli ra,ra,0xc
+ 800003a8: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800003ac: 00000113 li sp,0
+ 800003b0: 4020df3b sraw t5,ra,sp
+ 800003b4: 92345eb7 lui t4,0x92345
+ 800003b8: 678e8e9b addiw t4,t4,1656
+ 800003bc: 02e00193 li gp,46
+ 800003c0: 37df1c63 bne t5,t4,80000738 <fail>
+
+00000000800003c4 <test_47>:
+ 800003c4: 000920b7 lui ra,0x92
+ 800003c8: 3450809b addiw ra,ra,837
+ 800003cc: 00c09093 slli ra,ra,0xc
+ 800003d0: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800003d4: 00400113 li sp,4
+ 800003d8: 4020df3b sraw t5,ra,sp
+ 800003dc: f9234eb7 lui t4,0xf9234
+ 800003e0: 567e8e9b addiw t4,t4,1383
+ 800003e4: 02f00193 li gp,47
+ 800003e8: 35df1863 bne t5,t4,80000738 <fail>
+
+00000000800003ec <test_22>:
+ 800003ec: 800000b7 lui ra,0x80000
+ 800003f0: 00700113 li sp,7
+ 800003f4: 4020d0bb sraw ra,ra,sp
+ 800003f8: ff000eb7 lui t4,0xff000
+ 800003fc: 01600193 li gp,22
+ 80000400: 33d09c63 bne ra,t4,80000738 <fail>
+
+0000000080000404 <test_23>:
+ 80000404: 800000b7 lui ra,0x80000
+ 80000408: 00e00113 li sp,14
+ 8000040c: 4020d13b sraw sp,ra,sp
+ 80000410: fffe0eb7 lui t4,0xfffe0
+ 80000414: 01700193 li gp,23
+ 80000418: 33d11063 bne sp,t4,80000738 <fail>
+
+000000008000041c <test_24>:
+ 8000041c: 00700093 li ra,7
+ 80000420: 4010d0bb sraw ra,ra,ra
+ 80000424: 00000e93 li t4,0
+ 80000428: 01800193 li gp,24
+ 8000042c: 31d09663 bne ra,t4,80000738 <fail>
+
+0000000080000430 <test_25>:
+ 80000430: 00000213 li tp,0
+ 80000434: 800000b7 lui ra,0x80000
+ 80000438: 00700113 li sp,7
+ 8000043c: 4020df3b sraw t5,ra,sp
+ 80000440: 000f0313 mv t1,t5
+ 80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000448: 00200293 li t0,2
+ 8000044c: fe5214e3 bne tp,t0,80000434 <test_25+0x4>
+ 80000450: ff000eb7 lui t4,0xff000
+ 80000454: 01900193 li gp,25
+ 80000458: 2fd31063 bne t1,t4,80000738 <fail>
+
+000000008000045c <test_26>:
+ 8000045c: 00000213 li tp,0
+ 80000460: 800000b7 lui ra,0x80000
+ 80000464: 00e00113 li sp,14
+ 80000468: 4020df3b sraw t5,ra,sp
+ 8000046c: 00000013 nop
+ 80000470: 000f0313 mv t1,t5
+ 80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000478: 00200293 li t0,2
+ 8000047c: fe5212e3 bne tp,t0,80000460 <test_26+0x4>
+ 80000480: fffe0eb7 lui t4,0xfffe0
+ 80000484: 01a00193 li gp,26
+ 80000488: 2bd31863 bne t1,t4,80000738 <fail>
+
+000000008000048c <test_27>:
+ 8000048c: 00000213 li tp,0
+ 80000490: 800000b7 lui ra,0x80000
+ 80000494: 01f00113 li sp,31
+ 80000498: 4020df3b sraw t5,ra,sp
+ 8000049c: 00000013 nop
+ 800004a0: 00000013 nop
+ 800004a4: 000f0313 mv t1,t5
+ 800004a8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800004ac: 00200293 li t0,2
+ 800004b0: fe5210e3 bne tp,t0,80000490 <test_27+0x4>
+ 800004b4: fff00e93 li t4,-1
+ 800004b8: 01b00193 li gp,27
+ 800004bc: 27d31e63 bne t1,t4,80000738 <fail>
+
+00000000800004c0 <test_28>:
+ 800004c0: 00000213 li tp,0
+ 800004c4: 800000b7 lui ra,0x80000
+ 800004c8: 00700113 li sp,7
+ 800004cc: 4020df3b sraw t5,ra,sp
+ 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800004d4: 00200293 li t0,2
+ 800004d8: fe5216e3 bne tp,t0,800004c4 <test_28+0x4>
+ 800004dc: ff000eb7 lui t4,0xff000
+ 800004e0: 01c00193 li gp,28
+ 800004e4: 25df1a63 bne t5,t4,80000738 <fail>
+
+00000000800004e8 <test_29>:
+ 800004e8: 00000213 li tp,0
+ 800004ec: 800000b7 lui ra,0x80000
+ 800004f0: 00e00113 li sp,14
+ 800004f4: 00000013 nop
+ 800004f8: 4020df3b sraw t5,ra,sp
+ 800004fc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000500: 00200293 li t0,2
+ 80000504: fe5214e3 bne tp,t0,800004ec <test_29+0x4>
+ 80000508: fffe0eb7 lui t4,0xfffe0
+ 8000050c: 01d00193 li gp,29
+ 80000510: 23df1463 bne t5,t4,80000738 <fail>
+
+0000000080000514 <test_30>:
+ 80000514: 00000213 li tp,0
+ 80000518: 800000b7 lui ra,0x80000
+ 8000051c: 01f00113 li sp,31
+ 80000520: 00000013 nop
+ 80000524: 00000013 nop
+ 80000528: 4020df3b sraw t5,ra,sp
+ 8000052c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000530: 00200293 li t0,2
+ 80000534: fe5212e3 bne tp,t0,80000518 <test_30+0x4>
+ 80000538: fff00e93 li t4,-1
+ 8000053c: 01e00193 li gp,30
+ 80000540: 1fdf1c63 bne t5,t4,80000738 <fail>
+
+0000000080000544 <test_31>:
+ 80000544: 00000213 li tp,0
+ 80000548: 800000b7 lui ra,0x80000
+ 8000054c: 00000013 nop
+ 80000550: 00700113 li sp,7
+ 80000554: 4020df3b sraw t5,ra,sp
+ 80000558: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000055c: 00200293 li t0,2
+ 80000560: fe5214e3 bne tp,t0,80000548 <test_31+0x4>
+ 80000564: ff000eb7 lui t4,0xff000
+ 80000568: 01f00193 li gp,31
+ 8000056c: 1ddf1663 bne t5,t4,80000738 <fail>
+
+0000000080000570 <test_32>:
+ 80000570: 00000213 li tp,0
+ 80000574: 800000b7 lui ra,0x80000
+ 80000578: 00000013 nop
+ 8000057c: 00e00113 li sp,14
+ 80000580: 00000013 nop
+ 80000584: 4020df3b sraw t5,ra,sp
+ 80000588: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000058c: 00200293 li t0,2
+ 80000590: fe5212e3 bne tp,t0,80000574 <test_32+0x4>
+ 80000594: fffe0eb7 lui t4,0xfffe0
+ 80000598: 02000193 li gp,32
+ 8000059c: 19df1e63 bne t5,t4,80000738 <fail>
+
+00000000800005a0 <test_33>:
+ 800005a0: 00000213 li tp,0
+ 800005a4: 800000b7 lui ra,0x80000
+ 800005a8: 00000013 nop
+ 800005ac: 00000013 nop
+ 800005b0: 01f00113 li sp,31
+ 800005b4: 4020df3b sraw t5,ra,sp
+ 800005b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005bc: 00200293 li t0,2
+ 800005c0: fe5212e3 bne tp,t0,800005a4 <test_33+0x4>
+ 800005c4: fff00e93 li t4,-1
+ 800005c8: 02100193 li gp,33
+ 800005cc: 17df1663 bne t5,t4,80000738 <fail>
+
+00000000800005d0 <test_34>:
+ 800005d0: 00000213 li tp,0
+ 800005d4: 00700113 li sp,7
+ 800005d8: 800000b7 lui ra,0x80000
+ 800005dc: 4020df3b sraw t5,ra,sp
+ 800005e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005e4: 00200293 li t0,2
+ 800005e8: fe5216e3 bne tp,t0,800005d4 <test_34+0x4>
+ 800005ec: ff000eb7 lui t4,0xff000
+ 800005f0: 02200193 li gp,34
+ 800005f4: 15df1263 bne t5,t4,80000738 <fail>
+
+00000000800005f8 <test_35>:
+ 800005f8: 00000213 li tp,0
+ 800005fc: 00e00113 li sp,14
+ 80000600: 800000b7 lui ra,0x80000
+ 80000604: 00000013 nop
+ 80000608: 4020df3b sraw t5,ra,sp
+ 8000060c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000610: 00200293 li t0,2
+ 80000614: fe5214e3 bne tp,t0,800005fc <test_35+0x4>
+ 80000618: fffe0eb7 lui t4,0xfffe0
+ 8000061c: 02300193 li gp,35
+ 80000620: 11df1c63 bne t5,t4,80000738 <fail>
+
+0000000080000624 <test_36>:
+ 80000624: 00000213 li tp,0
+ 80000628: 01f00113 li sp,31
+ 8000062c: 800000b7 lui ra,0x80000
+ 80000630: 00000013 nop
+ 80000634: 00000013 nop
+ 80000638: 4020df3b sraw t5,ra,sp
+ 8000063c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000640: 00200293 li t0,2
+ 80000644: fe5212e3 bne tp,t0,80000628 <test_36+0x4>
+ 80000648: fff00e93 li t4,-1
+ 8000064c: 02400193 li gp,36
+ 80000650: 0fdf1463 bne t5,t4,80000738 <fail>
+
+0000000080000654 <test_37>:
+ 80000654: 00000213 li tp,0
+ 80000658: 00700113 li sp,7
+ 8000065c: 00000013 nop
+ 80000660: 800000b7 lui ra,0x80000
+ 80000664: 4020df3b sraw t5,ra,sp
+ 80000668: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000066c: 00200293 li t0,2
+ 80000670: fe5214e3 bne tp,t0,80000658 <test_37+0x4>
+ 80000674: ff000eb7 lui t4,0xff000
+ 80000678: 02500193 li gp,37
+ 8000067c: 0bdf1e63 bne t5,t4,80000738 <fail>
+
+0000000080000680 <test_38>:
+ 80000680: 00000213 li tp,0
+ 80000684: 00e00113 li sp,14
+ 80000688: 00000013 nop
+ 8000068c: 800000b7 lui ra,0x80000
+ 80000690: 00000013 nop
+ 80000694: 4020df3b sraw t5,ra,sp
+ 80000698: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000069c: 00200293 li t0,2
+ 800006a0: fe5212e3 bne tp,t0,80000684 <test_38+0x4>
+ 800006a4: fffe0eb7 lui t4,0xfffe0
+ 800006a8: 02600193 li gp,38
+ 800006ac: 09df1663 bne t5,t4,80000738 <fail>
+
+00000000800006b0 <test_39>:
+ 800006b0: 00000213 li tp,0
+ 800006b4: 01f00113 li sp,31
+ 800006b8: 00000013 nop
+ 800006bc: 00000013 nop
+ 800006c0: 800000b7 lui ra,0x80000
+ 800006c4: 4020df3b sraw t5,ra,sp
+ 800006c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800006cc: 00200293 li t0,2
+ 800006d0: fe5212e3 bne tp,t0,800006b4 <test_39+0x4>
+ 800006d4: fff00e93 li t4,-1
+ 800006d8: 02700193 li gp,39
+ 800006dc: 05df1e63 bne t5,t4,80000738 <fail>
+
+00000000800006e0 <test_40>:
+ 800006e0: 00f00093 li ra,15
+ 800006e4: 4010513b sraw sp,zero,ra
+ 800006e8: 00000e93 li t4,0
+ 800006ec: 02800193 li gp,40
+ 800006f0: 05d11463 bne sp,t4,80000738 <fail>
+
+00000000800006f4 <test_41>:
+ 800006f4: 02000093 li ra,32
+ 800006f8: 4000d13b sraw sp,ra,zero
+ 800006fc: 02000e93 li t4,32
+ 80000700: 02900193 li gp,41
+ 80000704: 03d11a63 bne sp,t4,80000738 <fail>
+
+0000000080000708 <test_42>:
+ 80000708: 400050bb sraw ra,zero,zero
+ 8000070c: 00000e93 li t4,0
+ 80000710: 02a00193 li gp,42
+ 80000714: 03d09263 bne ra,t4,80000738 <fail>
+
+0000000080000718 <test_43>:
+ 80000718: 40000093 li ra,1024
+ 8000071c: 00001137 lui sp,0x1
+ 80000720: 8001011b addiw sp,sp,-2048
+ 80000724: 4020d03b sraw zero,ra,sp
+ 80000728: 00000e93 li t4,0
+ 8000072c: 02b00193 li gp,43
+ 80000730: 01d01463 bne zero,t4,80000738 <fail>
+ 80000734: 00301c63 bne zero,gp,8000074c <pass>
+
+0000000080000738 <fail>:
+ 80000738: 0ff0000f fence
+ 8000073c: 00018063 beqz gp,8000073c <fail+0x4>
+ 80000740: 00119193 slli gp,gp,0x1
+ 80000744: 0011e193 ori gp,gp,1
+ 80000748: 00000073 ecall
+
+000000008000074c <pass>:
+ 8000074c: 0ff0000f fence
+ 80000750: 00100193 li gp,1
+ 80000754: 00000073 ecall
+ 80000758: c0001073 unimp
+ 8000075c: 0000 unimp
+ 8000075e: 0000 unimp
+ 80000760: 0000 unimp
+ 80000762: 0000 unimp
+ 80000764: 0000 unimp
+ 80000766: 0000 unimp
+ 80000768: 0000 unimp
+ 8000076a: 0000 unimp
+ 8000076c: 0000 unimp
+ 8000076e: 0000 unimp
+ 80000770: 0000 unimp
+ 80000772: 0000 unimp
+ 80000774: 0000 unimp
+ 80000776: 0000 unimp
+ 80000778: 0000 unimp
+ 8000077a: 0000 unimp
+ 8000077c: 0000 unimp
+ 8000077e: 0000 unimp
+ 80000780: 0000 unimp
+ 80000782: 0000 unimp
diff --git a/test/riscv-tests/rv64ui-p-sraw.elf b/test/riscv-tests/rv64ui-p-sraw.elf
index 40d2f2c..2b83afc 100644
--- a/test/riscv-tests/rv64ui-p-sraw.elf
+++ b/test/riscv-tests/rv64ui-p-sraw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-srl.elf b/test/riscv-tests/rv64ui-p-srl.elf
index 5abd6a0..1ca2629 100644
--- a/test/riscv-tests/rv64ui-p-srl.elf
+++ b/test/riscv-tests/rv64ui-p-srl.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-srli.elf b/test/riscv-tests/rv64ui-p-srli.elf
index 6e2f794..a8dd4e3 100644
--- a/test/riscv-tests/rv64ui-p-srli.elf
+++ b/test/riscv-tests/rv64ui-p-srli.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-srliw.dump b/test/riscv-tests/rv64ui-p-srliw.dump
index 99581fb..6b15b3e 100644
--- a/test/riscv-tests/rv64ui-p-srliw.dump
+++ b/test/riscv-tests/rv64ui-p-srliw.dump
@@ -82,28 +82,28 @@ Disassembly of section .text.init:
80000100: 0000df1b srliw t5,ra,0x0
80000104: 80000eb7 lui t4,0x80000
80000108: 00200193 li gp,2
- 8000010c: 29df1863 bne t5,t4,8000039c <fail>
+ 8000010c: 33df1063 bne t5,t4,8000042c <fail>
0000000080000110 <test_3>:
80000110: 800000b7 lui ra,0x80000
80000114: 0010df1b srliw t5,ra,0x1
80000118: 40000eb7 lui t4,0x40000
8000011c: 00300193 li gp,3
- 80000120: 27df1e63 bne t5,t4,8000039c <fail>
+ 80000120: 31df1663 bne t5,t4,8000042c <fail>
0000000080000124 <test_4>:
80000124: 800000b7 lui ra,0x80000
80000128: 0070df1b srliw t5,ra,0x7
8000012c: 01000eb7 lui t4,0x1000
80000130: 00400193 li gp,4
- 80000134: 27df1463 bne t5,t4,8000039c <fail>
+ 80000134: 2fdf1c63 bne t5,t4,8000042c <fail>
0000000080000138 <test_5>:
80000138: 800000b7 lui ra,0x80000
8000013c: 00e0df1b srliw t5,ra,0xe
80000140: 00020eb7 lui t4,0x20
80000144: 00500193 li gp,5
- 80000148: 25df1a63 bne t5,t4,8000039c <fail>
+ 80000148: 2fdf1263 bne t5,t4,8000042c <fail>
000000008000014c <test_6>:
8000014c: 800000b7 lui ra,0x80000
@@ -111,14 +111,14 @@ Disassembly of section .text.init:
80000154: 01f0df1b srliw t5,ra,0x1f
80000158: 00100e93 li t4,1
8000015c: 00600193 li gp,6
- 80000160: 23df1e63 bne t5,t4,8000039c <fail>
+ 80000160: 2ddf1663 bne t5,t4,8000042c <fail>
0000000080000164 <test_7>:
80000164: fff00093 li ra,-1
80000168: 0000df1b srliw t5,ra,0x0
8000016c: fff00e93 li t4,-1
80000170: 00700193 li gp,7
- 80000174: 23df1463 bne t5,t4,8000039c <fail>
+ 80000174: 2bdf1c63 bne t5,t4,8000042c <fail>
0000000080000178 <test_8>:
80000178: fff00093 li ra,-1
@@ -126,7 +126,7 @@ Disassembly of section .text.init:
80000180: 80000eb7 lui t4,0x80000
80000184: fffe8e9b addiw t4,t4,-1
80000188: 00800193 li gp,8
- 8000018c: 21df1863 bne t5,t4,8000039c <fail>
+ 8000018c: 2bdf1063 bne t5,t4,8000042c <fail>
0000000080000190 <test_9>:
80000190: fff00093 li ra,-1
@@ -134,7 +134,7 @@ Disassembly of section .text.init:
80000198: 02000eb7 lui t4,0x2000
8000019c: fffe8e9b addiw t4,t4,-1
800001a0: 00900193 li gp,9
- 800001a4: 1fdf1c63 bne t5,t4,8000039c <fail>
+ 800001a4: 29df1463 bne t5,t4,8000042c <fail>
00000000800001a8 <test_10>:
800001a8: fff00093 li ra,-1
@@ -142,14 +142,14 @@ Disassembly of section .text.init:
800001b0: 00040eb7 lui t4,0x40
800001b4: fffe8e9b addiw t4,t4,-1
800001b8: 00a00193 li gp,10
- 800001bc: 1fdf1063 bne t5,t4,8000039c <fail>
+ 800001bc: 27df1863 bne t5,t4,8000042c <fail>
00000000800001c0 <test_11>:
800001c0: fff00093 li ra,-1
800001c4: 01f0df1b srliw t5,ra,0x1f
800001c8: 00100e93 li t4,1
800001cc: 00b00193 li gp,11
- 800001d0: 1ddf1663 bne t5,t4,8000039c <fail>
+ 800001d0: 25df1e63 bne t5,t4,8000042c <fail>
00000000800001d4 <test_12>:
800001d4: 212120b7 lui ra,0x21212
@@ -158,7 +158,7 @@ Disassembly of section .text.init:
800001e0: 21212eb7 lui t4,0x21212
800001e4: 121e8e9b addiw t4,t4,289
800001e8: 00c00193 li gp,12
- 800001ec: 1bdf1863 bne t5,t4,8000039c <fail>
+ 800001ec: 25df1063 bne t5,t4,8000042c <fail>
00000000800001f0 <test_13>:
800001f0: 212120b7 lui ra,0x21212
@@ -167,7 +167,7 @@ Disassembly of section .text.init:
800001fc: 10909eb7 lui t4,0x10909
80000200: 090e8e9b addiw t4,t4,144
80000204: 00d00193 li gp,13
- 80000208: 19df1a63 bne t5,t4,8000039c <fail>
+ 80000208: 23df1263 bne t5,t4,8000042c <fail>
000000008000020c <test_14>:
8000020c: 212120b7 lui ra,0x21212
@@ -176,7 +176,7 @@ Disassembly of section .text.init:
80000218: 00424eb7 lui t4,0x424
8000021c: 242e8e9b addiw t4,t4,578
80000220: 00e00193 li gp,14
- 80000224: 17df1c63 bne t5,t4,8000039c <fail>
+ 80000224: 21df1463 bne t5,t4,8000042c <fail>
0000000080000228 <test_15>:
80000228: 212120b7 lui ra,0x21212
@@ -185,7 +185,7 @@ Disassembly of section .text.init:
80000234: 00008eb7 lui t4,0x8
80000238: 484e8e9b addiw t4,t4,1156
8000023c: 00f00193 li gp,15
- 80000240: 15df1e63 bne t5,t4,8000039c <fail>
+ 80000240: 1fdf1663 bne t5,t4,8000042c <fail>
0000000080000244 <test_16>:
80000244: 212120b7 lui ra,0x21212
@@ -193,117 +193,185 @@ Disassembly of section .text.init:
8000024c: 01f0df1b srliw t5,ra,0x1f
80000250: 00000e93 li t4,0
80000254: 01000193 li gp,16
- 80000258: 15df1263 bne t5,t4,8000039c <fail>
-
-000000008000025c <test_17>:
- 8000025c: 800000b7 lui ra,0x80000
- 80000260: 0070d09b srliw ra,ra,0x7
- 80000264: 01000eb7 lui t4,0x1000
- 80000268: 01100193 li gp,17
- 8000026c: 13d09863 bne ra,t4,8000039c <fail>
-
-0000000080000270 <test_18>:
- 80000270: 00000213 li tp,0
- 80000274: 800000b7 lui ra,0x80000
- 80000278: 0070df1b srliw t5,ra,0x7
- 8000027c: 000f0313 mv t1,t5
- 80000280: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000284: 00200293 li t0,2
- 80000288: fe5216e3 bne tp,t0,80000274 <test_18+0x4>
- 8000028c: 01000eb7 lui t4,0x1000
- 80000290: 01200193 li gp,18
- 80000294: 11d31463 bne t1,t4,8000039c <fail>
-
-0000000080000298 <test_19>:
- 80000298: 00000213 li tp,0
- 8000029c: 800000b7 lui ra,0x80000
- 800002a0: 00e0df1b srliw t5,ra,0xe
- 800002a4: 00000013 nop
- 800002a8: 000f0313 mv t1,t5
- 800002ac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800002b0: 00200293 li t0,2
- 800002b4: fe5214e3 bne tp,t0,8000029c <test_19+0x4>
- 800002b8: 00020eb7 lui t4,0x20
- 800002bc: 01300193 li gp,19
- 800002c0: 0dd31e63 bne t1,t4,8000039c <fail>
-
-00000000800002c4 <test_20>:
- 800002c4: 00000213 li tp,0
- 800002c8: 800000b7 lui ra,0x80000
- 800002cc: 0010809b addiw ra,ra,1
- 800002d0: 01f0df1b srliw t5,ra,0x1f
- 800002d4: 00000013 nop
- 800002d8: 00000013 nop
- 800002dc: 000f0313 mv t1,t5
- 800002e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800002e4: 00200293 li t0,2
- 800002e8: fe5210e3 bne tp,t0,800002c8 <test_20+0x4>
- 800002ec: 00100e93 li t4,1
- 800002f0: 01400193 li gp,20
- 800002f4: 0bd31463 bne t1,t4,8000039c <fail>
-
-00000000800002f8 <test_21>:
- 800002f8: 00000213 li tp,0
- 800002fc: 800000b7 lui ra,0x80000
- 80000300: 0070df1b srliw t5,ra,0x7
- 80000304: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000308: 00200293 li t0,2
- 8000030c: fe5218e3 bne tp,t0,800002fc <test_21+0x4>
- 80000310: 01000eb7 lui t4,0x1000
- 80000314: 01500193 li gp,21
- 80000318: 09df1263 bne t5,t4,8000039c <fail>
-
-000000008000031c <test_22>:
- 8000031c: 00000213 li tp,0
- 80000320: 800000b7 lui ra,0x80000
- 80000324: 00000013 nop
- 80000328: 00e0df1b srliw t5,ra,0xe
- 8000032c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000330: 00200293 li t0,2
- 80000334: fe5216e3 bne tp,t0,80000320 <test_22+0x4>
- 80000338: 00020eb7 lui t4,0x20
- 8000033c: 01600193 li gp,22
- 80000340: 05df1e63 bne t5,t4,8000039c <fail>
-
-0000000080000344 <test_23>:
- 80000344: 00000213 li tp,0
- 80000348: 800000b7 lui ra,0x80000
- 8000034c: 0010809b addiw ra,ra,1
- 80000350: 00000013 nop
- 80000354: 00000013 nop
- 80000358: 01f0df1b srliw t5,ra,0x1f
- 8000035c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000360: 00200293 li t0,2
- 80000364: fe5212e3 bne tp,t0,80000348 <test_23+0x4>
- 80000368: 00100e93 li t4,1
- 8000036c: 01700193 li gp,23
- 80000370: 03df1663 bne t5,t4,8000039c <fail>
-
-0000000080000374 <test_24>:
- 80000374: 01f0509b srliw ra,zero,0x1f
- 80000378: 00000e93 li t4,0
- 8000037c: 01800193 li gp,24
- 80000380: 01d09e63 bne ra,t4,8000039c <fail>
-
-0000000080000384 <test_25>:
- 80000384: 01f00093 li ra,31
- 80000388: 01c0d01b srliw zero,ra,0x1c
- 8000038c: 00000e93 li t4,0
- 80000390: 01900193 li gp,25
- 80000394: 01d01463 bne zero,t4,8000039c <fail>
- 80000398: 00301c63 bne zero,gp,800003b0 <pass>
-
-000000008000039c <fail>:
- 8000039c: 0ff0000f fence
- 800003a0: 00018063 beqz gp,800003a0 <fail+0x4>
- 800003a4: 00119193 slli gp,gp,0x1
- 800003a8: 0011e193 ori gp,gp,1
- 800003ac: 00000073 ecall
-
-00000000800003b0 <pass>:
- 800003b0: 0ff0000f fence
- 800003b4: 00100193 li gp,1
- 800003b8: 00000073 ecall
- 800003bc: c0001073 unimp
- 800003c0: 0000 unimp
- 800003c2: 0000 unimp
+ 80000258: 1ddf1a63 bne t5,t4,8000042c <fail>
+
+000000008000025c <test_44>:
+ 8000025c: fff120b7 lui ra,0xfff12
+ 80000260: 3450809b addiw ra,ra,837
+ 80000264: 00c09093 slli ra,ra,0xc
+ 80000268: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 8000026c: 0000df1b srliw t5,ra,0x0
+ 80000270: 12345eb7 lui t4,0x12345
+ 80000274: 678e8e9b addiw t4,t4,1656
+ 80000278: 02c00193 li gp,44
+ 8000027c: 1bdf1863 bne t5,t4,8000042c <fail>
+
+0000000080000280 <test_45>:
+ 80000280: fff120b7 lui ra,0xfff12
+ 80000284: 3450809b addiw ra,ra,837
+ 80000288: 00c09093 slli ra,ra,0xc
+ 8000028c: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 80000290: 0040df1b srliw t5,ra,0x4
+ 80000294: 01234eb7 lui t4,0x1234
+ 80000298: 567e8e9b addiw t4,t4,1383
+ 8000029c: 02d00193 li gp,45
+ 800002a0: 19df1663 bne t5,t4,8000042c <fail>
+
+00000000800002a4 <test_46>:
+ 800002a4: 000920b7 lui ra,0x92
+ 800002a8: 3450809b addiw ra,ra,837
+ 800002ac: 00c09093 slli ra,ra,0xc
+ 800002b0: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800002b4: 0000df1b srliw t5,ra,0x0
+ 800002b8: 92345eb7 lui t4,0x92345
+ 800002bc: 678e8e9b addiw t4,t4,1656
+ 800002c0: 02e00193 li gp,46
+ 800002c4: 17df1463 bne t5,t4,8000042c <fail>
+
+00000000800002c8 <test_47>:
+ 800002c8: 000920b7 lui ra,0x92
+ 800002cc: 3450809b addiw ra,ra,837
+ 800002d0: 00c09093 slli ra,ra,0xc
+ 800002d4: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800002d8: 0040df1b srliw t5,ra,0x4
+ 800002dc: 09234eb7 lui t4,0x9234
+ 800002e0: 567e8e9b addiw t4,t4,1383
+ 800002e4: 02f00193 li gp,47
+ 800002e8: 15df1263 bne t5,t4,8000042c <fail>
+
+00000000800002ec <test_17>:
+ 800002ec: 800000b7 lui ra,0x80000
+ 800002f0: 0070d09b srliw ra,ra,0x7
+ 800002f4: 01000eb7 lui t4,0x1000
+ 800002f8: 01100193 li gp,17
+ 800002fc: 13d09863 bne ra,t4,8000042c <fail>
+
+0000000080000300 <test_18>:
+ 80000300: 00000213 li tp,0
+ 80000304: 800000b7 lui ra,0x80000
+ 80000308: 0070df1b srliw t5,ra,0x7
+ 8000030c: 000f0313 mv t1,t5
+ 80000310: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000314: 00200293 li t0,2
+ 80000318: fe5216e3 bne tp,t0,80000304 <test_18+0x4>
+ 8000031c: 01000eb7 lui t4,0x1000
+ 80000320: 01200193 li gp,18
+ 80000324: 11d31463 bne t1,t4,8000042c <fail>
+
+0000000080000328 <test_19>:
+ 80000328: 00000213 li tp,0
+ 8000032c: 800000b7 lui ra,0x80000
+ 80000330: 00e0df1b srliw t5,ra,0xe
+ 80000334: 00000013 nop
+ 80000338: 000f0313 mv t1,t5
+ 8000033c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000340: 00200293 li t0,2
+ 80000344: fe5214e3 bne tp,t0,8000032c <test_19+0x4>
+ 80000348: 00020eb7 lui t4,0x20
+ 8000034c: 01300193 li gp,19
+ 80000350: 0dd31e63 bne t1,t4,8000042c <fail>
+
+0000000080000354 <test_20>:
+ 80000354: 00000213 li tp,0
+ 80000358: 800000b7 lui ra,0x80000
+ 8000035c: 0010809b addiw ra,ra,1
+ 80000360: 01f0df1b srliw t5,ra,0x1f
+ 80000364: 00000013 nop
+ 80000368: 00000013 nop
+ 8000036c: 000f0313 mv t1,t5
+ 80000370: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000374: 00200293 li t0,2
+ 80000378: fe5210e3 bne tp,t0,80000358 <test_20+0x4>
+ 8000037c: 00100e93 li t4,1
+ 80000380: 01400193 li gp,20
+ 80000384: 0bd31463 bne t1,t4,8000042c <fail>
+
+0000000080000388 <test_21>:
+ 80000388: 00000213 li tp,0
+ 8000038c: 800000b7 lui ra,0x80000
+ 80000390: 0070df1b srliw t5,ra,0x7
+ 80000394: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000398: 00200293 li t0,2
+ 8000039c: fe5218e3 bne tp,t0,8000038c <test_21+0x4>
+ 800003a0: 01000eb7 lui t4,0x1000
+ 800003a4: 01500193 li gp,21
+ 800003a8: 09df1263 bne t5,t4,8000042c <fail>
+
+00000000800003ac <test_22>:
+ 800003ac: 00000213 li tp,0
+ 800003b0: 800000b7 lui ra,0x80000
+ 800003b4: 00000013 nop
+ 800003b8: 00e0df1b srliw t5,ra,0xe
+ 800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800003c0: 00200293 li t0,2
+ 800003c4: fe5216e3 bne tp,t0,800003b0 <test_22+0x4>
+ 800003c8: 00020eb7 lui t4,0x20
+ 800003cc: 01600193 li gp,22
+ 800003d0: 05df1e63 bne t5,t4,8000042c <fail>
+
+00000000800003d4 <test_23>:
+ 800003d4: 00000213 li tp,0
+ 800003d8: 800000b7 lui ra,0x80000
+ 800003dc: 0010809b addiw ra,ra,1
+ 800003e0: 00000013 nop
+ 800003e4: 00000013 nop
+ 800003e8: 01f0df1b srliw t5,ra,0x1f
+ 800003ec: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800003f0: 00200293 li t0,2
+ 800003f4: fe5212e3 bne tp,t0,800003d8 <test_23+0x4>
+ 800003f8: 00100e93 li t4,1
+ 800003fc: 01700193 li gp,23
+ 80000400: 03df1663 bne t5,t4,8000042c <fail>
+
+0000000080000404 <test_24>:
+ 80000404: 01f0509b srliw ra,zero,0x1f
+ 80000408: 00000e93 li t4,0
+ 8000040c: 01800193 li gp,24
+ 80000410: 01d09e63 bne ra,t4,8000042c <fail>
+
+0000000080000414 <test_25>:
+ 80000414: 01f00093 li ra,31
+ 80000418: 01c0d01b srliw zero,ra,0x1c
+ 8000041c: 00000e93 li t4,0
+ 80000420: 01900193 li gp,25
+ 80000424: 01d01463 bne zero,t4,8000042c <fail>
+ 80000428: 00301c63 bne zero,gp,80000440 <pass>
+
+000000008000042c <fail>:
+ 8000042c: 0ff0000f fence
+ 80000430: 00018063 beqz gp,80000430 <fail+0x4>
+ 80000434: 00119193 slli gp,gp,0x1
+ 80000438: 0011e193 ori gp,gp,1
+ 8000043c: 00000073 ecall
+
+0000000080000440 <pass>:
+ 80000440: 0ff0000f fence
+ 80000444: 00100193 li gp,1
+ 80000448: 00000073 ecall
+ 8000044c: c0001073 unimp
+ 80000450: 0000 unimp
+ 80000452: 0000 unimp
+ 80000454: 0000 unimp
+ 80000456: 0000 unimp
+ 80000458: 0000 unimp
+ 8000045a: 0000 unimp
+ 8000045c: 0000 unimp
+ 8000045e: 0000 unimp
+ 80000460: 0000 unimp
+ 80000462: 0000 unimp
+ 80000464: 0000 unimp
+ 80000466: 0000 unimp
+ 80000468: 0000 unimp
+ 8000046a: 0000 unimp
+ 8000046c: 0000 unimp
+ 8000046e: 0000 unimp
+ 80000470: 0000 unimp
+ 80000472: 0000 unimp
+ 80000474: 0000 unimp
+ 80000476: 0000 unimp
+ 80000478: 0000 unimp
+ 8000047a: 0000 unimp
+ 8000047c: 0000 unimp
+ 8000047e: 0000 unimp
+ 80000480: 0000 unimp
+ 80000482: 0000 unimp
diff --git a/test/riscv-tests/rv64ui-p-srliw.elf b/test/riscv-tests/rv64ui-p-srliw.elf
index 70758a3..452617c 100644
--- a/test/riscv-tests/rv64ui-p-srliw.elf
+++ b/test/riscv-tests/rv64ui-p-srliw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-srlw.dump b/test/riscv-tests/rv64ui-p-srlw.dump
index cf3f837..ca834b7 100644
--- a/test/riscv-tests/rv64ui-p-srlw.dump
+++ b/test/riscv-tests/rv64ui-p-srlw.dump
@@ -83,7 +83,7 @@ Disassembly of section .text.init:
80000104: 0020df3b srlw t5,ra,sp
80000108: 80000eb7 lui t4,0x80000
8000010c: 00200193 li gp,2
- 80000110: 57df1863 bne t5,t4,80000680 <fail>
+ 80000110: 61df1863 bne t5,t4,80000720 <fail>
0000000080000114 <test_3>:
80000114: 800000b7 lui ra,0x80000
@@ -91,7 +91,7 @@ Disassembly of section .text.init:
8000011c: 0020df3b srlw t5,ra,sp
80000120: 40000eb7 lui t4,0x40000
80000124: 00300193 li gp,3
- 80000128: 55df1c63 bne t5,t4,80000680 <fail>
+ 80000128: 5fdf1c63 bne t5,t4,80000720 <fail>
000000008000012c <test_4>:
8000012c: 800000b7 lui ra,0x80000
@@ -99,7 +99,7 @@ Disassembly of section .text.init:
80000134: 0020df3b srlw t5,ra,sp
80000138: 01000eb7 lui t4,0x1000
8000013c: 00400193 li gp,4
- 80000140: 55df1063 bne t5,t4,80000680 <fail>
+ 80000140: 5fdf1063 bne t5,t4,80000720 <fail>
0000000080000144 <test_5>:
80000144: 800000b7 lui ra,0x80000
@@ -107,7 +107,7 @@ Disassembly of section .text.init:
8000014c: 0020df3b srlw t5,ra,sp
80000150: 00020eb7 lui t4,0x20
80000154: 00500193 li gp,5
- 80000158: 53df1463 bne t5,t4,80000680 <fail>
+ 80000158: 5ddf1463 bne t5,t4,80000720 <fail>
000000008000015c <test_6>:
8000015c: 800000b7 lui ra,0x80000
@@ -116,7 +116,7 @@ Disassembly of section .text.init:
80000168: 0020df3b srlw t5,ra,sp
8000016c: 00100e93 li t4,1
80000170: 00600193 li gp,6
- 80000174: 51df1663 bne t5,t4,80000680 <fail>
+ 80000174: 5bdf1663 bne t5,t4,80000720 <fail>
0000000080000178 <test_7>:
80000178: fff00093 li ra,-1
@@ -124,7 +124,7 @@ Disassembly of section .text.init:
80000180: 0020df3b srlw t5,ra,sp
80000184: fff00e93 li t4,-1
80000188: 00700193 li gp,7
- 8000018c: 4fdf1a63 bne t5,t4,80000680 <fail>
+ 8000018c: 59df1a63 bne t5,t4,80000720 <fail>
0000000080000190 <test_8>:
80000190: fff00093 li ra,-1
@@ -133,7 +133,7 @@ Disassembly of section .text.init:
8000019c: 80000eb7 lui t4,0x80000
800001a0: fffe8e9b addiw t4,t4,-1
800001a4: 00800193 li gp,8
- 800001a8: 4ddf1c63 bne t5,t4,80000680 <fail>
+ 800001a8: 57df1c63 bne t5,t4,80000720 <fail>
00000000800001ac <test_9>:
800001ac: fff00093 li ra,-1
@@ -142,7 +142,7 @@ Disassembly of section .text.init:
800001b8: 02000eb7 lui t4,0x2000
800001bc: fffe8e9b addiw t4,t4,-1
800001c0: 00900193 li gp,9
- 800001c4: 4bdf1e63 bne t5,t4,80000680 <fail>
+ 800001c4: 55df1e63 bne t5,t4,80000720 <fail>
00000000800001c8 <test_10>:
800001c8: fff00093 li ra,-1
@@ -151,7 +151,7 @@ Disassembly of section .text.init:
800001d4: 00040eb7 lui t4,0x40
800001d8: fffe8e9b addiw t4,t4,-1
800001dc: 00a00193 li gp,10
- 800001e0: 4bdf1063 bne t5,t4,80000680 <fail>
+ 800001e0: 55df1063 bne t5,t4,80000720 <fail>
00000000800001e4 <test_11>:
800001e4: fff00093 li ra,-1
@@ -159,7 +159,7 @@ Disassembly of section .text.init:
800001ec: 0020df3b srlw t5,ra,sp
800001f0: 00100e93 li t4,1
800001f4: 00b00193 li gp,11
- 800001f8: 49df1463 bne t5,t4,80000680 <fail>
+ 800001f8: 53df1463 bne t5,t4,80000720 <fail>
00000000800001fc <test_12>:
800001fc: 212120b7 lui ra,0x21212
@@ -169,7 +169,7 @@ Disassembly of section .text.init:
8000020c: 21212eb7 lui t4,0x21212
80000210: 121e8e9b addiw t4,t4,289
80000214: 00c00193 li gp,12
- 80000218: 47df1463 bne t5,t4,80000680 <fail>
+ 80000218: 51df1463 bne t5,t4,80000720 <fail>
000000008000021c <test_13>:
8000021c: 212120b7 lui ra,0x21212
@@ -179,7 +179,7 @@ Disassembly of section .text.init:
8000022c: 10909eb7 lui t4,0x10909
80000230: 090e8e9b addiw t4,t4,144
80000234: 00d00193 li gp,13
- 80000238: 45df1463 bne t5,t4,80000680 <fail>
+ 80000238: 4fdf1463 bne t5,t4,80000720 <fail>
000000008000023c <test_14>:
8000023c: 212120b7 lui ra,0x21212
@@ -189,7 +189,7 @@ Disassembly of section .text.init:
8000024c: 00424eb7 lui t4,0x424
80000250: 242e8e9b addiw t4,t4,578
80000254: 00e00193 li gp,14
- 80000258: 43df1463 bne t5,t4,80000680 <fail>
+ 80000258: 4ddf1463 bne t5,t4,80000720 <fail>
000000008000025c <test_15>:
8000025c: 212120b7 lui ra,0x21212
@@ -199,7 +199,7 @@ Disassembly of section .text.init:
8000026c: 00008eb7 lui t4,0x8
80000270: 484e8e9b addiw t4,t4,1156
80000274: 00f00193 li gp,15
- 80000278: 41df1463 bne t5,t4,80000680 <fail>
+ 80000278: 4bdf1463 bne t5,t4,80000720 <fail>
000000008000027c <test_16>:
8000027c: 212120b7 lui ra,0x21212
@@ -208,7 +208,7 @@ Disassembly of section .text.init:
80000288: 0020df3b srlw t5,ra,sp
8000028c: 00000e93 li t4,0
80000290: 01000193 li gp,16
- 80000294: 3fdf1663 bne t5,t4,80000680 <fail>
+ 80000294: 49df1663 bne t5,t4,80000720 <fail>
0000000080000298 <test_17>:
80000298: 212120b7 lui ra,0x21212
@@ -218,7 +218,7 @@ Disassembly of section .text.init:
800002a8: 21212eb7 lui t4,0x21212
800002ac: 121e8e9b addiw t4,t4,289
800002b0: 01100193 li gp,17
- 800002b4: 3ddf1663 bne t5,t4,80000680 <fail>
+ 800002b4: 47df1663 bne t5,t4,80000720 <fail>
00000000800002b8 <test_18>:
800002b8: 212120b7 lui ra,0x21212
@@ -228,7 +228,7 @@ Disassembly of section .text.init:
800002c8: 10909eb7 lui t4,0x10909
800002cc: 090e8e9b addiw t4,t4,144
800002d0: 01200193 li gp,18
- 800002d4: 3bdf1663 bne t5,t4,80000680 <fail>
+ 800002d4: 45df1663 bne t5,t4,80000720 <fail>
00000000800002d8 <test_19>:
800002d8: 212120b7 lui ra,0x21212
@@ -238,7 +238,7 @@ Disassembly of section .text.init:
800002e8: 00424eb7 lui t4,0x424
800002ec: 242e8e9b addiw t4,t4,578
800002f0: 01300193 li gp,19
- 800002f4: 39df1663 bne t5,t4,80000680 <fail>
+ 800002f4: 43df1663 bne t5,t4,80000720 <fail>
00000000800002f8 <test_20>:
800002f8: 212120b7 lui ra,0x21212
@@ -248,7 +248,7 @@ Disassembly of section .text.init:
80000308: 00008eb7 lui t4,0x8
8000030c: 484e8e9b addiw t4,t4,1156
80000310: 01400193 li gp,20
- 80000314: 37df1663 bne t5,t4,80000680 <fail>
+ 80000314: 41df1663 bne t5,t4,80000720 <fail>
0000000080000318 <test_21>:
80000318: 212120b7 lui ra,0x21212
@@ -257,288 +257,320 @@ Disassembly of section .text.init:
80000324: 0020df3b srlw t5,ra,sp
80000328: 00000e93 li t4,0
8000032c: 01500193 li gp,21
- 80000330: 35df1863 bne t5,t4,80000680 <fail>
-
-0000000080000334 <test_22>:
- 80000334: 800000b7 lui ra,0x80000
- 80000338: 00700113 li sp,7
- 8000033c: 0020d0bb srlw ra,ra,sp
- 80000340: 01000eb7 lui t4,0x1000
- 80000344: 01600193 li gp,22
- 80000348: 33d09c63 bne ra,t4,80000680 <fail>
-
-000000008000034c <test_23>:
- 8000034c: 800000b7 lui ra,0x80000
- 80000350: 00e00113 li sp,14
- 80000354: 0020d13b srlw sp,ra,sp
- 80000358: 00020eb7 lui t4,0x20
- 8000035c: 01700193 li gp,23
- 80000360: 33d11063 bne sp,t4,80000680 <fail>
-
-0000000080000364 <test_24>:
- 80000364: 00700093 li ra,7
- 80000368: 0010d0bb srlw ra,ra,ra
- 8000036c: 00000e93 li t4,0
- 80000370: 01800193 li gp,24
- 80000374: 31d09663 bne ra,t4,80000680 <fail>
-
-0000000080000378 <test_25>:
- 80000378: 00000213 li tp,0
- 8000037c: 800000b7 lui ra,0x80000
- 80000380: 00700113 li sp,7
- 80000384: 0020df3b srlw t5,ra,sp
- 80000388: 000f0313 mv t1,t5
- 8000038c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000390: 00200293 li t0,2
- 80000394: fe5214e3 bne tp,t0,8000037c <test_25+0x4>
- 80000398: 01000eb7 lui t4,0x1000
- 8000039c: 01900193 li gp,25
- 800003a0: 2fd31063 bne t1,t4,80000680 <fail>
-
-00000000800003a4 <test_26>:
- 800003a4: 00000213 li tp,0
- 800003a8: 800000b7 lui ra,0x80000
- 800003ac: 00e00113 li sp,14
- 800003b0: 0020df3b srlw t5,ra,sp
- 800003b4: 00000013 nop
- 800003b8: 000f0313 mv t1,t5
- 800003bc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800003c0: 00200293 li t0,2
- 800003c4: fe5212e3 bne tp,t0,800003a8 <test_26+0x4>
- 800003c8: 00020eb7 lui t4,0x20
- 800003cc: 01a00193 li gp,26
- 800003d0: 2bd31863 bne t1,t4,80000680 <fail>
-
-00000000800003d4 <test_27>:
- 800003d4: 00000213 li tp,0
- 800003d8: 800000b7 lui ra,0x80000
- 800003dc: 01f00113 li sp,31
- 800003e0: 0020df3b srlw t5,ra,sp
- 800003e4: 00000013 nop
- 800003e8: 00000013 nop
- 800003ec: 000f0313 mv t1,t5
- 800003f0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800003f4: 00200293 li t0,2
- 800003f8: fe5210e3 bne tp,t0,800003d8 <test_27+0x4>
- 800003fc: 00100e93 li t4,1
- 80000400: 01b00193 li gp,27
- 80000404: 27d31e63 bne t1,t4,80000680 <fail>
-
-0000000080000408 <test_28>:
- 80000408: 00000213 li tp,0
- 8000040c: 800000b7 lui ra,0x80000
- 80000410: 00700113 li sp,7
- 80000414: 0020df3b srlw t5,ra,sp
- 80000418: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000041c: 00200293 li t0,2
- 80000420: fe5216e3 bne tp,t0,8000040c <test_28+0x4>
- 80000424: 01000eb7 lui t4,0x1000
- 80000428: 01c00193 li gp,28
- 8000042c: 25df1a63 bne t5,t4,80000680 <fail>
-
-0000000080000430 <test_29>:
- 80000430: 00000213 li tp,0
- 80000434: 800000b7 lui ra,0x80000
- 80000438: 00e00113 li sp,14
- 8000043c: 00000013 nop
- 80000440: 0020df3b srlw t5,ra,sp
- 80000444: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000448: 00200293 li t0,2
- 8000044c: fe5214e3 bne tp,t0,80000434 <test_29+0x4>
- 80000450: 00020eb7 lui t4,0x20
- 80000454: 01d00193 li gp,29
- 80000458: 23df1463 bne t5,t4,80000680 <fail>
-
-000000008000045c <test_30>:
- 8000045c: 00000213 li tp,0
- 80000460: 800000b7 lui ra,0x80000
- 80000464: 01f00113 li sp,31
- 80000468: 00000013 nop
- 8000046c: 00000013 nop
- 80000470: 0020df3b srlw t5,ra,sp
- 80000474: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000478: 00200293 li t0,2
- 8000047c: fe5212e3 bne tp,t0,80000460 <test_30+0x4>
- 80000480: 00100e93 li t4,1
- 80000484: 01e00193 li gp,30
- 80000488: 1fdf1c63 bne t5,t4,80000680 <fail>
-
-000000008000048c <test_31>:
- 8000048c: 00000213 li tp,0
- 80000490: 800000b7 lui ra,0x80000
- 80000494: 00000013 nop
- 80000498: 00700113 li sp,7
- 8000049c: 0020df3b srlw t5,ra,sp
- 800004a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800004a4: 00200293 li t0,2
- 800004a8: fe5214e3 bne tp,t0,80000490 <test_31+0x4>
- 800004ac: 01000eb7 lui t4,0x1000
- 800004b0: 01f00193 li gp,31
- 800004b4: 1ddf1663 bne t5,t4,80000680 <fail>
-
-00000000800004b8 <test_32>:
- 800004b8: 00000213 li tp,0
- 800004bc: 800000b7 lui ra,0x80000
- 800004c0: 00000013 nop
- 800004c4: 00e00113 li sp,14
- 800004c8: 00000013 nop
- 800004cc: 0020df3b srlw t5,ra,sp
- 800004d0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800004d4: 00200293 li t0,2
- 800004d8: fe5212e3 bne tp,t0,800004bc <test_32+0x4>
- 800004dc: 00020eb7 lui t4,0x20
- 800004e0: 02000193 li gp,32
- 800004e4: 19df1e63 bne t5,t4,80000680 <fail>
-
-00000000800004e8 <test_33>:
- 800004e8: 00000213 li tp,0
- 800004ec: 800000b7 lui ra,0x80000
- 800004f0: 00000013 nop
- 800004f4: 00000013 nop
- 800004f8: 01f00113 li sp,31
- 800004fc: 0020df3b srlw t5,ra,sp
- 80000500: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000504: 00200293 li t0,2
- 80000508: fe5212e3 bne tp,t0,800004ec <test_33+0x4>
- 8000050c: 00100e93 li t4,1
- 80000510: 02100193 li gp,33
- 80000514: 17df1663 bne t5,t4,80000680 <fail>
-
-0000000080000518 <test_34>:
- 80000518: 00000213 li tp,0
- 8000051c: 00700113 li sp,7
- 80000520: 800000b7 lui ra,0x80000
- 80000524: 0020df3b srlw t5,ra,sp
- 80000528: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 8000052c: 00200293 li t0,2
- 80000530: fe5216e3 bne tp,t0,8000051c <test_34+0x4>
- 80000534: 01000eb7 lui t4,0x1000
- 80000538: 02200193 li gp,34
- 8000053c: 15df1263 bne t5,t4,80000680 <fail>
-
-0000000080000540 <test_35>:
- 80000540: 00000213 li tp,0
- 80000544: 00e00113 li sp,14
- 80000548: 800000b7 lui ra,0x80000
- 8000054c: 00000013 nop
- 80000550: 0020df3b srlw t5,ra,sp
- 80000554: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000558: 00200293 li t0,2
- 8000055c: fe5214e3 bne tp,t0,80000544 <test_35+0x4>
- 80000560: 00020eb7 lui t4,0x20
- 80000564: 02300193 li gp,35
- 80000568: 11df1c63 bne t5,t4,80000680 <fail>
-
-000000008000056c <test_36>:
- 8000056c: 00000213 li tp,0
- 80000570: 01f00113 li sp,31
- 80000574: 800000b7 lui ra,0x80000
- 80000578: 00000013 nop
- 8000057c: 00000013 nop
- 80000580: 0020df3b srlw t5,ra,sp
- 80000584: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000588: 00200293 li t0,2
- 8000058c: fe5212e3 bne tp,t0,80000570 <test_36+0x4>
- 80000590: 00100e93 li t4,1
- 80000594: 02400193 li gp,36
- 80000598: 0fdf1463 bne t5,t4,80000680 <fail>
-
-000000008000059c <test_37>:
- 8000059c: 00000213 li tp,0
- 800005a0: 00700113 li sp,7
- 800005a4: 00000013 nop
- 800005a8: 800000b7 lui ra,0x80000
- 800005ac: 0020df3b srlw t5,ra,sp
- 800005b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005b4: 00200293 li t0,2
- 800005b8: fe5214e3 bne tp,t0,800005a0 <test_37+0x4>
- 800005bc: 01000eb7 lui t4,0x1000
- 800005c0: 02500193 li gp,37
- 800005c4: 0bdf1e63 bne t5,t4,80000680 <fail>
-
-00000000800005c8 <test_38>:
- 800005c8: 00000213 li tp,0
- 800005cc: 00e00113 li sp,14
- 800005d0: 00000013 nop
- 800005d4: 800000b7 lui ra,0x80000
- 800005d8: 00000013 nop
- 800005dc: 0020df3b srlw t5,ra,sp
- 800005e0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 800005e4: 00200293 li t0,2
- 800005e8: fe5212e3 bne tp,t0,800005cc <test_38+0x4>
- 800005ec: 00020eb7 lui t4,0x20
- 800005f0: 02600193 li gp,38
- 800005f4: 09df1663 bne t5,t4,80000680 <fail>
-
-00000000800005f8 <test_39>:
- 800005f8: 00000213 li tp,0
- 800005fc: 01f00113 li sp,31
- 80000600: 00000013 nop
- 80000604: 00000013 nop
- 80000608: 800000b7 lui ra,0x80000
- 8000060c: 0020df3b srlw t5,ra,sp
- 80000610: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80000614: 00200293 li t0,2
- 80000618: fe5212e3 bne tp,t0,800005fc <test_39+0x4>
- 8000061c: 00100e93 li t4,1
- 80000620: 02700193 li gp,39
- 80000624: 05df1e63 bne t5,t4,80000680 <fail>
-
-0000000080000628 <test_40>:
- 80000628: 00f00093 li ra,15
- 8000062c: 0010513b srlw sp,zero,ra
- 80000630: 00000e93 li t4,0
- 80000634: 02800193 li gp,40
- 80000638: 05d11463 bne sp,t4,80000680 <fail>
-
-000000008000063c <test_41>:
- 8000063c: 02000093 li ra,32
- 80000640: 0000d13b srlw sp,ra,zero
- 80000644: 02000e93 li t4,32
- 80000648: 02900193 li gp,41
- 8000064c: 03d11a63 bne sp,t4,80000680 <fail>
-
-0000000080000650 <test_42>:
- 80000650: 000050bb srlw ra,zero,zero
- 80000654: 00000e93 li t4,0
- 80000658: 02a00193 li gp,42
- 8000065c: 03d09263 bne ra,t4,80000680 <fail>
-
-0000000080000660 <test_43>:
- 80000660: 40000093 li ra,1024
- 80000664: 00001137 lui sp,0x1
- 80000668: 8001011b addiw sp,sp,-2048
- 8000066c: 0020d03b srlw zero,ra,sp
- 80000670: 00000e93 li t4,0
- 80000674: 02b00193 li gp,43
- 80000678: 01d01463 bne zero,t4,80000680 <fail>
- 8000067c: 00301c63 bne zero,gp,80000694 <pass>
-
-0000000080000680 <fail>:
- 80000680: 0ff0000f fence
- 80000684: 00018063 beqz gp,80000684 <fail+0x4>
- 80000688: 00119193 slli gp,gp,0x1
- 8000068c: 0011e193 ori gp,gp,1
- 80000690: 00000073 ecall
-
-0000000080000694 <pass>:
- 80000694: 0ff0000f fence
- 80000698: 00100193 li gp,1
- 8000069c: 00000073 ecall
- 800006a0: c0001073 unimp
- 800006a4: 0000 unimp
- 800006a6: 0000 unimp
- 800006a8: 0000 unimp
- 800006aa: 0000 unimp
- 800006ac: 0000 unimp
- 800006ae: 0000 unimp
- 800006b0: 0000 unimp
- 800006b2: 0000 unimp
- 800006b4: 0000 unimp
- 800006b6: 0000 unimp
- 800006b8: 0000 unimp
- 800006ba: 0000 unimp
- 800006bc: 0000 unimp
- 800006be: 0000 unimp
- 800006c0: 0000 unimp
- 800006c2: 0000 unimp
+ 80000330: 3fdf1863 bne t5,t4,80000720 <fail>
+
+0000000080000334 <test_44>:
+ 80000334: fff120b7 lui ra,0xfff12
+ 80000338: 3450809b addiw ra,ra,837
+ 8000033c: 00c09093 slli ra,ra,0xc
+ 80000340: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 80000344: 00000113 li sp,0
+ 80000348: 0020df3b srlw t5,ra,sp
+ 8000034c: 12345eb7 lui t4,0x12345
+ 80000350: 678e8e9b addiw t4,t4,1656
+ 80000354: 02c00193 li gp,44
+ 80000358: 3ddf1463 bne t5,t4,80000720 <fail>
+
+000000008000035c <test_45>:
+ 8000035c: fff120b7 lui ra,0xfff12
+ 80000360: 3450809b addiw ra,ra,837
+ 80000364: 00c09093 slli ra,ra,0xc
+ 80000368: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff10678>
+ 8000036c: 00400113 li sp,4
+ 80000370: 0020df3b srlw t5,ra,sp
+ 80000374: 01234eb7 lui t4,0x1234
+ 80000378: 567e8e9b addiw t4,t4,1383
+ 8000037c: 02d00193 li gp,45
+ 80000380: 3bdf1063 bne t5,t4,80000720 <fail>
+
+0000000080000384 <test_46>:
+ 80000384: 000920b7 lui ra,0x92
+ 80000388: 3450809b addiw ra,ra,837
+ 8000038c: 00c09093 slli ra,ra,0xc
+ 80000390: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80000394: 00000113 li sp,0
+ 80000398: 0020df3b srlw t5,ra,sp
+ 8000039c: 92345eb7 lui t4,0x92345
+ 800003a0: 678e8e9b addiw t4,t4,1656
+ 800003a4: 02e00193 li gp,46
+ 800003a8: 37df1c63 bne t5,t4,80000720 <fail>
+
+00000000800003ac <test_47>:
+ 800003ac: 000920b7 lui ra,0x92
+ 800003b0: 3450809b addiw ra,ra,837
+ 800003b4: 00c09093 slli ra,ra,0xc
+ 800003b8: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 800003bc: 00400113 li sp,4
+ 800003c0: 0020df3b srlw t5,ra,sp
+ 800003c4: 09234eb7 lui t4,0x9234
+ 800003c8: 567e8e9b addiw t4,t4,1383
+ 800003cc: 02f00193 li gp,47
+ 800003d0: 35df1863 bne t5,t4,80000720 <fail>
+
+00000000800003d4 <test_22>:
+ 800003d4: 800000b7 lui ra,0x80000
+ 800003d8: 00700113 li sp,7
+ 800003dc: 0020d0bb srlw ra,ra,sp
+ 800003e0: 01000eb7 lui t4,0x1000
+ 800003e4: 01600193 li gp,22
+ 800003e8: 33d09c63 bne ra,t4,80000720 <fail>
+
+00000000800003ec <test_23>:
+ 800003ec: 800000b7 lui ra,0x80000
+ 800003f0: 00e00113 li sp,14
+ 800003f4: 0020d13b srlw sp,ra,sp
+ 800003f8: 00020eb7 lui t4,0x20
+ 800003fc: 01700193 li gp,23
+ 80000400: 33d11063 bne sp,t4,80000720 <fail>
+
+0000000080000404 <test_24>:
+ 80000404: 00700093 li ra,7
+ 80000408: 0010d0bb srlw ra,ra,ra
+ 8000040c: 00000e93 li t4,0
+ 80000410: 01800193 li gp,24
+ 80000414: 31d09663 bne ra,t4,80000720 <fail>
+
+0000000080000418 <test_25>:
+ 80000418: 00000213 li tp,0
+ 8000041c: 800000b7 lui ra,0x80000
+ 80000420: 00700113 li sp,7
+ 80000424: 0020df3b srlw t5,ra,sp
+ 80000428: 000f0313 mv t1,t5
+ 8000042c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000430: 00200293 li t0,2
+ 80000434: fe5214e3 bne tp,t0,8000041c <test_25+0x4>
+ 80000438: 01000eb7 lui t4,0x1000
+ 8000043c: 01900193 li gp,25
+ 80000440: 2fd31063 bne t1,t4,80000720 <fail>
+
+0000000080000444 <test_26>:
+ 80000444: 00000213 li tp,0
+ 80000448: 800000b7 lui ra,0x80000
+ 8000044c: 00e00113 li sp,14
+ 80000450: 0020df3b srlw t5,ra,sp
+ 80000454: 00000013 nop
+ 80000458: 000f0313 mv t1,t5
+ 8000045c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000460: 00200293 li t0,2
+ 80000464: fe5212e3 bne tp,t0,80000448 <test_26+0x4>
+ 80000468: 00020eb7 lui t4,0x20
+ 8000046c: 01a00193 li gp,26
+ 80000470: 2bd31863 bne t1,t4,80000720 <fail>
+
+0000000080000474 <test_27>:
+ 80000474: 00000213 li tp,0
+ 80000478: 800000b7 lui ra,0x80000
+ 8000047c: 01f00113 li sp,31
+ 80000480: 0020df3b srlw t5,ra,sp
+ 80000484: 00000013 nop
+ 80000488: 00000013 nop
+ 8000048c: 000f0313 mv t1,t5
+ 80000490: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000494: 00200293 li t0,2
+ 80000498: fe5210e3 bne tp,t0,80000478 <test_27+0x4>
+ 8000049c: 00100e93 li t4,1
+ 800004a0: 01b00193 li gp,27
+ 800004a4: 27d31e63 bne t1,t4,80000720 <fail>
+
+00000000800004a8 <test_28>:
+ 800004a8: 00000213 li tp,0
+ 800004ac: 800000b7 lui ra,0x80000
+ 800004b0: 00700113 li sp,7
+ 800004b4: 0020df3b srlw t5,ra,sp
+ 800004b8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800004bc: 00200293 li t0,2
+ 800004c0: fe5216e3 bne tp,t0,800004ac <test_28+0x4>
+ 800004c4: 01000eb7 lui t4,0x1000
+ 800004c8: 01c00193 li gp,28
+ 800004cc: 25df1a63 bne t5,t4,80000720 <fail>
+
+00000000800004d0 <test_29>:
+ 800004d0: 00000213 li tp,0
+ 800004d4: 800000b7 lui ra,0x80000
+ 800004d8: 00e00113 li sp,14
+ 800004dc: 00000013 nop
+ 800004e0: 0020df3b srlw t5,ra,sp
+ 800004e4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800004e8: 00200293 li t0,2
+ 800004ec: fe5214e3 bne tp,t0,800004d4 <test_29+0x4>
+ 800004f0: 00020eb7 lui t4,0x20
+ 800004f4: 01d00193 li gp,29
+ 800004f8: 23df1463 bne t5,t4,80000720 <fail>
+
+00000000800004fc <test_30>:
+ 800004fc: 00000213 li tp,0
+ 80000500: 800000b7 lui ra,0x80000
+ 80000504: 01f00113 li sp,31
+ 80000508: 00000013 nop
+ 8000050c: 00000013 nop
+ 80000510: 0020df3b srlw t5,ra,sp
+ 80000514: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000518: 00200293 li t0,2
+ 8000051c: fe5212e3 bne tp,t0,80000500 <test_30+0x4>
+ 80000520: 00100e93 li t4,1
+ 80000524: 01e00193 li gp,30
+ 80000528: 1fdf1c63 bne t5,t4,80000720 <fail>
+
+000000008000052c <test_31>:
+ 8000052c: 00000213 li tp,0
+ 80000530: 800000b7 lui ra,0x80000
+ 80000534: 00000013 nop
+ 80000538: 00700113 li sp,7
+ 8000053c: 0020df3b srlw t5,ra,sp
+ 80000540: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000544: 00200293 li t0,2
+ 80000548: fe5214e3 bne tp,t0,80000530 <test_31+0x4>
+ 8000054c: 01000eb7 lui t4,0x1000
+ 80000550: 01f00193 li gp,31
+ 80000554: 1ddf1663 bne t5,t4,80000720 <fail>
+
+0000000080000558 <test_32>:
+ 80000558: 00000213 li tp,0
+ 8000055c: 800000b7 lui ra,0x80000
+ 80000560: 00000013 nop
+ 80000564: 00e00113 li sp,14
+ 80000568: 00000013 nop
+ 8000056c: 0020df3b srlw t5,ra,sp
+ 80000570: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000574: 00200293 li t0,2
+ 80000578: fe5212e3 bne tp,t0,8000055c <test_32+0x4>
+ 8000057c: 00020eb7 lui t4,0x20
+ 80000580: 02000193 li gp,32
+ 80000584: 19df1e63 bne t5,t4,80000720 <fail>
+
+0000000080000588 <test_33>:
+ 80000588: 00000213 li tp,0
+ 8000058c: 800000b7 lui ra,0x80000
+ 80000590: 00000013 nop
+ 80000594: 00000013 nop
+ 80000598: 01f00113 li sp,31
+ 8000059c: 0020df3b srlw t5,ra,sp
+ 800005a0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005a4: 00200293 li t0,2
+ 800005a8: fe5212e3 bne tp,t0,8000058c <test_33+0x4>
+ 800005ac: 00100e93 li t4,1
+ 800005b0: 02100193 li gp,33
+ 800005b4: 17df1663 bne t5,t4,80000720 <fail>
+
+00000000800005b8 <test_34>:
+ 800005b8: 00000213 li tp,0
+ 800005bc: 00700113 li sp,7
+ 800005c0: 800000b7 lui ra,0x80000
+ 800005c4: 0020df3b srlw t5,ra,sp
+ 800005c8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005cc: 00200293 li t0,2
+ 800005d0: fe5216e3 bne tp,t0,800005bc <test_34+0x4>
+ 800005d4: 01000eb7 lui t4,0x1000
+ 800005d8: 02200193 li gp,34
+ 800005dc: 15df1263 bne t5,t4,80000720 <fail>
+
+00000000800005e0 <test_35>:
+ 800005e0: 00000213 li tp,0
+ 800005e4: 00e00113 li sp,14
+ 800005e8: 800000b7 lui ra,0x80000
+ 800005ec: 00000013 nop
+ 800005f0: 0020df3b srlw t5,ra,sp
+ 800005f4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800005f8: 00200293 li t0,2
+ 800005fc: fe5214e3 bne tp,t0,800005e4 <test_35+0x4>
+ 80000600: 00020eb7 lui t4,0x20
+ 80000604: 02300193 li gp,35
+ 80000608: 11df1c63 bne t5,t4,80000720 <fail>
+
+000000008000060c <test_36>:
+ 8000060c: 00000213 li tp,0
+ 80000610: 01f00113 li sp,31
+ 80000614: 800000b7 lui ra,0x80000
+ 80000618: 00000013 nop
+ 8000061c: 00000013 nop
+ 80000620: 0020df3b srlw t5,ra,sp
+ 80000624: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000628: 00200293 li t0,2
+ 8000062c: fe5212e3 bne tp,t0,80000610 <test_36+0x4>
+ 80000630: 00100e93 li t4,1
+ 80000634: 02400193 li gp,36
+ 80000638: 0fdf1463 bne t5,t4,80000720 <fail>
+
+000000008000063c <test_37>:
+ 8000063c: 00000213 li tp,0
+ 80000640: 00700113 li sp,7
+ 80000644: 00000013 nop
+ 80000648: 800000b7 lui ra,0x80000
+ 8000064c: 0020df3b srlw t5,ra,sp
+ 80000650: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000654: 00200293 li t0,2
+ 80000658: fe5214e3 bne tp,t0,80000640 <test_37+0x4>
+ 8000065c: 01000eb7 lui t4,0x1000
+ 80000660: 02500193 li gp,37
+ 80000664: 0bdf1e63 bne t5,t4,80000720 <fail>
+
+0000000080000668 <test_38>:
+ 80000668: 00000213 li tp,0
+ 8000066c: 00e00113 li sp,14
+ 80000670: 00000013 nop
+ 80000674: 800000b7 lui ra,0x80000
+ 80000678: 00000013 nop
+ 8000067c: 0020df3b srlw t5,ra,sp
+ 80000680: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80000684: 00200293 li t0,2
+ 80000688: fe5212e3 bne tp,t0,8000066c <test_38+0x4>
+ 8000068c: 00020eb7 lui t4,0x20
+ 80000690: 02600193 li gp,38
+ 80000694: 09df1663 bne t5,t4,80000720 <fail>
+
+0000000080000698 <test_39>:
+ 80000698: 00000213 li tp,0
+ 8000069c: 01f00113 li sp,31
+ 800006a0: 00000013 nop
+ 800006a4: 00000013 nop
+ 800006a8: 800000b7 lui ra,0x80000
+ 800006ac: 0020df3b srlw t5,ra,sp
+ 800006b0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 800006b4: 00200293 li t0,2
+ 800006b8: fe5212e3 bne tp,t0,8000069c <test_39+0x4>
+ 800006bc: 00100e93 li t4,1
+ 800006c0: 02700193 li gp,39
+ 800006c4: 05df1e63 bne t5,t4,80000720 <fail>
+
+00000000800006c8 <test_40>:
+ 800006c8: 00f00093 li ra,15
+ 800006cc: 0010513b srlw sp,zero,ra
+ 800006d0: 00000e93 li t4,0
+ 800006d4: 02800193 li gp,40
+ 800006d8: 05d11463 bne sp,t4,80000720 <fail>
+
+00000000800006dc <test_41>:
+ 800006dc: 02000093 li ra,32
+ 800006e0: 0000d13b srlw sp,ra,zero
+ 800006e4: 02000e93 li t4,32
+ 800006e8: 02900193 li gp,41
+ 800006ec: 03d11a63 bne sp,t4,80000720 <fail>
+
+00000000800006f0 <test_42>:
+ 800006f0: 000050bb srlw ra,zero,zero
+ 800006f4: 00000e93 li t4,0
+ 800006f8: 02a00193 li gp,42
+ 800006fc: 03d09263 bne ra,t4,80000720 <fail>
+
+0000000080000700 <test_43>:
+ 80000700: 40000093 li ra,1024
+ 80000704: 00001137 lui sp,0x1
+ 80000708: 8001011b addiw sp,sp,-2048
+ 8000070c: 0020d03b srlw zero,ra,sp
+ 80000710: 00000e93 li t4,0
+ 80000714: 02b00193 li gp,43
+ 80000718: 01d01463 bne zero,t4,80000720 <fail>
+ 8000071c: 00301c63 bne zero,gp,80000734 <pass>
+
+0000000080000720 <fail>:
+ 80000720: 0ff0000f fence
+ 80000724: 00018063 beqz gp,80000724 <fail+0x4>
+ 80000728: 00119193 slli gp,gp,0x1
+ 8000072c: 0011e193 ori gp,gp,1
+ 80000730: 00000073 ecall
+
+0000000080000734 <pass>:
+ 80000734: 0ff0000f fence
+ 80000738: 00100193 li gp,1
+ 8000073c: 00000073 ecall
+ 80000740: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-p-srlw.elf b/test/riscv-tests/rv64ui-p-srlw.elf
index d175802..f1e8743 100644
--- a/test/riscv-tests/rv64ui-p-srlw.elf
+++ b/test/riscv-tests/rv64ui-p-srlw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sub.elf b/test/riscv-tests/rv64ui-p-sub.elf
index ea64efd..d867685 100644
--- a/test/riscv-tests/rv64ui-p-sub.elf
+++ b/test/riscv-tests/rv64ui-p-sub.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-subw.elf b/test/riscv-tests/rv64ui-p-subw.elf
index fd876f5..d6c7c3b 100644
--- a/test/riscv-tests/rv64ui-p-subw.elf
+++ b/test/riscv-tests/rv64ui-p-subw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-sw.elf b/test/riscv-tests/rv64ui-p-sw.elf
index fa60dda..6ca080c 100644
--- a/test/riscv-tests/rv64ui-p-sw.elf
+++ b/test/riscv-tests/rv64ui-p-sw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-xor.elf b/test/riscv-tests/rv64ui-p-xor.elf
index 0466245..7403f05 100644
--- a/test/riscv-tests/rv64ui-p-xor.elf
+++ b/test/riscv-tests/rv64ui-p-xor.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-p-xori.elf b/test/riscv-tests/rv64ui-p-xori.elf
index fe522af..f759bba 100644
--- a/test/riscv-tests/rv64ui-p-xori.elf
+++ b/test/riscv-tests/rv64ui-p-xori.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-add.dump b/test/riscv-tests/rv64ui-v-add.dump
index 8598d2b..4db401c 100644
--- a/test/riscv-tests/rv64ui-v-add.dump
+++ b/test/riscv-tests/rv64ui-v-add.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-add.elf b/test/riscv-tests/rv64ui-v-add.elf
index d60d87a..a16ab12 100644
--- a/test/riscv-tests/rv64ui-v-add.elf
+++ b/test/riscv-tests/rv64ui-v-add.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-addi.dump b/test/riscv-tests/rv64ui-v-addi.dump
index 6c453f7..0035c6b 100644
--- a/test/riscv-tests/rv64ui-v-addi.dump
+++ b/test/riscv-tests/rv64ui-v-addi.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-addi.elf b/test/riscv-tests/rv64ui-v-addi.elf
index 28d8b88..e195ff8 100644
--- a/test/riscv-tests/rv64ui-v-addi.elf
+++ b/test/riscv-tests/rv64ui-v-addi.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-addiw.dump b/test/riscv-tests/rv64ui-v-addiw.dump
index d152915..ee21566 100644
--- a/test/riscv-tests/rv64ui-v-addiw.dump
+++ b/test/riscv-tests/rv64ui-v-addiw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-addiw.elf b/test/riscv-tests/rv64ui-v-addiw.elf
index ddbea56..5261bac 100644
--- a/test/riscv-tests/rv64ui-v-addiw.elf
+++ b/test/riscv-tests/rv64ui-v-addiw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-addw.dump b/test/riscv-tests/rv64ui-v-addw.dump
index 838371b..1d800fb 100644
--- a/test/riscv-tests/rv64ui-v-addw.dump
+++ b/test/riscv-tests/rv64ui-v-addw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-addw.elf b/test/riscv-tests/rv64ui-v-addw.elf
index e78ff7a..48f4fb4 100644
--- a/test/riscv-tests/rv64ui-v-addw.elf
+++ b/test/riscv-tests/rv64ui-v-addw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-and.dump b/test/riscv-tests/rv64ui-v-and.dump
index 063fbeb..c50d58e 100644
--- a/test/riscv-tests/rv64ui-v-and.dump
+++ b/test/riscv-tests/rv64ui-v-and.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-and.elf b/test/riscv-tests/rv64ui-v-and.elf
index 2cf4f37..96c12c7 100644
--- a/test/riscv-tests/rv64ui-v-and.elf
+++ b/test/riscv-tests/rv64ui-v-and.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-andi.dump b/test/riscv-tests/rv64ui-v-andi.dump
index 6503a37..3678d11 100644
--- a/test/riscv-tests/rv64ui-v-andi.dump
+++ b/test/riscv-tests/rv64ui-v-andi.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-andi.elf b/test/riscv-tests/rv64ui-v-andi.elf
index 02ec3d5..93af117 100644
--- a/test/riscv-tests/rv64ui-v-andi.elf
+++ b/test/riscv-tests/rv64ui-v-andi.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-auipc.dump b/test/riscv-tests/rv64ui-v-auipc.dump
index bfa19dd..f453c7a 100644
--- a/test/riscv-tests/rv64ui-v-auipc.dump
+++ b/test/riscv-tests/rv64ui-v-auipc.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-auipc.elf b/test/riscv-tests/rv64ui-v-auipc.elf
index e0fc7d1..106979d 100644
--- a/test/riscv-tests/rv64ui-v-auipc.elf
+++ b/test/riscv-tests/rv64ui-v-auipc.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-beq.dump b/test/riscv-tests/rv64ui-v-beq.dump
index 18ece1e..becc785 100644
--- a/test/riscv-tests/rv64ui-v-beq.dump
+++ b/test/riscv-tests/rv64ui-v-beq.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-beq.elf b/test/riscv-tests/rv64ui-v-beq.elf
index a64100b..66bf4e2 100644
--- a/test/riscv-tests/rv64ui-v-beq.elf
+++ b/test/riscv-tests/rv64ui-v-beq.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-bge.dump b/test/riscv-tests/rv64ui-v-bge.dump
index 5821526..522c557 100644
--- a/test/riscv-tests/rv64ui-v-bge.dump
+++ b/test/riscv-tests/rv64ui-v-bge.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-bge.elf b/test/riscv-tests/rv64ui-v-bge.elf
index 74af9d1..b0b1bc8 100644
--- a/test/riscv-tests/rv64ui-v-bge.elf
+++ b/test/riscv-tests/rv64ui-v-bge.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-bgeu.dump b/test/riscv-tests/rv64ui-v-bgeu.dump
index 9544e42..b5da05e 100644
--- a/test/riscv-tests/rv64ui-v-bgeu.dump
+++ b/test/riscv-tests/rv64ui-v-bgeu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-bgeu.elf b/test/riscv-tests/rv64ui-v-bgeu.elf
index 469b817..bd5fb98 100644
--- a/test/riscv-tests/rv64ui-v-bgeu.elf
+++ b/test/riscv-tests/rv64ui-v-bgeu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-blt.dump b/test/riscv-tests/rv64ui-v-blt.dump
index c0eaae6..3ee4312 100644
--- a/test/riscv-tests/rv64ui-v-blt.dump
+++ b/test/riscv-tests/rv64ui-v-blt.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-blt.elf b/test/riscv-tests/rv64ui-v-blt.elf
index 1232ebb..97914c5 100644
--- a/test/riscv-tests/rv64ui-v-blt.elf
+++ b/test/riscv-tests/rv64ui-v-blt.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-bltu.dump b/test/riscv-tests/rv64ui-v-bltu.dump
index bf46506..639334f 100644
--- a/test/riscv-tests/rv64ui-v-bltu.dump
+++ b/test/riscv-tests/rv64ui-v-bltu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-bltu.elf b/test/riscv-tests/rv64ui-v-bltu.elf
index 4109acc..dcdade3 100644
--- a/test/riscv-tests/rv64ui-v-bltu.elf
+++ b/test/riscv-tests/rv64ui-v-bltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-bne.dump b/test/riscv-tests/rv64ui-v-bne.dump
index 63ec288..8bdd6c9 100644
--- a/test/riscv-tests/rv64ui-v-bne.dump
+++ b/test/riscv-tests/rv64ui-v-bne.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-bne.elf b/test/riscv-tests/rv64ui-v-bne.elf
index fa480bf..a32b4b2 100644
--- a/test/riscv-tests/rv64ui-v-bne.elf
+++ b/test/riscv-tests/rv64ui-v-bne.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-fence_i.dump b/test/riscv-tests/rv64ui-v-fence_i.dump
index b559930..214de7d 100644
--- a/test/riscv-tests/rv64ui-v-fence_i.dump
+++ b/test/riscv-tests/rv64ui-v-fence_i.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-fence_i.elf b/test/riscv-tests/rv64ui-v-fence_i.elf
index 5ab0990..ba4833e 100644
--- a/test/riscv-tests/rv64ui-v-fence_i.elf
+++ b/test/riscv-tests/rv64ui-v-fence_i.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-jal.dump b/test/riscv-tests/rv64ui-v-jal.dump
index a22031d..4633531 100644
--- a/test/riscv-tests/rv64ui-v-jal.dump
+++ b/test/riscv-tests/rv64ui-v-jal.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-jal.elf b/test/riscv-tests/rv64ui-v-jal.elf
index 82efaa8..92dbdd4 100644
--- a/test/riscv-tests/rv64ui-v-jal.elf
+++ b/test/riscv-tests/rv64ui-v-jal.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-jalr.dump b/test/riscv-tests/rv64ui-v-jalr.dump
index 4b43b16..0a8cd7e 100644
--- a/test/riscv-tests/rv64ui-v-jalr.dump
+++ b/test/riscv-tests/rv64ui-v-jalr.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-jalr.elf b/test/riscv-tests/rv64ui-v-jalr.elf
index 8044274..3cf0ec9 100644
--- a/test/riscv-tests/rv64ui-v-jalr.elf
+++ b/test/riscv-tests/rv64ui-v-jalr.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lb.dump b/test/riscv-tests/rv64ui-v-lb.dump
index fc9d680..b27863e 100644
--- a/test/riscv-tests/rv64ui-v-lb.dump
+++ b/test/riscv-tests/rv64ui-v-lb.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lb.elf b/test/riscv-tests/rv64ui-v-lb.elf
index 438c090..d9b430f 100644
--- a/test/riscv-tests/rv64ui-v-lb.elf
+++ b/test/riscv-tests/rv64ui-v-lb.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lbu.dump b/test/riscv-tests/rv64ui-v-lbu.dump
index 8de55fb..806bed3 100644
--- a/test/riscv-tests/rv64ui-v-lbu.dump
+++ b/test/riscv-tests/rv64ui-v-lbu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lbu.elf b/test/riscv-tests/rv64ui-v-lbu.elf
index 2f2023b..c61c962 100644
--- a/test/riscv-tests/rv64ui-v-lbu.elf
+++ b/test/riscv-tests/rv64ui-v-lbu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-ld.dump b/test/riscv-tests/rv64ui-v-ld.dump
index 3d8b640..01f314b 100644
--- a/test/riscv-tests/rv64ui-v-ld.dump
+++ b/test/riscv-tests/rv64ui-v-ld.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-ld.elf b/test/riscv-tests/rv64ui-v-ld.elf
index 2940698..61b4d72 100644
--- a/test/riscv-tests/rv64ui-v-ld.elf
+++ b/test/riscv-tests/rv64ui-v-ld.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lh.dump b/test/riscv-tests/rv64ui-v-lh.dump
index 50f2fdd..8c0065a 100644
--- a/test/riscv-tests/rv64ui-v-lh.dump
+++ b/test/riscv-tests/rv64ui-v-lh.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lh.elf b/test/riscv-tests/rv64ui-v-lh.elf
index 7d91368..d255b7d 100644
--- a/test/riscv-tests/rv64ui-v-lh.elf
+++ b/test/riscv-tests/rv64ui-v-lh.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lhu.dump b/test/riscv-tests/rv64ui-v-lhu.dump
index 45585fe..0f5cd22 100644
--- a/test/riscv-tests/rv64ui-v-lhu.dump
+++ b/test/riscv-tests/rv64ui-v-lhu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lhu.elf b/test/riscv-tests/rv64ui-v-lhu.elf
index af1ebee..4643292 100644
--- a/test/riscv-tests/rv64ui-v-lhu.elf
+++ b/test/riscv-tests/rv64ui-v-lhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lui.dump b/test/riscv-tests/rv64ui-v-lui.dump
index 6de22b6..d0888cc 100644
--- a/test/riscv-tests/rv64ui-v-lui.dump
+++ b/test/riscv-tests/rv64ui-v-lui.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lui.elf b/test/riscv-tests/rv64ui-v-lui.elf
index 3cab950..d87c60a 100644
--- a/test/riscv-tests/rv64ui-v-lui.elf
+++ b/test/riscv-tests/rv64ui-v-lui.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lw.dump b/test/riscv-tests/rv64ui-v-lw.dump
index 4208d27..e279636 100644
--- a/test/riscv-tests/rv64ui-v-lw.dump
+++ b/test/riscv-tests/rv64ui-v-lw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lw.elf b/test/riscv-tests/rv64ui-v-lw.elf
index d73403b..66554f3 100644
--- a/test/riscv-tests/rv64ui-v-lw.elf
+++ b/test/riscv-tests/rv64ui-v-lw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-lwu.dump b/test/riscv-tests/rv64ui-v-lwu.dump
index aa0fb7d..98e3b40 100644
--- a/test/riscv-tests/rv64ui-v-lwu.dump
+++ b/test/riscv-tests/rv64ui-v-lwu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-lwu.elf b/test/riscv-tests/rv64ui-v-lwu.elf
index 2cd5e0b..9cbf932 100644
--- a/test/riscv-tests/rv64ui-v-lwu.elf
+++ b/test/riscv-tests/rv64ui-v-lwu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-or.dump b/test/riscv-tests/rv64ui-v-or.dump
index c5e0940..d4524a1 100644
--- a/test/riscv-tests/rv64ui-v-or.dump
+++ b/test/riscv-tests/rv64ui-v-or.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-or.elf b/test/riscv-tests/rv64ui-v-or.elf
index cf60140..7a5b9a5 100644
--- a/test/riscv-tests/rv64ui-v-or.elf
+++ b/test/riscv-tests/rv64ui-v-or.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-ori.dump b/test/riscv-tests/rv64ui-v-ori.dump
index 9b536c5..3208700 100644
--- a/test/riscv-tests/rv64ui-v-ori.dump
+++ b/test/riscv-tests/rv64ui-v-ori.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-ori.elf b/test/riscv-tests/rv64ui-v-ori.elf
index db589c1..322598b 100644
--- a/test/riscv-tests/rv64ui-v-ori.elf
+++ b/test/riscv-tests/rv64ui-v-ori.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sb.dump b/test/riscv-tests/rv64ui-v-sb.dump
index 52b1645..428b6fd 100644
--- a/test/riscv-tests/rv64ui-v-sb.dump
+++ b/test/riscv-tests/rv64ui-v-sb.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sb.elf b/test/riscv-tests/rv64ui-v-sb.elf
index 72d0ab5..e7ff712 100644
--- a/test/riscv-tests/rv64ui-v-sb.elf
+++ b/test/riscv-tests/rv64ui-v-sb.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sd.dump b/test/riscv-tests/rv64ui-v-sd.dump
index 3fc6298..3cfa466 100644
--- a/test/riscv-tests/rv64ui-v-sd.dump
+++ b/test/riscv-tests/rv64ui-v-sd.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sd.elf b/test/riscv-tests/rv64ui-v-sd.elf
index b1660db..cd5b8b6 100644
--- a/test/riscv-tests/rv64ui-v-sd.elf
+++ b/test/riscv-tests/rv64ui-v-sd.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sh.dump b/test/riscv-tests/rv64ui-v-sh.dump
index 62862d9..1e55b3b 100644
--- a/test/riscv-tests/rv64ui-v-sh.dump
+++ b/test/riscv-tests/rv64ui-v-sh.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sh.elf b/test/riscv-tests/rv64ui-v-sh.elf
index a3a67da..ecf89bf 100644
--- a/test/riscv-tests/rv64ui-v-sh.elf
+++ b/test/riscv-tests/rv64ui-v-sh.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-simple.dump b/test/riscv-tests/rv64ui-v-simple.dump
index 0c3cc1c..9fa39f4 100644
--- a/test/riscv-tests/rv64ui-v-simple.dump
+++ b/test/riscv-tests/rv64ui-v-simple.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-simple.elf b/test/riscv-tests/rv64ui-v-simple.elf
index 04140b0..fe31997 100644
--- a/test/riscv-tests/rv64ui-v-simple.elf
+++ b/test/riscv-tests/rv64ui-v-simple.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sll.dump b/test/riscv-tests/rv64ui-v-sll.dump
index 6b4b00b..7777117 100644
--- a/test/riscv-tests/rv64ui-v-sll.dump
+++ b/test/riscv-tests/rv64ui-v-sll.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sll.elf b/test/riscv-tests/rv64ui-v-sll.elf
index a32b39e..03e6abf 100644
--- a/test/riscv-tests/rv64ui-v-sll.elf
+++ b/test/riscv-tests/rv64ui-v-sll.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-slli.dump b/test/riscv-tests/rv64ui-v-slli.dump
index 2808442..58e5464 100644
--- a/test/riscv-tests/rv64ui-v-slli.dump
+++ b/test/riscv-tests/rv64ui-v-slli.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-slli.elf b/test/riscv-tests/rv64ui-v-slli.elf
index 2b9e327..da828e2 100644
--- a/test/riscv-tests/rv64ui-v-slli.elf
+++ b/test/riscv-tests/rv64ui-v-slli.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-slliw.dump b/test/riscv-tests/rv64ui-v-slliw.dump
index 25efc0d..d70a27c 100644
--- a/test/riscv-tests/rv64ui-v-slliw.dump
+++ b/test/riscv-tests/rv64ui-v-slliw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -410,7 +410,7 @@ Disassembly of section .text:
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00001697 auipc a3,0x1
- 8000245c: 91068693 addi a3,a3,-1776 # 80002d68 <pass+0xc>
+ 8000245c: 9a068693 addi a3,a3,-1632 # 80002df8 <pass+0xc>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00001617 auipc a2,0x1
- 800024b8: 94460613 addi a2,a2,-1724 # 80002df8 <pass+0x9c>
+ 800024b8: 9d460613 addi a2,a2,-1580 # 80002e88 <pass+0x9c>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00001617 auipc a2,0x1
- 80002508: 90c60613 addi a2,a2,-1780 # 80002e10 <pass+0xb4>
+ 80002508: 99c60613 addi a2,a2,-1636 # 80002ea0 <pass+0xb4>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00001697 auipc a3,0x1
- 80002558: 85c68693 addi a3,a3,-1956 # 80002db0 <pass+0x54>
+ 80002558: 8ec68693 addi a3,a3,-1812 # 80002e40 <pass+0x54>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00001697 auipc a3,0x1
- 80002674: 87868693 addi a3,a3,-1928 # 80002ee8 <pass+0x18c>
+ 80002674: 90868693 addi a3,a3,-1784 # 80002f78 <pass+0x18c>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -567,8 +567,8 @@ Disassembly of section .text:
800026bc: 00100513 li a0,1
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
- 800026c8: 00000617 auipc a2,0x0
- 800026cc: 7f860613 addi a2,a2,2040 # 80002ec0 <pass+0x164>
+ 800026c8: 00001617 auipc a2,0x1
+ 800026cc: 88860613 addi a2,a2,-1912 # 80002f50 <pass+0x164>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -641,7 +641,7 @@ Disassembly of section .text:
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
800027ec: 00000697 auipc a3,0x0
- 800027f0: 72c68693 addi a3,a3,1836 # 80002f18 <pass+0x1bc>
+ 800027f0: 7bc68693 addi a3,a3,1980 # 80002fa8 <pass+0x1bc>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00000697 auipc a3,0x0
- 80002840: 64c68693 addi a3,a3,1612 # 80002e88 <pass+0x12c>
+ 80002840: 6dc68693 addi a3,a3,1756 # 80002f18 <pass+0x12c>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00000697 auipc a3,0x0
- 80002878: 5dc68693 addi a3,a3,1500 # 80002e50 <pass+0xf4>
+ 80002878: 66c68693 addi a3,a3,1644 # 80002ee0 <pass+0xf4>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -831,70 +831,70 @@ Disassembly of section .text:
80002acc: 00009f1b slliw t5,ra,0x0
80002ad0: 00100e93 li t4,1
80002ad4: 00200193 li gp,2
- 80002ad8: 27df1a63 bne t5,t4,80002d4c <fail>
+ 80002ad8: 31df1263 bne t5,t4,80002ddc <fail>
0000000080002adc <test_3>:
80002adc: 00100093 li ra,1
80002ae0: 00109f1b slliw t5,ra,0x1
80002ae4: 00200e93 li t4,2
80002ae8: 00300193 li gp,3
- 80002aec: 27df1063 bne t5,t4,80002d4c <fail>
+ 80002aec: 2fdf1863 bne t5,t4,80002ddc <fail>
0000000080002af0 <test_4>:
80002af0: 00100093 li ra,1
80002af4: 00709f1b slliw t5,ra,0x7
80002af8: 08000e93 li t4,128
80002afc: 00400193 li gp,4
- 80002b00: 25df1663 bne t5,t4,80002d4c <fail>
+ 80002b00: 2ddf1e63 bne t5,t4,80002ddc <fail>
0000000080002b04 <test_5>:
80002b04: 00100093 li ra,1
80002b08: 00e09f1b slliw t5,ra,0xe
80002b0c: 00004eb7 lui t4,0x4
80002b10: 00500193 li gp,5
- 80002b14: 23df1c63 bne t5,t4,80002d4c <fail>
+ 80002b14: 2ddf1463 bne t5,t4,80002ddc <fail>
0000000080002b18 <test_6>:
80002b18: 00100093 li ra,1
80002b1c: 01f09f1b slliw t5,ra,0x1f
80002b20: 80000eb7 lui t4,0x80000
80002b24: 00600193 li gp,6
- 80002b28: 23df1263 bne t5,t4,80002d4c <fail>
+ 80002b28: 2bdf1a63 bne t5,t4,80002ddc <fail>
0000000080002b2c <test_7>:
80002b2c: fff00093 li ra,-1
80002b30: 00009f1b slliw t5,ra,0x0
80002b34: fff00e93 li t4,-1
80002b38: 00700193 li gp,7
- 80002b3c: 21df1863 bne t5,t4,80002d4c <fail>
+ 80002b3c: 2bdf1063 bne t5,t4,80002ddc <fail>
0000000080002b40 <test_8>:
80002b40: fff00093 li ra,-1
80002b44: 00109f1b slliw t5,ra,0x1
80002b48: ffe00e93 li t4,-2
80002b4c: 00800193 li gp,8
- 80002b50: 1fdf1e63 bne t5,t4,80002d4c <fail>
+ 80002b50: 29df1663 bne t5,t4,80002ddc <fail>
0000000080002b54 <test_9>:
80002b54: fff00093 li ra,-1
80002b58: 00709f1b slliw t5,ra,0x7
80002b5c: f8000e93 li t4,-128
80002b60: 00900193 li gp,9
- 80002b64: 1fdf1463 bne t5,t4,80002d4c <fail>
+ 80002b64: 27df1c63 bne t5,t4,80002ddc <fail>
0000000080002b68 <test_10>:
80002b68: fff00093 li ra,-1
80002b6c: 00e09f1b slliw t5,ra,0xe
80002b70: ffffceb7 lui t4,0xffffc
80002b74: 00a00193 li gp,10
- 80002b78: 1ddf1a63 bne t5,t4,80002d4c <fail>
+ 80002b78: 27df1263 bne t5,t4,80002ddc <fail>
0000000080002b7c <test_11>:
80002b7c: fff00093 li ra,-1
80002b80: 01f09f1b slliw t5,ra,0x1f
80002b84: 80000eb7 lui t4,0x80000
80002b88: 00b00193 li gp,11
- 80002b8c: 1ddf1063 bne t5,t4,80002d4c <fail>
+ 80002b8c: 25df1863 bne t5,t4,80002ddc <fail>
0000000080002b90 <test_12>:
80002b90: 212120b7 lui ra,0x21212
@@ -903,7 +903,7 @@ Disassembly of section .text:
80002b9c: 21212eb7 lui t4,0x21212
80002ba0: 121e8e9b addiw t4,t4,289
80002ba4: 00c00193 li gp,12
- 80002ba8: 1bdf1263 bne t5,t4,80002d4c <fail>
+ 80002ba8: 23df1a63 bne t5,t4,80002ddc <fail>
0000000080002bac <test_13>:
80002bac: 212120b7 lui ra,0x21212
@@ -912,7 +912,7 @@ Disassembly of section .text:
80002bb8: 42424eb7 lui t4,0x42424
80002bbc: 242e8e9b addiw t4,t4,578
80002bc0: 00d00193 li gp,13
- 80002bc4: 19df1463 bne t5,t4,80002d4c <fail>
+ 80002bc4: 21df1c63 bne t5,t4,80002ddc <fail>
0000000080002bc8 <test_14>:
80002bc8: 212120b7 lui ra,0x21212
@@ -921,7 +921,7 @@ Disassembly of section .text:
80002bd4: 90909eb7 lui t4,0x90909
80002bd8: 080e8e9b addiw t4,t4,128
80002bdc: 00e00193 li gp,14
- 80002be0: 17df1663 bne t5,t4,80002d4c <fail>
+ 80002be0: 1fdf1e63 bne t5,t4,80002ddc <fail>
0000000080002be4 <test_15>:
80002be4: 212120b7 lui ra,0x21212
@@ -929,7 +929,7 @@ Disassembly of section .text:
80002bec: 00e09f1b slliw t5,ra,0xe
80002bf0: 48484eb7 lui t4,0x48484
80002bf4: 00f00193 li gp,15
- 80002bf8: 15df1a63 bne t5,t4,80002d4c <fail>
+ 80002bf8: 1fdf1263 bne t5,t4,80002ddc <fail>
0000000080002bfc <test_16>:
80002bfc: 212120b7 lui ra,0x21212
@@ -937,111 +937,155 @@ Disassembly of section .text:
80002c04: 01f09f1b slliw t5,ra,0x1f
80002c08: 80000eb7 lui t4,0x80000
80002c0c: 01000193 li gp,16
- 80002c10: 13df1e63 bne t5,t4,80002d4c <fail>
+ 80002c10: 1ddf1663 bne t5,t4,80002ddc <fail>
-0000000080002c14 <test_17>:
- 80002c14: 00100093 li ra,1
- 80002c18: 0070909b slliw ra,ra,0x7
- 80002c1c: 08000e93 li t4,128
- 80002c20: 01100193 li gp,17
- 80002c24: 13d09463 bne ra,t4,80002d4c <fail>
+0000000080002c14 <test_44>:
+ 80002c14: fff120b7 lui ra,0xfff12
+ 80002c18: 3450809b addiw ra,ra,837
+ 80002c1c: 00c09093 slli ra,ra,0xc
+ 80002c20: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff0ae88>
+ 80002c24: 00009f1b slliw t5,ra,0x0
+ 80002c28: 12345eb7 lui t4,0x12345
+ 80002c2c: 678e8e9b addiw t4,t4,1656
+ 80002c30: 02c00193 li gp,44
+ 80002c34: 1bdf1463 bne t5,t4,80002ddc <fail>
-0000000080002c28 <test_18>:
- 80002c28: 00000213 li tp,0
- 80002c2c: 00100093 li ra,1
- 80002c30: 00709f1b slliw t5,ra,0x7
- 80002c34: 000f0313 mv t1,t5
- 80002c38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c3c: 00200293 li t0,2
- 80002c40: fe5216e3 bne tp,t0,80002c2c <test_18+0x4>
- 80002c44: 08000e93 li t4,128
- 80002c48: 01200193 li gp,18
- 80002c4c: 11d31063 bne t1,t4,80002d4c <fail>
+0000000080002c38 <test_45>:
+ 80002c38: fff120b7 lui ra,0xfff12
+ 80002c3c: 3450809b addiw ra,ra,837
+ 80002c40: 00c09093 slli ra,ra,0xc
+ 80002c44: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff0ae88>
+ 80002c48: 00409f1b slliw t5,ra,0x4
+ 80002c4c: 23456eb7 lui t4,0x23456
+ 80002c50: 780e8e9b addiw t4,t4,1920
+ 80002c54: 02d00193 li gp,45
+ 80002c58: 19df1263 bne t5,t4,80002ddc <fail>
-0000000080002c50 <test_19>:
- 80002c50: 00000213 li tp,0
- 80002c54: 00100093 li ra,1
- 80002c58: 00e09f1b slliw t5,ra,0xe
- 80002c5c: 00000013 nop
- 80002c60: 000f0313 mv t1,t5
- 80002c64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c68: 00200293 li t0,2
- 80002c6c: fe5214e3 bne tp,t0,80002c54 <test_19+0x4>
- 80002c70: 00004eb7 lui t4,0x4
- 80002c74: 01300193 li gp,19
- 80002c78: 0dd31a63 bne t1,t4,80002d4c <fail>
+0000000080002c5c <test_46>:
+ 80002c5c: 000920b7 lui ra,0x92
+ 80002c60: 3450809b addiw ra,ra,837
+ 80002c64: 00c09093 slli ra,ra,0xc
+ 80002c68: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002c6c: 00009f1b slliw t5,ra,0x0
+ 80002c70: 92345eb7 lui t4,0x92345
+ 80002c74: 678e8e9b addiw t4,t4,1656
+ 80002c78: 02e00193 li gp,46
+ 80002c7c: 17df1063 bne t5,t4,80002ddc <fail>
-0000000080002c7c <test_20>:
- 80002c7c: 00000213 li tp,0
- 80002c80: 00100093 li ra,1
- 80002c84: 01f09f1b slliw t5,ra,0x1f
- 80002c88: 00000013 nop
- 80002c8c: 00000013 nop
- 80002c90: 000f0313 mv t1,t5
- 80002c94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c98: 00200293 li t0,2
- 80002c9c: fe5212e3 bne tp,t0,80002c80 <test_20+0x4>
- 80002ca0: 80000eb7 lui t4,0x80000
- 80002ca4: 01400193 li gp,20
- 80002ca8: 0bd31263 bne t1,t4,80002d4c <fail>
+0000000080002c80 <test_47>:
+ 80002c80: 000990b7 lui ra,0x99
+ 80002c84: 3450809b addiw ra,ra,837
+ 80002c88: 00c09093 slli ra,ra,0xc
+ 80002c8c: 67808093 addi ra,ra,1656 # 99678 <_start-0x7ff66988>
+ 80002c90: 00409f1b slliw t5,ra,0x4
+ 80002c94: 93456eb7 lui t4,0x93456
+ 80002c98: 780e8e9b addiw t4,t4,1920
+ 80002c9c: 02f00193 li gp,47
+ 80002ca0: 13df1e63 bne t5,t4,80002ddc <fail>
-0000000080002cac <test_21>:
- 80002cac: 00000213 li tp,0
- 80002cb0: 00100093 li ra,1
- 80002cb4: 00709f1b slliw t5,ra,0x7
- 80002cb8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002cbc: 00200293 li t0,2
- 80002cc0: fe5218e3 bne tp,t0,80002cb0 <test_21+0x4>
- 80002cc4: 08000e93 li t4,128
- 80002cc8: 01500193 li gp,21
- 80002ccc: 09df1063 bne t5,t4,80002d4c <fail>
+0000000080002ca4 <test_17>:
+ 80002ca4: 00100093 li ra,1
+ 80002ca8: 0070909b slliw ra,ra,0x7
+ 80002cac: 08000e93 li t4,128
+ 80002cb0: 01100193 li gp,17
+ 80002cb4: 13d09463 bne ra,t4,80002ddc <fail>
-0000000080002cd0 <test_22>:
- 80002cd0: 00000213 li tp,0
- 80002cd4: 00100093 li ra,1
- 80002cd8: 00000013 nop
- 80002cdc: 00e09f1b slliw t5,ra,0xe
- 80002ce0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ce4: 00200293 li t0,2
- 80002ce8: fe5216e3 bne tp,t0,80002cd4 <test_22+0x4>
- 80002cec: 00004eb7 lui t4,0x4
- 80002cf0: 01600193 li gp,22
- 80002cf4: 05df1c63 bne t5,t4,80002d4c <fail>
+0000000080002cb8 <test_18>:
+ 80002cb8: 00000213 li tp,0
+ 80002cbc: 00100093 li ra,1
+ 80002cc0: 00709f1b slliw t5,ra,0x7
+ 80002cc4: 000f0313 mv t1,t5
+ 80002cc8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ccc: 00200293 li t0,2
+ 80002cd0: fe5216e3 bne tp,t0,80002cbc <test_18+0x4>
+ 80002cd4: 08000e93 li t4,128
+ 80002cd8: 01200193 li gp,18
+ 80002cdc: 11d31063 bne t1,t4,80002ddc <fail>
-0000000080002cf8 <test_23>:
- 80002cf8: 00000213 li tp,0
- 80002cfc: 00100093 li ra,1
- 80002d00: 00000013 nop
- 80002d04: 00000013 nop
- 80002d08: 01f09f1b slliw t5,ra,0x1f
- 80002d0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d10: 00200293 li t0,2
- 80002d14: fe5214e3 bne tp,t0,80002cfc <test_23+0x4>
- 80002d18: 80000eb7 lui t4,0x80000
- 80002d1c: 01700193 li gp,23
- 80002d20: 03df1663 bne t5,t4,80002d4c <fail>
+0000000080002ce0 <test_19>:
+ 80002ce0: 00000213 li tp,0
+ 80002ce4: 00100093 li ra,1
+ 80002ce8: 00e09f1b slliw t5,ra,0xe
+ 80002cec: 00000013 nop
+ 80002cf0: 000f0313 mv t1,t5
+ 80002cf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002cf8: 00200293 li t0,2
+ 80002cfc: fe5214e3 bne tp,t0,80002ce4 <test_19+0x4>
+ 80002d00: 00004eb7 lui t4,0x4
+ 80002d04: 01300193 li gp,19
+ 80002d08: 0dd31a63 bne t1,t4,80002ddc <fail>
-0000000080002d24 <test_24>:
- 80002d24: 01f0109b slliw ra,zero,0x1f
- 80002d28: 00000e93 li t4,0
- 80002d2c: 01800193 li gp,24
- 80002d30: 01d09e63 bne ra,t4,80002d4c <fail>
+0000000080002d0c <test_20>:
+ 80002d0c: 00000213 li tp,0
+ 80002d10: 00100093 li ra,1
+ 80002d14: 01f09f1b slliw t5,ra,0x1f
+ 80002d18: 00000013 nop
+ 80002d1c: 00000013 nop
+ 80002d20: 000f0313 mv t1,t5
+ 80002d24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d28: 00200293 li t0,2
+ 80002d2c: fe5212e3 bne tp,t0,80002d10 <test_20+0x4>
+ 80002d30: 80000eb7 lui t4,0x80000
+ 80002d34: 01400193 li gp,20
+ 80002d38: 0bd31263 bne t1,t4,80002ddc <fail>
-0000000080002d34 <test_25>:
- 80002d34: 01f00093 li ra,31
- 80002d38: 01c0901b slliw zero,ra,0x1c
- 80002d3c: 00000e93 li t4,0
- 80002d40: 01900193 li gp,25
- 80002d44: 01d01463 bne zero,t4,80002d4c <fail>
- 80002d48: 00301a63 bne zero,gp,80002d5c <pass>
+0000000080002d3c <test_21>:
+ 80002d3c: 00000213 li tp,0
+ 80002d40: 00100093 li ra,1
+ 80002d44: 00709f1b slliw t5,ra,0x7
+ 80002d48: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d4c: 00200293 li t0,2
+ 80002d50: fe5218e3 bne tp,t0,80002d40 <test_21+0x4>
+ 80002d54: 08000e93 li t4,128
+ 80002d58: 01500193 li gp,21
+ 80002d5c: 09df1063 bne t5,t4,80002ddc <fail>
-0000000080002d4c <fail>:
- 80002d4c: 00119513 slli a0,gp,0x1
- 80002d50: 00050063 beqz a0,80002d50 <fail+0x4>
- 80002d54: 00156513 ori a0,a0,1
- 80002d58: 00000073 ecall
+0000000080002d60 <test_22>:
+ 80002d60: 00000213 li tp,0
+ 80002d64: 00100093 li ra,1
+ 80002d68: 00000013 nop
+ 80002d6c: 00e09f1b slliw t5,ra,0xe
+ 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d74: 00200293 li t0,2
+ 80002d78: fe5216e3 bne tp,t0,80002d64 <test_22+0x4>
+ 80002d7c: 00004eb7 lui t4,0x4
+ 80002d80: 01600193 li gp,22
+ 80002d84: 05df1c63 bne t5,t4,80002ddc <fail>
-0000000080002d5c <pass>:
- 80002d5c: 00100513 li a0,1
- 80002d60: 00000073 ecall
- 80002d64: c0001073 unimp
+0000000080002d88 <test_23>:
+ 80002d88: 00000213 li tp,0
+ 80002d8c: 00100093 li ra,1
+ 80002d90: 00000013 nop
+ 80002d94: 00000013 nop
+ 80002d98: 01f09f1b slliw t5,ra,0x1f
+ 80002d9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002da0: 00200293 li t0,2
+ 80002da4: fe5214e3 bne tp,t0,80002d8c <test_23+0x4>
+ 80002da8: 80000eb7 lui t4,0x80000
+ 80002dac: 01700193 li gp,23
+ 80002db0: 03df1663 bne t5,t4,80002ddc <fail>
+
+0000000080002db4 <test_24>:
+ 80002db4: 01f0109b slliw ra,zero,0x1f
+ 80002db8: 00000e93 li t4,0
+ 80002dbc: 01800193 li gp,24
+ 80002dc0: 01d09e63 bne ra,t4,80002ddc <fail>
+
+0000000080002dc4 <test_25>:
+ 80002dc4: 01f00093 li ra,31
+ 80002dc8: 01c0901b slliw zero,ra,0x1c
+ 80002dcc: 00000e93 li t4,0
+ 80002dd0: 01900193 li gp,25
+ 80002dd4: 01d01463 bne zero,t4,80002ddc <fail>
+ 80002dd8: 00301a63 bne zero,gp,80002dec <pass>
+
+0000000080002ddc <fail>:
+ 80002ddc: 00119513 slli a0,gp,0x1
+ 80002de0: 00050063 beqz a0,80002de0 <fail+0x4>
+ 80002de4: 00156513 ori a0,a0,1
+ 80002de8: 00000073 ecall
+
+0000000080002dec <pass>:
+ 80002dec: 00100513 li a0,1
+ 80002df0: 00000073 ecall
+ 80002df4: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-v-slliw.elf b/test/riscv-tests/rv64ui-v-slliw.elf
index dd80f11..80d72b4 100644
--- a/test/riscv-tests/rv64ui-v-slliw.elf
+++ b/test/riscv-tests/rv64ui-v-slliw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sllw.dump b/test/riscv-tests/rv64ui-v-sllw.dump
index e44d86e..6dc6b75 100644
--- a/test/riscv-tests/rv64ui-v-sllw.dump
+++ b/test/riscv-tests/rv64ui-v-sllw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -410,7 +410,7 @@ Disassembly of section .text:
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00001697 auipc a3,0x1
- 8000245c: bf868693 addi a3,a3,-1032 # 80003050 <pass+0xc>
+ 8000245c: c9868693 addi a3,a3,-872 # 800030f0 <pass+0xc>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00001617 auipc a2,0x1
- 800024b8: c2c60613 addi a2,a2,-980 # 800030e0 <pass+0x9c>
+ 800024b8: ccc60613 addi a2,a2,-820 # 80003180 <pass+0x9c>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00001617 auipc a2,0x1
- 80002508: bf460613 addi a2,a2,-1036 # 800030f8 <pass+0xb4>
+ 80002508: c9460613 addi a2,a2,-876 # 80003198 <pass+0xb4>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00001697 auipc a3,0x1
- 80002558: b4468693 addi a3,a3,-1212 # 80003098 <pass+0x54>
+ 80002558: be468693 addi a3,a3,-1052 # 80003138 <pass+0x54>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00001697 auipc a3,0x1
- 80002674: b6068693 addi a3,a3,-1184 # 800031d0 <pass+0x18c>
+ 80002674: c0068693 addi a3,a3,-1024 # 80003270 <pass+0x18c>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -568,7 +568,7 @@ Disassembly of section .text:
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
800026c8: 00001617 auipc a2,0x1
- 800026cc: ae060613 addi a2,a2,-1312 # 800031a8 <pass+0x164>
+ 800026cc: b8060613 addi a2,a2,-1152 # 80003248 <pass+0x164>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -641,7 +641,7 @@ Disassembly of section .text:
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
800027ec: 00001697 auipc a3,0x1
- 800027f0: a1468693 addi a3,a3,-1516 # 80003200 <pass+0x1bc>
+ 800027f0: ab468693 addi a3,a3,-1356 # 800032a0 <pass+0x1bc>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00001697 auipc a3,0x1
- 80002840: 93468693 addi a3,a3,-1740 # 80003170 <pass+0x12c>
+ 80002840: 9d468693 addi a3,a3,-1580 # 80003210 <pass+0x12c>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00001697 auipc a3,0x1
- 80002878: 8c468693 addi a3,a3,-1852 # 80003138 <pass+0xf4>
+ 80002878: 96468693 addi a3,a3,-1692 # 800031d8 <pass+0xf4>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -832,7 +832,7 @@ Disassembly of section .text:
80002ad0: 00209f3b sllw t5,ra,sp
80002ad4: 00100e93 li t4,1
80002ad8: 00200193 li gp,2
- 80002adc: 55df1c63 bne t5,t4,80003034 <fail>
+ 80002adc: 5fdf1c63 bne t5,t4,800030d4 <fail>
0000000080002ae0 <test_3>:
80002ae0: 00100093 li ra,1
@@ -840,7 +840,7 @@ Disassembly of section .text:
80002ae8: 00209f3b sllw t5,ra,sp
80002aec: 00200e93 li t4,2
80002af0: 00300193 li gp,3
- 80002af4: 55df1063 bne t5,t4,80003034 <fail>
+ 80002af4: 5fdf1063 bne t5,t4,800030d4 <fail>
0000000080002af8 <test_4>:
80002af8: 00100093 li ra,1
@@ -848,7 +848,7 @@ Disassembly of section .text:
80002b00: 00209f3b sllw t5,ra,sp
80002b04: 08000e93 li t4,128
80002b08: 00400193 li gp,4
- 80002b0c: 53df1463 bne t5,t4,80003034 <fail>
+ 80002b0c: 5ddf1463 bne t5,t4,800030d4 <fail>
0000000080002b10 <test_5>:
80002b10: 00100093 li ra,1
@@ -856,7 +856,7 @@ Disassembly of section .text:
80002b18: 00209f3b sllw t5,ra,sp
80002b1c: 00004eb7 lui t4,0x4
80002b20: 00500193 li gp,5
- 80002b24: 51df1863 bne t5,t4,80003034 <fail>
+ 80002b24: 5bdf1863 bne t5,t4,800030d4 <fail>
0000000080002b28 <test_6>:
80002b28: 00100093 li ra,1
@@ -864,7 +864,7 @@ Disassembly of section .text:
80002b30: 00209f3b sllw t5,ra,sp
80002b34: 80000eb7 lui t4,0x80000
80002b38: 00600193 li gp,6
- 80002b3c: 4fdf1c63 bne t5,t4,80003034 <fail>
+ 80002b3c: 59df1c63 bne t5,t4,800030d4 <fail>
0000000080002b40 <test_7>:
80002b40: fff00093 li ra,-1
@@ -872,7 +872,7 @@ Disassembly of section .text:
80002b48: 00209f3b sllw t5,ra,sp
80002b4c: fff00e93 li t4,-1
80002b50: 00700193 li gp,7
- 80002b54: 4fdf1063 bne t5,t4,80003034 <fail>
+ 80002b54: 59df1063 bne t5,t4,800030d4 <fail>
0000000080002b58 <test_8>:
80002b58: fff00093 li ra,-1
@@ -880,7 +880,7 @@ Disassembly of section .text:
80002b60: 00209f3b sllw t5,ra,sp
80002b64: ffe00e93 li t4,-2
80002b68: 00800193 li gp,8
- 80002b6c: 4ddf1463 bne t5,t4,80003034 <fail>
+ 80002b6c: 57df1463 bne t5,t4,800030d4 <fail>
0000000080002b70 <test_9>:
80002b70: fff00093 li ra,-1
@@ -888,7 +888,7 @@ Disassembly of section .text:
80002b78: 00209f3b sllw t5,ra,sp
80002b7c: f8000e93 li t4,-128
80002b80: 00900193 li gp,9
- 80002b84: 4bdf1863 bne t5,t4,80003034 <fail>
+ 80002b84: 55df1863 bne t5,t4,800030d4 <fail>
0000000080002b88 <test_10>:
80002b88: fff00093 li ra,-1
@@ -896,7 +896,7 @@ Disassembly of section .text:
80002b90: 00209f3b sllw t5,ra,sp
80002b94: ffffceb7 lui t4,0xffffc
80002b98: 00a00193 li gp,10
- 80002b9c: 49df1c63 bne t5,t4,80003034 <fail>
+ 80002b9c: 53df1c63 bne t5,t4,800030d4 <fail>
0000000080002ba0 <test_11>:
80002ba0: fff00093 li ra,-1
@@ -904,7 +904,7 @@ Disassembly of section .text:
80002ba8: 00209f3b sllw t5,ra,sp
80002bac: 80000eb7 lui t4,0x80000
80002bb0: 00b00193 li gp,11
- 80002bb4: 49df1063 bne t5,t4,80003034 <fail>
+ 80002bb4: 53df1063 bne t5,t4,800030d4 <fail>
0000000080002bb8 <test_12>:
80002bb8: 212120b7 lui ra,0x21212
@@ -914,7 +914,7 @@ Disassembly of section .text:
80002bc8: 21212eb7 lui t4,0x21212
80002bcc: 121e8e9b addiw t4,t4,289
80002bd0: 00c00193 li gp,12
- 80002bd4: 47df1063 bne t5,t4,80003034 <fail>
+ 80002bd4: 51df1063 bne t5,t4,800030d4 <fail>
0000000080002bd8 <test_13>:
80002bd8: 212120b7 lui ra,0x21212
@@ -924,7 +924,7 @@ Disassembly of section .text:
80002be8: 42424eb7 lui t4,0x42424
80002bec: 242e8e9b addiw t4,t4,578
80002bf0: 00d00193 li gp,13
- 80002bf4: 45df1063 bne t5,t4,80003034 <fail>
+ 80002bf4: 4fdf1063 bne t5,t4,800030d4 <fail>
0000000080002bf8 <test_14>:
80002bf8: 212120b7 lui ra,0x21212
@@ -934,7 +934,7 @@ Disassembly of section .text:
80002c08: 90909eb7 lui t4,0x90909
80002c0c: 080e8e9b addiw t4,t4,128
80002c10: 00e00193 li gp,14
- 80002c14: 43df1063 bne t5,t4,80003034 <fail>
+ 80002c14: 4ddf1063 bne t5,t4,800030d4 <fail>
0000000080002c18 <test_15>:
80002c18: 212120b7 lui ra,0x21212
@@ -943,7 +943,7 @@ Disassembly of section .text:
80002c24: 00209f3b sllw t5,ra,sp
80002c28: 48484eb7 lui t4,0x48484
80002c2c: 00f00193 li gp,15
- 80002c30: 41df1263 bne t5,t4,80003034 <fail>
+ 80002c30: 4bdf1263 bne t5,t4,800030d4 <fail>
0000000080002c34 <test_16>:
80002c34: 212120b7 lui ra,0x21212
@@ -952,7 +952,7 @@ Disassembly of section .text:
80002c40: 00209f3b sllw t5,ra,sp
80002c44: 80000eb7 lui t4,0x80000
80002c48: 01000193 li gp,16
- 80002c4c: 3fdf1463 bne t5,t4,80003034 <fail>
+ 80002c4c: 49df1463 bne t5,t4,800030d4 <fail>
0000000080002c50 <test_17>:
80002c50: 212120b7 lui ra,0x21212
@@ -962,7 +962,7 @@ Disassembly of section .text:
80002c60: 21212eb7 lui t4,0x21212
80002c64: 121e8e9b addiw t4,t4,289
80002c68: 01100193 li gp,17
- 80002c6c: 3ddf1463 bne t5,t4,80003034 <fail>
+ 80002c6c: 47df1463 bne t5,t4,800030d4 <fail>
0000000080002c70 <test_18>:
80002c70: 212120b7 lui ra,0x21212
@@ -972,7 +972,7 @@ Disassembly of section .text:
80002c80: 42424eb7 lui t4,0x42424
80002c84: 242e8e9b addiw t4,t4,578
80002c88: 01200193 li gp,18
- 80002c8c: 3bdf1463 bne t5,t4,80003034 <fail>
+ 80002c8c: 45df1463 bne t5,t4,800030d4 <fail>
0000000080002c90 <test_19>:
80002c90: 212120b7 lui ra,0x21212
@@ -982,7 +982,7 @@ Disassembly of section .text:
80002ca0: 90909eb7 lui t4,0x90909
80002ca4: 080e8e9b addiw t4,t4,128
80002ca8: 01300193 li gp,19
- 80002cac: 39df1463 bne t5,t4,80003034 <fail>
+ 80002cac: 43df1463 bne t5,t4,800030d4 <fail>
0000000080002cb0 <test_20>:
80002cb0: 212120b7 lui ra,0x21212
@@ -991,7 +991,7 @@ Disassembly of section .text:
80002cbc: 00209f3b sllw t5,ra,sp
80002cc0: 48484eb7 lui t4,0x48484
80002cc4: 01400193 li gp,20
- 80002cc8: 37df1663 bne t5,t4,80003034 <fail>
+ 80002cc8: 41df1663 bne t5,t4,800030d4 <fail>
0000000080002ccc <test_21>:
80002ccc: 212120b7 lui ra,0x21212
@@ -1000,270 +1000,318 @@ Disassembly of section .text:
80002cd8: 00209f3b sllw t5,ra,sp
80002cdc: 80000eb7 lui t4,0x80000
80002ce0: 01500193 li gp,21
- 80002ce4: 35df1863 bne t5,t4,80003034 <fail>
-
-0000000080002ce8 <test_22>:
- 80002ce8: 00100093 li ra,1
- 80002cec: 00700113 li sp,7
- 80002cf0: 002090bb sllw ra,ra,sp
- 80002cf4: 08000e93 li t4,128
- 80002cf8: 01600193 li gp,22
- 80002cfc: 33d09c63 bne ra,t4,80003034 <fail>
-
-0000000080002d00 <test_23>:
- 80002d00: 00100093 li ra,1
- 80002d04: 00e00113 li sp,14
- 80002d08: 0020913b sllw sp,ra,sp
- 80002d0c: 00004eb7 lui t4,0x4
- 80002d10: 01700193 li gp,23
- 80002d14: 33d11063 bne sp,t4,80003034 <fail>
-
-0000000080002d18 <test_24>:
- 80002d18: 00300093 li ra,3
- 80002d1c: 001090bb sllw ra,ra,ra
- 80002d20: 01800e93 li t4,24
- 80002d24: 01800193 li gp,24
- 80002d28: 31d09663 bne ra,t4,80003034 <fail>
-
-0000000080002d2c <test_25>:
- 80002d2c: 00000213 li tp,0
- 80002d30: 00100093 li ra,1
- 80002d34: 00700113 li sp,7
- 80002d38: 00209f3b sllw t5,ra,sp
- 80002d3c: 000f0313 mv t1,t5
- 80002d40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d44: 00200293 li t0,2
- 80002d48: fe5214e3 bne tp,t0,80002d30 <test_25+0x4>
- 80002d4c: 08000e93 li t4,128
- 80002d50: 01900193 li gp,25
- 80002d54: 2fd31063 bne t1,t4,80003034 <fail>
-
-0000000080002d58 <test_26>:
- 80002d58: 00000213 li tp,0
- 80002d5c: 00100093 li ra,1
- 80002d60: 00e00113 li sp,14
- 80002d64: 00209f3b sllw t5,ra,sp
- 80002d68: 00000013 nop
- 80002d6c: 000f0313 mv t1,t5
- 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d74: 00200293 li t0,2
- 80002d78: fe5212e3 bne tp,t0,80002d5c <test_26+0x4>
- 80002d7c: 00004eb7 lui t4,0x4
- 80002d80: 01a00193 li gp,26
- 80002d84: 2bd31863 bne t1,t4,80003034 <fail>
-
-0000000080002d88 <test_27>:
- 80002d88: 00000213 li tp,0
- 80002d8c: 00100093 li ra,1
- 80002d90: 01f00113 li sp,31
- 80002d94: 00209f3b sllw t5,ra,sp
- 80002d98: 00000013 nop
- 80002d9c: 00000013 nop
- 80002da0: 000f0313 mv t1,t5
- 80002da4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002da8: 00200293 li t0,2
- 80002dac: fe5210e3 bne tp,t0,80002d8c <test_27+0x4>
- 80002db0: 80000eb7 lui t4,0x80000
- 80002db4: 01b00193 li gp,27
- 80002db8: 27d31e63 bne t1,t4,80003034 <fail>
-
-0000000080002dbc <test_28>:
- 80002dbc: 00000213 li tp,0
- 80002dc0: 00100093 li ra,1
- 80002dc4: 00700113 li sp,7
- 80002dc8: 00209f3b sllw t5,ra,sp
- 80002dcc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002dd0: 00200293 li t0,2
- 80002dd4: fe5216e3 bne tp,t0,80002dc0 <test_28+0x4>
- 80002dd8: 08000e93 li t4,128
- 80002ddc: 01c00193 li gp,28
- 80002de0: 25df1a63 bne t5,t4,80003034 <fail>
-
-0000000080002de4 <test_29>:
- 80002de4: 00000213 li tp,0
- 80002de8: 00100093 li ra,1
- 80002dec: 00e00113 li sp,14
- 80002df0: 00000013 nop
- 80002df4: 00209f3b sllw t5,ra,sp
- 80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002dfc: 00200293 li t0,2
- 80002e00: fe5214e3 bne tp,t0,80002de8 <test_29+0x4>
- 80002e04: 00004eb7 lui t4,0x4
- 80002e08: 01d00193 li gp,29
- 80002e0c: 23df1463 bne t5,t4,80003034 <fail>
-
-0000000080002e10 <test_30>:
- 80002e10: 00000213 li tp,0
- 80002e14: 00100093 li ra,1
- 80002e18: 01f00113 li sp,31
- 80002e1c: 00000013 nop
- 80002e20: 00000013 nop
- 80002e24: 00209f3b sllw t5,ra,sp
- 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e2c: 00200293 li t0,2
- 80002e30: fe5212e3 bne tp,t0,80002e14 <test_30+0x4>
- 80002e34: 80000eb7 lui t4,0x80000
- 80002e38: 01e00193 li gp,30
- 80002e3c: 1fdf1c63 bne t5,t4,80003034 <fail>
-
-0000000080002e40 <test_31>:
- 80002e40: 00000213 li tp,0
- 80002e44: 00100093 li ra,1
- 80002e48: 00000013 nop
- 80002e4c: 00700113 li sp,7
- 80002e50: 00209f3b sllw t5,ra,sp
- 80002e54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e58: 00200293 li t0,2
- 80002e5c: fe5214e3 bne tp,t0,80002e44 <test_31+0x4>
- 80002e60: 08000e93 li t4,128
- 80002e64: 01f00193 li gp,31
- 80002e68: 1ddf1663 bne t5,t4,80003034 <fail>
-
-0000000080002e6c <test_32>:
- 80002e6c: 00000213 li tp,0
- 80002e70: 00100093 li ra,1
- 80002e74: 00000013 nop
- 80002e78: 00e00113 li sp,14
- 80002e7c: 00000013 nop
- 80002e80: 00209f3b sllw t5,ra,sp
- 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e88: 00200293 li t0,2
- 80002e8c: fe5212e3 bne tp,t0,80002e70 <test_32+0x4>
- 80002e90: 00004eb7 lui t4,0x4
- 80002e94: 02000193 li gp,32
- 80002e98: 19df1e63 bne t5,t4,80003034 <fail>
-
-0000000080002e9c <test_33>:
- 80002e9c: 00000213 li tp,0
- 80002ea0: 00100093 li ra,1
- 80002ea4: 00000013 nop
- 80002ea8: 00000013 nop
- 80002eac: 01f00113 li sp,31
- 80002eb0: 00209f3b sllw t5,ra,sp
- 80002eb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002eb8: 00200293 li t0,2
- 80002ebc: fe5212e3 bne tp,t0,80002ea0 <test_33+0x4>
- 80002ec0: 80000eb7 lui t4,0x80000
- 80002ec4: 02100193 li gp,33
- 80002ec8: 17df1663 bne t5,t4,80003034 <fail>
-
-0000000080002ecc <test_34>:
- 80002ecc: 00000213 li tp,0
- 80002ed0: 00700113 li sp,7
- 80002ed4: 00100093 li ra,1
- 80002ed8: 00209f3b sllw t5,ra,sp
- 80002edc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ee0: 00200293 li t0,2
- 80002ee4: fe5216e3 bne tp,t0,80002ed0 <test_34+0x4>
- 80002ee8: 08000e93 li t4,128
- 80002eec: 02200193 li gp,34
- 80002ef0: 15df1263 bne t5,t4,80003034 <fail>
-
-0000000080002ef4 <test_35>:
- 80002ef4: 00000213 li tp,0
- 80002ef8: 00e00113 li sp,14
- 80002efc: 00100093 li ra,1
- 80002f00: 00000013 nop
- 80002f04: 00209f3b sllw t5,ra,sp
- 80002f08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f0c: 00200293 li t0,2
- 80002f10: fe5214e3 bne tp,t0,80002ef8 <test_35+0x4>
- 80002f14: 00004eb7 lui t4,0x4
- 80002f18: 02300193 li gp,35
- 80002f1c: 11df1c63 bne t5,t4,80003034 <fail>
-
-0000000080002f20 <test_36>:
- 80002f20: 00000213 li tp,0
- 80002f24: 01f00113 li sp,31
- 80002f28: 00100093 li ra,1
- 80002f2c: 00000013 nop
- 80002f30: 00000013 nop
- 80002f34: 00209f3b sllw t5,ra,sp
- 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f3c: 00200293 li t0,2
- 80002f40: fe5212e3 bne tp,t0,80002f24 <test_36+0x4>
- 80002f44: 80000eb7 lui t4,0x80000
- 80002f48: 02400193 li gp,36
- 80002f4c: 0fdf1463 bne t5,t4,80003034 <fail>
-
-0000000080002f50 <test_37>:
- 80002f50: 00000213 li tp,0
- 80002f54: 00700113 li sp,7
- 80002f58: 00000013 nop
- 80002f5c: 00100093 li ra,1
- 80002f60: 00209f3b sllw t5,ra,sp
- 80002f64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f68: 00200293 li t0,2
- 80002f6c: fe5214e3 bne tp,t0,80002f54 <test_37+0x4>
- 80002f70: 08000e93 li t4,128
- 80002f74: 02500193 li gp,37
- 80002f78: 0bdf1e63 bne t5,t4,80003034 <fail>
-
-0000000080002f7c <test_38>:
- 80002f7c: 00000213 li tp,0
- 80002f80: 00e00113 li sp,14
- 80002f84: 00000013 nop
- 80002f88: 00100093 li ra,1
- 80002f8c: 00000013 nop
- 80002f90: 00209f3b sllw t5,ra,sp
- 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f98: 00200293 li t0,2
- 80002f9c: fe5212e3 bne tp,t0,80002f80 <test_38+0x4>
- 80002fa0: 00004eb7 lui t4,0x4
- 80002fa4: 02600193 li gp,38
- 80002fa8: 09df1663 bne t5,t4,80003034 <fail>
-
-0000000080002fac <test_39>:
- 80002fac: 00000213 li tp,0
- 80002fb0: 01f00113 li sp,31
- 80002fb4: 00000013 nop
- 80002fb8: 00000013 nop
- 80002fbc: 00100093 li ra,1
- 80002fc0: 00209f3b sllw t5,ra,sp
- 80002fc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002fc8: 00200293 li t0,2
- 80002fcc: fe5212e3 bne tp,t0,80002fb0 <test_39+0x4>
- 80002fd0: 80000eb7 lui t4,0x80000
- 80002fd4: 02700193 li gp,39
- 80002fd8: 05df1e63 bne t5,t4,80003034 <fail>
-
-0000000080002fdc <test_40>:
- 80002fdc: 00f00093 li ra,15
- 80002fe0: 0010113b sllw sp,zero,ra
- 80002fe4: 00000e93 li t4,0
- 80002fe8: 02800193 li gp,40
- 80002fec: 05d11463 bne sp,t4,80003034 <fail>
-
-0000000080002ff0 <test_41>:
- 80002ff0: 02000093 li ra,32
- 80002ff4: 0000913b sllw sp,ra,zero
- 80002ff8: 02000e93 li t4,32
- 80002ffc: 02900193 li gp,41
- 80003000: 03d11a63 bne sp,t4,80003034 <fail>
-
-0000000080003004 <test_42>:
- 80003004: 000010bb sllw ra,zero,zero
- 80003008: 00000e93 li t4,0
- 8000300c: 02a00193 li gp,42
- 80003010: 03d09263 bne ra,t4,80003034 <fail>
-
-0000000080003014 <test_43>:
- 80003014: 40000093 li ra,1024
- 80003018: 00001137 lui sp,0x1
- 8000301c: 8001011b addiw sp,sp,-2048
- 80003020: 0020903b sllw zero,ra,sp
- 80003024: 00000e93 li t4,0
- 80003028: 02b00193 li gp,43
- 8000302c: 01d01463 bne zero,t4,80003034 <fail>
- 80003030: 00301a63 bne zero,gp,80003044 <pass>
-
-0000000080003034 <fail>:
- 80003034: 00119513 slli a0,gp,0x1
- 80003038: 00050063 beqz a0,80003038 <fail+0x4>
- 8000303c: 00156513 ori a0,a0,1
- 80003040: 00000073 ecall
-
-0000000080003044 <pass>:
- 80003044: 00100513 li a0,1
- 80003048: 00000073 ecall
- 8000304c: c0001073 unimp
+ 80002ce4: 3fdf1863 bne t5,t4,800030d4 <fail>
+
+0000000080002ce8 <test_44>:
+ 80002ce8: fff120b7 lui ra,0xfff12
+ 80002cec: 3450809b addiw ra,ra,837
+ 80002cf0: 00c09093 slli ra,ra,0xc
+ 80002cf4: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002cf8: 00000113 li sp,0
+ 80002cfc: 00209f3b sllw t5,ra,sp
+ 80002d00: 12345eb7 lui t4,0x12345
+ 80002d04: 678e8e9b addiw t4,t4,1656
+ 80002d08: 02c00193 li gp,44
+ 80002d0c: 3ddf1463 bne t5,t4,800030d4 <fail>
+
+0000000080002d10 <test_45>:
+ 80002d10: fff120b7 lui ra,0xfff12
+ 80002d14: 3450809b addiw ra,ra,837
+ 80002d18: 00c09093 slli ra,ra,0xc
+ 80002d1c: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002d20: 00400113 li sp,4
+ 80002d24: 00209f3b sllw t5,ra,sp
+ 80002d28: 23456eb7 lui t4,0x23456
+ 80002d2c: 780e8e9b addiw t4,t4,1920
+ 80002d30: 02d00193 li gp,45
+ 80002d34: 3bdf1063 bne t5,t4,800030d4 <fail>
+
+0000000080002d38 <test_46>:
+ 80002d38: 000920b7 lui ra,0x92
+ 80002d3c: 3450809b addiw ra,ra,837
+ 80002d40: 00c09093 slli ra,ra,0xc
+ 80002d44: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002d48: 00000113 li sp,0
+ 80002d4c: 00209f3b sllw t5,ra,sp
+ 80002d50: 92345eb7 lui t4,0x92345
+ 80002d54: 678e8e9b addiw t4,t4,1656
+ 80002d58: 02e00193 li gp,46
+ 80002d5c: 37df1c63 bne t5,t4,800030d4 <fail>
+
+0000000080002d60 <test_47>:
+ 80002d60: 000990b7 lui ra,0x99
+ 80002d64: 3450809b addiw ra,ra,837
+ 80002d68: 00c09093 slli ra,ra,0xc
+ 80002d6c: 67808093 addi ra,ra,1656 # 99678 <_start-0x7ff66988>
+ 80002d70: 00400113 li sp,4
+ 80002d74: 00209f3b sllw t5,ra,sp
+ 80002d78: 93456eb7 lui t4,0x93456
+ 80002d7c: 780e8e9b addiw t4,t4,1920
+ 80002d80: 02f00193 li gp,47
+ 80002d84: 35df1863 bne t5,t4,800030d4 <fail>
+
+0000000080002d88 <test_22>:
+ 80002d88: 00100093 li ra,1
+ 80002d8c: 00700113 li sp,7
+ 80002d90: 002090bb sllw ra,ra,sp
+ 80002d94: 08000e93 li t4,128
+ 80002d98: 01600193 li gp,22
+ 80002d9c: 33d09c63 bne ra,t4,800030d4 <fail>
+
+0000000080002da0 <test_23>:
+ 80002da0: 00100093 li ra,1
+ 80002da4: 00e00113 li sp,14
+ 80002da8: 0020913b sllw sp,ra,sp
+ 80002dac: 00004eb7 lui t4,0x4
+ 80002db0: 01700193 li gp,23
+ 80002db4: 33d11063 bne sp,t4,800030d4 <fail>
+
+0000000080002db8 <test_24>:
+ 80002db8: 00300093 li ra,3
+ 80002dbc: 001090bb sllw ra,ra,ra
+ 80002dc0: 01800e93 li t4,24
+ 80002dc4: 01800193 li gp,24
+ 80002dc8: 31d09663 bne ra,t4,800030d4 <fail>
+
+0000000080002dcc <test_25>:
+ 80002dcc: 00000213 li tp,0
+ 80002dd0: 00100093 li ra,1
+ 80002dd4: 00700113 li sp,7
+ 80002dd8: 00209f3b sllw t5,ra,sp
+ 80002ddc: 000f0313 mv t1,t5
+ 80002de0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002de4: 00200293 li t0,2
+ 80002de8: fe5214e3 bne tp,t0,80002dd0 <test_25+0x4>
+ 80002dec: 08000e93 li t4,128
+ 80002df0: 01900193 li gp,25
+ 80002df4: 2fd31063 bne t1,t4,800030d4 <fail>
+
+0000000080002df8 <test_26>:
+ 80002df8: 00000213 li tp,0
+ 80002dfc: 00100093 li ra,1
+ 80002e00: 00e00113 li sp,14
+ 80002e04: 00209f3b sllw t5,ra,sp
+ 80002e08: 00000013 nop
+ 80002e0c: 000f0313 mv t1,t5
+ 80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e14: 00200293 li t0,2
+ 80002e18: fe5212e3 bne tp,t0,80002dfc <test_26+0x4>
+ 80002e1c: 00004eb7 lui t4,0x4
+ 80002e20: 01a00193 li gp,26
+ 80002e24: 2bd31863 bne t1,t4,800030d4 <fail>
+
+0000000080002e28 <test_27>:
+ 80002e28: 00000213 li tp,0
+ 80002e2c: 00100093 li ra,1
+ 80002e30: 01f00113 li sp,31
+ 80002e34: 00209f3b sllw t5,ra,sp
+ 80002e38: 00000013 nop
+ 80002e3c: 00000013 nop
+ 80002e40: 000f0313 mv t1,t5
+ 80002e44: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e48: 00200293 li t0,2
+ 80002e4c: fe5210e3 bne tp,t0,80002e2c <test_27+0x4>
+ 80002e50: 80000eb7 lui t4,0x80000
+ 80002e54: 01b00193 li gp,27
+ 80002e58: 27d31e63 bne t1,t4,800030d4 <fail>
+
+0000000080002e5c <test_28>:
+ 80002e5c: 00000213 li tp,0
+ 80002e60: 00100093 li ra,1
+ 80002e64: 00700113 li sp,7
+ 80002e68: 00209f3b sllw t5,ra,sp
+ 80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e70: 00200293 li t0,2
+ 80002e74: fe5216e3 bne tp,t0,80002e60 <test_28+0x4>
+ 80002e78: 08000e93 li t4,128
+ 80002e7c: 01c00193 li gp,28
+ 80002e80: 25df1a63 bne t5,t4,800030d4 <fail>
+
+0000000080002e84 <test_29>:
+ 80002e84: 00000213 li tp,0
+ 80002e88: 00100093 li ra,1
+ 80002e8c: 00e00113 li sp,14
+ 80002e90: 00000013 nop
+ 80002e94: 00209f3b sllw t5,ra,sp
+ 80002e98: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e9c: 00200293 li t0,2
+ 80002ea0: fe5214e3 bne tp,t0,80002e88 <test_29+0x4>
+ 80002ea4: 00004eb7 lui t4,0x4
+ 80002ea8: 01d00193 li gp,29
+ 80002eac: 23df1463 bne t5,t4,800030d4 <fail>
+
+0000000080002eb0 <test_30>:
+ 80002eb0: 00000213 li tp,0
+ 80002eb4: 00100093 li ra,1
+ 80002eb8: 01f00113 li sp,31
+ 80002ebc: 00000013 nop
+ 80002ec0: 00000013 nop
+ 80002ec4: 00209f3b sllw t5,ra,sp
+ 80002ec8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ecc: 00200293 li t0,2
+ 80002ed0: fe5212e3 bne tp,t0,80002eb4 <test_30+0x4>
+ 80002ed4: 80000eb7 lui t4,0x80000
+ 80002ed8: 01e00193 li gp,30
+ 80002edc: 1fdf1c63 bne t5,t4,800030d4 <fail>
+
+0000000080002ee0 <test_31>:
+ 80002ee0: 00000213 li tp,0
+ 80002ee4: 00100093 li ra,1
+ 80002ee8: 00000013 nop
+ 80002eec: 00700113 li sp,7
+ 80002ef0: 00209f3b sllw t5,ra,sp
+ 80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ef8: 00200293 li t0,2
+ 80002efc: fe5214e3 bne tp,t0,80002ee4 <test_31+0x4>
+ 80002f00: 08000e93 li t4,128
+ 80002f04: 01f00193 li gp,31
+ 80002f08: 1ddf1663 bne t5,t4,800030d4 <fail>
+
+0000000080002f0c <test_32>:
+ 80002f0c: 00000213 li tp,0
+ 80002f10: 00100093 li ra,1
+ 80002f14: 00000013 nop
+ 80002f18: 00e00113 li sp,14
+ 80002f1c: 00000013 nop
+ 80002f20: 00209f3b sllw t5,ra,sp
+ 80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f28: 00200293 li t0,2
+ 80002f2c: fe5212e3 bne tp,t0,80002f10 <test_32+0x4>
+ 80002f30: 00004eb7 lui t4,0x4
+ 80002f34: 02000193 li gp,32
+ 80002f38: 19df1e63 bne t5,t4,800030d4 <fail>
+
+0000000080002f3c <test_33>:
+ 80002f3c: 00000213 li tp,0
+ 80002f40: 00100093 li ra,1
+ 80002f44: 00000013 nop
+ 80002f48: 00000013 nop
+ 80002f4c: 01f00113 li sp,31
+ 80002f50: 00209f3b sllw t5,ra,sp
+ 80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f58: 00200293 li t0,2
+ 80002f5c: fe5212e3 bne tp,t0,80002f40 <test_33+0x4>
+ 80002f60: 80000eb7 lui t4,0x80000
+ 80002f64: 02100193 li gp,33
+ 80002f68: 17df1663 bne t5,t4,800030d4 <fail>
+
+0000000080002f6c <test_34>:
+ 80002f6c: 00000213 li tp,0
+ 80002f70: 00700113 li sp,7
+ 80002f74: 00100093 li ra,1
+ 80002f78: 00209f3b sllw t5,ra,sp
+ 80002f7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f80: 00200293 li t0,2
+ 80002f84: fe5216e3 bne tp,t0,80002f70 <test_34+0x4>
+ 80002f88: 08000e93 li t4,128
+ 80002f8c: 02200193 li gp,34
+ 80002f90: 15df1263 bne t5,t4,800030d4 <fail>
+
+0000000080002f94 <test_35>:
+ 80002f94: 00000213 li tp,0
+ 80002f98: 00e00113 li sp,14
+ 80002f9c: 00100093 li ra,1
+ 80002fa0: 00000013 nop
+ 80002fa4: 00209f3b sllw t5,ra,sp
+ 80002fa8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002fac: 00200293 li t0,2
+ 80002fb0: fe5214e3 bne tp,t0,80002f98 <test_35+0x4>
+ 80002fb4: 00004eb7 lui t4,0x4
+ 80002fb8: 02300193 li gp,35
+ 80002fbc: 11df1c63 bne t5,t4,800030d4 <fail>
+
+0000000080002fc0 <test_36>:
+ 80002fc0: 00000213 li tp,0
+ 80002fc4: 01f00113 li sp,31
+ 80002fc8: 00100093 li ra,1
+ 80002fcc: 00000013 nop
+ 80002fd0: 00000013 nop
+ 80002fd4: 00209f3b sllw t5,ra,sp
+ 80002fd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002fdc: 00200293 li t0,2
+ 80002fe0: fe5212e3 bne tp,t0,80002fc4 <test_36+0x4>
+ 80002fe4: 80000eb7 lui t4,0x80000
+ 80002fe8: 02400193 li gp,36
+ 80002fec: 0fdf1463 bne t5,t4,800030d4 <fail>
+
+0000000080002ff0 <test_37>:
+ 80002ff0: 00000213 li tp,0
+ 80002ff4: 00700113 li sp,7
+ 80002ff8: 00000013 nop
+ 80002ffc: 00100093 li ra,1
+ 80003000: 00209f3b sllw t5,ra,sp
+ 80003004: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003008: 00200293 li t0,2
+ 8000300c: fe5214e3 bne tp,t0,80002ff4 <test_37+0x4>
+ 80003010: 08000e93 li t4,128
+ 80003014: 02500193 li gp,37
+ 80003018: 0bdf1e63 bne t5,t4,800030d4 <fail>
+
+000000008000301c <test_38>:
+ 8000301c: 00000213 li tp,0
+ 80003020: 00e00113 li sp,14
+ 80003024: 00000013 nop
+ 80003028: 00100093 li ra,1
+ 8000302c: 00000013 nop
+ 80003030: 00209f3b sllw t5,ra,sp
+ 80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003038: 00200293 li t0,2
+ 8000303c: fe5212e3 bne tp,t0,80003020 <test_38+0x4>
+ 80003040: 00004eb7 lui t4,0x4
+ 80003044: 02600193 li gp,38
+ 80003048: 09df1663 bne t5,t4,800030d4 <fail>
+
+000000008000304c <test_39>:
+ 8000304c: 00000213 li tp,0
+ 80003050: 01f00113 li sp,31
+ 80003054: 00000013 nop
+ 80003058: 00000013 nop
+ 8000305c: 00100093 li ra,1
+ 80003060: 00209f3b sllw t5,ra,sp
+ 80003064: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003068: 00200293 li t0,2
+ 8000306c: fe5212e3 bne tp,t0,80003050 <test_39+0x4>
+ 80003070: 80000eb7 lui t4,0x80000
+ 80003074: 02700193 li gp,39
+ 80003078: 05df1e63 bne t5,t4,800030d4 <fail>
+
+000000008000307c <test_40>:
+ 8000307c: 00f00093 li ra,15
+ 80003080: 0010113b sllw sp,zero,ra
+ 80003084: 00000e93 li t4,0
+ 80003088: 02800193 li gp,40
+ 8000308c: 05d11463 bne sp,t4,800030d4 <fail>
+
+0000000080003090 <test_41>:
+ 80003090: 02000093 li ra,32
+ 80003094: 0000913b sllw sp,ra,zero
+ 80003098: 02000e93 li t4,32
+ 8000309c: 02900193 li gp,41
+ 800030a0: 03d11a63 bne sp,t4,800030d4 <fail>
+
+00000000800030a4 <test_42>:
+ 800030a4: 000010bb sllw ra,zero,zero
+ 800030a8: 00000e93 li t4,0
+ 800030ac: 02a00193 li gp,42
+ 800030b0: 03d09263 bne ra,t4,800030d4 <fail>
+
+00000000800030b4 <test_43>:
+ 800030b4: 40000093 li ra,1024
+ 800030b8: 00001137 lui sp,0x1
+ 800030bc: 8001011b addiw sp,sp,-2048
+ 800030c0: 0020903b sllw zero,ra,sp
+ 800030c4: 00000e93 li t4,0
+ 800030c8: 02b00193 li gp,43
+ 800030cc: 01d01463 bne zero,t4,800030d4 <fail>
+ 800030d0: 00301a63 bne zero,gp,800030e4 <pass>
+
+00000000800030d4 <fail>:
+ 800030d4: 00119513 slli a0,gp,0x1
+ 800030d8: 00050063 beqz a0,800030d8 <fail+0x4>
+ 800030dc: 00156513 ori a0,a0,1
+ 800030e0: 00000073 ecall
+
+00000000800030e4 <pass>:
+ 800030e4: 00100513 li a0,1
+ 800030e8: 00000073 ecall
+ 800030ec: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-v-sllw.elf b/test/riscv-tests/rv64ui-v-sllw.elf
index 9ae693b..25afb67 100644
--- a/test/riscv-tests/rv64ui-v-sllw.elf
+++ b/test/riscv-tests/rv64ui-v-sllw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-slt.dump b/test/riscv-tests/rv64ui-v-slt.dump
index dd39ae7..ae97e26 100644
--- a/test/riscv-tests/rv64ui-v-slt.dump
+++ b/test/riscv-tests/rv64ui-v-slt.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-slt.elf b/test/riscv-tests/rv64ui-v-slt.elf
index 318b70d..864ab22 100644
--- a/test/riscv-tests/rv64ui-v-slt.elf
+++ b/test/riscv-tests/rv64ui-v-slt.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-slti.dump b/test/riscv-tests/rv64ui-v-slti.dump
index 56b3965..f56d2fb 100644
--- a/test/riscv-tests/rv64ui-v-slti.dump
+++ b/test/riscv-tests/rv64ui-v-slti.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-slti.elf b/test/riscv-tests/rv64ui-v-slti.elf
index 477b704..8168a21 100644
--- a/test/riscv-tests/rv64ui-v-slti.elf
+++ b/test/riscv-tests/rv64ui-v-slti.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sltiu.dump b/test/riscv-tests/rv64ui-v-sltiu.dump
index 98f8b1a..8702494 100644
--- a/test/riscv-tests/rv64ui-v-sltiu.dump
+++ b/test/riscv-tests/rv64ui-v-sltiu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sltiu.elf b/test/riscv-tests/rv64ui-v-sltiu.elf
index 197c500..2d8a3e8 100644
--- a/test/riscv-tests/rv64ui-v-sltiu.elf
+++ b/test/riscv-tests/rv64ui-v-sltiu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sltu.dump b/test/riscv-tests/rv64ui-v-sltu.dump
index 281d657..11b04bf 100644
--- a/test/riscv-tests/rv64ui-v-sltu.dump
+++ b/test/riscv-tests/rv64ui-v-sltu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sltu.elf b/test/riscv-tests/rv64ui-v-sltu.elf
index 0bd9f90..e624657 100644
--- a/test/riscv-tests/rv64ui-v-sltu.elf
+++ b/test/riscv-tests/rv64ui-v-sltu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sra.dump b/test/riscv-tests/rv64ui-v-sra.dump
index 37705cb..0d89a5c 100644
--- a/test/riscv-tests/rv64ui-v-sra.dump
+++ b/test/riscv-tests/rv64ui-v-sra.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sra.elf b/test/riscv-tests/rv64ui-v-sra.elf
index bfbb9dc..ff3e6a9 100644
--- a/test/riscv-tests/rv64ui-v-sra.elf
+++ b/test/riscv-tests/rv64ui-v-sra.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-srai.dump b/test/riscv-tests/rv64ui-v-srai.dump
index 8926e55..83b65cb 100644
--- a/test/riscv-tests/rv64ui-v-srai.dump
+++ b/test/riscv-tests/rv64ui-v-srai.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-srai.elf b/test/riscv-tests/rv64ui-v-srai.elf
index a84338f..615059c 100644
--- a/test/riscv-tests/rv64ui-v-srai.elf
+++ b/test/riscv-tests/rv64ui-v-srai.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sraiw.dump b/test/riscv-tests/rv64ui-v-sraiw.dump
index 276de6b..cd38521 100644
--- a/test/riscv-tests/rv64ui-v-sraiw.dump
+++ b/test/riscv-tests/rv64ui-v-sraiw.dump
@@ -17,8 +17,8 @@ Disassembly of section .text.init:
8000000c: 00000297 auipc t0,0x0
80000010: ffc28293 addi t0,t0,-4 # 80000008 <trap_vector>
80000014: 30529073 csrw mtvec,t0
- 80000018: 00008117 auipc sp,0x8
- 8000001c: 6b810113 addi sp,sp,1720 # 800086d0 <_end+0xee0>
+ 80000018: 00009117 auipc sp,0x9
+ 8000001c: 6b810113 addi sp,sp,1720 # 800096d0 <_end+0xee0>
80000020: f14022f3 csrr t0,mhartid
80000024: 00c29293 slli t0,t0,0xc
80000028: 00510133 add sp,sp,t0
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -328,23 +328,23 @@ Disassembly of section .text:
80002308: 14f77463 bleu a5,a4,80002450 <handle_fault+0x154>
8000230c: 00c55693 srli a3,a0,0xc
80002310: 60068813 addi a6,a3,1536
- 80002314: 00001617 auipc a2,0x1
- 80002318: cec60613 addi a2,a2,-788 # 80003000 <begin_signature>
+ 80002314: 00002617 auipc a2,0x2
+ 80002318: cec60613 addi a2,a2,-788 # 80004000 <begin_signature>
8000231c: 00381793 slli a5,a6,0x3
80002320: 00f607b3 add a5,a2,a5
80002324: 0007b703 ld a4,0(a5) # 3e000 <_start-0x7ffc2000>
80002328: 01157533 and a0,a0,a7
8000232c: 0e071063 bnez a4,8000240c <handle_fault+0x110>
- 80002330: 00005797 auipc a5,0x5
- 80002334: 4b878793 addi a5,a5,1208 # 800077e8 <freelist_head>
+ 80002330: 00006797 auipc a5,0x6
+ 80002334: 4b878793 addi a5,a5,1208 # 800087e8 <freelist_head>
80002338: 0007b583 ld a1,0(a5)
8000233c: 16058863 beqz a1,800024ac <handle_fault+0x1b0>
80002340: 0085b783 ld a5,8(a1)
- 80002344: 00005717 auipc a4,0x5
- 80002348: 49c70713 addi a4,a4,1180 # 800077e0 <freelist_tail>
+ 80002344: 00006717 auipc a4,0x6
+ 80002348: 49c70713 addi a4,a4,1180 # 800087e0 <freelist_tail>
8000234c: 00073703 ld a4,0(a4)
- 80002350: 00005897 auipc a7,0x5
- 80002354: 48f8bc23 sd a5,1176(a7) # 800077e8 <freelist_head>
+ 80002350: 00006897 auipc a7,0x6
+ 80002354: 48f8bc23 sd a5,1176(a7) # 800087e8 <freelist_head>
80002358: 0ee78663 beq a5,a4,80002444 <handle_fault+0x148>
8000235c: 0005b783 ld a5,0(a1)
80002360: 00381893 slli a7,a6,0x3
@@ -355,8 +355,8 @@ Disassembly of section .text:
80002374: 01f7e713 ori a4,a5,31
80002378: 0068b023 sd t1,0(a7)
8000237c: 12050073 sfence.vma a0
- 80002380: 00005797 auipc a5,0x5
- 80002384: 07078793 addi a5,a5,112 # 800073f0 <user_mapping>
+ 80002380: 00006797 auipc a5,0x6
+ 80002384: 07078793 addi a5,a5,112 # 800083f0 <user_mapping>
80002388: 00469693 slli a3,a3,0x4
8000238c: 00d786b3 add a3,a5,a3
80002390: 0006b783 ld a5,0(a3)
@@ -372,7 +372,7 @@ Disassembly of section .text:
800023b8: 000015b7 lui a1,0x1
800023bc: 00050693 mv a3,a0
800023c0: 00b785b3 add a1,a5,a1
- 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf8810>
+ 800023c4: 0007bf03 ld t5,0(a5) # ffffffffffe00000 <_end+0xffffffff7fdf7810>
800023c8: 0087be83 ld t4,8(a5)
800023cc: 0107be03 ld t3,16(a5)
800023d0: 0187b303 ld t1,24(a5)
@@ -404,13 +404,13 @@ Disassembly of section .text:
80002438: 00e7b023 sd a4,0(a5)
8000243c: 12050073 sfence.vma a0
80002440: 00008067 ret
- 80002444: 00005797 auipc a5,0x5
- 80002448: 3807be23 sd zero,924(a5) # 800077e0 <freelist_tail>
+ 80002444: 00006797 auipc a5,0x6
+ 80002448: 3807be23 sd zero,924(a5) # 800087e0 <freelist_tail>
8000244c: f11ff06f j 8000235c <handle_fault+0x60>
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00001697 auipc a3,0x1
- 8000245c: 97868693 addi a3,a3,-1672 # 80002dd0 <pass+0x10>
+ 8000245c: a0868693 addi a3,a3,-1528 # 80002e60 <pass+0x10>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00001617 auipc a2,0x1
- 800024b8: 9ac60613 addi a2,a2,-1620 # 80002e60 <pass+0xa0>
+ 800024b8: a3c60613 addi a2,a2,-1476 # 80002ef0 <pass+0xa0>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00001617 auipc a2,0x1
- 80002508: 97460613 addi a2,a2,-1676 # 80002e78 <pass+0xb8>
+ 80002508: a0460613 addi a2,a2,-1532 # 80002f08 <pass+0xb8>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00001697 auipc a3,0x1
- 80002558: 8c468693 addi a3,a3,-1852 # 80002e18 <pass+0x58>
+ 80002558: 95468693 addi a3,a3,-1708 # 80002ea8 <pass+0x58>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00001697 auipc a3,0x1
- 80002674: 8e068693 addi a3,a3,-1824 # 80002f50 <pass+0x190>
+ 80002674: 97068693 addi a3,a3,-1680 # 80002fe0 <pass+0x190>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -568,7 +568,7 @@ Disassembly of section .text:
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
800026c8: 00001617 auipc a2,0x1
- 800026cc: 86060613 addi a2,a2,-1952 # 80002f28 <pass+0x168>
+ 800026cc: 8f060613 addi a2,a2,-1808 # 80002fb8 <pass+0x168>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -588,19 +588,19 @@ Disassembly of section .text:
80002710: fa5ff06f j 800026b4 <handle_trap+0x118>
80002714: 05052983 lw s3,80(a0)
80002718: 00001437 lui s0,0x1
- 8000271c: 00005d17 auipc s10,0x5
- 80002720: cd4d0d13 addi s10,s10,-812 # 800073f0 <user_mapping>
- 80002724: 00001b97 auipc s7,0x1
- 80002728: 8dcb8b93 addi s7,s7,-1828 # 80003000 <begin_signature>
+ 8000271c: 00006d17 auipc s10,0x6
+ 80002720: cd4d0d13 addi s10,s10,-812 # 800083f0 <user_mapping>
+ 80002724: 00002b97 auipc s7,0x2
+ 80002728: 8dcb8b93 addi s7,s7,-1828 # 80004000 <begin_signature>
8000272c: 00040b37 lui s6,0x40
80002730: ffe00ab7 lui s5,0xffe00
- 80002734: 00005a17 auipc s4,0x5
- 80002738: 0aca0a13 addi s4,s4,172 # 800077e0 <freelist_tail>
+ 80002734: 00006a17 auipc s4,0x6
+ 80002738: 0aca0a13 addi s4,s4,172 # 800087e0 <freelist_tail>
8000273c: 0003f937 lui s2,0x3f
80002740: 01c0006f j 8000275c <handle_trap+0x1c0>
80002744: 00f73423 sd a5,8(a4)
- 80002748: 00005717 auipc a4,0x5
- 8000274c: 08f73c23 sd a5,152(a4) # 800077e0 <freelist_tail>
+ 80002748: 00006717 auipc a4,0x6
+ 8000274c: 08f73c23 sd a5,152(a4) # 800087e0 <freelist_tail>
80002750: 000017b7 lui a5,0x1
80002754: 00f40433 add s0,s0,a5
80002758: 15240663 beq s0,s2,800028a4 <handle_trap+0x308>
@@ -633,15 +633,15 @@ Disassembly of section .text:
800027c4: 000a3703 ld a4,0(s4)
800027c8: 0007b023 sd zero,0(a5)
800027cc: f6071ce3 bnez a4,80002744 <handle_trap+0x1a8>
- 800027d0: 00005717 auipc a4,0x5
- 800027d4: 00f73823 sd a5,16(a4) # 800077e0 <freelist_tail>
- 800027d8: 00005717 auipc a4,0x5
- 800027dc: 00f73823 sd a5,16(a4) # 800077e8 <freelist_head>
+ 800027d0: 00006717 auipc a4,0x6
+ 800027d4: 00f73823 sd a5,16(a4) # 800087e0 <freelist_tail>
+ 800027d8: 00006717 auipc a4,0x6
+ 800027dc: 00f73823 sd a5,16(a4) # 800087e8 <freelist_head>
800027e0: f71ff06f j 80002750 <handle_trap+0x1b4>
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
- 800027ec: 00000697 auipc a3,0x0
- 800027f0: 79468693 addi a3,a3,1940 # 80002f80 <pass+0x1c0>
+ 800027ec: 00001697 auipc a3,0x1
+ 800027f0: 82468693 addi a3,a3,-2012 # 80003010 <pass+0x1c0>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00000697 auipc a3,0x0
- 80002840: 6b468693 addi a3,a3,1716 # 80002ef0 <pass+0x130>
+ 80002840: 74468693 addi a3,a3,1860 # 80002f80 <pass+0x130>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00000697 auipc a3,0x0
- 80002878: 64468693 addi a3,a3,1604 # 80002eb8 <pass+0xf8>
+ 80002878: 6d468693 addi a3,a3,1748 # 80002f48 <pass+0xf8>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -702,36 +702,36 @@ Disassembly of section .text:
00000000800028d4 <vm_boot>:
800028d4: f14027f3 csrr a5,mhartid
800028d8: 18079a63 bnez a5,80002a6c <vm_boot+0x198>
- 800028dc: 00001697 auipc a3,0x1
- 800028e0: 72468693 addi a3,a3,1828 # 80004000 <begin_signature+0x1000>
- 800028e4: 00002717 auipc a4,0x2
- 800028e8: 71c70713 addi a4,a4,1820 # 80005000 <begin_signature+0x2000>
+ 800028dc: 00002697 auipc a3,0x2
+ 800028e0: 72468693 addi a3,a3,1828 # 80005000 <begin_signature+0x1000>
+ 800028e4: 00003717 auipc a4,0x3
+ 800028e8: 71c70713 addi a4,a4,1820 # 80006000 <begin_signature+0x2000>
800028ec: 00c6d693 srli a3,a3,0xc
800028f0: 00c75713 srli a4,a4,0xc
- 800028f4: 00003797 auipc a5,0x3
- 800028f8: 70c78793 addi a5,a5,1804 # 80006000 <begin_signature+0x3000>
+ 800028f4: 00004797 auipc a5,0x4
+ 800028f8: 70c78793 addi a5,a5,1804 # 80007000 <begin_signature+0x3000>
800028fc: 00a69693 slli a3,a3,0xa
80002900: 00a71713 slli a4,a4,0xa
80002904: 0016e693 ori a3,a3,1
80002908: 00176713 ori a4,a4,1
8000290c: 00c7d793 srli a5,a5,0xc
- 80002910: 00000897 auipc a7,0x0
- 80002914: 6ed8b823 sd a3,1776(a7) # 80003000 <begin_signature>
+ 80002910: 00001897 auipc a7,0x1
+ 80002914: 6ed8b823 sd a3,1776(a7) # 80004000 <begin_signature>
80002918: 00a79793 slli a5,a5,0xa
- 8000291c: 00001697 auipc a3,0x1
- 80002920: 6ce6be23 sd a4,1756(a3) # 80003ff8 <begin_signature+0xff8>
+ 8000291c: 00002697 auipc a3,0x2
+ 80002920: 6ce6be23 sd a4,1756(a3) # 80004ff8 <begin_signature+0xff8>
80002924: 20000737 lui a4,0x20000
80002928: 0cf70713 addi a4,a4,207 # 200000cf <_start-0x5fffff31>
8000292c: fff00593 li a1,-1
80002930: 0017e793 ori a5,a5,1
- 80002934: 00000617 auipc a2,0x0
- 80002938: 6cc60613 addi a2,a2,1740 # 80003000 <begin_signature>
+ 80002934: 00001617 auipc a2,0x1
+ 80002938: 6cc60613 addi a2,a2,1740 # 80004000 <begin_signature>
8000293c: ed010113 addi sp,sp,-304
80002940: 03f59813 slli a6,a1,0x3f
- 80002944: 00003697 auipc a3,0x3
- 80002948: 6ae6ba23 sd a4,1716(a3) # 80005ff8 <begin_signature+0x2ff8>
- 8000294c: 00001717 auipc a4,0x1
- 80002950: 6af73a23 sd a5,1716(a4) # 80004000 <begin_signature+0x1000>
+ 80002944: 00004697 auipc a3,0x4
+ 80002948: 6ae6ba23 sd a4,1716(a3) # 80006ff8 <begin_signature+0x2ff8>
+ 8000294c: 00002717 auipc a4,0x2
+ 80002950: 6af73a23 sd a5,1716(a4) # 80005000 <begin_signature+0x1000>
80002954: 00c65793 srli a5,a2,0xc
80002958: 12113423 sd ra,296(sp)
8000295c: 12813023 sd s0,288(sp)
@@ -758,16 +758,16 @@ Disassembly of section .text:
800029b0: 0001e7b7 lui a5,0x1e
800029b4: 30079073 csrw mstatus,a5
800029b8: 30405073 csrwi mie,0
- 800029bc: 00004697 auipc a3,0x4
- 800029c0: 64468693 addi a3,a3,1604 # 80007000 <freelist_nodes>
+ 800029bc: 00005697 auipc a3,0x5
+ 800029c0: 64468693 addi a3,a3,1604 # 80008000 <freelist_nodes>
800029c4: 010687b3 add a5,a3,a6
800029c8: 3e078713 addi a4,a5,992 # 1e3e0 <_start-0x7ffe1c20>
- 800029cc: 00005617 auipc a2,0x5
- 800029d0: e0f63e23 sd a5,-484(a2) # 800077e8 <freelist_head>
- 800029d4: 00005797 auipc a5,0x5
- 800029d8: e0e7b623 sd a4,-500(a5) # 800077e0 <freelist_tail>
- 800029dc: 00005317 auipc t1,0x5
- 800029e0: a1430313 addi t1,t1,-1516 # 800073f0 <user_mapping>
+ 800029cc: 00006617 auipc a2,0x6
+ 800029d0: e0f63e23 sd a5,-484(a2) # 800087e8 <freelist_head>
+ 800029d4: 00006797 auipc a5,0x6
+ 800029d8: e0e7b623 sd a4,-500(a5) # 800087e0 <freelist_tail>
+ 800029dc: 00006317 auipc t1,0x6
+ 800029e0: a1430313 addi t1,t1,-1516 # 800083f0 <user_mapping>
800029e4: 00800793 li a5,8
800029e8: 000808b7 lui a7,0x80
800029ec: 01080813 addi a6,a6,16
@@ -790,8 +790,8 @@ Disassembly of section .text:
80002a30: 12000613 li a2,288
80002a34: 00000593 li a1,0
80002a38: 00010513 mv a0,sp
- 80002a3c: 00005797 auipc a5,0x5
- 80002a40: 9a07b623 sd zero,-1620(a5) # 800073e8 <freelist_nodes+0x3e8>
+ 80002a3c: 00006797 auipc a5,0x6
+ 80002a40: 9a07b623 sd zero,-1620(a5) # 800083e8 <freelist_nodes+0x3e8>
80002a44: e18ff0ef jal ra,8000205c <memset>
80002a48: 800007b7 lui a5,0x80000
80002a4c: 00f40433 add s0,s0,a5
@@ -831,28 +831,28 @@ Disassembly of section .text:
80002acc: 4000df1b sraiw t5,ra,0x0
80002ad0: 80000eb7 lui t4,0x80000
80002ad4: 00200193 li gp,2
- 80002ad8: 2ddf1c63 bne t5,t4,80002db0 <fail>
+ 80002ad8: 37df1463 bne t5,t4,80002e40 <fail>
0000000080002adc <test_3>:
80002adc: 800000b7 lui ra,0x80000
80002ae0: 4010df1b sraiw t5,ra,0x1
80002ae4: c0000eb7 lui t4,0xc0000
80002ae8: 00300193 li gp,3
- 80002aec: 2ddf1263 bne t5,t4,80002db0 <fail>
+ 80002aec: 35df1a63 bne t5,t4,80002e40 <fail>
0000000080002af0 <test_4>:
80002af0: 800000b7 lui ra,0x80000
80002af4: 4070df1b sraiw t5,ra,0x7
80002af8: ff000eb7 lui t4,0xff000
80002afc: 00400193 li gp,4
- 80002b00: 2bdf1863 bne t5,t4,80002db0 <fail>
+ 80002b00: 35df1063 bne t5,t4,80002e40 <fail>
0000000080002b04 <test_5>:
80002b04: 800000b7 lui ra,0x80000
80002b08: 40e0df1b sraiw t5,ra,0xe
80002b0c: fffe0eb7 lui t4,0xfffe0
80002b10: 00500193 li gp,5
- 80002b14: 29df1e63 bne t5,t4,80002db0 <fail>
+ 80002b14: 33df1663 bne t5,t4,80002e40 <fail>
0000000080002b18 <test_6>:
80002b18: 800000b7 lui ra,0x80000
@@ -860,7 +860,7 @@ Disassembly of section .text:
80002b20: 41f0df1b sraiw t5,ra,0x1f
80002b24: fff00e93 li t4,-1
80002b28: 00600193 li gp,6
- 80002b2c: 29df1263 bne t5,t4,80002db0 <fail>
+ 80002b2c: 31df1a63 bne t5,t4,80002e40 <fail>
0000000080002b30 <test_7>:
80002b30: 800000b7 lui ra,0x80000
@@ -869,7 +869,7 @@ Disassembly of section .text:
80002b3c: 80000eb7 lui t4,0x80000
80002b40: fffe8e9b addiw t4,t4,-1
80002b44: 00700193 li gp,7
- 80002b48: 27df1463 bne t5,t4,80002db0 <fail>
+ 80002b48: 2fdf1c63 bne t5,t4,80002e40 <fail>
0000000080002b4c <test_8>:
80002b4c: 800000b7 lui ra,0x80000
@@ -878,7 +878,7 @@ Disassembly of section .text:
80002b58: 40000eb7 lui t4,0x40000
80002b5c: fffe8e9b addiw t4,t4,-1
80002b60: 00800193 li gp,8
- 80002b64: 25df1663 bne t5,t4,80002db0 <fail>
+ 80002b64: 2ddf1e63 bne t5,t4,80002e40 <fail>
0000000080002b68 <test_9>:
80002b68: 800000b7 lui ra,0x80000
@@ -887,7 +887,7 @@ Disassembly of section .text:
80002b74: 01000eb7 lui t4,0x1000
80002b78: fffe8e9b addiw t4,t4,-1
80002b7c: 00900193 li gp,9
- 80002b80: 23df1863 bne t5,t4,80002db0 <fail>
+ 80002b80: 2ddf1063 bne t5,t4,80002e40 <fail>
0000000080002b84 <test_10>:
80002b84: 800000b7 lui ra,0x80000
@@ -896,7 +896,7 @@ Disassembly of section .text:
80002b90: 00020eb7 lui t4,0x20
80002b94: fffe8e9b addiw t4,t4,-1
80002b98: 00a00193 li gp,10
- 80002b9c: 21df1a63 bne t5,t4,80002db0 <fail>
+ 80002b9c: 2bdf1263 bne t5,t4,80002e40 <fail>
0000000080002ba0 <test_11>:
80002ba0: 800000b7 lui ra,0x80000
@@ -904,7 +904,7 @@ Disassembly of section .text:
80002ba8: 41f0df1b sraiw t5,ra,0x1f
80002bac: 00000e93 li t4,0
80002bb0: 00b00193 li gp,11
- 80002bb4: 1fdf1e63 bne t5,t4,80002db0 <fail>
+ 80002bb4: 29df1663 bne t5,t4,80002e40 <fail>
0000000080002bb8 <test_12>:
80002bb8: 818180b7 lui ra,0x81818
@@ -913,7 +913,7 @@ Disassembly of section .text:
80002bc4: 81818eb7 lui t4,0x81818
80002bc8: 181e8e9b addiw t4,t4,385
80002bcc: 00c00193 li gp,12
- 80002bd0: 1fdf1063 bne t5,t4,80002db0 <fail>
+ 80002bd0: 27df1863 bne t5,t4,80002e40 <fail>
0000000080002bd4 <test_13>:
80002bd4: 818180b7 lui ra,0x81818
@@ -922,7 +922,7 @@ Disassembly of section .text:
80002be0: c0c0ceb7 lui t4,0xc0c0c
80002be4: 0c0e8e9b addiw t4,t4,192
80002be8: 00d00193 li gp,13
- 80002bec: 1ddf1263 bne t5,t4,80002db0 <fail>
+ 80002bec: 25df1a63 bne t5,t4,80002e40 <fail>
0000000080002bf0 <test_14>:
80002bf0: 818180b7 lui ra,0x81818
@@ -931,7 +931,7 @@ Disassembly of section .text:
80002bfc: ff030eb7 lui t4,0xff030
80002c00: 303e8e9b addiw t4,t4,771
80002c04: 00e00193 li gp,14
- 80002c08: 1bdf1463 bne t5,t4,80002db0 <fail>
+ 80002c08: 23df1c63 bne t5,t4,80002e40 <fail>
0000000080002c0c <test_15>:
80002c0c: 818180b7 lui ra,0x81818
@@ -940,7 +940,7 @@ Disassembly of section .text:
80002c18: fffe0eb7 lui t4,0xfffe0
80002c1c: 606e8e9b addiw t4,t4,1542
80002c20: 00f00193 li gp,15
- 80002c24: 19df1663 bne t5,t4,80002db0 <fail>
+ 80002c24: 21df1e63 bne t5,t4,80002e40 <fail>
0000000080002c28 <test_16>:
80002c28: 818180b7 lui ra,0x81818
@@ -948,129 +948,173 @@ Disassembly of section .text:
80002c30: 41f0df1b sraiw t5,ra,0x1f
80002c34: fff00e93 li t4,-1
80002c38: 01000193 li gp,16
- 80002c3c: 17df1a63 bne t5,t4,80002db0 <fail>
+ 80002c3c: 21df1263 bne t5,t4,80002e40 <fail>
-0000000080002c40 <test_17>:
- 80002c40: 800000b7 lui ra,0x80000
- 80002c44: 4070d09b sraiw ra,ra,0x7
- 80002c48: ff000eb7 lui t4,0xff000
- 80002c4c: 01100193 li gp,17
- 80002c50: 17d09063 bne ra,t4,80002db0 <fail>
+0000000080002c40 <test_44>:
+ 80002c40: fff120b7 lui ra,0xfff12
+ 80002c44: 3450809b addiw ra,ra,837
+ 80002c48: 00c09093 slli ra,ra,0xc
+ 80002c4c: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002c50: 4000df1b sraiw t5,ra,0x0
+ 80002c54: 12345eb7 lui t4,0x12345
+ 80002c58: 678e8e9b addiw t4,t4,1656
+ 80002c5c: 02c00193 li gp,44
+ 80002c60: 1fdf1063 bne t5,t4,80002e40 <fail>
-0000000080002c54 <test_18>:
- 80002c54: 00000213 li tp,0
- 80002c58: 800000b7 lui ra,0x80000
- 80002c5c: 4070df1b sraiw t5,ra,0x7
- 80002c60: 000f0313 mv t1,t5
- 80002c64: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c68: 00200293 li t0,2
- 80002c6c: fe5216e3 bne tp,t0,80002c58 <test_18+0x4>
- 80002c70: ff000eb7 lui t4,0xff000
- 80002c74: 01200193 li gp,18
- 80002c78: 13d31c63 bne t1,t4,80002db0 <fail>
+0000000080002c64 <test_45>:
+ 80002c64: fff120b7 lui ra,0xfff12
+ 80002c68: 3450809b addiw ra,ra,837
+ 80002c6c: 00c09093 slli ra,ra,0xc
+ 80002c70: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002c74: 4040df1b sraiw t5,ra,0x4
+ 80002c78: 01234eb7 lui t4,0x1234
+ 80002c7c: 567e8e9b addiw t4,t4,1383
+ 80002c80: 02d00193 li gp,45
+ 80002c84: 1bdf1e63 bne t5,t4,80002e40 <fail>
-0000000080002c7c <test_19>:
- 80002c7c: 00000213 li tp,0
- 80002c80: 800000b7 lui ra,0x80000
- 80002c84: 40e0df1b sraiw t5,ra,0xe
- 80002c88: 00000013 nop
- 80002c8c: 000f0313 mv t1,t5
- 80002c90: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c94: 00200293 li t0,2
- 80002c98: fe5214e3 bne tp,t0,80002c80 <test_19+0x4>
- 80002c9c: fffe0eb7 lui t4,0xfffe0
- 80002ca0: 01300193 li gp,19
- 80002ca4: 11d31663 bne t1,t4,80002db0 <fail>
+0000000080002c88 <test_46>:
+ 80002c88: 000920b7 lui ra,0x92
+ 80002c8c: 3450809b addiw ra,ra,837
+ 80002c90: 00c09093 slli ra,ra,0xc
+ 80002c94: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002c98: 4000df1b sraiw t5,ra,0x0
+ 80002c9c: 92345eb7 lui t4,0x92345
+ 80002ca0: 678e8e9b addiw t4,t4,1656
+ 80002ca4: 02e00193 li gp,46
+ 80002ca8: 19df1c63 bne t5,t4,80002e40 <fail>
-0000000080002ca8 <test_20>:
- 80002ca8: 00000213 li tp,0
- 80002cac: 800000b7 lui ra,0x80000
- 80002cb0: 0010809b addiw ra,ra,1
- 80002cb4: 41f0df1b sraiw t5,ra,0x1f
- 80002cb8: 00000013 nop
- 80002cbc: 00000013 nop
- 80002cc0: 000f0313 mv t1,t5
- 80002cc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002cc8: 00200293 li t0,2
- 80002ccc: fe5210e3 bne tp,t0,80002cac <test_20+0x4>
- 80002cd0: fff00e93 li t4,-1
- 80002cd4: 01400193 li gp,20
- 80002cd8: 0dd31c63 bne t1,t4,80002db0 <fail>
+0000000080002cac <test_47>:
+ 80002cac: 000920b7 lui ra,0x92
+ 80002cb0: 3450809b addiw ra,ra,837
+ 80002cb4: 00c09093 slli ra,ra,0xc
+ 80002cb8: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002cbc: 4040df1b sraiw t5,ra,0x4
+ 80002cc0: f9234eb7 lui t4,0xf9234
+ 80002cc4: 567e8e9b addiw t4,t4,1383
+ 80002cc8: 02f00193 li gp,47
+ 80002ccc: 17df1a63 bne t5,t4,80002e40 <fail>
-0000000080002cdc <test_21>:
- 80002cdc: 00000213 li tp,0
- 80002ce0: 800000b7 lui ra,0x80000
- 80002ce4: 4070df1b sraiw t5,ra,0x7
- 80002ce8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002cec: 00200293 li t0,2
- 80002cf0: fe5218e3 bne tp,t0,80002ce0 <test_21+0x4>
- 80002cf4: ff000eb7 lui t4,0xff000
- 80002cf8: 01500193 li gp,21
- 80002cfc: 0bdf1a63 bne t5,t4,80002db0 <fail>
+0000000080002cd0 <test_17>:
+ 80002cd0: 800000b7 lui ra,0x80000
+ 80002cd4: 4070d09b sraiw ra,ra,0x7
+ 80002cd8: ff000eb7 lui t4,0xff000
+ 80002cdc: 01100193 li gp,17
+ 80002ce0: 17d09063 bne ra,t4,80002e40 <fail>
-0000000080002d00 <test_22>:
- 80002d00: 00000213 li tp,0
- 80002d04: 800000b7 lui ra,0x80000
- 80002d08: 00000013 nop
- 80002d0c: 40e0df1b sraiw t5,ra,0xe
- 80002d10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d14: 00200293 li t0,2
- 80002d18: fe5216e3 bne tp,t0,80002d04 <test_22+0x4>
- 80002d1c: fffe0eb7 lui t4,0xfffe0
- 80002d20: 01600193 li gp,22
- 80002d24: 09df1663 bne t5,t4,80002db0 <fail>
+0000000080002ce4 <test_18>:
+ 80002ce4: 00000213 li tp,0
+ 80002ce8: 800000b7 lui ra,0x80000
+ 80002cec: 4070df1b sraiw t5,ra,0x7
+ 80002cf0: 000f0313 mv t1,t5
+ 80002cf4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002cf8: 00200293 li t0,2
+ 80002cfc: fe5216e3 bne tp,t0,80002ce8 <test_18+0x4>
+ 80002d00: ff000eb7 lui t4,0xff000
+ 80002d04: 01200193 li gp,18
+ 80002d08: 13d31c63 bne t1,t4,80002e40 <fail>
-0000000080002d28 <test_23>:
- 80002d28: 00000213 li tp,0
- 80002d2c: 800000b7 lui ra,0x80000
- 80002d30: 0010809b addiw ra,ra,1
- 80002d34: 00000013 nop
- 80002d38: 00000013 nop
- 80002d3c: 41f0df1b sraiw t5,ra,0x1f
- 80002d40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d44: 00200293 li t0,2
- 80002d48: fe5212e3 bne tp,t0,80002d2c <test_23+0x4>
- 80002d4c: fff00e93 li t4,-1
- 80002d50: 01700193 li gp,23
- 80002d54: 05df1e63 bne t5,t4,80002db0 <fail>
+0000000080002d0c <test_19>:
+ 80002d0c: 00000213 li tp,0
+ 80002d10: 800000b7 lui ra,0x80000
+ 80002d14: 40e0df1b sraiw t5,ra,0xe
+ 80002d18: 00000013 nop
+ 80002d1c: 000f0313 mv t1,t5
+ 80002d20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d24: 00200293 li t0,2
+ 80002d28: fe5214e3 bne tp,t0,80002d10 <test_19+0x4>
+ 80002d2c: fffe0eb7 lui t4,0xfffe0
+ 80002d30: 01300193 li gp,19
+ 80002d34: 11d31663 bne t1,t4,80002e40 <fail>
-0000000080002d58 <test_24>:
- 80002d58: 41f0509b sraiw ra,zero,0x1f
- 80002d5c: 00000e93 li t4,0
- 80002d60: 01800193 li gp,24
- 80002d64: 05d09663 bne ra,t4,80002db0 <fail>
+0000000080002d38 <test_20>:
+ 80002d38: 00000213 li tp,0
+ 80002d3c: 800000b7 lui ra,0x80000
+ 80002d40: 0010809b addiw ra,ra,1
+ 80002d44: 41f0df1b sraiw t5,ra,0x1f
+ 80002d48: 00000013 nop
+ 80002d4c: 00000013 nop
+ 80002d50: 000f0313 mv t1,t5
+ 80002d54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d58: 00200293 li t0,2
+ 80002d5c: fe5210e3 bne tp,t0,80002d3c <test_20+0x4>
+ 80002d60: fff00e93 li t4,-1
+ 80002d64: 01400193 li gp,20
+ 80002d68: 0dd31c63 bne t1,t4,80002e40 <fail>
-0000000080002d68 <test_25>:
- 80002d68: 01f00093 li ra,31
- 80002d6c: 41c0d01b sraiw zero,ra,0x1c
- 80002d70: 00000e93 li t4,0
- 80002d74: 01900193 li gp,25
- 80002d78: 03d01c63 bne zero,t4,80002db0 <fail>
+0000000080002d6c <test_21>:
+ 80002d6c: 00000213 li tp,0
+ 80002d70: 800000b7 lui ra,0x80000
+ 80002d74: 4070df1b sraiw t5,ra,0x7
+ 80002d78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d7c: 00200293 li t0,2
+ 80002d80: fe5218e3 bne tp,t0,80002d70 <test_21+0x4>
+ 80002d84: ff000eb7 lui t4,0xff000
+ 80002d88: 01500193 li gp,21
+ 80002d8c: 0bdf1a63 bne t5,t4,80002e40 <fail>
-0000000080002d7c <test_26>:
- 80002d7c: 0070009b addiw ra,zero,7
- 80002d80: 03509093 slli ra,ra,0x35
- 80002d84: 41c0df1b sraiw t5,ra,0x1c
- 80002d88: 00000e93 li t4,0
- 80002d8c: 01a00193 li gp,26
- 80002d90: 03df1063 bne t5,t4,80002db0 <fail>
+0000000080002d90 <test_22>:
+ 80002d90: 00000213 li tp,0
+ 80002d94: 800000b7 lui ra,0x80000
+ 80002d98: 00000013 nop
+ 80002d9c: 40e0df1b sraiw t5,ra,0xe
+ 80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002da4: 00200293 li t0,2
+ 80002da8: fe5216e3 bne tp,t0,80002d94 <test_22+0x4>
+ 80002dac: fffe0eb7 lui t4,0xfffe0
+ 80002db0: 01600193 li gp,22
+ 80002db4: 09df1663 bne t5,t4,80002e40 <fail>
-0000000080002d94 <test_27>:
- 80002d94: 00f0009b addiw ra,zero,15
- 80002d98: 01c09093 slli ra,ra,0x1c
- 80002d9c: 4040df1b sraiw t5,ra,0x4
- 80002da0: ff000eb7 lui t4,0xff000
- 80002da4: 01b00193 li gp,27
- 80002da8: 01df1463 bne t5,t4,80002db0 <fail>
- 80002dac: 00301a63 bne zero,gp,80002dc0 <pass>
+0000000080002db8 <test_23>:
+ 80002db8: 00000213 li tp,0
+ 80002dbc: 800000b7 lui ra,0x80000
+ 80002dc0: 0010809b addiw ra,ra,1
+ 80002dc4: 00000013 nop
+ 80002dc8: 00000013 nop
+ 80002dcc: 41f0df1b sraiw t5,ra,0x1f
+ 80002dd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002dd4: 00200293 li t0,2
+ 80002dd8: fe5212e3 bne tp,t0,80002dbc <test_23+0x4>
+ 80002ddc: fff00e93 li t4,-1
+ 80002de0: 01700193 li gp,23
+ 80002de4: 05df1e63 bne t5,t4,80002e40 <fail>
-0000000080002db0 <fail>:
- 80002db0: 00119513 slli a0,gp,0x1
- 80002db4: 00050063 beqz a0,80002db4 <fail+0x4>
- 80002db8: 00156513 ori a0,a0,1
- 80002dbc: 00000073 ecall
+0000000080002de8 <test_24>:
+ 80002de8: 41f0509b sraiw ra,zero,0x1f
+ 80002dec: 00000e93 li t4,0
+ 80002df0: 01800193 li gp,24
+ 80002df4: 05d09663 bne ra,t4,80002e40 <fail>
-0000000080002dc0 <pass>:
- 80002dc0: 00100513 li a0,1
- 80002dc4: 00000073 ecall
- 80002dc8: c0001073 unimp
+0000000080002df8 <test_25>:
+ 80002df8: 01f00093 li ra,31
+ 80002dfc: 41c0d01b sraiw zero,ra,0x1c
+ 80002e00: 00000e93 li t4,0
+ 80002e04: 01900193 li gp,25
+ 80002e08: 03d01c63 bne zero,t4,80002e40 <fail>
+
+0000000080002e0c <test_26>:
+ 80002e0c: 0070009b addiw ra,zero,7
+ 80002e10: 03509093 slli ra,ra,0x35
+ 80002e14: 41c0df1b sraiw t5,ra,0x1c
+ 80002e18: 00000e93 li t4,0
+ 80002e1c: 01a00193 li gp,26
+ 80002e20: 03df1063 bne t5,t4,80002e40 <fail>
+
+0000000080002e24 <test_27>:
+ 80002e24: 00f0009b addiw ra,zero,15
+ 80002e28: 01c09093 slli ra,ra,0x1c
+ 80002e2c: 4040df1b sraiw t5,ra,0x4
+ 80002e30: ff000eb7 lui t4,0xff000
+ 80002e34: 01b00193 li gp,27
+ 80002e38: 01df1463 bne t5,t4,80002e40 <fail>
+ 80002e3c: 00301a63 bne zero,gp,80002e50 <pass>
+
+0000000080002e40 <fail>:
+ 80002e40: 00119513 slli a0,gp,0x1
+ 80002e44: 00050063 beqz a0,80002e44 <fail+0x4>
+ 80002e48: 00156513 ori a0,a0,1
+ 80002e4c: 00000073 ecall
+
+0000000080002e50 <pass>:
+ 80002e50: 00100513 li a0,1
+ 80002e54: 00000073 ecall
+ 80002e58: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-v-sraiw.elf b/test/riscv-tests/rv64ui-v-sraiw.elf
index 9a16cd8..8dca102 100644
--- a/test/riscv-tests/rv64ui-v-sraiw.elf
+++ b/test/riscv-tests/rv64ui-v-sraiw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sraw.dump b/test/riscv-tests/rv64ui-v-sraw.dump
index a2eaf36..69dfdd6 100644
--- a/test/riscv-tests/rv64ui-v-sraw.dump
+++ b/test/riscv-tests/rv64ui-v-sraw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -410,7 +410,7 @@ Disassembly of section .text:
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00001697 auipc a3,0x1
- 8000245c: c2868693 addi a3,a3,-984 # 80003080 <pass+0xc>
+ 8000245c: cc868693 addi a3,a3,-824 # 80003120 <pass+0xc>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00001617 auipc a2,0x1
- 800024b8: c5c60613 addi a2,a2,-932 # 80003110 <pass+0x9c>
+ 800024b8: cfc60613 addi a2,a2,-772 # 800031b0 <pass+0x9c>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00001617 auipc a2,0x1
- 80002508: c2460613 addi a2,a2,-988 # 80003128 <pass+0xb4>
+ 80002508: cc460613 addi a2,a2,-828 # 800031c8 <pass+0xb4>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00001697 auipc a3,0x1
- 80002558: b7468693 addi a3,a3,-1164 # 800030c8 <pass+0x54>
+ 80002558: c1468693 addi a3,a3,-1004 # 80003168 <pass+0x54>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00001697 auipc a3,0x1
- 80002674: b9068693 addi a3,a3,-1136 # 80003200 <pass+0x18c>
+ 80002674: c3068693 addi a3,a3,-976 # 800032a0 <pass+0x18c>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -568,7 +568,7 @@ Disassembly of section .text:
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
800026c8: 00001617 auipc a2,0x1
- 800026cc: b1060613 addi a2,a2,-1264 # 800031d8 <pass+0x164>
+ 800026cc: bb060613 addi a2,a2,-1104 # 80003278 <pass+0x164>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -641,7 +641,7 @@ Disassembly of section .text:
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
800027ec: 00001697 auipc a3,0x1
- 800027f0: a4468693 addi a3,a3,-1468 # 80003230 <pass+0x1bc>
+ 800027f0: ae468693 addi a3,a3,-1308 # 800032d0 <pass+0x1bc>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00001697 auipc a3,0x1
- 80002840: 96468693 addi a3,a3,-1692 # 800031a0 <pass+0x12c>
+ 80002840: a0468693 addi a3,a3,-1532 # 80003240 <pass+0x12c>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00001697 auipc a3,0x1
- 80002878: 8f468693 addi a3,a3,-1804 # 80003168 <pass+0xf4>
+ 80002878: 99468693 addi a3,a3,-1644 # 80003208 <pass+0xf4>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -832,7 +832,7 @@ Disassembly of section .text:
80002ad0: 4020df3b sraw t5,ra,sp
80002ad4: 80000eb7 lui t4,0x80000
80002ad8: 00200193 li gp,2
- 80002adc: 59df1463 bne t5,t4,80003064 <fail>
+ 80002adc: 63df1463 bne t5,t4,80003104 <fail>
0000000080002ae0 <test_3>:
80002ae0: 800000b7 lui ra,0x80000
@@ -840,7 +840,7 @@ Disassembly of section .text:
80002ae8: 4020df3b sraw t5,ra,sp
80002aec: c0000eb7 lui t4,0xc0000
80002af0: 00300193 li gp,3
- 80002af4: 57df1863 bne t5,t4,80003064 <fail>
+ 80002af4: 61df1863 bne t5,t4,80003104 <fail>
0000000080002af8 <test_4>:
80002af8: 800000b7 lui ra,0x80000
@@ -848,7 +848,7 @@ Disassembly of section .text:
80002b00: 4020df3b sraw t5,ra,sp
80002b04: ff000eb7 lui t4,0xff000
80002b08: 00400193 li gp,4
- 80002b0c: 55df1c63 bne t5,t4,80003064 <fail>
+ 80002b0c: 5fdf1c63 bne t5,t4,80003104 <fail>
0000000080002b10 <test_5>:
80002b10: 800000b7 lui ra,0x80000
@@ -856,7 +856,7 @@ Disassembly of section .text:
80002b18: 4020df3b sraw t5,ra,sp
80002b1c: fffe0eb7 lui t4,0xfffe0
80002b20: 00500193 li gp,5
- 80002b24: 55df1063 bne t5,t4,80003064 <fail>
+ 80002b24: 5fdf1063 bne t5,t4,80003104 <fail>
0000000080002b28 <test_6>:
80002b28: 800000b7 lui ra,0x80000
@@ -865,7 +865,7 @@ Disassembly of section .text:
80002b34: 4020df3b sraw t5,ra,sp
80002b38: fff00e93 li t4,-1
80002b3c: 00600193 li gp,6
- 80002b40: 53df1263 bne t5,t4,80003064 <fail>
+ 80002b40: 5ddf1263 bne t5,t4,80003104 <fail>
0000000080002b44 <test_7>:
80002b44: 800000b7 lui ra,0x80000
@@ -875,7 +875,7 @@ Disassembly of section .text:
80002b54: 80000eb7 lui t4,0x80000
80002b58: fffe8e9b addiw t4,t4,-1
80002b5c: 00700193 li gp,7
- 80002b60: 51df1263 bne t5,t4,80003064 <fail>
+ 80002b60: 5bdf1263 bne t5,t4,80003104 <fail>
0000000080002b64 <test_8>:
80002b64: 800000b7 lui ra,0x80000
@@ -885,7 +885,7 @@ Disassembly of section .text:
80002b74: 40000eb7 lui t4,0x40000
80002b78: fffe8e9b addiw t4,t4,-1
80002b7c: 00800193 li gp,8
- 80002b80: 4fdf1263 bne t5,t4,80003064 <fail>
+ 80002b80: 59df1263 bne t5,t4,80003104 <fail>
0000000080002b84 <test_9>:
80002b84: 800000b7 lui ra,0x80000
@@ -895,7 +895,7 @@ Disassembly of section .text:
80002b94: 01000eb7 lui t4,0x1000
80002b98: fffe8e9b addiw t4,t4,-1
80002b9c: 00900193 li gp,9
- 80002ba0: 4ddf1263 bne t5,t4,80003064 <fail>
+ 80002ba0: 57df1263 bne t5,t4,80003104 <fail>
0000000080002ba4 <test_10>:
80002ba4: 800000b7 lui ra,0x80000
@@ -905,7 +905,7 @@ Disassembly of section .text:
80002bb4: 00020eb7 lui t4,0x20
80002bb8: fffe8e9b addiw t4,t4,-1
80002bbc: 00a00193 li gp,10
- 80002bc0: 4bdf1263 bne t5,t4,80003064 <fail>
+ 80002bc0: 55df1263 bne t5,t4,80003104 <fail>
0000000080002bc4 <test_11>:
80002bc4: 800000b7 lui ra,0x80000
@@ -914,7 +914,7 @@ Disassembly of section .text:
80002bd0: 4020df3b sraw t5,ra,sp
80002bd4: 00000e93 li t4,0
80002bd8: 00b00193 li gp,11
- 80002bdc: 49df1463 bne t5,t4,80003064 <fail>
+ 80002bdc: 53df1463 bne t5,t4,80003104 <fail>
0000000080002be0 <test_12>:
80002be0: 818180b7 lui ra,0x81818
@@ -924,7 +924,7 @@ Disassembly of section .text:
80002bf0: 81818eb7 lui t4,0x81818
80002bf4: 181e8e9b addiw t4,t4,385
80002bf8: 00c00193 li gp,12
- 80002bfc: 47df1463 bne t5,t4,80003064 <fail>
+ 80002bfc: 51df1463 bne t5,t4,80003104 <fail>
0000000080002c00 <test_13>:
80002c00: 818180b7 lui ra,0x81818
@@ -934,7 +934,7 @@ Disassembly of section .text:
80002c10: c0c0ceb7 lui t4,0xc0c0c
80002c14: 0c0e8e9b addiw t4,t4,192
80002c18: 00d00193 li gp,13
- 80002c1c: 45df1463 bne t5,t4,80003064 <fail>
+ 80002c1c: 4fdf1463 bne t5,t4,80003104 <fail>
0000000080002c20 <test_14>:
80002c20: 818180b7 lui ra,0x81818
@@ -944,7 +944,7 @@ Disassembly of section .text:
80002c30: ff030eb7 lui t4,0xff030
80002c34: 303e8e9b addiw t4,t4,771
80002c38: 00e00193 li gp,14
- 80002c3c: 43df1463 bne t5,t4,80003064 <fail>
+ 80002c3c: 4ddf1463 bne t5,t4,80003104 <fail>
0000000080002c40 <test_15>:
80002c40: 818180b7 lui ra,0x81818
@@ -954,7 +954,7 @@ Disassembly of section .text:
80002c50: fffe0eb7 lui t4,0xfffe0
80002c54: 606e8e9b addiw t4,t4,1542
80002c58: 00f00193 li gp,15
- 80002c5c: 41df1463 bne t5,t4,80003064 <fail>
+ 80002c5c: 4bdf1463 bne t5,t4,80003104 <fail>
0000000080002c60 <test_16>:
80002c60: 818180b7 lui ra,0x81818
@@ -963,7 +963,7 @@ Disassembly of section .text:
80002c6c: 4020df3b sraw t5,ra,sp
80002c70: fff00e93 li t4,-1
80002c74: 01000193 li gp,16
- 80002c78: 3fdf1663 bne t5,t4,80003064 <fail>
+ 80002c78: 49df1663 bne t5,t4,80003104 <fail>
0000000080002c7c <test_17>:
80002c7c: 818180b7 lui ra,0x81818
@@ -973,7 +973,7 @@ Disassembly of section .text:
80002c8c: 81818eb7 lui t4,0x81818
80002c90: 181e8e9b addiw t4,t4,385
80002c94: 01100193 li gp,17
- 80002c98: 3ddf1663 bne t5,t4,80003064 <fail>
+ 80002c98: 47df1663 bne t5,t4,80003104 <fail>
0000000080002c9c <test_18>:
80002c9c: 818180b7 lui ra,0x81818
@@ -983,7 +983,7 @@ Disassembly of section .text:
80002cac: c0c0ceb7 lui t4,0xc0c0c
80002cb0: 0c0e8e9b addiw t4,t4,192
80002cb4: 01200193 li gp,18
- 80002cb8: 3bdf1663 bne t5,t4,80003064 <fail>
+ 80002cb8: 45df1663 bne t5,t4,80003104 <fail>
0000000080002cbc <test_19>:
80002cbc: 818180b7 lui ra,0x81818
@@ -993,7 +993,7 @@ Disassembly of section .text:
80002ccc: ff030eb7 lui t4,0xff030
80002cd0: 303e8e9b addiw t4,t4,771
80002cd4: 01300193 li gp,19
- 80002cd8: 39df1663 bne t5,t4,80003064 <fail>
+ 80002cd8: 43df1663 bne t5,t4,80003104 <fail>
0000000080002cdc <test_20>:
80002cdc: 818180b7 lui ra,0x81818
@@ -1003,7 +1003,7 @@ Disassembly of section .text:
80002cec: fffe0eb7 lui t4,0xfffe0
80002cf0: 606e8e9b addiw t4,t4,1542
80002cf4: 01400193 li gp,20
- 80002cf8: 37df1663 bne t5,t4,80003064 <fail>
+ 80002cf8: 41df1663 bne t5,t4,80003104 <fail>
0000000080002cfc <test_21>:
80002cfc: 818180b7 lui ra,0x81818
@@ -1012,270 +1012,318 @@ Disassembly of section .text:
80002d08: 4020df3b sraw t5,ra,sp
80002d0c: fff00e93 li t4,-1
80002d10: 01500193 li gp,21
- 80002d14: 35df1863 bne t5,t4,80003064 <fail>
-
-0000000080002d18 <test_22>:
- 80002d18: 800000b7 lui ra,0x80000
- 80002d1c: 00700113 li sp,7
- 80002d20: 4020d0bb sraw ra,ra,sp
- 80002d24: ff000eb7 lui t4,0xff000
- 80002d28: 01600193 li gp,22
- 80002d2c: 33d09c63 bne ra,t4,80003064 <fail>
-
-0000000080002d30 <test_23>:
- 80002d30: 800000b7 lui ra,0x80000
- 80002d34: 00e00113 li sp,14
- 80002d38: 4020d13b sraw sp,ra,sp
- 80002d3c: fffe0eb7 lui t4,0xfffe0
- 80002d40: 01700193 li gp,23
- 80002d44: 33d11063 bne sp,t4,80003064 <fail>
-
-0000000080002d48 <test_24>:
- 80002d48: 00700093 li ra,7
- 80002d4c: 4010d0bb sraw ra,ra,ra
- 80002d50: 00000e93 li t4,0
- 80002d54: 01800193 li gp,24
- 80002d58: 31d09663 bne ra,t4,80003064 <fail>
-
-0000000080002d5c <test_25>:
- 80002d5c: 00000213 li tp,0
- 80002d60: 800000b7 lui ra,0x80000
- 80002d64: 00700113 li sp,7
- 80002d68: 4020df3b sraw t5,ra,sp
- 80002d6c: 000f0313 mv t1,t5
- 80002d70: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d74: 00200293 li t0,2
- 80002d78: fe5214e3 bne tp,t0,80002d60 <test_25+0x4>
- 80002d7c: ff000eb7 lui t4,0xff000
- 80002d80: 01900193 li gp,25
- 80002d84: 2fd31063 bne t1,t4,80003064 <fail>
-
-0000000080002d88 <test_26>:
- 80002d88: 00000213 li tp,0
- 80002d8c: 800000b7 lui ra,0x80000
- 80002d90: 00e00113 li sp,14
- 80002d94: 4020df3b sraw t5,ra,sp
- 80002d98: 00000013 nop
- 80002d9c: 000f0313 mv t1,t5
- 80002da0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002da4: 00200293 li t0,2
- 80002da8: fe5212e3 bne tp,t0,80002d8c <test_26+0x4>
- 80002dac: fffe0eb7 lui t4,0xfffe0
- 80002db0: 01a00193 li gp,26
- 80002db4: 2bd31863 bne t1,t4,80003064 <fail>
-
-0000000080002db8 <test_27>:
- 80002db8: 00000213 li tp,0
- 80002dbc: 800000b7 lui ra,0x80000
- 80002dc0: 01f00113 li sp,31
- 80002dc4: 4020df3b sraw t5,ra,sp
- 80002dc8: 00000013 nop
- 80002dcc: 00000013 nop
- 80002dd0: 000f0313 mv t1,t5
- 80002dd4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002dd8: 00200293 li t0,2
- 80002ddc: fe5210e3 bne tp,t0,80002dbc <test_27+0x4>
- 80002de0: fff00e93 li t4,-1
- 80002de4: 01b00193 li gp,27
- 80002de8: 27d31e63 bne t1,t4,80003064 <fail>
-
-0000000080002dec <test_28>:
- 80002dec: 00000213 li tp,0
- 80002df0: 800000b7 lui ra,0x80000
- 80002df4: 00700113 li sp,7
- 80002df8: 4020df3b sraw t5,ra,sp
- 80002dfc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e00: 00200293 li t0,2
- 80002e04: fe5216e3 bne tp,t0,80002df0 <test_28+0x4>
- 80002e08: ff000eb7 lui t4,0xff000
- 80002e0c: 01c00193 li gp,28
- 80002e10: 25df1a63 bne t5,t4,80003064 <fail>
-
-0000000080002e14 <test_29>:
- 80002e14: 00000213 li tp,0
- 80002e18: 800000b7 lui ra,0x80000
- 80002e1c: 00e00113 li sp,14
- 80002e20: 00000013 nop
- 80002e24: 4020df3b sraw t5,ra,sp
- 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e2c: 00200293 li t0,2
- 80002e30: fe5214e3 bne tp,t0,80002e18 <test_29+0x4>
- 80002e34: fffe0eb7 lui t4,0xfffe0
- 80002e38: 01d00193 li gp,29
- 80002e3c: 23df1463 bne t5,t4,80003064 <fail>
-
-0000000080002e40 <test_30>:
- 80002e40: 00000213 li tp,0
- 80002e44: 800000b7 lui ra,0x80000
- 80002e48: 01f00113 li sp,31
- 80002e4c: 00000013 nop
- 80002e50: 00000013 nop
- 80002e54: 4020df3b sraw t5,ra,sp
- 80002e58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e5c: 00200293 li t0,2
- 80002e60: fe5212e3 bne tp,t0,80002e44 <test_30+0x4>
- 80002e64: fff00e93 li t4,-1
- 80002e68: 01e00193 li gp,30
- 80002e6c: 1fdf1c63 bne t5,t4,80003064 <fail>
-
-0000000080002e70 <test_31>:
- 80002e70: 00000213 li tp,0
- 80002e74: 800000b7 lui ra,0x80000
- 80002e78: 00000013 nop
- 80002e7c: 00700113 li sp,7
- 80002e80: 4020df3b sraw t5,ra,sp
- 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e88: 00200293 li t0,2
- 80002e8c: fe5214e3 bne tp,t0,80002e74 <test_31+0x4>
- 80002e90: ff000eb7 lui t4,0xff000
- 80002e94: 01f00193 li gp,31
- 80002e98: 1ddf1663 bne t5,t4,80003064 <fail>
-
-0000000080002e9c <test_32>:
- 80002e9c: 00000213 li tp,0
- 80002ea0: 800000b7 lui ra,0x80000
- 80002ea4: 00000013 nop
- 80002ea8: 00e00113 li sp,14
- 80002eac: 00000013 nop
- 80002eb0: 4020df3b sraw t5,ra,sp
- 80002eb4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002eb8: 00200293 li t0,2
- 80002ebc: fe5212e3 bne tp,t0,80002ea0 <test_32+0x4>
- 80002ec0: fffe0eb7 lui t4,0xfffe0
- 80002ec4: 02000193 li gp,32
- 80002ec8: 19df1e63 bne t5,t4,80003064 <fail>
-
-0000000080002ecc <test_33>:
- 80002ecc: 00000213 li tp,0
- 80002ed0: 800000b7 lui ra,0x80000
- 80002ed4: 00000013 nop
- 80002ed8: 00000013 nop
- 80002edc: 01f00113 li sp,31
- 80002ee0: 4020df3b sraw t5,ra,sp
- 80002ee4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ee8: 00200293 li t0,2
- 80002eec: fe5212e3 bne tp,t0,80002ed0 <test_33+0x4>
- 80002ef0: fff00e93 li t4,-1
- 80002ef4: 02100193 li gp,33
- 80002ef8: 17df1663 bne t5,t4,80003064 <fail>
-
-0000000080002efc <test_34>:
- 80002efc: 00000213 li tp,0
- 80002f00: 00700113 li sp,7
- 80002f04: 800000b7 lui ra,0x80000
- 80002f08: 4020df3b sraw t5,ra,sp
- 80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f10: 00200293 li t0,2
- 80002f14: fe5216e3 bne tp,t0,80002f00 <test_34+0x4>
- 80002f18: ff000eb7 lui t4,0xff000
- 80002f1c: 02200193 li gp,34
- 80002f20: 15df1263 bne t5,t4,80003064 <fail>
-
-0000000080002f24 <test_35>:
- 80002f24: 00000213 li tp,0
- 80002f28: 00e00113 li sp,14
- 80002f2c: 800000b7 lui ra,0x80000
- 80002f30: 00000013 nop
- 80002f34: 4020df3b sraw t5,ra,sp
- 80002f38: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f3c: 00200293 li t0,2
- 80002f40: fe5214e3 bne tp,t0,80002f28 <test_35+0x4>
- 80002f44: fffe0eb7 lui t4,0xfffe0
- 80002f48: 02300193 li gp,35
- 80002f4c: 11df1c63 bne t5,t4,80003064 <fail>
-
-0000000080002f50 <test_36>:
- 80002f50: 00000213 li tp,0
- 80002f54: 01f00113 li sp,31
- 80002f58: 800000b7 lui ra,0x80000
- 80002f5c: 00000013 nop
- 80002f60: 00000013 nop
- 80002f64: 4020df3b sraw t5,ra,sp
- 80002f68: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f6c: 00200293 li t0,2
- 80002f70: fe5212e3 bne tp,t0,80002f54 <test_36+0x4>
- 80002f74: fff00e93 li t4,-1
- 80002f78: 02400193 li gp,36
- 80002f7c: 0fdf1463 bne t5,t4,80003064 <fail>
-
-0000000080002f80 <test_37>:
- 80002f80: 00000213 li tp,0
- 80002f84: 00700113 li sp,7
- 80002f88: 00000013 nop
- 80002f8c: 800000b7 lui ra,0x80000
- 80002f90: 4020df3b sraw t5,ra,sp
- 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f98: 00200293 li t0,2
- 80002f9c: fe5214e3 bne tp,t0,80002f84 <test_37+0x4>
- 80002fa0: ff000eb7 lui t4,0xff000
- 80002fa4: 02500193 li gp,37
- 80002fa8: 0bdf1e63 bne t5,t4,80003064 <fail>
-
-0000000080002fac <test_38>:
- 80002fac: 00000213 li tp,0
- 80002fb0: 00e00113 li sp,14
- 80002fb4: 00000013 nop
- 80002fb8: 800000b7 lui ra,0x80000
- 80002fbc: 00000013 nop
- 80002fc0: 4020df3b sraw t5,ra,sp
- 80002fc4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002fc8: 00200293 li t0,2
- 80002fcc: fe5212e3 bne tp,t0,80002fb0 <test_38+0x4>
- 80002fd0: fffe0eb7 lui t4,0xfffe0
- 80002fd4: 02600193 li gp,38
- 80002fd8: 09df1663 bne t5,t4,80003064 <fail>
-
-0000000080002fdc <test_39>:
- 80002fdc: 00000213 li tp,0
- 80002fe0: 01f00113 li sp,31
- 80002fe4: 00000013 nop
- 80002fe8: 00000013 nop
- 80002fec: 800000b7 lui ra,0x80000
- 80002ff0: 4020df3b sraw t5,ra,sp
- 80002ff4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ff8: 00200293 li t0,2
- 80002ffc: fe5212e3 bne tp,t0,80002fe0 <test_39+0x4>
- 80003000: fff00e93 li t4,-1
- 80003004: 02700193 li gp,39
- 80003008: 05df1e63 bne t5,t4,80003064 <fail>
-
-000000008000300c <test_40>:
- 8000300c: 00f00093 li ra,15
- 80003010: 4010513b sraw sp,zero,ra
- 80003014: 00000e93 li t4,0
- 80003018: 02800193 li gp,40
- 8000301c: 05d11463 bne sp,t4,80003064 <fail>
-
-0000000080003020 <test_41>:
- 80003020: 02000093 li ra,32
- 80003024: 4000d13b sraw sp,ra,zero
- 80003028: 02000e93 li t4,32
- 8000302c: 02900193 li gp,41
- 80003030: 03d11a63 bne sp,t4,80003064 <fail>
-
-0000000080003034 <test_42>:
- 80003034: 400050bb sraw ra,zero,zero
- 80003038: 00000e93 li t4,0
- 8000303c: 02a00193 li gp,42
- 80003040: 03d09263 bne ra,t4,80003064 <fail>
-
-0000000080003044 <test_43>:
- 80003044: 40000093 li ra,1024
- 80003048: 00001137 lui sp,0x1
- 8000304c: 8001011b addiw sp,sp,-2048
- 80003050: 4020d03b sraw zero,ra,sp
- 80003054: 00000e93 li t4,0
- 80003058: 02b00193 li gp,43
- 8000305c: 01d01463 bne zero,t4,80003064 <fail>
- 80003060: 00301a63 bne zero,gp,80003074 <pass>
-
-0000000080003064 <fail>:
- 80003064: 00119513 slli a0,gp,0x1
- 80003068: 00050063 beqz a0,80003068 <fail+0x4>
- 8000306c: 00156513 ori a0,a0,1
- 80003070: 00000073 ecall
-
-0000000080003074 <pass>:
- 80003074: 00100513 li a0,1
- 80003078: 00000073 ecall
- 8000307c: c0001073 unimp
+ 80002d14: 3fdf1863 bne t5,t4,80003104 <fail>
+
+0000000080002d18 <test_44>:
+ 80002d18: fff120b7 lui ra,0xfff12
+ 80002d1c: 3450809b addiw ra,ra,837
+ 80002d20: 00c09093 slli ra,ra,0xc
+ 80002d24: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002d28: 00000113 li sp,0
+ 80002d2c: 4020df3b sraw t5,ra,sp
+ 80002d30: 12345eb7 lui t4,0x12345
+ 80002d34: 678e8e9b addiw t4,t4,1656
+ 80002d38: 02c00193 li gp,44
+ 80002d3c: 3ddf1463 bne t5,t4,80003104 <fail>
+
+0000000080002d40 <test_45>:
+ 80002d40: fff120b7 lui ra,0xfff12
+ 80002d44: 3450809b addiw ra,ra,837
+ 80002d48: 00c09093 slli ra,ra,0xc
+ 80002d4c: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002d50: 00400113 li sp,4
+ 80002d54: 4020df3b sraw t5,ra,sp
+ 80002d58: 01234eb7 lui t4,0x1234
+ 80002d5c: 567e8e9b addiw t4,t4,1383
+ 80002d60: 02d00193 li gp,45
+ 80002d64: 3bdf1063 bne t5,t4,80003104 <fail>
+
+0000000080002d68 <test_46>:
+ 80002d68: 000920b7 lui ra,0x92
+ 80002d6c: 3450809b addiw ra,ra,837
+ 80002d70: 00c09093 slli ra,ra,0xc
+ 80002d74: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002d78: 00000113 li sp,0
+ 80002d7c: 4020df3b sraw t5,ra,sp
+ 80002d80: 92345eb7 lui t4,0x92345
+ 80002d84: 678e8e9b addiw t4,t4,1656
+ 80002d88: 02e00193 li gp,46
+ 80002d8c: 37df1c63 bne t5,t4,80003104 <fail>
+
+0000000080002d90 <test_47>:
+ 80002d90: 000920b7 lui ra,0x92
+ 80002d94: 3450809b addiw ra,ra,837
+ 80002d98: 00c09093 slli ra,ra,0xc
+ 80002d9c: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002da0: 00400113 li sp,4
+ 80002da4: 4020df3b sraw t5,ra,sp
+ 80002da8: f9234eb7 lui t4,0xf9234
+ 80002dac: 567e8e9b addiw t4,t4,1383
+ 80002db0: 02f00193 li gp,47
+ 80002db4: 35df1863 bne t5,t4,80003104 <fail>
+
+0000000080002db8 <test_22>:
+ 80002db8: 800000b7 lui ra,0x80000
+ 80002dbc: 00700113 li sp,7
+ 80002dc0: 4020d0bb sraw ra,ra,sp
+ 80002dc4: ff000eb7 lui t4,0xff000
+ 80002dc8: 01600193 li gp,22
+ 80002dcc: 33d09c63 bne ra,t4,80003104 <fail>
+
+0000000080002dd0 <test_23>:
+ 80002dd0: 800000b7 lui ra,0x80000
+ 80002dd4: 00e00113 li sp,14
+ 80002dd8: 4020d13b sraw sp,ra,sp
+ 80002ddc: fffe0eb7 lui t4,0xfffe0
+ 80002de0: 01700193 li gp,23
+ 80002de4: 33d11063 bne sp,t4,80003104 <fail>
+
+0000000080002de8 <test_24>:
+ 80002de8: 00700093 li ra,7
+ 80002dec: 4010d0bb sraw ra,ra,ra
+ 80002df0: 00000e93 li t4,0
+ 80002df4: 01800193 li gp,24
+ 80002df8: 31d09663 bne ra,t4,80003104 <fail>
+
+0000000080002dfc <test_25>:
+ 80002dfc: 00000213 li tp,0
+ 80002e00: 800000b7 lui ra,0x80000
+ 80002e04: 00700113 li sp,7
+ 80002e08: 4020df3b sraw t5,ra,sp
+ 80002e0c: 000f0313 mv t1,t5
+ 80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e14: 00200293 li t0,2
+ 80002e18: fe5214e3 bne tp,t0,80002e00 <test_25+0x4>
+ 80002e1c: ff000eb7 lui t4,0xff000
+ 80002e20: 01900193 li gp,25
+ 80002e24: 2fd31063 bne t1,t4,80003104 <fail>
+
+0000000080002e28 <test_26>:
+ 80002e28: 00000213 li tp,0
+ 80002e2c: 800000b7 lui ra,0x80000
+ 80002e30: 00e00113 li sp,14
+ 80002e34: 4020df3b sraw t5,ra,sp
+ 80002e38: 00000013 nop
+ 80002e3c: 000f0313 mv t1,t5
+ 80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e44: 00200293 li t0,2
+ 80002e48: fe5212e3 bne tp,t0,80002e2c <test_26+0x4>
+ 80002e4c: fffe0eb7 lui t4,0xfffe0
+ 80002e50: 01a00193 li gp,26
+ 80002e54: 2bd31863 bne t1,t4,80003104 <fail>
+
+0000000080002e58 <test_27>:
+ 80002e58: 00000213 li tp,0
+ 80002e5c: 800000b7 lui ra,0x80000
+ 80002e60: 01f00113 li sp,31
+ 80002e64: 4020df3b sraw t5,ra,sp
+ 80002e68: 00000013 nop
+ 80002e6c: 00000013 nop
+ 80002e70: 000f0313 mv t1,t5
+ 80002e74: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e78: 00200293 li t0,2
+ 80002e7c: fe5210e3 bne tp,t0,80002e5c <test_27+0x4>
+ 80002e80: fff00e93 li t4,-1
+ 80002e84: 01b00193 li gp,27
+ 80002e88: 27d31e63 bne t1,t4,80003104 <fail>
+
+0000000080002e8c <test_28>:
+ 80002e8c: 00000213 li tp,0
+ 80002e90: 800000b7 lui ra,0x80000
+ 80002e94: 00700113 li sp,7
+ 80002e98: 4020df3b sraw t5,ra,sp
+ 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ea0: 00200293 li t0,2
+ 80002ea4: fe5216e3 bne tp,t0,80002e90 <test_28+0x4>
+ 80002ea8: ff000eb7 lui t4,0xff000
+ 80002eac: 01c00193 li gp,28
+ 80002eb0: 25df1a63 bne t5,t4,80003104 <fail>
+
+0000000080002eb4 <test_29>:
+ 80002eb4: 00000213 li tp,0
+ 80002eb8: 800000b7 lui ra,0x80000
+ 80002ebc: 00e00113 li sp,14
+ 80002ec0: 00000013 nop
+ 80002ec4: 4020df3b sraw t5,ra,sp
+ 80002ec8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ecc: 00200293 li t0,2
+ 80002ed0: fe5214e3 bne tp,t0,80002eb8 <test_29+0x4>
+ 80002ed4: fffe0eb7 lui t4,0xfffe0
+ 80002ed8: 01d00193 li gp,29
+ 80002edc: 23df1463 bne t5,t4,80003104 <fail>
+
+0000000080002ee0 <test_30>:
+ 80002ee0: 00000213 li tp,0
+ 80002ee4: 800000b7 lui ra,0x80000
+ 80002ee8: 01f00113 li sp,31
+ 80002eec: 00000013 nop
+ 80002ef0: 00000013 nop
+ 80002ef4: 4020df3b sraw t5,ra,sp
+ 80002ef8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002efc: 00200293 li t0,2
+ 80002f00: fe5212e3 bne tp,t0,80002ee4 <test_30+0x4>
+ 80002f04: fff00e93 li t4,-1
+ 80002f08: 01e00193 li gp,30
+ 80002f0c: 1fdf1c63 bne t5,t4,80003104 <fail>
+
+0000000080002f10 <test_31>:
+ 80002f10: 00000213 li tp,0
+ 80002f14: 800000b7 lui ra,0x80000
+ 80002f18: 00000013 nop
+ 80002f1c: 00700113 li sp,7
+ 80002f20: 4020df3b sraw t5,ra,sp
+ 80002f24: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f28: 00200293 li t0,2
+ 80002f2c: fe5214e3 bne tp,t0,80002f14 <test_31+0x4>
+ 80002f30: ff000eb7 lui t4,0xff000
+ 80002f34: 01f00193 li gp,31
+ 80002f38: 1ddf1663 bne t5,t4,80003104 <fail>
+
+0000000080002f3c <test_32>:
+ 80002f3c: 00000213 li tp,0
+ 80002f40: 800000b7 lui ra,0x80000
+ 80002f44: 00000013 nop
+ 80002f48: 00e00113 li sp,14
+ 80002f4c: 00000013 nop
+ 80002f50: 4020df3b sraw t5,ra,sp
+ 80002f54: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f58: 00200293 li t0,2
+ 80002f5c: fe5212e3 bne tp,t0,80002f40 <test_32+0x4>
+ 80002f60: fffe0eb7 lui t4,0xfffe0
+ 80002f64: 02000193 li gp,32
+ 80002f68: 19df1e63 bne t5,t4,80003104 <fail>
+
+0000000080002f6c <test_33>:
+ 80002f6c: 00000213 li tp,0
+ 80002f70: 800000b7 lui ra,0x80000
+ 80002f74: 00000013 nop
+ 80002f78: 00000013 nop
+ 80002f7c: 01f00113 li sp,31
+ 80002f80: 4020df3b sraw t5,ra,sp
+ 80002f84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f88: 00200293 li t0,2
+ 80002f8c: fe5212e3 bne tp,t0,80002f70 <test_33+0x4>
+ 80002f90: fff00e93 li t4,-1
+ 80002f94: 02100193 li gp,33
+ 80002f98: 17df1663 bne t5,t4,80003104 <fail>
+
+0000000080002f9c <test_34>:
+ 80002f9c: 00000213 li tp,0
+ 80002fa0: 00700113 li sp,7
+ 80002fa4: 800000b7 lui ra,0x80000
+ 80002fa8: 4020df3b sraw t5,ra,sp
+ 80002fac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002fb0: 00200293 li t0,2
+ 80002fb4: fe5216e3 bne tp,t0,80002fa0 <test_34+0x4>
+ 80002fb8: ff000eb7 lui t4,0xff000
+ 80002fbc: 02200193 li gp,34
+ 80002fc0: 15df1263 bne t5,t4,80003104 <fail>
+
+0000000080002fc4 <test_35>:
+ 80002fc4: 00000213 li tp,0
+ 80002fc8: 00e00113 li sp,14
+ 80002fcc: 800000b7 lui ra,0x80000
+ 80002fd0: 00000013 nop
+ 80002fd4: 4020df3b sraw t5,ra,sp
+ 80002fd8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002fdc: 00200293 li t0,2
+ 80002fe0: fe5214e3 bne tp,t0,80002fc8 <test_35+0x4>
+ 80002fe4: fffe0eb7 lui t4,0xfffe0
+ 80002fe8: 02300193 li gp,35
+ 80002fec: 11df1c63 bne t5,t4,80003104 <fail>
+
+0000000080002ff0 <test_36>:
+ 80002ff0: 00000213 li tp,0
+ 80002ff4: 01f00113 li sp,31
+ 80002ff8: 800000b7 lui ra,0x80000
+ 80002ffc: 00000013 nop
+ 80003000: 00000013 nop
+ 80003004: 4020df3b sraw t5,ra,sp
+ 80003008: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 8000300c: 00200293 li t0,2
+ 80003010: fe5212e3 bne tp,t0,80002ff4 <test_36+0x4>
+ 80003014: fff00e93 li t4,-1
+ 80003018: 02400193 li gp,36
+ 8000301c: 0fdf1463 bne t5,t4,80003104 <fail>
+
+0000000080003020 <test_37>:
+ 80003020: 00000213 li tp,0
+ 80003024: 00700113 li sp,7
+ 80003028: 00000013 nop
+ 8000302c: 800000b7 lui ra,0x80000
+ 80003030: 4020df3b sraw t5,ra,sp
+ 80003034: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003038: 00200293 li t0,2
+ 8000303c: fe5214e3 bne tp,t0,80003024 <test_37+0x4>
+ 80003040: ff000eb7 lui t4,0xff000
+ 80003044: 02500193 li gp,37
+ 80003048: 0bdf1e63 bne t5,t4,80003104 <fail>
+
+000000008000304c <test_38>:
+ 8000304c: 00000213 li tp,0
+ 80003050: 00e00113 li sp,14
+ 80003054: 00000013 nop
+ 80003058: 800000b7 lui ra,0x80000
+ 8000305c: 00000013 nop
+ 80003060: 4020df3b sraw t5,ra,sp
+ 80003064: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003068: 00200293 li t0,2
+ 8000306c: fe5212e3 bne tp,t0,80003050 <test_38+0x4>
+ 80003070: fffe0eb7 lui t4,0xfffe0
+ 80003074: 02600193 li gp,38
+ 80003078: 09df1663 bne t5,t4,80003104 <fail>
+
+000000008000307c <test_39>:
+ 8000307c: 00000213 li tp,0
+ 80003080: 01f00113 li sp,31
+ 80003084: 00000013 nop
+ 80003088: 00000013 nop
+ 8000308c: 800000b7 lui ra,0x80000
+ 80003090: 4020df3b sraw t5,ra,sp
+ 80003094: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003098: 00200293 li t0,2
+ 8000309c: fe5212e3 bne tp,t0,80003080 <test_39+0x4>
+ 800030a0: fff00e93 li t4,-1
+ 800030a4: 02700193 li gp,39
+ 800030a8: 05df1e63 bne t5,t4,80003104 <fail>
+
+00000000800030ac <test_40>:
+ 800030ac: 00f00093 li ra,15
+ 800030b0: 4010513b sraw sp,zero,ra
+ 800030b4: 00000e93 li t4,0
+ 800030b8: 02800193 li gp,40
+ 800030bc: 05d11463 bne sp,t4,80003104 <fail>
+
+00000000800030c0 <test_41>:
+ 800030c0: 02000093 li ra,32
+ 800030c4: 4000d13b sraw sp,ra,zero
+ 800030c8: 02000e93 li t4,32
+ 800030cc: 02900193 li gp,41
+ 800030d0: 03d11a63 bne sp,t4,80003104 <fail>
+
+00000000800030d4 <test_42>:
+ 800030d4: 400050bb sraw ra,zero,zero
+ 800030d8: 00000e93 li t4,0
+ 800030dc: 02a00193 li gp,42
+ 800030e0: 03d09263 bne ra,t4,80003104 <fail>
+
+00000000800030e4 <test_43>:
+ 800030e4: 40000093 li ra,1024
+ 800030e8: 00001137 lui sp,0x1
+ 800030ec: 8001011b addiw sp,sp,-2048
+ 800030f0: 4020d03b sraw zero,ra,sp
+ 800030f4: 00000e93 li t4,0
+ 800030f8: 02b00193 li gp,43
+ 800030fc: 01d01463 bne zero,t4,80003104 <fail>
+ 80003100: 00301a63 bne zero,gp,80003114 <pass>
+
+0000000080003104 <fail>:
+ 80003104: 00119513 slli a0,gp,0x1
+ 80003108: 00050063 beqz a0,80003108 <fail+0x4>
+ 8000310c: 00156513 ori a0,a0,1
+ 80003110: 00000073 ecall
+
+0000000080003114 <pass>:
+ 80003114: 00100513 li a0,1
+ 80003118: 00000073 ecall
+ 8000311c: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-v-sraw.elf b/test/riscv-tests/rv64ui-v-sraw.elf
index 8894a1c..452711e 100644
--- a/test/riscv-tests/rv64ui-v-sraw.elf
+++ b/test/riscv-tests/rv64ui-v-sraw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-srl.dump b/test/riscv-tests/rv64ui-v-srl.dump
index 1fb24ac..daea136 100644
--- a/test/riscv-tests/rv64ui-v-srl.dump
+++ b/test/riscv-tests/rv64ui-v-srl.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-srl.elf b/test/riscv-tests/rv64ui-v-srl.elf
index eb8b732..239f407 100644
--- a/test/riscv-tests/rv64ui-v-srl.elf
+++ b/test/riscv-tests/rv64ui-v-srl.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-srli.dump b/test/riscv-tests/rv64ui-v-srli.dump
index d900518..e9183c2 100644
--- a/test/riscv-tests/rv64ui-v-srli.dump
+++ b/test/riscv-tests/rv64ui-v-srli.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-srli.elf b/test/riscv-tests/rv64ui-v-srli.elf
index 4a1f2d6..b064db0 100644
--- a/test/riscv-tests/rv64ui-v-srli.elf
+++ b/test/riscv-tests/rv64ui-v-srli.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-srliw.dump b/test/riscv-tests/rv64ui-v-srliw.dump
index 919e1de..9336874 100644
--- a/test/riscv-tests/rv64ui-v-srliw.dump
+++ b/test/riscv-tests/rv64ui-v-srliw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -410,7 +410,7 @@ Disassembly of section .text:
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00001697 auipc a3,0x1
- 8000245c: 93068693 addi a3,a3,-1744 # 80002d88 <pass+0x10>
+ 8000245c: 9c068693 addi a3,a3,-1600 # 80002e18 <pass+0x10>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00001617 auipc a2,0x1
- 800024b8: 96460613 addi a2,a2,-1692 # 80002e18 <pass+0xa0>
+ 800024b8: 9f460613 addi a2,a2,-1548 # 80002ea8 <pass+0xa0>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00001617 auipc a2,0x1
- 80002508: 92c60613 addi a2,a2,-1748 # 80002e30 <pass+0xb8>
+ 80002508: 9bc60613 addi a2,a2,-1604 # 80002ec0 <pass+0xb8>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00001697 auipc a3,0x1
- 80002558: 87c68693 addi a3,a3,-1924 # 80002dd0 <pass+0x58>
+ 80002558: 90c68693 addi a3,a3,-1780 # 80002e60 <pass+0x58>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00001697 auipc a3,0x1
- 80002674: 89868693 addi a3,a3,-1896 # 80002f08 <pass+0x190>
+ 80002674: 92868693 addi a3,a3,-1752 # 80002f98 <pass+0x190>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -568,7 +568,7 @@ Disassembly of section .text:
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
800026c8: 00001617 auipc a2,0x1
- 800026cc: 81860613 addi a2,a2,-2024 # 80002ee0 <pass+0x168>
+ 800026cc: 8a860613 addi a2,a2,-1880 # 80002f70 <pass+0x168>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -641,7 +641,7 @@ Disassembly of section .text:
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
800027ec: 00000697 auipc a3,0x0
- 800027f0: 74c68693 addi a3,a3,1868 # 80002f38 <pass+0x1c0>
+ 800027f0: 7dc68693 addi a3,a3,2012 # 80002fc8 <pass+0x1c0>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00000697 auipc a3,0x0
- 80002840: 66c68693 addi a3,a3,1644 # 80002ea8 <pass+0x130>
+ 80002840: 6fc68693 addi a3,a3,1788 # 80002f38 <pass+0x130>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00000697 auipc a3,0x0
- 80002878: 5fc68693 addi a3,a3,1532 # 80002e70 <pass+0xf8>
+ 80002878: 68c68693 addi a3,a3,1676 # 80002f00 <pass+0xf8>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -831,28 +831,28 @@ Disassembly of section .text:
80002acc: 0000df1b srliw t5,ra,0x0
80002ad0: 80000eb7 lui t4,0x80000
80002ad4: 00200193 li gp,2
- 80002ad8: 29df1863 bne t5,t4,80002d68 <fail>
+ 80002ad8: 33df1063 bne t5,t4,80002df8 <fail>
0000000080002adc <test_3>:
80002adc: 800000b7 lui ra,0x80000
80002ae0: 0010df1b srliw t5,ra,0x1
80002ae4: 40000eb7 lui t4,0x40000
80002ae8: 00300193 li gp,3
- 80002aec: 27df1e63 bne t5,t4,80002d68 <fail>
+ 80002aec: 31df1663 bne t5,t4,80002df8 <fail>
0000000080002af0 <test_4>:
80002af0: 800000b7 lui ra,0x80000
80002af4: 0070df1b srliw t5,ra,0x7
80002af8: 01000eb7 lui t4,0x1000
80002afc: 00400193 li gp,4
- 80002b00: 27df1463 bne t5,t4,80002d68 <fail>
+ 80002b00: 2fdf1c63 bne t5,t4,80002df8 <fail>
0000000080002b04 <test_5>:
80002b04: 800000b7 lui ra,0x80000
80002b08: 00e0df1b srliw t5,ra,0xe
80002b0c: 00020eb7 lui t4,0x20
80002b10: 00500193 li gp,5
- 80002b14: 25df1a63 bne t5,t4,80002d68 <fail>
+ 80002b14: 2fdf1263 bne t5,t4,80002df8 <fail>
0000000080002b18 <test_6>:
80002b18: 800000b7 lui ra,0x80000
@@ -860,14 +860,14 @@ Disassembly of section .text:
80002b20: 01f0df1b srliw t5,ra,0x1f
80002b24: 00100e93 li t4,1
80002b28: 00600193 li gp,6
- 80002b2c: 23df1e63 bne t5,t4,80002d68 <fail>
+ 80002b2c: 2ddf1663 bne t5,t4,80002df8 <fail>
0000000080002b30 <test_7>:
80002b30: fff00093 li ra,-1
80002b34: 0000df1b srliw t5,ra,0x0
80002b38: fff00e93 li t4,-1
80002b3c: 00700193 li gp,7
- 80002b40: 23df1463 bne t5,t4,80002d68 <fail>
+ 80002b40: 2bdf1c63 bne t5,t4,80002df8 <fail>
0000000080002b44 <test_8>:
80002b44: fff00093 li ra,-1
@@ -875,7 +875,7 @@ Disassembly of section .text:
80002b4c: 80000eb7 lui t4,0x80000
80002b50: fffe8e9b addiw t4,t4,-1
80002b54: 00800193 li gp,8
- 80002b58: 21df1863 bne t5,t4,80002d68 <fail>
+ 80002b58: 2bdf1063 bne t5,t4,80002df8 <fail>
0000000080002b5c <test_9>:
80002b5c: fff00093 li ra,-1
@@ -883,7 +883,7 @@ Disassembly of section .text:
80002b64: 02000eb7 lui t4,0x2000
80002b68: fffe8e9b addiw t4,t4,-1
80002b6c: 00900193 li gp,9
- 80002b70: 1fdf1c63 bne t5,t4,80002d68 <fail>
+ 80002b70: 29df1463 bne t5,t4,80002df8 <fail>
0000000080002b74 <test_10>:
80002b74: fff00093 li ra,-1
@@ -891,14 +891,14 @@ Disassembly of section .text:
80002b7c: 00040eb7 lui t4,0x40
80002b80: fffe8e9b addiw t4,t4,-1
80002b84: 00a00193 li gp,10
- 80002b88: 1fdf1063 bne t5,t4,80002d68 <fail>
+ 80002b88: 27df1863 bne t5,t4,80002df8 <fail>
0000000080002b8c <test_11>:
80002b8c: fff00093 li ra,-1
80002b90: 01f0df1b srliw t5,ra,0x1f
80002b94: 00100e93 li t4,1
80002b98: 00b00193 li gp,11
- 80002b9c: 1ddf1663 bne t5,t4,80002d68 <fail>
+ 80002b9c: 25df1e63 bne t5,t4,80002df8 <fail>
0000000080002ba0 <test_12>:
80002ba0: 212120b7 lui ra,0x21212
@@ -907,7 +907,7 @@ Disassembly of section .text:
80002bac: 21212eb7 lui t4,0x21212
80002bb0: 121e8e9b addiw t4,t4,289
80002bb4: 00c00193 li gp,12
- 80002bb8: 1bdf1863 bne t5,t4,80002d68 <fail>
+ 80002bb8: 25df1063 bne t5,t4,80002df8 <fail>
0000000080002bbc <test_13>:
80002bbc: 212120b7 lui ra,0x21212
@@ -916,7 +916,7 @@ Disassembly of section .text:
80002bc8: 10909eb7 lui t4,0x10909
80002bcc: 090e8e9b addiw t4,t4,144
80002bd0: 00d00193 li gp,13
- 80002bd4: 19df1a63 bne t5,t4,80002d68 <fail>
+ 80002bd4: 23df1263 bne t5,t4,80002df8 <fail>
0000000080002bd8 <test_14>:
80002bd8: 212120b7 lui ra,0x21212
@@ -925,7 +925,7 @@ Disassembly of section .text:
80002be4: 00424eb7 lui t4,0x424
80002be8: 242e8e9b addiw t4,t4,578
80002bec: 00e00193 li gp,14
- 80002bf0: 17df1c63 bne t5,t4,80002d68 <fail>
+ 80002bf0: 21df1463 bne t5,t4,80002df8 <fail>
0000000080002bf4 <test_15>:
80002bf4: 212120b7 lui ra,0x21212
@@ -934,7 +934,7 @@ Disassembly of section .text:
80002c00: 00008eb7 lui t4,0x8
80002c04: 484e8e9b addiw t4,t4,1156
80002c08: 00f00193 li gp,15
- 80002c0c: 15df1e63 bne t5,t4,80002d68 <fail>
+ 80002c0c: 1fdf1663 bne t5,t4,80002df8 <fail>
0000000080002c10 <test_16>:
80002c10: 212120b7 lui ra,0x21212
@@ -942,113 +942,157 @@ Disassembly of section .text:
80002c18: 01f0df1b srliw t5,ra,0x1f
80002c1c: 00000e93 li t4,0
80002c20: 01000193 li gp,16
- 80002c24: 15df1263 bne t5,t4,80002d68 <fail>
+ 80002c24: 1ddf1a63 bne t5,t4,80002df8 <fail>
-0000000080002c28 <test_17>:
- 80002c28: 800000b7 lui ra,0x80000
- 80002c2c: 0070d09b srliw ra,ra,0x7
- 80002c30: 01000eb7 lui t4,0x1000
- 80002c34: 01100193 li gp,17
- 80002c38: 13d09863 bne ra,t4,80002d68 <fail>
+0000000080002c28 <test_44>:
+ 80002c28: fff120b7 lui ra,0xfff12
+ 80002c2c: 3450809b addiw ra,ra,837
+ 80002c30: 00c09093 slli ra,ra,0xc
+ 80002c34: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff0ae88>
+ 80002c38: 0000df1b srliw t5,ra,0x0
+ 80002c3c: 12345eb7 lui t4,0x12345
+ 80002c40: 678e8e9b addiw t4,t4,1656
+ 80002c44: 02c00193 li gp,44
+ 80002c48: 1bdf1863 bne t5,t4,80002df8 <fail>
-0000000080002c3c <test_18>:
- 80002c3c: 00000213 li tp,0
- 80002c40: 800000b7 lui ra,0x80000
- 80002c44: 0070df1b srliw t5,ra,0x7
- 80002c48: 000f0313 mv t1,t5
- 80002c4c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c50: 00200293 li t0,2
- 80002c54: fe5216e3 bne tp,t0,80002c40 <test_18+0x4>
- 80002c58: 01000eb7 lui t4,0x1000
- 80002c5c: 01200193 li gp,18
- 80002c60: 11d31463 bne t1,t4,80002d68 <fail>
+0000000080002c4c <test_45>:
+ 80002c4c: fff120b7 lui ra,0xfff12
+ 80002c50: 3450809b addiw ra,ra,837
+ 80002c54: 00c09093 slli ra,ra,0xc
+ 80002c58: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff0ae88>
+ 80002c5c: 0040df1b srliw t5,ra,0x4
+ 80002c60: 01234eb7 lui t4,0x1234
+ 80002c64: 567e8e9b addiw t4,t4,1383
+ 80002c68: 02d00193 li gp,45
+ 80002c6c: 19df1663 bne t5,t4,80002df8 <fail>
-0000000080002c64 <test_19>:
- 80002c64: 00000213 li tp,0
- 80002c68: 800000b7 lui ra,0x80000
- 80002c6c: 00e0df1b srliw t5,ra,0xe
- 80002c70: 00000013 nop
- 80002c74: 000f0313 mv t1,t5
- 80002c78: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002c7c: 00200293 li t0,2
- 80002c80: fe5214e3 bne tp,t0,80002c68 <test_19+0x4>
- 80002c84: 00020eb7 lui t4,0x20
- 80002c88: 01300193 li gp,19
- 80002c8c: 0dd31e63 bne t1,t4,80002d68 <fail>
+0000000080002c70 <test_46>:
+ 80002c70: 000920b7 lui ra,0x92
+ 80002c74: 3450809b addiw ra,ra,837
+ 80002c78: 00c09093 slli ra,ra,0xc
+ 80002c7c: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002c80: 0000df1b srliw t5,ra,0x0
+ 80002c84: 92345eb7 lui t4,0x92345
+ 80002c88: 678e8e9b addiw t4,t4,1656
+ 80002c8c: 02e00193 li gp,46
+ 80002c90: 17df1463 bne t5,t4,80002df8 <fail>
-0000000080002c90 <test_20>:
- 80002c90: 00000213 li tp,0
- 80002c94: 800000b7 lui ra,0x80000
- 80002c98: 0010809b addiw ra,ra,1
- 80002c9c: 01f0df1b srliw t5,ra,0x1f
- 80002ca0: 00000013 nop
- 80002ca4: 00000013 nop
- 80002ca8: 000f0313 mv t1,t5
- 80002cac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002cb0: 00200293 li t0,2
- 80002cb4: fe5210e3 bne tp,t0,80002c94 <test_20+0x4>
- 80002cb8: 00100e93 li t4,1
- 80002cbc: 01400193 li gp,20
- 80002cc0: 0bd31463 bne t1,t4,80002d68 <fail>
+0000000080002c94 <test_47>:
+ 80002c94: 000920b7 lui ra,0x92
+ 80002c98: 3450809b addiw ra,ra,837
+ 80002c9c: 00c09093 slli ra,ra,0xc
+ 80002ca0: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002ca4: 0040df1b srliw t5,ra,0x4
+ 80002ca8: 09234eb7 lui t4,0x9234
+ 80002cac: 567e8e9b addiw t4,t4,1383
+ 80002cb0: 02f00193 li gp,47
+ 80002cb4: 15df1263 bne t5,t4,80002df8 <fail>
-0000000080002cc4 <test_21>:
- 80002cc4: 00000213 li tp,0
- 80002cc8: 800000b7 lui ra,0x80000
- 80002ccc: 0070df1b srliw t5,ra,0x7
- 80002cd0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002cd4: 00200293 li t0,2
- 80002cd8: fe5218e3 bne tp,t0,80002cc8 <test_21+0x4>
- 80002cdc: 01000eb7 lui t4,0x1000
- 80002ce0: 01500193 li gp,21
- 80002ce4: 09df1263 bne t5,t4,80002d68 <fail>
+0000000080002cb8 <test_17>:
+ 80002cb8: 800000b7 lui ra,0x80000
+ 80002cbc: 0070d09b srliw ra,ra,0x7
+ 80002cc0: 01000eb7 lui t4,0x1000
+ 80002cc4: 01100193 li gp,17
+ 80002cc8: 13d09863 bne ra,t4,80002df8 <fail>
-0000000080002ce8 <test_22>:
- 80002ce8: 00000213 li tp,0
- 80002cec: 800000b7 lui ra,0x80000
- 80002cf0: 00000013 nop
- 80002cf4: 00e0df1b srliw t5,ra,0xe
- 80002cf8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002cfc: 00200293 li t0,2
- 80002d00: fe5216e3 bne tp,t0,80002cec <test_22+0x4>
- 80002d04: 00020eb7 lui t4,0x20
- 80002d08: 01600193 li gp,22
- 80002d0c: 05df1e63 bne t5,t4,80002d68 <fail>
+0000000080002ccc <test_18>:
+ 80002ccc: 00000213 li tp,0
+ 80002cd0: 800000b7 lui ra,0x80000
+ 80002cd4: 0070df1b srliw t5,ra,0x7
+ 80002cd8: 000f0313 mv t1,t5
+ 80002cdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ce0: 00200293 li t0,2
+ 80002ce4: fe5216e3 bne tp,t0,80002cd0 <test_18+0x4>
+ 80002ce8: 01000eb7 lui t4,0x1000
+ 80002cec: 01200193 li gp,18
+ 80002cf0: 11d31463 bne t1,t4,80002df8 <fail>
-0000000080002d10 <test_23>:
- 80002d10: 00000213 li tp,0
- 80002d14: 800000b7 lui ra,0x80000
- 80002d18: 0010809b addiw ra,ra,1
- 80002d1c: 00000013 nop
- 80002d20: 00000013 nop
- 80002d24: 01f0df1b srliw t5,ra,0x1f
- 80002d28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d2c: 00200293 li t0,2
- 80002d30: fe5212e3 bne tp,t0,80002d14 <test_23+0x4>
- 80002d34: 00100e93 li t4,1
- 80002d38: 01700193 li gp,23
- 80002d3c: 03df1663 bne t5,t4,80002d68 <fail>
+0000000080002cf4 <test_19>:
+ 80002cf4: 00000213 li tp,0
+ 80002cf8: 800000b7 lui ra,0x80000
+ 80002cfc: 00e0df1b srliw t5,ra,0xe
+ 80002d00: 00000013 nop
+ 80002d04: 000f0313 mv t1,t5
+ 80002d08: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d0c: 00200293 li t0,2
+ 80002d10: fe5214e3 bne tp,t0,80002cf8 <test_19+0x4>
+ 80002d14: 00020eb7 lui t4,0x20
+ 80002d18: 01300193 li gp,19
+ 80002d1c: 0dd31e63 bne t1,t4,80002df8 <fail>
-0000000080002d40 <test_24>:
- 80002d40: 01f0509b srliw ra,zero,0x1f
- 80002d44: 00000e93 li t4,0
- 80002d48: 01800193 li gp,24
- 80002d4c: 01d09e63 bne ra,t4,80002d68 <fail>
+0000000080002d20 <test_20>:
+ 80002d20: 00000213 li tp,0
+ 80002d24: 800000b7 lui ra,0x80000
+ 80002d28: 0010809b addiw ra,ra,1
+ 80002d2c: 01f0df1b srliw t5,ra,0x1f
+ 80002d30: 00000013 nop
+ 80002d34: 00000013 nop
+ 80002d38: 000f0313 mv t1,t5
+ 80002d3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d40: 00200293 li t0,2
+ 80002d44: fe5210e3 bne tp,t0,80002d24 <test_20+0x4>
+ 80002d48: 00100e93 li t4,1
+ 80002d4c: 01400193 li gp,20
+ 80002d50: 0bd31463 bne t1,t4,80002df8 <fail>
-0000000080002d50 <test_25>:
- 80002d50: 01f00093 li ra,31
- 80002d54: 01c0d01b srliw zero,ra,0x1c
- 80002d58: 00000e93 li t4,0
- 80002d5c: 01900193 li gp,25
- 80002d60: 01d01463 bne zero,t4,80002d68 <fail>
- 80002d64: 00301a63 bne zero,gp,80002d78 <pass>
+0000000080002d54 <test_21>:
+ 80002d54: 00000213 li tp,0
+ 80002d58: 800000b7 lui ra,0x80000
+ 80002d5c: 0070df1b srliw t5,ra,0x7
+ 80002d60: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d64: 00200293 li t0,2
+ 80002d68: fe5218e3 bne tp,t0,80002d58 <test_21+0x4>
+ 80002d6c: 01000eb7 lui t4,0x1000
+ 80002d70: 01500193 li gp,21
+ 80002d74: 09df1263 bne t5,t4,80002df8 <fail>
-0000000080002d68 <fail>:
- 80002d68: 00119513 slli a0,gp,0x1
- 80002d6c: 00050063 beqz a0,80002d6c <fail+0x4>
- 80002d70: 00156513 ori a0,a0,1
- 80002d74: 00000073 ecall
+0000000080002d78 <test_22>:
+ 80002d78: 00000213 li tp,0
+ 80002d7c: 800000b7 lui ra,0x80000
+ 80002d80: 00000013 nop
+ 80002d84: 00e0df1b srliw t5,ra,0xe
+ 80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002d8c: 00200293 li t0,2
+ 80002d90: fe5216e3 bne tp,t0,80002d7c <test_22+0x4>
+ 80002d94: 00020eb7 lui t4,0x20
+ 80002d98: 01600193 li gp,22
+ 80002d9c: 05df1e63 bne t5,t4,80002df8 <fail>
-0000000080002d78 <pass>:
- 80002d78: 00100513 li a0,1
- 80002d7c: 00000073 ecall
- 80002d80: c0001073 unimp
+0000000080002da0 <test_23>:
+ 80002da0: 00000213 li tp,0
+ 80002da4: 800000b7 lui ra,0x80000
+ 80002da8: 0010809b addiw ra,ra,1
+ 80002dac: 00000013 nop
+ 80002db0: 00000013 nop
+ 80002db4: 01f0df1b srliw t5,ra,0x1f
+ 80002db8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002dbc: 00200293 li t0,2
+ 80002dc0: fe5212e3 bne tp,t0,80002da4 <test_23+0x4>
+ 80002dc4: 00100e93 li t4,1
+ 80002dc8: 01700193 li gp,23
+ 80002dcc: 03df1663 bne t5,t4,80002df8 <fail>
+
+0000000080002dd0 <test_24>:
+ 80002dd0: 01f0509b srliw ra,zero,0x1f
+ 80002dd4: 00000e93 li t4,0
+ 80002dd8: 01800193 li gp,24
+ 80002ddc: 01d09e63 bne ra,t4,80002df8 <fail>
+
+0000000080002de0 <test_25>:
+ 80002de0: 01f00093 li ra,31
+ 80002de4: 01c0d01b srliw zero,ra,0x1c
+ 80002de8: 00000e93 li t4,0
+ 80002dec: 01900193 li gp,25
+ 80002df0: 01d01463 bne zero,t4,80002df8 <fail>
+ 80002df4: 00301a63 bne zero,gp,80002e08 <pass>
+
+0000000080002df8 <fail>:
+ 80002df8: 00119513 slli a0,gp,0x1
+ 80002dfc: 00050063 beqz a0,80002dfc <fail+0x4>
+ 80002e00: 00156513 ori a0,a0,1
+ 80002e04: 00000073 ecall
+
+0000000080002e08 <pass>:
+ 80002e08: 00100513 li a0,1
+ 80002e0c: 00000073 ecall
+ 80002e10: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-v-srliw.elf b/test/riscv-tests/rv64ui-v-srliw.elf
index eacd870..ff9350c 100644
--- a/test/riscv-tests/rv64ui-v-srliw.elf
+++ b/test/riscv-tests/rv64ui-v-srliw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-srlw.dump b/test/riscv-tests/rv64ui-v-srlw.dump
index 2cbf750..43de4f1 100644
--- a/test/riscv-tests/rv64ui-v-srlw.dump
+++ b/test/riscv-tests/rv64ui-v-srlw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
@@ -410,7 +410,7 @@ Disassembly of section .text:
80002450: 10100613 li a2,257
80002454: 04100713 li a4,65
80002458: 00001697 auipc a3,0x1
- 8000245c: c1068693 addi a3,a3,-1008 # 80003068 <pass+0xc>
+ 8000245c: cb068693 addi a3,a3,-848 # 80003108 <pass+0xc>
80002460: fffff797 auipc a5,0xfffff
80002464: ba078793 addi a5,a5,-1120 # 80001000 <tohost>
80002468: 03061613 slli a2,a2,0x30
@@ -433,7 +433,7 @@ Disassembly of section .text:
800024ac: 10100693 li a3,257
800024b0: 04100713 li a4,65
800024b4: 00001617 auipc a2,0x1
- 800024b8: c4460613 addi a2,a2,-956 # 800030f8 <pass+0x9c>
+ 800024b8: ce460613 addi a2,a2,-796 # 80003198 <pass+0x9c>
800024bc: fffff797 auipc a5,0xfffff
800024c0: b4478793 addi a5,a5,-1212 # 80001000 <tohost>
800024c4: 03069693 slli a3,a3,0x30
@@ -453,7 +453,7 @@ Disassembly of section .text:
800024fc: 10100693 li a3,257
80002500: 04100713 li a4,65
80002504: 00001617 auipc a2,0x1
- 80002508: c0c60613 addi a2,a2,-1012 # 80003110 <pass+0xb4>
+ 80002508: cac60613 addi a2,a2,-852 # 800031b0 <pass+0xb4>
8000250c: fffff797 auipc a5,0xfffff
80002510: af478793 addi a5,a5,-1292 # 80001000 <tohost>
80002514: 03069693 slli a3,a3,0x30
@@ -473,7 +473,7 @@ Disassembly of section .text:
8000254c: 10100613 li a2,257
80002550: 04100713 li a4,65
80002554: 00001697 auipc a3,0x1
- 80002558: b5c68693 addi a3,a3,-1188 # 800030b0 <pass+0x54>
+ 80002558: bfc68693 addi a3,a3,-1028 # 80003150 <pass+0x54>
8000255c: fffff797 auipc a5,0xfffff
80002560: aa478793 addi a5,a5,-1372 # 80001000 <tohost>
80002564: 03061613 slli a2,a2,0x30
@@ -546,7 +546,7 @@ Disassembly of section .text:
80002668: 10100513 li a0,257
8000266c: 04100793 li a5,65
80002670: 00001697 auipc a3,0x1
- 80002674: b7868693 addi a3,a3,-1160 # 800031e8 <pass+0x18c>
+ 80002674: c1868693 addi a3,a3,-1000 # 80003288 <pass+0x18c>
80002678: fffff717 auipc a4,0xfffff
8000267c: 98870713 addi a4,a4,-1656 # 80001000 <tohost>
80002680: 03051513 slli a0,a0,0x30
@@ -568,7 +568,7 @@ Disassembly of section .text:
800026c0: b71ff0ef jal ra,80002230 <terminate>
800026c4: 10100793 li a5,257
800026c8: 00001617 auipc a2,0x1
- 800026cc: af860613 addi a2,a2,-1288 # 800031c0 <pass+0x164>
+ 800026cc: b9860613 addi a2,a2,-1128 # 80003260 <pass+0x164>
800026d0: 04100693 li a3,65
800026d4: fffff717 auipc a4,0xfffff
800026d8: 92c70713 addi a4,a4,-1748 # 80001000 <tohost>
@@ -641,7 +641,7 @@ Disassembly of section .text:
800027e4: 10100793 li a5,257
800027e8: 04100613 li a2,65
800027ec: 00001697 auipc a3,0x1
- 800027f0: a2c68693 addi a3,a3,-1492 # 80003218 <pass+0x1bc>
+ 800027f0: acc68693 addi a3,a3,-1332 # 800032b8 <pass+0x1bc>
800027f4: fffff717 auipc a4,0xfffff
800027f8: 80c70713 addi a4,a4,-2036 # 80001000 <tohost>
800027fc: 03079793 slli a5,a5,0x30
@@ -661,7 +661,7 @@ Disassembly of section .text:
80002834: 10100793 li a5,257
80002838: 04100613 li a2,65
8000283c: 00001697 auipc a3,0x1
- 80002840: 94c68693 addi a3,a3,-1716 # 80003188 <pass+0x12c>
+ 80002840: 9ec68693 addi a3,a3,-1556 # 80003228 <pass+0x12c>
80002844: ffffe717 auipc a4,0xffffe
80002848: 7bc70713 addi a4,a4,1980 # 80001000 <tohost>
8000284c: 03079793 slli a5,a5,0x30
@@ -675,7 +675,7 @@ Disassembly of section .text:
8000286c: 10100793 li a5,257
80002870: 04100613 li a2,65
80002874: 00001697 auipc a3,0x1
- 80002878: 8dc68693 addi a3,a3,-1828 # 80003150 <pass+0xf4>
+ 80002878: 97c68693 addi a3,a3,-1668 # 800031f0 <pass+0xf4>
8000287c: ffffe717 auipc a4,0xffffe
80002880: 78470713 addi a4,a4,1924 # 80001000 <tohost>
80002884: 03079793 slli a5,a5,0x30
@@ -832,7 +832,7 @@ Disassembly of section .text:
80002ad0: 0020df3b srlw t5,ra,sp
80002ad4: 80000eb7 lui t4,0x80000
80002ad8: 00200193 li gp,2
- 80002adc: 57df1863 bne t5,t4,8000304c <fail>
+ 80002adc: 61df1863 bne t5,t4,800030ec <fail>
0000000080002ae0 <test_3>:
80002ae0: 800000b7 lui ra,0x80000
@@ -840,7 +840,7 @@ Disassembly of section .text:
80002ae8: 0020df3b srlw t5,ra,sp
80002aec: 40000eb7 lui t4,0x40000
80002af0: 00300193 li gp,3
- 80002af4: 55df1c63 bne t5,t4,8000304c <fail>
+ 80002af4: 5fdf1c63 bne t5,t4,800030ec <fail>
0000000080002af8 <test_4>:
80002af8: 800000b7 lui ra,0x80000
@@ -848,7 +848,7 @@ Disassembly of section .text:
80002b00: 0020df3b srlw t5,ra,sp
80002b04: 01000eb7 lui t4,0x1000
80002b08: 00400193 li gp,4
- 80002b0c: 55df1063 bne t5,t4,8000304c <fail>
+ 80002b0c: 5fdf1063 bne t5,t4,800030ec <fail>
0000000080002b10 <test_5>:
80002b10: 800000b7 lui ra,0x80000
@@ -856,7 +856,7 @@ Disassembly of section .text:
80002b18: 0020df3b srlw t5,ra,sp
80002b1c: 00020eb7 lui t4,0x20
80002b20: 00500193 li gp,5
- 80002b24: 53df1463 bne t5,t4,8000304c <fail>
+ 80002b24: 5ddf1463 bne t5,t4,800030ec <fail>
0000000080002b28 <test_6>:
80002b28: 800000b7 lui ra,0x80000
@@ -865,7 +865,7 @@ Disassembly of section .text:
80002b34: 0020df3b srlw t5,ra,sp
80002b38: 00100e93 li t4,1
80002b3c: 00600193 li gp,6
- 80002b40: 51df1663 bne t5,t4,8000304c <fail>
+ 80002b40: 5bdf1663 bne t5,t4,800030ec <fail>
0000000080002b44 <test_7>:
80002b44: fff00093 li ra,-1
@@ -873,7 +873,7 @@ Disassembly of section .text:
80002b4c: 0020df3b srlw t5,ra,sp
80002b50: fff00e93 li t4,-1
80002b54: 00700193 li gp,7
- 80002b58: 4fdf1a63 bne t5,t4,8000304c <fail>
+ 80002b58: 59df1a63 bne t5,t4,800030ec <fail>
0000000080002b5c <test_8>:
80002b5c: fff00093 li ra,-1
@@ -882,7 +882,7 @@ Disassembly of section .text:
80002b68: 80000eb7 lui t4,0x80000
80002b6c: fffe8e9b addiw t4,t4,-1
80002b70: 00800193 li gp,8
- 80002b74: 4ddf1c63 bne t5,t4,8000304c <fail>
+ 80002b74: 57df1c63 bne t5,t4,800030ec <fail>
0000000080002b78 <test_9>:
80002b78: fff00093 li ra,-1
@@ -891,7 +891,7 @@ Disassembly of section .text:
80002b84: 02000eb7 lui t4,0x2000
80002b88: fffe8e9b addiw t4,t4,-1
80002b8c: 00900193 li gp,9
- 80002b90: 4bdf1e63 bne t5,t4,8000304c <fail>
+ 80002b90: 55df1e63 bne t5,t4,800030ec <fail>
0000000080002b94 <test_10>:
80002b94: fff00093 li ra,-1
@@ -900,7 +900,7 @@ Disassembly of section .text:
80002ba0: 00040eb7 lui t4,0x40
80002ba4: fffe8e9b addiw t4,t4,-1
80002ba8: 00a00193 li gp,10
- 80002bac: 4bdf1063 bne t5,t4,8000304c <fail>
+ 80002bac: 55df1063 bne t5,t4,800030ec <fail>
0000000080002bb0 <test_11>:
80002bb0: fff00093 li ra,-1
@@ -908,7 +908,7 @@ Disassembly of section .text:
80002bb8: 0020df3b srlw t5,ra,sp
80002bbc: 00100e93 li t4,1
80002bc0: 00b00193 li gp,11
- 80002bc4: 49df1463 bne t5,t4,8000304c <fail>
+ 80002bc4: 53df1463 bne t5,t4,800030ec <fail>
0000000080002bc8 <test_12>:
80002bc8: 212120b7 lui ra,0x21212
@@ -918,7 +918,7 @@ Disassembly of section .text:
80002bd8: 21212eb7 lui t4,0x21212
80002bdc: 121e8e9b addiw t4,t4,289
80002be0: 00c00193 li gp,12
- 80002be4: 47df1463 bne t5,t4,8000304c <fail>
+ 80002be4: 51df1463 bne t5,t4,800030ec <fail>
0000000080002be8 <test_13>:
80002be8: 212120b7 lui ra,0x21212
@@ -928,7 +928,7 @@ Disassembly of section .text:
80002bf8: 10909eb7 lui t4,0x10909
80002bfc: 090e8e9b addiw t4,t4,144
80002c00: 00d00193 li gp,13
- 80002c04: 45df1463 bne t5,t4,8000304c <fail>
+ 80002c04: 4fdf1463 bne t5,t4,800030ec <fail>
0000000080002c08 <test_14>:
80002c08: 212120b7 lui ra,0x21212
@@ -938,7 +938,7 @@ Disassembly of section .text:
80002c18: 00424eb7 lui t4,0x424
80002c1c: 242e8e9b addiw t4,t4,578
80002c20: 00e00193 li gp,14
- 80002c24: 43df1463 bne t5,t4,8000304c <fail>
+ 80002c24: 4ddf1463 bne t5,t4,800030ec <fail>
0000000080002c28 <test_15>:
80002c28: 212120b7 lui ra,0x21212
@@ -948,7 +948,7 @@ Disassembly of section .text:
80002c38: 00008eb7 lui t4,0x8
80002c3c: 484e8e9b addiw t4,t4,1156
80002c40: 00f00193 li gp,15
- 80002c44: 41df1463 bne t5,t4,8000304c <fail>
+ 80002c44: 4bdf1463 bne t5,t4,800030ec <fail>
0000000080002c48 <test_16>:
80002c48: 212120b7 lui ra,0x21212
@@ -957,7 +957,7 @@ Disassembly of section .text:
80002c54: 0020df3b srlw t5,ra,sp
80002c58: 00000e93 li t4,0
80002c5c: 01000193 li gp,16
- 80002c60: 3fdf1663 bne t5,t4,8000304c <fail>
+ 80002c60: 49df1663 bne t5,t4,800030ec <fail>
0000000080002c64 <test_17>:
80002c64: 212120b7 lui ra,0x21212
@@ -967,7 +967,7 @@ Disassembly of section .text:
80002c74: 21212eb7 lui t4,0x21212
80002c78: 121e8e9b addiw t4,t4,289
80002c7c: 01100193 li gp,17
- 80002c80: 3ddf1663 bne t5,t4,8000304c <fail>
+ 80002c80: 47df1663 bne t5,t4,800030ec <fail>
0000000080002c84 <test_18>:
80002c84: 212120b7 lui ra,0x21212
@@ -977,7 +977,7 @@ Disassembly of section .text:
80002c94: 10909eb7 lui t4,0x10909
80002c98: 090e8e9b addiw t4,t4,144
80002c9c: 01200193 li gp,18
- 80002ca0: 3bdf1663 bne t5,t4,8000304c <fail>
+ 80002ca0: 45df1663 bne t5,t4,800030ec <fail>
0000000080002ca4 <test_19>:
80002ca4: 212120b7 lui ra,0x21212
@@ -987,7 +987,7 @@ Disassembly of section .text:
80002cb4: 00424eb7 lui t4,0x424
80002cb8: 242e8e9b addiw t4,t4,578
80002cbc: 01300193 li gp,19
- 80002cc0: 39df1663 bne t5,t4,8000304c <fail>
+ 80002cc0: 43df1663 bne t5,t4,800030ec <fail>
0000000080002cc4 <test_20>:
80002cc4: 212120b7 lui ra,0x21212
@@ -997,7 +997,7 @@ Disassembly of section .text:
80002cd4: 00008eb7 lui t4,0x8
80002cd8: 484e8e9b addiw t4,t4,1156
80002cdc: 01400193 li gp,20
- 80002ce0: 37df1663 bne t5,t4,8000304c <fail>
+ 80002ce0: 41df1663 bne t5,t4,800030ec <fail>
0000000080002ce4 <test_21>:
80002ce4: 212120b7 lui ra,0x21212
@@ -1006,270 +1006,318 @@ Disassembly of section .text:
80002cf0: 0020df3b srlw t5,ra,sp
80002cf4: 00000e93 li t4,0
80002cf8: 01500193 li gp,21
- 80002cfc: 35df1863 bne t5,t4,8000304c <fail>
-
-0000000080002d00 <test_22>:
- 80002d00: 800000b7 lui ra,0x80000
- 80002d04: 00700113 li sp,7
- 80002d08: 0020d0bb srlw ra,ra,sp
- 80002d0c: 01000eb7 lui t4,0x1000
- 80002d10: 01600193 li gp,22
- 80002d14: 33d09c63 bne ra,t4,8000304c <fail>
-
-0000000080002d18 <test_23>:
- 80002d18: 800000b7 lui ra,0x80000
- 80002d1c: 00e00113 li sp,14
- 80002d20: 0020d13b srlw sp,ra,sp
- 80002d24: 00020eb7 lui t4,0x20
- 80002d28: 01700193 li gp,23
- 80002d2c: 33d11063 bne sp,t4,8000304c <fail>
-
-0000000080002d30 <test_24>:
- 80002d30: 00700093 li ra,7
- 80002d34: 0010d0bb srlw ra,ra,ra
- 80002d38: 00000e93 li t4,0
- 80002d3c: 01800193 li gp,24
- 80002d40: 31d09663 bne ra,t4,8000304c <fail>
-
-0000000080002d44 <test_25>:
- 80002d44: 00000213 li tp,0
- 80002d48: 800000b7 lui ra,0x80000
- 80002d4c: 00700113 li sp,7
- 80002d50: 0020df3b srlw t5,ra,sp
- 80002d54: 000f0313 mv t1,t5
- 80002d58: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d5c: 00200293 li t0,2
- 80002d60: fe5214e3 bne tp,t0,80002d48 <test_25+0x4>
- 80002d64: 01000eb7 lui t4,0x1000
- 80002d68: 01900193 li gp,25
- 80002d6c: 2fd31063 bne t1,t4,8000304c <fail>
-
-0000000080002d70 <test_26>:
- 80002d70: 00000213 li tp,0
- 80002d74: 800000b7 lui ra,0x80000
- 80002d78: 00e00113 li sp,14
- 80002d7c: 0020df3b srlw t5,ra,sp
- 80002d80: 00000013 nop
- 80002d84: 000f0313 mv t1,t5
- 80002d88: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002d8c: 00200293 li t0,2
- 80002d90: fe5212e3 bne tp,t0,80002d74 <test_26+0x4>
- 80002d94: 00020eb7 lui t4,0x20
- 80002d98: 01a00193 li gp,26
- 80002d9c: 2bd31863 bne t1,t4,8000304c <fail>
-
-0000000080002da0 <test_27>:
- 80002da0: 00000213 li tp,0
- 80002da4: 800000b7 lui ra,0x80000
- 80002da8: 01f00113 li sp,31
- 80002dac: 0020df3b srlw t5,ra,sp
- 80002db0: 00000013 nop
- 80002db4: 00000013 nop
- 80002db8: 000f0313 mv t1,t5
- 80002dbc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002dc0: 00200293 li t0,2
- 80002dc4: fe5210e3 bne tp,t0,80002da4 <test_27+0x4>
- 80002dc8: 00100e93 li t4,1
- 80002dcc: 01b00193 li gp,27
- 80002dd0: 27d31e63 bne t1,t4,8000304c <fail>
-
-0000000080002dd4 <test_28>:
- 80002dd4: 00000213 li tp,0
- 80002dd8: 800000b7 lui ra,0x80000
- 80002ddc: 00700113 li sp,7
- 80002de0: 0020df3b srlw t5,ra,sp
- 80002de4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002de8: 00200293 li t0,2
- 80002dec: fe5216e3 bne tp,t0,80002dd8 <test_28+0x4>
- 80002df0: 01000eb7 lui t4,0x1000
- 80002df4: 01c00193 li gp,28
- 80002df8: 25df1a63 bne t5,t4,8000304c <fail>
-
-0000000080002dfc <test_29>:
- 80002dfc: 00000213 li tp,0
- 80002e00: 800000b7 lui ra,0x80000
- 80002e04: 00e00113 li sp,14
- 80002e08: 00000013 nop
- 80002e0c: 0020df3b srlw t5,ra,sp
- 80002e10: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e14: 00200293 li t0,2
- 80002e18: fe5214e3 bne tp,t0,80002e00 <test_29+0x4>
- 80002e1c: 00020eb7 lui t4,0x20
- 80002e20: 01d00193 li gp,29
- 80002e24: 23df1463 bne t5,t4,8000304c <fail>
-
-0000000080002e28 <test_30>:
- 80002e28: 00000213 li tp,0
- 80002e2c: 800000b7 lui ra,0x80000
- 80002e30: 01f00113 li sp,31
- 80002e34: 00000013 nop
- 80002e38: 00000013 nop
- 80002e3c: 0020df3b srlw t5,ra,sp
- 80002e40: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e44: 00200293 li t0,2
- 80002e48: fe5212e3 bne tp,t0,80002e2c <test_30+0x4>
- 80002e4c: 00100e93 li t4,1
- 80002e50: 01e00193 li gp,30
- 80002e54: 1fdf1c63 bne t5,t4,8000304c <fail>
-
-0000000080002e58 <test_31>:
- 80002e58: 00000213 li tp,0
- 80002e5c: 800000b7 lui ra,0x80000
- 80002e60: 00000013 nop
- 80002e64: 00700113 li sp,7
- 80002e68: 0020df3b srlw t5,ra,sp
- 80002e6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002e70: 00200293 li t0,2
- 80002e74: fe5214e3 bne tp,t0,80002e5c <test_31+0x4>
- 80002e78: 01000eb7 lui t4,0x1000
- 80002e7c: 01f00193 li gp,31
- 80002e80: 1ddf1663 bne t5,t4,8000304c <fail>
-
-0000000080002e84 <test_32>:
- 80002e84: 00000213 li tp,0
- 80002e88: 800000b7 lui ra,0x80000
- 80002e8c: 00000013 nop
- 80002e90: 00e00113 li sp,14
- 80002e94: 00000013 nop
- 80002e98: 0020df3b srlw t5,ra,sp
- 80002e9c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ea0: 00200293 li t0,2
- 80002ea4: fe5212e3 bne tp,t0,80002e88 <test_32+0x4>
- 80002ea8: 00020eb7 lui t4,0x20
- 80002eac: 02000193 li gp,32
- 80002eb0: 19df1e63 bne t5,t4,8000304c <fail>
-
-0000000080002eb4 <test_33>:
- 80002eb4: 00000213 li tp,0
- 80002eb8: 800000b7 lui ra,0x80000
- 80002ebc: 00000013 nop
- 80002ec0: 00000013 nop
- 80002ec4: 01f00113 li sp,31
- 80002ec8: 0020df3b srlw t5,ra,sp
- 80002ecc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ed0: 00200293 li t0,2
- 80002ed4: fe5212e3 bne tp,t0,80002eb8 <test_33+0x4>
- 80002ed8: 00100e93 li t4,1
- 80002edc: 02100193 li gp,33
- 80002ee0: 17df1663 bne t5,t4,8000304c <fail>
-
-0000000080002ee4 <test_34>:
- 80002ee4: 00000213 li tp,0
- 80002ee8: 00700113 li sp,7
- 80002eec: 800000b7 lui ra,0x80000
- 80002ef0: 0020df3b srlw t5,ra,sp
- 80002ef4: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002ef8: 00200293 li t0,2
- 80002efc: fe5216e3 bne tp,t0,80002ee8 <test_34+0x4>
- 80002f00: 01000eb7 lui t4,0x1000
- 80002f04: 02200193 li gp,34
- 80002f08: 15df1263 bne t5,t4,8000304c <fail>
-
-0000000080002f0c <test_35>:
- 80002f0c: 00000213 li tp,0
- 80002f10: 00e00113 li sp,14
- 80002f14: 800000b7 lui ra,0x80000
- 80002f18: 00000013 nop
- 80002f1c: 0020df3b srlw t5,ra,sp
- 80002f20: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f24: 00200293 li t0,2
- 80002f28: fe5214e3 bne tp,t0,80002f10 <test_35+0x4>
- 80002f2c: 00020eb7 lui t4,0x20
- 80002f30: 02300193 li gp,35
- 80002f34: 11df1c63 bne t5,t4,8000304c <fail>
-
-0000000080002f38 <test_36>:
- 80002f38: 00000213 li tp,0
- 80002f3c: 01f00113 li sp,31
- 80002f40: 800000b7 lui ra,0x80000
- 80002f44: 00000013 nop
- 80002f48: 00000013 nop
- 80002f4c: 0020df3b srlw t5,ra,sp
- 80002f50: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f54: 00200293 li t0,2
- 80002f58: fe5212e3 bne tp,t0,80002f3c <test_36+0x4>
- 80002f5c: 00100e93 li t4,1
- 80002f60: 02400193 li gp,36
- 80002f64: 0fdf1463 bne t5,t4,8000304c <fail>
-
-0000000080002f68 <test_37>:
- 80002f68: 00000213 li tp,0
- 80002f6c: 00700113 li sp,7
- 80002f70: 00000013 nop
- 80002f74: 800000b7 lui ra,0x80000
- 80002f78: 0020df3b srlw t5,ra,sp
- 80002f7c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002f80: 00200293 li t0,2
- 80002f84: fe5214e3 bne tp,t0,80002f6c <test_37+0x4>
- 80002f88: 01000eb7 lui t4,0x1000
- 80002f8c: 02500193 li gp,37
- 80002f90: 0bdf1e63 bne t5,t4,8000304c <fail>
-
-0000000080002f94 <test_38>:
- 80002f94: 00000213 li tp,0
- 80002f98: 00e00113 li sp,14
- 80002f9c: 00000013 nop
- 80002fa0: 800000b7 lui ra,0x80000
- 80002fa4: 00000013 nop
- 80002fa8: 0020df3b srlw t5,ra,sp
- 80002fac: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002fb0: 00200293 li t0,2
- 80002fb4: fe5212e3 bne tp,t0,80002f98 <test_38+0x4>
- 80002fb8: 00020eb7 lui t4,0x20
- 80002fbc: 02600193 li gp,38
- 80002fc0: 09df1663 bne t5,t4,8000304c <fail>
-
-0000000080002fc4 <test_39>:
- 80002fc4: 00000213 li tp,0
- 80002fc8: 01f00113 li sp,31
- 80002fcc: 00000013 nop
- 80002fd0: 00000013 nop
- 80002fd4: 800000b7 lui ra,0x80000
- 80002fd8: 0020df3b srlw t5,ra,sp
- 80002fdc: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
- 80002fe0: 00200293 li t0,2
- 80002fe4: fe5212e3 bne tp,t0,80002fc8 <test_39+0x4>
- 80002fe8: 00100e93 li t4,1
- 80002fec: 02700193 li gp,39
- 80002ff0: 05df1e63 bne t5,t4,8000304c <fail>
-
-0000000080002ff4 <test_40>:
- 80002ff4: 00f00093 li ra,15
- 80002ff8: 0010513b srlw sp,zero,ra
- 80002ffc: 00000e93 li t4,0
- 80003000: 02800193 li gp,40
- 80003004: 05d11463 bne sp,t4,8000304c <fail>
-
-0000000080003008 <test_41>:
- 80003008: 02000093 li ra,32
- 8000300c: 0000d13b srlw sp,ra,zero
- 80003010: 02000e93 li t4,32
- 80003014: 02900193 li gp,41
- 80003018: 03d11a63 bne sp,t4,8000304c <fail>
-
-000000008000301c <test_42>:
- 8000301c: 000050bb srlw ra,zero,zero
- 80003020: 00000e93 li t4,0
- 80003024: 02a00193 li gp,42
- 80003028: 03d09263 bne ra,t4,8000304c <fail>
-
-000000008000302c <test_43>:
- 8000302c: 40000093 li ra,1024
- 80003030: 00001137 lui sp,0x1
- 80003034: 8001011b addiw sp,sp,-2048
- 80003038: 0020d03b srlw zero,ra,sp
- 8000303c: 00000e93 li t4,0
- 80003040: 02b00193 li gp,43
- 80003044: 01d01463 bne zero,t4,8000304c <fail>
- 80003048: 00301a63 bne zero,gp,8000305c <pass>
-
-000000008000304c <fail>:
- 8000304c: 00119513 slli a0,gp,0x1
- 80003050: 00050063 beqz a0,80003050 <fail+0x4>
- 80003054: 00156513 ori a0,a0,1
- 80003058: 00000073 ecall
-
-000000008000305c <pass>:
- 8000305c: 00100513 li a0,1
- 80003060: 00000073 ecall
- 80003064: c0001073 unimp
+ 80002cfc: 3fdf1863 bne t5,t4,800030ec <fail>
+
+0000000080002d00 <test_44>:
+ 80002d00: fff120b7 lui ra,0xfff12
+ 80002d04: 3450809b addiw ra,ra,837
+ 80002d08: 00c09093 slli ra,ra,0xc
+ 80002d0c: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002d10: 00000113 li sp,0
+ 80002d14: 0020df3b srlw t5,ra,sp
+ 80002d18: 12345eb7 lui t4,0x12345
+ 80002d1c: 678e8e9b addiw t4,t4,1656
+ 80002d20: 02c00193 li gp,44
+ 80002d24: 3ddf1463 bne t5,t4,800030ec <fail>
+
+0000000080002d28 <test_45>:
+ 80002d28: fff120b7 lui ra,0xfff12
+ 80002d2c: 3450809b addiw ra,ra,837
+ 80002d30: 00c09093 slli ra,ra,0xc
+ 80002d34: 67808093 addi ra,ra,1656 # fffffffffff12678 <_end+0xffffffff7ff09e88>
+ 80002d38: 00400113 li sp,4
+ 80002d3c: 0020df3b srlw t5,ra,sp
+ 80002d40: 01234eb7 lui t4,0x1234
+ 80002d44: 567e8e9b addiw t4,t4,1383
+ 80002d48: 02d00193 li gp,45
+ 80002d4c: 3bdf1063 bne t5,t4,800030ec <fail>
+
+0000000080002d50 <test_46>:
+ 80002d50: 000920b7 lui ra,0x92
+ 80002d54: 3450809b addiw ra,ra,837
+ 80002d58: 00c09093 slli ra,ra,0xc
+ 80002d5c: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002d60: 00000113 li sp,0
+ 80002d64: 0020df3b srlw t5,ra,sp
+ 80002d68: 92345eb7 lui t4,0x92345
+ 80002d6c: 678e8e9b addiw t4,t4,1656
+ 80002d70: 02e00193 li gp,46
+ 80002d74: 37df1c63 bne t5,t4,800030ec <fail>
+
+0000000080002d78 <test_47>:
+ 80002d78: 000920b7 lui ra,0x92
+ 80002d7c: 3450809b addiw ra,ra,837
+ 80002d80: 00c09093 slli ra,ra,0xc
+ 80002d84: 67808093 addi ra,ra,1656 # 92678 <_start-0x7ff6d988>
+ 80002d88: 00400113 li sp,4
+ 80002d8c: 0020df3b srlw t5,ra,sp
+ 80002d90: 09234eb7 lui t4,0x9234
+ 80002d94: 567e8e9b addiw t4,t4,1383
+ 80002d98: 02f00193 li gp,47
+ 80002d9c: 35df1863 bne t5,t4,800030ec <fail>
+
+0000000080002da0 <test_22>:
+ 80002da0: 800000b7 lui ra,0x80000
+ 80002da4: 00700113 li sp,7
+ 80002da8: 0020d0bb srlw ra,ra,sp
+ 80002dac: 01000eb7 lui t4,0x1000
+ 80002db0: 01600193 li gp,22
+ 80002db4: 33d09c63 bne ra,t4,800030ec <fail>
+
+0000000080002db8 <test_23>:
+ 80002db8: 800000b7 lui ra,0x80000
+ 80002dbc: 00e00113 li sp,14
+ 80002dc0: 0020d13b srlw sp,ra,sp
+ 80002dc4: 00020eb7 lui t4,0x20
+ 80002dc8: 01700193 li gp,23
+ 80002dcc: 33d11063 bne sp,t4,800030ec <fail>
+
+0000000080002dd0 <test_24>:
+ 80002dd0: 00700093 li ra,7
+ 80002dd4: 0010d0bb srlw ra,ra,ra
+ 80002dd8: 00000e93 li t4,0
+ 80002ddc: 01800193 li gp,24
+ 80002de0: 31d09663 bne ra,t4,800030ec <fail>
+
+0000000080002de4 <test_25>:
+ 80002de4: 00000213 li tp,0
+ 80002de8: 800000b7 lui ra,0x80000
+ 80002dec: 00700113 li sp,7
+ 80002df0: 0020df3b srlw t5,ra,sp
+ 80002df4: 000f0313 mv t1,t5
+ 80002df8: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002dfc: 00200293 li t0,2
+ 80002e00: fe5214e3 bne tp,t0,80002de8 <test_25+0x4>
+ 80002e04: 01000eb7 lui t4,0x1000
+ 80002e08: 01900193 li gp,25
+ 80002e0c: 2fd31063 bne t1,t4,800030ec <fail>
+
+0000000080002e10 <test_26>:
+ 80002e10: 00000213 li tp,0
+ 80002e14: 800000b7 lui ra,0x80000
+ 80002e18: 00e00113 li sp,14
+ 80002e1c: 0020df3b srlw t5,ra,sp
+ 80002e20: 00000013 nop
+ 80002e24: 000f0313 mv t1,t5
+ 80002e28: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e2c: 00200293 li t0,2
+ 80002e30: fe5212e3 bne tp,t0,80002e14 <test_26+0x4>
+ 80002e34: 00020eb7 lui t4,0x20
+ 80002e38: 01a00193 li gp,26
+ 80002e3c: 2bd31863 bne t1,t4,800030ec <fail>
+
+0000000080002e40 <test_27>:
+ 80002e40: 00000213 li tp,0
+ 80002e44: 800000b7 lui ra,0x80000
+ 80002e48: 01f00113 li sp,31
+ 80002e4c: 0020df3b srlw t5,ra,sp
+ 80002e50: 00000013 nop
+ 80002e54: 00000013 nop
+ 80002e58: 000f0313 mv t1,t5
+ 80002e5c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e60: 00200293 li t0,2
+ 80002e64: fe5210e3 bne tp,t0,80002e44 <test_27+0x4>
+ 80002e68: 00100e93 li t4,1
+ 80002e6c: 01b00193 li gp,27
+ 80002e70: 27d31e63 bne t1,t4,800030ec <fail>
+
+0000000080002e74 <test_28>:
+ 80002e74: 00000213 li tp,0
+ 80002e78: 800000b7 lui ra,0x80000
+ 80002e7c: 00700113 li sp,7
+ 80002e80: 0020df3b srlw t5,ra,sp
+ 80002e84: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002e88: 00200293 li t0,2
+ 80002e8c: fe5216e3 bne tp,t0,80002e78 <test_28+0x4>
+ 80002e90: 01000eb7 lui t4,0x1000
+ 80002e94: 01c00193 li gp,28
+ 80002e98: 25df1a63 bne t5,t4,800030ec <fail>
+
+0000000080002e9c <test_29>:
+ 80002e9c: 00000213 li tp,0
+ 80002ea0: 800000b7 lui ra,0x80000
+ 80002ea4: 00e00113 li sp,14
+ 80002ea8: 00000013 nop
+ 80002eac: 0020df3b srlw t5,ra,sp
+ 80002eb0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002eb4: 00200293 li t0,2
+ 80002eb8: fe5214e3 bne tp,t0,80002ea0 <test_29+0x4>
+ 80002ebc: 00020eb7 lui t4,0x20
+ 80002ec0: 01d00193 li gp,29
+ 80002ec4: 23df1463 bne t5,t4,800030ec <fail>
+
+0000000080002ec8 <test_30>:
+ 80002ec8: 00000213 li tp,0
+ 80002ecc: 800000b7 lui ra,0x80000
+ 80002ed0: 01f00113 li sp,31
+ 80002ed4: 00000013 nop
+ 80002ed8: 00000013 nop
+ 80002edc: 0020df3b srlw t5,ra,sp
+ 80002ee0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ee4: 00200293 li t0,2
+ 80002ee8: fe5212e3 bne tp,t0,80002ecc <test_30+0x4>
+ 80002eec: 00100e93 li t4,1
+ 80002ef0: 01e00193 li gp,30
+ 80002ef4: 1fdf1c63 bne t5,t4,800030ec <fail>
+
+0000000080002ef8 <test_31>:
+ 80002ef8: 00000213 li tp,0
+ 80002efc: 800000b7 lui ra,0x80000
+ 80002f00: 00000013 nop
+ 80002f04: 00700113 li sp,7
+ 80002f08: 0020df3b srlw t5,ra,sp
+ 80002f0c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f10: 00200293 li t0,2
+ 80002f14: fe5214e3 bne tp,t0,80002efc <test_31+0x4>
+ 80002f18: 01000eb7 lui t4,0x1000
+ 80002f1c: 01f00193 li gp,31
+ 80002f20: 1ddf1663 bne t5,t4,800030ec <fail>
+
+0000000080002f24 <test_32>:
+ 80002f24: 00000213 li tp,0
+ 80002f28: 800000b7 lui ra,0x80000
+ 80002f2c: 00000013 nop
+ 80002f30: 00e00113 li sp,14
+ 80002f34: 00000013 nop
+ 80002f38: 0020df3b srlw t5,ra,sp
+ 80002f3c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f40: 00200293 li t0,2
+ 80002f44: fe5212e3 bne tp,t0,80002f28 <test_32+0x4>
+ 80002f48: 00020eb7 lui t4,0x20
+ 80002f4c: 02000193 li gp,32
+ 80002f50: 19df1e63 bne t5,t4,800030ec <fail>
+
+0000000080002f54 <test_33>:
+ 80002f54: 00000213 li tp,0
+ 80002f58: 800000b7 lui ra,0x80000
+ 80002f5c: 00000013 nop
+ 80002f60: 00000013 nop
+ 80002f64: 01f00113 li sp,31
+ 80002f68: 0020df3b srlw t5,ra,sp
+ 80002f6c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f70: 00200293 li t0,2
+ 80002f74: fe5212e3 bne tp,t0,80002f58 <test_33+0x4>
+ 80002f78: 00100e93 li t4,1
+ 80002f7c: 02100193 li gp,33
+ 80002f80: 17df1663 bne t5,t4,800030ec <fail>
+
+0000000080002f84 <test_34>:
+ 80002f84: 00000213 li tp,0
+ 80002f88: 00700113 li sp,7
+ 80002f8c: 800000b7 lui ra,0x80000
+ 80002f90: 0020df3b srlw t5,ra,sp
+ 80002f94: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002f98: 00200293 li t0,2
+ 80002f9c: fe5216e3 bne tp,t0,80002f88 <test_34+0x4>
+ 80002fa0: 01000eb7 lui t4,0x1000
+ 80002fa4: 02200193 li gp,34
+ 80002fa8: 15df1263 bne t5,t4,800030ec <fail>
+
+0000000080002fac <test_35>:
+ 80002fac: 00000213 li tp,0
+ 80002fb0: 00e00113 li sp,14
+ 80002fb4: 800000b7 lui ra,0x80000
+ 80002fb8: 00000013 nop
+ 80002fbc: 0020df3b srlw t5,ra,sp
+ 80002fc0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002fc4: 00200293 li t0,2
+ 80002fc8: fe5214e3 bne tp,t0,80002fb0 <test_35+0x4>
+ 80002fcc: 00020eb7 lui t4,0x20
+ 80002fd0: 02300193 li gp,35
+ 80002fd4: 11df1c63 bne t5,t4,800030ec <fail>
+
+0000000080002fd8 <test_36>:
+ 80002fd8: 00000213 li tp,0
+ 80002fdc: 01f00113 li sp,31
+ 80002fe0: 800000b7 lui ra,0x80000
+ 80002fe4: 00000013 nop
+ 80002fe8: 00000013 nop
+ 80002fec: 0020df3b srlw t5,ra,sp
+ 80002ff0: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80002ff4: 00200293 li t0,2
+ 80002ff8: fe5212e3 bne tp,t0,80002fdc <test_36+0x4>
+ 80002ffc: 00100e93 li t4,1
+ 80003000: 02400193 li gp,36
+ 80003004: 0fdf1463 bne t5,t4,800030ec <fail>
+
+0000000080003008 <test_37>:
+ 80003008: 00000213 li tp,0
+ 8000300c: 00700113 li sp,7
+ 80003010: 00000013 nop
+ 80003014: 800000b7 lui ra,0x80000
+ 80003018: 0020df3b srlw t5,ra,sp
+ 8000301c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003020: 00200293 li t0,2
+ 80003024: fe5214e3 bne tp,t0,8000300c <test_37+0x4>
+ 80003028: 01000eb7 lui t4,0x1000
+ 8000302c: 02500193 li gp,37
+ 80003030: 0bdf1e63 bne t5,t4,800030ec <fail>
+
+0000000080003034 <test_38>:
+ 80003034: 00000213 li tp,0
+ 80003038: 00e00113 li sp,14
+ 8000303c: 00000013 nop
+ 80003040: 800000b7 lui ra,0x80000
+ 80003044: 00000013 nop
+ 80003048: 0020df3b srlw t5,ra,sp
+ 8000304c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003050: 00200293 li t0,2
+ 80003054: fe5212e3 bne tp,t0,80003038 <test_38+0x4>
+ 80003058: 00020eb7 lui t4,0x20
+ 8000305c: 02600193 li gp,38
+ 80003060: 09df1663 bne t5,t4,800030ec <fail>
+
+0000000080003064 <test_39>:
+ 80003064: 00000213 li tp,0
+ 80003068: 01f00113 li sp,31
+ 8000306c: 00000013 nop
+ 80003070: 00000013 nop
+ 80003074: 800000b7 lui ra,0x80000
+ 80003078: 0020df3b srlw t5,ra,sp
+ 8000307c: 00120213 addi tp,tp,1 # 1 <_start-0x7fffffff>
+ 80003080: 00200293 li t0,2
+ 80003084: fe5212e3 bne tp,t0,80003068 <test_39+0x4>
+ 80003088: 00100e93 li t4,1
+ 8000308c: 02700193 li gp,39
+ 80003090: 05df1e63 bne t5,t4,800030ec <fail>
+
+0000000080003094 <test_40>:
+ 80003094: 00f00093 li ra,15
+ 80003098: 0010513b srlw sp,zero,ra
+ 8000309c: 00000e93 li t4,0
+ 800030a0: 02800193 li gp,40
+ 800030a4: 05d11463 bne sp,t4,800030ec <fail>
+
+00000000800030a8 <test_41>:
+ 800030a8: 02000093 li ra,32
+ 800030ac: 0000d13b srlw sp,ra,zero
+ 800030b0: 02000e93 li t4,32
+ 800030b4: 02900193 li gp,41
+ 800030b8: 03d11a63 bne sp,t4,800030ec <fail>
+
+00000000800030bc <test_42>:
+ 800030bc: 000050bb srlw ra,zero,zero
+ 800030c0: 00000e93 li t4,0
+ 800030c4: 02a00193 li gp,42
+ 800030c8: 03d09263 bne ra,t4,800030ec <fail>
+
+00000000800030cc <test_43>:
+ 800030cc: 40000093 li ra,1024
+ 800030d0: 00001137 lui sp,0x1
+ 800030d4: 8001011b addiw sp,sp,-2048
+ 800030d8: 0020d03b srlw zero,ra,sp
+ 800030dc: 00000e93 li t4,0
+ 800030e0: 02b00193 li gp,43
+ 800030e4: 01d01463 bne zero,t4,800030ec <fail>
+ 800030e8: 00301a63 bne zero,gp,800030fc <pass>
+
+00000000800030ec <fail>:
+ 800030ec: 00119513 slli a0,gp,0x1
+ 800030f0: 00050063 beqz a0,800030f0 <fail+0x4>
+ 800030f4: 00156513 ori a0,a0,1
+ 800030f8: 00000073 ecall
+
+00000000800030fc <pass>:
+ 800030fc: 00100513 li a0,1
+ 80003100: 00000073 ecall
+ 80003104: c0001073 unimp
diff --git a/test/riscv-tests/rv64ui-v-srlw.elf b/test/riscv-tests/rv64ui-v-srlw.elf
index 87f8e6d..55a29ef 100644
--- a/test/riscv-tests/rv64ui-v-srlw.elf
+++ b/test/riscv-tests/rv64ui-v-srlw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sub.dump b/test/riscv-tests/rv64ui-v-sub.dump
index 1e59e97..3168344 100644
--- a/test/riscv-tests/rv64ui-v-sub.dump
+++ b/test/riscv-tests/rv64ui-v-sub.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sub.elf b/test/riscv-tests/rv64ui-v-sub.elf
index 25ce44f..75f226f 100644
--- a/test/riscv-tests/rv64ui-v-sub.elf
+++ b/test/riscv-tests/rv64ui-v-sub.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-subw.dump b/test/riscv-tests/rv64ui-v-subw.dump
index 8832cb7..8d9c9b7 100644
--- a/test/riscv-tests/rv64ui-v-subw.dump
+++ b/test/riscv-tests/rv64ui-v-subw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-subw.elf b/test/riscv-tests/rv64ui-v-subw.elf
index 0c451db..f90ec56 100644
--- a/test/riscv-tests/rv64ui-v-subw.elf
+++ b/test/riscv-tests/rv64ui-v-subw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-sw.dump b/test/riscv-tests/rv64ui-v-sw.dump
index 60671e2..22786ec 100644
--- a/test/riscv-tests/rv64ui-v-sw.dump
+++ b/test/riscv-tests/rv64ui-v-sw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-sw.elf b/test/riscv-tests/rv64ui-v-sw.elf
index d52322b..23e3701 100644
--- a/test/riscv-tests/rv64ui-v-sw.elf
+++ b/test/riscv-tests/rv64ui-v-sw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-xor.dump b/test/riscv-tests/rv64ui-v-xor.dump
index 8b95600..600a772 100644
--- a/test/riscv-tests/rv64ui-v-xor.dump
+++ b/test/riscv-tests/rv64ui-v-xor.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-xor.elf b/test/riscv-tests/rv64ui-v-xor.elf
index 151c211..3e41603 100644
--- a/test/riscv-tests/rv64ui-v-xor.elf
+++ b/test/riscv-tests/rv64ui-v-xor.elf
Binary files differ
diff --git a/test/riscv-tests/rv64ui-v-xori.dump b/test/riscv-tests/rv64ui-v-xori.dump
index cc0d051..958cef8 100644
--- a/test/riscv-tests/rv64ui-v-xori.dump
+++ b/test/riscv-tests/rv64ui-v-xori.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64ui-v-xori.elf b/test/riscv-tests/rv64ui-v-xori.elf
index d716ff2..6f701a4 100644
--- a/test/riscv-tests/rv64ui-v-xori.elf
+++ b/test/riscv-tests/rv64ui-v-xori.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-div.elf b/test/riscv-tests/rv64um-p-div.elf
index d202d09..c33b954 100644
--- a/test/riscv-tests/rv64um-p-div.elf
+++ b/test/riscv-tests/rv64um-p-div.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-divu.elf b/test/riscv-tests/rv64um-p-divu.elf
index bef0d69..6c7c992 100644
--- a/test/riscv-tests/rv64um-p-divu.elf
+++ b/test/riscv-tests/rv64um-p-divu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-divuw.elf b/test/riscv-tests/rv64um-p-divuw.elf
index 1d1e44f..d28d92d 100644
--- a/test/riscv-tests/rv64um-p-divuw.elf
+++ b/test/riscv-tests/rv64um-p-divuw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-divw.elf b/test/riscv-tests/rv64um-p-divw.elf
index e39eb53..62998eb 100644
--- a/test/riscv-tests/rv64um-p-divw.elf
+++ b/test/riscv-tests/rv64um-p-divw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-mul.elf b/test/riscv-tests/rv64um-p-mul.elf
index 4983abe..7db8e67 100644
--- a/test/riscv-tests/rv64um-p-mul.elf
+++ b/test/riscv-tests/rv64um-p-mul.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-mulh.elf b/test/riscv-tests/rv64um-p-mulh.elf
index 4118cec..9a7009a 100644
--- a/test/riscv-tests/rv64um-p-mulh.elf
+++ b/test/riscv-tests/rv64um-p-mulh.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-mulhsu.elf b/test/riscv-tests/rv64um-p-mulhsu.elf
index 37979fe..eb825f7 100644
--- a/test/riscv-tests/rv64um-p-mulhsu.elf
+++ b/test/riscv-tests/rv64um-p-mulhsu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-mulhu.elf b/test/riscv-tests/rv64um-p-mulhu.elf
index e3ae453..b398098 100644
--- a/test/riscv-tests/rv64um-p-mulhu.elf
+++ b/test/riscv-tests/rv64um-p-mulhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-mulw.elf b/test/riscv-tests/rv64um-p-mulw.elf
index 9c3214c..8651960 100644
--- a/test/riscv-tests/rv64um-p-mulw.elf
+++ b/test/riscv-tests/rv64um-p-mulw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-rem.elf b/test/riscv-tests/rv64um-p-rem.elf
index cfe6e6c..45a427e 100644
--- a/test/riscv-tests/rv64um-p-rem.elf
+++ b/test/riscv-tests/rv64um-p-rem.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-remu.elf b/test/riscv-tests/rv64um-p-remu.elf
index 93dcf5e..ce63b5f 100644
--- a/test/riscv-tests/rv64um-p-remu.elf
+++ b/test/riscv-tests/rv64um-p-remu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-remuw.elf b/test/riscv-tests/rv64um-p-remuw.elf
index ba166ff..3e1fea5 100644
--- a/test/riscv-tests/rv64um-p-remuw.elf
+++ b/test/riscv-tests/rv64um-p-remuw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-p-remw.elf b/test/riscv-tests/rv64um-p-remw.elf
index 55798a6..e079595 100644
--- a/test/riscv-tests/rv64um-p-remw.elf
+++ b/test/riscv-tests/rv64um-p-remw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-div.dump b/test/riscv-tests/rv64um-v-div.dump
index bfc4ab1..fe82546 100644
--- a/test/riscv-tests/rv64um-v-div.dump
+++ b/test/riscv-tests/rv64um-v-div.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-div.elf b/test/riscv-tests/rv64um-v-div.elf
index 3374b8a..3d3faff 100644
--- a/test/riscv-tests/rv64um-v-div.elf
+++ b/test/riscv-tests/rv64um-v-div.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-divu.dump b/test/riscv-tests/rv64um-v-divu.dump
index 68b9aab..db704e1 100644
--- a/test/riscv-tests/rv64um-v-divu.dump
+++ b/test/riscv-tests/rv64um-v-divu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-divu.elf b/test/riscv-tests/rv64um-v-divu.elf
index 4eec538..c1fcea0 100644
--- a/test/riscv-tests/rv64um-v-divu.elf
+++ b/test/riscv-tests/rv64um-v-divu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-divuw.dump b/test/riscv-tests/rv64um-v-divuw.dump
index 644f517..0c877d5 100644
--- a/test/riscv-tests/rv64um-v-divuw.dump
+++ b/test/riscv-tests/rv64um-v-divuw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-divuw.elf b/test/riscv-tests/rv64um-v-divuw.elf
index f5ae7cb..68f0b6c 100644
--- a/test/riscv-tests/rv64um-v-divuw.elf
+++ b/test/riscv-tests/rv64um-v-divuw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-divw.dump b/test/riscv-tests/rv64um-v-divw.dump
index e2ba647..75433d5 100644
--- a/test/riscv-tests/rv64um-v-divw.dump
+++ b/test/riscv-tests/rv64um-v-divw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-divw.elf b/test/riscv-tests/rv64um-v-divw.elf
index 1ecdfcf..75273cc 100644
--- a/test/riscv-tests/rv64um-v-divw.elf
+++ b/test/riscv-tests/rv64um-v-divw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-mul.dump b/test/riscv-tests/rv64um-v-mul.dump
index 784ee41..509944c 100644
--- a/test/riscv-tests/rv64um-v-mul.dump
+++ b/test/riscv-tests/rv64um-v-mul.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-mul.elf b/test/riscv-tests/rv64um-v-mul.elf
index 64107a2..20551df 100644
--- a/test/riscv-tests/rv64um-v-mul.elf
+++ b/test/riscv-tests/rv64um-v-mul.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-mulh.dump b/test/riscv-tests/rv64um-v-mulh.dump
index 17befcd..e501d3e 100644
--- a/test/riscv-tests/rv64um-v-mulh.dump
+++ b/test/riscv-tests/rv64um-v-mulh.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-mulh.elf b/test/riscv-tests/rv64um-v-mulh.elf
index a644ac4..54e44f1 100644
--- a/test/riscv-tests/rv64um-v-mulh.elf
+++ b/test/riscv-tests/rv64um-v-mulh.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-mulhsu.dump b/test/riscv-tests/rv64um-v-mulhsu.dump
index 061224b..cc19029 100644
--- a/test/riscv-tests/rv64um-v-mulhsu.dump
+++ b/test/riscv-tests/rv64um-v-mulhsu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-mulhsu.elf b/test/riscv-tests/rv64um-v-mulhsu.elf
index a8afeaa..5e98393 100644
--- a/test/riscv-tests/rv64um-v-mulhsu.elf
+++ b/test/riscv-tests/rv64um-v-mulhsu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-mulhu.dump b/test/riscv-tests/rv64um-v-mulhu.dump
index 85b66d0..c0ab487 100644
--- a/test/riscv-tests/rv64um-v-mulhu.dump
+++ b/test/riscv-tests/rv64um-v-mulhu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-mulhu.elf b/test/riscv-tests/rv64um-v-mulhu.elf
index 62759c8..2b545ac 100644
--- a/test/riscv-tests/rv64um-v-mulhu.elf
+++ b/test/riscv-tests/rv64um-v-mulhu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-mulw.dump b/test/riscv-tests/rv64um-v-mulw.dump
index 0d3598f..252c9e2 100644
--- a/test/riscv-tests/rv64um-v-mulw.dump
+++ b/test/riscv-tests/rv64um-v-mulw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-mulw.elf b/test/riscv-tests/rv64um-v-mulw.elf
index bfc28b2..a7ba7ba 100644
--- a/test/riscv-tests/rv64um-v-mulw.elf
+++ b/test/riscv-tests/rv64um-v-mulw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-rem.dump b/test/riscv-tests/rv64um-v-rem.dump
index 8c29a0c..d47e330 100644
--- a/test/riscv-tests/rv64um-v-rem.dump
+++ b/test/riscv-tests/rv64um-v-rem.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-rem.elf b/test/riscv-tests/rv64um-v-rem.elf
index 9caa3b3..151fa2a 100644
--- a/test/riscv-tests/rv64um-v-rem.elf
+++ b/test/riscv-tests/rv64um-v-rem.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-remu.dump b/test/riscv-tests/rv64um-v-remu.dump
index 01d50ac..863a0b7 100644
--- a/test/riscv-tests/rv64um-v-remu.dump
+++ b/test/riscv-tests/rv64um-v-remu.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-remu.elf b/test/riscv-tests/rv64um-v-remu.elf
index 26ead9d..0317a40 100644
--- a/test/riscv-tests/rv64um-v-remu.elf
+++ b/test/riscv-tests/rv64um-v-remu.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-remuw.dump b/test/riscv-tests/rv64um-v-remuw.dump
index f0688a4..0825b85 100644
--- a/test/riscv-tests/rv64um-v-remuw.dump
+++ b/test/riscv-tests/rv64um-v-remuw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-remuw.elf b/test/riscv-tests/rv64um-v-remuw.elf
index 795ae59..c114230 100644
--- a/test/riscv-tests/rv64um-v-remuw.elf
+++ b/test/riscv-tests/rv64um-v-remuw.elf
Binary files differ
diff --git a/test/riscv-tests/rv64um-v-remw.dump b/test/riscv-tests/rv64um-v-remw.dump
index 659d882..3b82fc4 100644
--- a/test/riscv-tests/rv64um-v-remw.dump
+++ b/test/riscv-tests/rv64um-v-remw.dump
@@ -101,7 +101,7 @@ Disassembly of section .text.init:
8000014c: 10513023 sd t0,256(sp)
80000150: 141022f3 csrr t0,sepc
80000154: 10513423 sd t0,264(sp)
- 80000158: 143022f3 csrr t0,sbadaddr
+ 80000158: 143022f3 csrr t0,stval
8000015c: 10513823 sd t0,272(sp)
80000160: 142022f3 csrr t0,scause
80000164: 10513c23 sd t0,280(sp)
diff --git a/test/riscv-tests/rv64um-v-remw.elf b/test/riscv-tests/rv64um-v-remw.elf
index 7471536..e29a384 100644
--- a/test/riscv-tests/rv64um-v-remw.elf
+++ b/test/riscv-tests/rv64um-v-remw.elf
Binary files differ
diff --git a/test/run_tests.sh b/test/run_tests.sh
index 9351279..e0b50ad 100755
--- a/test/run_tests.sh
+++ b/test/run_tests.sh
@@ -49,43 +49,78 @@ printf "<testsuites>\n" >> $DIR/tests.xml
cd $RISCVDIR
-printf "Building RISCV specification...\n"
+# Do 'make clean' to avoid cross-arch pollution.
+make clean
-if make ocaml_emulator/riscv_ocaml_sim ;
+printf "Building 32-bit RISCV specification...\n"
+if ARCH=RV32 make ocaml_emulator/riscv_ocaml_sim_RV32 ;
then
- green "Building RISCV specification" "ok"
+ green "Building 32-bit RISCV OCaml emulator" "ok"
else
- red "Building RISCV specification" "fail"
+ red "Building 32-bit RISCV OCaml emulator" "fail"
fi
-
-for test in $DIR/riscv-tests/*.elf; do
- if $RISCVDIR/ocaml_emulator/riscv_ocaml_sim "$test" >"${test/.elf/.out}" 2>&1 && grep -q SUCCESS "${test/.elf/.out}"
+for test in $DIR/riscv-tests/rv32*.elf; do
+ if $RISCVDIR/ocaml_emulator/riscv_ocaml_sim_RV32 "$test" >"${test/.elf/.out}" 2>&1 && grep -q SUCCESS "${test/.elf/.out}"
then
- green "$(basename $test)" "ok"
+ green "OCaml-32 $(basename $test)" "ok"
else
- red "$(basename $test)" "fail"
+ red "OCaml-32 $(basename $test)" "fail"
fi
done
+finish_suite "32-bit RISCV OCaml tests"
-finish_suite "RISCV OCaml tests"
-if make c_emulator/riscv_sim;
+if ARCH=RV32 make c_emulator/riscv_sim_RV32;
then
- green "Building RISCV specification to C" "ok"
+ green "Building 32-bit RISCV C emulator" "ok"
else
- red "Building RISCV specification to C" "fail"
+ red "Building 32-bit RISCV C emulator" "fail"
fi
+for test in $DIR/riscv-tests/rv32*.elf; do
+ if timeout 5 $RISCVDIR/c_emulator/riscv_sim_RV32 -p $test > ${test%.elf}.cout 2>&1 && grep -q SUCCESS ${test%.elf}.cout
+ then
+ green "C-32 $(basename $test)" "ok"
+ else
+ red "C-32 $(basename $test)" "fail"
+ fi
+done
+finish_suite "32-bit RISCV C tests"
-for test in $DIR/riscv-tests/*.elf; do
- if timeout 5 $RISCVDIR/c_emulator/riscv_sim -p $test > ${test%.elf}.cout 2>&1 && grep -q SUCCESS ${test%.elf}.cout
+# Do 'make clean' to avoid cross-arch pollution.
+make clean
+
+printf "Building 64-bit RISCV specification...\n"
+
+if make ocaml_emulator/riscv_ocaml_sim_RV64 ;
+then
+ green "Building 64-bit RISCV OCaml emulator" "ok"
+else
+ red "Building 64-bit RISCV OCaml emulator" "fail"
+fi
+for test in $DIR/riscv-tests/rv64*.elf; do
+ if $RISCVDIR/ocaml_emulator/riscv_ocaml_sim_RV64 "$test" >"${test/.elf/.out}" 2>&1 && grep -q SUCCESS "${test/.elf/.out}"
then
- green "$(basename $test)" "ok"
+ green "OCaml-64 $(basename $test)" "ok"
else
- red "$(basename $test)" "fail"
+ red "OCaml-64 $(basename $test)" "fail"
fi
done
+finish_suite "64-bit RISCV OCaml tests"
-finish_suite "RISCV C tests"
+if make c_emulator/riscv_sim_RV64;
+then
+ green "Building 64-bit RISCV C emulator" "ok"
+else
+ red "Building 64-bit RISCV C emulator" "fail"
+fi
+for test in $DIR/riscv-tests/rv64*.elf; do
+ if timeout 5 $RISCVDIR/c_emulator/riscv_sim_RV64 -p $test > ${test%.elf}.cout 2>&1 && grep -q SUCCESS ${test%.elf}.cout
+ then
+ green "C-64 $(basename $test)" "ok"
+ else
+ red "C-64 $(basename $test)" "fail"
+ fi
+done
+finish_suite "64-bit RISCV C tests"
printf "</testsuites>\n" >> $DIR/tests.xml
-