diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-06-10 18:51:41 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-06-10 18:51:41 -0700 |
commit | b436b9717eab8b0b5c39c931bca5f000df079836 (patch) | |
tree | 8d5cc3c268b7e735d0cf257cc40c7839dbc34001 /pkg/sentry/platform/ring0 | |
parent | 508e7c3a792d56b87e54b530145968aee85ead87 (diff) | |
parent | a534b2c65236201703096bb010f8d6b742f14c0d (diff) |
Merge pull request #2711 from lubinszARM:pr_mmio
PiperOrigin-RevId: 315812219
Diffstat (limited to 'pkg/sentry/platform/ring0')
-rw-r--r-- | pkg/sentry/platform/ring0/entry_arm64.s | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/pkg/sentry/platform/ring0/entry_arm64.s b/pkg/sentry/platform/ring0/entry_arm64.s index db6465663..2bc5f3ecd 100644 --- a/pkg/sentry/platform/ring0/entry_arm64.s +++ b/pkg/sentry/platform/ring0/entry_arm64.s @@ -362,9 +362,17 @@ mmio_exit: MOVD R1, CPU_LAZY_VFP(RSV_REG) VFP_DISABLE - // MMIO_EXIT. - MOVD $0, R9 - MOVD R0, 0xffff000000001000(R9) + // Trigger MMIO_EXIT/_KVM_HYPERCALL_VMEXIT. + // + // To keep it simple, I used the address of exception table as the + // MMIO base address, so that I can trigger a MMIO-EXIT by forcibly writing + // a read-only space. + // Also, the length is engough to match a sufficient number of hypercall ID. + // Then, in host user space, I can calculate this address to find out + // which hypercall. + MRS VBAR_EL1, R9 + MOVD R0, 0x0(R9) + RET // HaltAndResume halts execution and point the pointer to the resume function. |