From 503c54d5597fd0d333191c785bce1e119017a2cd Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Sun, 20 Sep 2020 06:33:02 +0700 Subject: [PATCH] Patch thread getter --- buildjdk.sh | 2 +- .../linux_aarch64/vm/threadLS_linux_aarch64.s | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 override-jre-files/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s diff --git a/buildjdk.sh b/buildjdk.sh index c3a9891..0141200 100755 --- a/buildjdk.sh +++ b/buildjdk.sh @@ -14,7 +14,7 @@ fi sudo apt -y install gcc-multilib g++-multilib libxtst-dev libasound2-dev libelf-dev # Patch for aarch64 -# cp -R -f openjdk-mobile-aarch64-patch/* openjdk/ +cp -R -f override-jre-files/* openjdk/ cd openjdk rm -rf build diff --git a/override-jre-files/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s b/override-jre-files/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s new file mode 100644 index 0000000..4645c27 --- /dev/null +++ b/override-jre-files/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s @@ -0,0 +1,44 @@ +// Copyright (c) 2015, Red Hat Inc. All rights reserved. +// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +// +// This code is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License version 2 only, as +// published by the Free Software Foundation. +// +// This code is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// version 2 for more details (a copy is included in the LICENSE file that +// accompanied this code). +// +// You should have received a copy of the GNU General Public License version +// 2 along with this work; if not, write to the Free Software Foundation, +// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +// +// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +// or visit www.oracle.com if you need additional information or have any +// questions. + + // JavaThread::aarch64_get_thread_helper() + // + // Return the current thread pointer in x0. + // Clobber x1, flags. + // All other registers are preserved, + + .global _ZN10JavaThread25aarch64_get_thread_helperEv + .type _ZN10JavaThread25aarch64_get_thread_helperEv, %function + +_ZN10JavaThread25aarch64_get_thread_helperEv: + stp x29, x30, [sp, -16]! + adrp x0, :tlsdesc:_ZN3art6Thread14CurrentFromGdbEv + ldr x1, [x0, #:tlsdesc_lo12:_ZN3art6Thread14CurrentFromGdbEv] + add x0, x0, :tlsdesc_lo12:_ZN3art6Thread14CurrentFromGdbEv + .tlsdesccall _ZN3art6Thread14CurrentFromGdbEv + blr x1 + mrs x1, tpidr_el0 + add x0, x1, x0 + ldr x0, [x0] + ldp x29, x30, [sp], 16 + ret + + .size _ZN10JavaThread25aarch64_get_thread_helperEv, .-_ZN10JavaThread25aarch64_get_thread_helperEv