1276789Sdim//===-- saveFP.S - Implement saveFP ---------------------------------------===// 2276789Sdim// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6276789Sdim// 7276789Sdim//===----------------------------------------------------------------------===// 8276789Sdim 9276789Sdim#include "../assembly.h" 10276789Sdim 11276789Sdim// 12276789Sdim// Helper function used by compiler to save ppc floating point registers in 13276789Sdim// function prologs. This routines also saves r0 in the LR slot. 14276789Sdim// If the compiler wants to save f27..f31, it does a "bl saveFP+52" 15276789Sdim// 16276789Sdim// This function should never be exported by a shared library. Each linkage 17276789Sdim// unit carries its own copy of this function. 18276789Sdim// 19276789SdimDEFINE_COMPILERRT_PRIVATE_FUNCTION_UNMANGLED(saveFP) 20276789Sdim stfd f14,-144(r1) 21276789Sdim stfd f15,-136(r1) 22276789Sdim stfd f16,-128(r1) 23276789Sdim stfd f17,-120(r1) 24276789Sdim stfd f18,-112(r1) 25276789Sdim stfd f19,-104(r1) 26276789Sdim stfd f20,-96(r1) 27276789Sdim stfd f21,-88(r1) 28276789Sdim stfd f22,-80(r1) 29276789Sdim stfd f23,-72(r1) 30276789Sdim stfd f24,-64(r1) 31276789Sdim stfd f25,-56(r1) 32276789Sdim stfd f26,-48(r1) 33276789Sdim stfd f27,-40(r1) 34276789Sdim stfd f28,-32(r1) 35276789Sdim stfd f29,-24(r1) 36276789Sdim stfd f30,-16(r1) 37276789Sdim stfd f31,-8(r1) 38276789Sdim stw r0,8(r1) 39276789Sdim blr 40309124Sdim 41309124SdimNO_EXEC_STACK_DIRECTIVE 42309124Sdim 43