riscv64: ExecuteNterpImpl basic implementation
Minimal asm to start HelloWorld until we hit the first opcode
(nterp_op_const_4) with SIGILL.
This CL skips argument processing, compact dex, etc.
NOTE that Nterp now claims use x18 (s2) for regular usage,
since the shadow stack register is now assigned at x3 (gp)
from https://android-review.git.corp.google.com/c/platform/art/+/2535780
Test: Run ART test 001-HelloWorld on a Linux RISC-V VM:
lunch aosp_riscv64-userdebug
export ART_TEST_SSH_USER=ubuntu
export ART_TEST_SSH_HOST=localhost
export ART_TEST_SSH_PORT=10001
export ART_TEST_ON_VM=true
. art/tools/buildbot-utils.sh
art/tools/buildbot-build.sh --target
# Create, boot and configure the VM.
art/tools/buildbot-vm.sh create
art/tools/buildbot-vm.sh boot
art/tools/buildbot-vm.sh setup-ssh # password: 'ubuntu'
art/tools/buildbot-cleanup-device.sh
art/tools/buildbot-setup-device.sh
art/tools/buildbot-sync.sh
# Test switch interpreter
art/test.py --target -r --no-prebuild --ndebug --no-image \
--64 --interpreter 001-HelloWorld
# PASS
# Test Nterp (first revert 2547153 in local build)
art/test.py --target -r --no-prebuild --ndebug --no-image \
--64 001-HelloWorld
# SIGILL in nterp_op_const_4
Change-Id: I0d5c6bc83af92f299d22477494332fff6c76197c
4 files changed