From bb01bff7391fea590ea473429a19efbd69757c13 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Wed, 16 Sep 2020 06:10:45 +0700 Subject: [PATCH] [Patch] ThreadLS: Use Android get current thread symbol --- buildjdk.sh | 1 + .../linux_aarch64/vm/threadLS_linux_aarch64.s | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 openjdk-mobile-aarch64-patch/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s diff --git a/buildjdk.sh b/buildjdk.sh index 6f2a667..a50f1b5 100755 --- a/buildjdk.sh +++ b/buildjdk.sh @@ -25,6 +25,7 @@ rm -rf build # --hostt=aarch64-linux-android \ # --with-toolchain-type=clang \ bash ./configure \ + --with-cpu-port=arm64 \ --enable-option-checking=fatal \ --openjdk-target=aarch64-linux-android \ --disable-warnings-as-errors \ diff --git a/openjdk-mobile-aarch64-patch/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s b/openjdk-mobile-aarch64-patch/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s new file mode 100644 index 0000000..33ee0a3 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/hotspot/src/os_cpu/linux_aarch64/vm/threadLS_linux_aarch64.s @@ -0,0 +1,51 @@ +// 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]! +#ifdef __ANDROID__ + adrp x0, :tlsdesc:_ZN3art6Thread14CurrentFromGdbEv + ldr x1, [x0, #:tlsdesc_lo12:_ZN3art6Thread14CurrentFromGdbEv] + add x0, x0, :tlsdesc_lo12:_ZN3art6Thread14CurrentFromGdbEv + .tlsdesccall _ZN3art6Thread14CurrentFromGdbEv +#else + adrp x0, :tlsdesc:_ZN6Thread12_thr_currentE + ldr x1, [x0, #:tlsdesc_lo12:_ZN6Thread12_thr_currentE] + add x0, x0, :tlsdesc_lo12:_ZN6Thread12_thr_currentE + .tlsdesccall _ZN6Thread12_thr_currentE +#endif + 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