--- a/src/hotspot/cpu/aarch64/aarch64_linkage.S Mon Jul 29 18:31:18 2019 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-#
-# Copyright (c) 2012, Red Hat. 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.
-
-# Routines used to enable x86 VM C++ code to invoke JIT-compiled ARM code
-# -- either Java methods or generated stub -- and to allow JIT-compiled
-# ARM code to invoke x86 VM C++ code
-#
-# the code for aarch64_stub_prolog below can be copied into the start
-# of the ARM code buffer and patched with a link to the
-# C++ routine which starts execution on the simulator. the ARM
-# code can be generated immediately following the copied code.
-
-#ifdef BUILTIN_SIM
-
- .data
- .globl setup_arm_sim,
- .type setup_arm_sim,@function
- .globl get_alt_stack,
- .type get_alt_stack,@function
- .globl aarch64_stub_prolog
- .p2align 4
-aarch64_stub_prolog:
- // entry point
-4: lea 1f(%rip), %r11
- mov (%r11), %r10
- mov (%r10), %r10
- jmp *%r10
- .p2align 4
-1:
- .set entry_offset, . - 1b
- .quad aarch64_prolog_ptr
- // 64 bit int used to idenitfy called fn arg/return types
- .set calltype_offset, . - 1b
- .quad 0
- // arm JIT code follows the stub
- .set arm_code_offset, . - 1b
- .size aarch64_stub_prolog, .-aarch64_stub_prolog
-aarch64_stub_prolog_end:
-
- .text
-aarch64_prolog_ptr:
- .quad aarch64_prolog
-
- .globl aarch64_prolog
-aarch64_prolog:
- .cfi_startproc
- pushq %rbp
- .cfi_def_cfa_offset 16
- .cfi_offset 6, -16
- movq %rsp, %rbp
- .cfi_def_cfa_register 6
- // save all registers used to pass args
- sub $8, %rsp
- movd %xmm7, (%rsp)
- sub $8, %rsp
- movd %xmm6, (%rsp)
- sub $8, %rsp
- movd %xmm5, (%rsp)
- sub $8, %rsp
- movd %xmm4, (%rsp)
- sub $8, %rsp
- movd %xmm3, (%rsp)
- sub $8, %rsp
- movd %xmm2, (%rsp)
- sub $8, %rsp
- movd %xmm1, (%rsp)
- sub $8, %rsp
- movd %xmm0, (%rsp)
- push %r9
- push %r8
- push %rcx
- push %rdx
- push %rsi
- push %rdi
- // save rax -- this stack slot will be rewritten with a
- // return value if needed
- push %rax
- // temporarily save r11 while we find the other stack
- push %r11
- // retrieve alt stack
- call get_alt_stack@PLT
- pop %r11
- // push start of arm code
- lea (arm_code_offset)(%r11), %rsi
- push %rsi
- // load call type code in arg reg 1
- mov (calltype_offset)(%r11), %rsi
- // load current stack pointer in arg reg 0
- mov %rsp, %rdi
- // switch to alt stack
- mov %rax, %rsp
- // save previous stack pointer on new stack
- push %rdi
- // 16-align the new stack pointer
- push %rdi
- // call sim setup routine
- call setup_arm_sim@PLT
- // switch back to old stack
- pop %rsp
- // pop start of arm code
- pop %rdi
- // pop rax -- either restores old value or installs return value
- pop %rax
- // pop arg registers
- pop %rdi
- pop %rsi
- pop %rdx
- pop %rcx
- pop %r8
- pop %r9
- movd (%rsp), %xmm0
- add $8, %rsp
- movd (%rsp), %xmm1
- add $8, %rsp
- movd (%rsp), %xmm2
- add $8, %rsp
- movd (%rsp), %xmm3
- add $8, %rsp
- movd (%rsp), %xmm4
- add $8, %rsp
- movd (%rsp), %xmm5
- add $8, %rsp
- movd (%rsp), %xmm6
- add $8, %rsp
- movd (%rsp), %xmm7
- add $8, %rsp
- leave
- .cfi_def_cfa 7, 8
- ret
- .cfi_endproc
-
-
- .p2align 4
-get_pc:
- // get return pc in rdi and then push it back
- pop %rdi
- push %rdi
- ret
-
- .p2align 4
- .long
- .globl aarch64_stub_prolog_size
- .type aarch64_stub_prolog_size,@function
-aarch64_stub_prolog_size:
- leaq aarch64_stub_prolog_end - aarch64_stub_prolog, %rax
- ret
-
-#endif