xref: /freebsd/contrib/llvm-project/compiler-rt/lib/orc/elfnix_tls.ppc64.S (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
1*5f757f3fSDimitry Andric//===-- orc_rt_elfnix_tls.ppc64.s -------------------------------*- ASM -*-===//
2*5f757f3fSDimitry Andric//
3*5f757f3fSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*5f757f3fSDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
5*5f757f3fSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*5f757f3fSDimitry Andric//
7*5f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
8*5f757f3fSDimitry Andric//
9*5f757f3fSDimitry Andric// This file is a part of the ORC runtime support library.
10*5f757f3fSDimitry Andric//
11*5f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
12*5f757f3fSDimitry Andric
13*5f757f3fSDimitry Andric// The content of this file is PowerPC64 only.
14*5f757f3fSDimitry Andric#if defined(__powerpc64__)
15*5f757f3fSDimitry Andric
16*5f757f3fSDimitry Andric  .text
17*5f757f3fSDimitry Andric  // TODO: add fast-path for repeat access.
18*5f757f3fSDimitry Andric  // See https://github.com/llvm/llvm-project/issues/51162.
19*5f757f3fSDimitry Andric  .global ___orc_rt_elfnix_tls_get_addr
20*5f757f3fSDimitry Andric___orc_rt_elfnix_tls_get_addr:
21*5f757f3fSDimitry Andric  addis 2, 12, .TOC.-___orc_rt_elfnix_tls_get_addr@ha
22*5f757f3fSDimitry Andric  addi 2, 2, .TOC.-___orc_rt_elfnix_tls_get_addr@l
23*5f757f3fSDimitry Andric  mflr 0
24*5f757f3fSDimitry Andric  std 0, 16(1)
25*5f757f3fSDimitry Andric  stdu 1, -32(1)
26*5f757f3fSDimitry Andric  bl __orc_rt_elfnix_tls_get_addr_impl
27*5f757f3fSDimitry Andric  nop
28*5f757f3fSDimitry Andric  addi 1, 1, 32
29*5f757f3fSDimitry Andric  ld 0, 16(1)
30*5f757f3fSDimitry Andric  mtlr 0
31*5f757f3fSDimitry Andric  blr
32*5f757f3fSDimitry Andric
33*5f757f3fSDimitry Andric#endif
34