# Connect to a mult-icore RISC-V target, exposing each hart as a thread. adapter speed 10000 adapter driver remote_bitbang remote_bitbang host $::env(REMOTE_BITBANG_HOST) remote_bitbang port $::env(REMOTE_BITBANG_PORT) jtag newtap riscv.0 cpu -irlen 5 -expected-id 0xdeadbeef jtag newtap riscv.1 cpu -irlen 5 -expected-id 0xdeadbeef target create riscv.0.cpu0 riscv -chain-position riscv.0.cpu -coreid 0 target create riscv.0.cpu1 riscv -chain-position riscv.0.cpu -coreid 1 target create riscv.1.cpu0 riscv -chain-position riscv.1.cpu -coreid 0 target create riscv.1.cpu1 riscv -chain-position riscv.1.cpu -coreid 1 riscv.0.cpu0 configure -work-area-phys $::env(WORK_AREA) -work-area-size 8096 -work-area-backup 1 riscv.0.cpu1 configure -work-area-phys $::env(WORK_AREA) -work-area-size 8096 -work-area-backup 1 riscv.1.cpu0 configure -work-area-phys $::env(WORK_AREA) -work-area-size 8096 -work-area-backup 1 riscv.1.cpu1 configure -work-area-phys $::env(WORK_AREA) -work-area-size 8096 -work-area-backup 1 gdb_report_data_abort enable gdb_report_register_access_error enable # Expose an unimplemented CSR so we can test non-existent register access # behavior. foreach t [target names] { targets $t riscv expose_csrs 2288 riscv expose_custom 1,12345-12348 } init targets riscv.0.cpu0 set challenge [riscv authdata_read] riscv authdata_write [expr {$challenge + 1}] targets riscv.1.cpu0 set challenge [riscv authdata_read] riscv authdata_write [expr {$challenge + 1}] foreach t [target names] { targets $t halt arm semihosting enable }