> This patch enables PAC and AUT instructions for pointer signing and
> authentication in JIT code on Windows/ARM64 when "UseBranchProtection"
> flag is set and when the processor supports the feature.
> 
> Specifically, JVM detects hardware support by reading ID_AA64ISAR1_EL1
> and ID_AA64ISAR2_EL1 registers via CP4031 and CP4032 keys in the Windows
> registry.  Then, if the "UseBranchProtection" flag is set, then HotSpot
> emits the signing and authenticating instructions.  Windows uses
> AArch64's "B" key, so this patch selects between "paciaz" and "pacibz"
> instructions (and similarly, between "autiaz" and "autibz" instructions)
> depending on whether HotSpot is being compiled for Linux versus Windows.
> Both the MacroAssembler and the Windows' PAC helpers need to stay in
> sync, so this patch needs changes to both macroAssembler_aarch64.cpp as
> well as pauth_windows_aarch64.inline.hpp.
> 
> Since Linux supports both "A" as well as "B" keys, it's possible to use
> "B" keys for both Linux and Windows, although I fear doing so may
> introduce more churn in the code.
> 
> This patch also introduces a cross-platform (Linux and Windows) test
> that compiles and runs a method under both C1 and C2 before checking
> whether the generated instructions include the "paci[ab]z" and the
> "auti[ab]z" instructions.
> 
> Since CI doesn't test with branch protection enabled, I manually changed
> the default value of "UseBranchProtection" in globals_aarch64.cpp to be
> "pac-ret" before running tier 1 through tier 3 tests in the HotSpot,
> JDK, and LangTools test groups to ensure that this patch does not
> introduce any new failures.  I also validated this patch by running the
> same tests with the default value for "UseBranchProtection".
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

Ashay Rane has updated the pull request incrementally with one additional 
commit since the last revision:

  Documentation updates
  
  - Include section numbers from ARM ISA document
  - Mark branch protection on Windows/ARM64 as supported

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/33595/files
  - new: https://git.openjdk.org/jdk/pull/33595/files/73da9a27..cb6d190b

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=33595&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=33595&range=00-01

  Stats: 10 lines in 3 files changed: 2 ins; 1 del; 7 mod
  Patch: https://git.openjdk.org/jdk/pull/33595.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/33595/head:pull/33595

PR: https://git.openjdk.org/jdk/pull/33595

Reply via email to