diff --git a/ELF/Arch/PPC64.cpp b/ELF/Arch/PPC64.cpp
index eb01955..b6408af 100644
--- a/ELF/Arch/PPC64.cpp
+++ b/ELF/Arch/PPC64.cpp
@@ -120,6 +120,9 @@
   void relaxTlsGdToLe(uint8_t *Loc, RelType Type, uint64_t Val) const override;
   void relaxTlsLdToLe(uint8_t *Loc, RelType Type, uint64_t Val) const override;
   void relaxTlsIeToLe(uint8_t *Loc, RelType Type, uint64_t Val) const override;
+
+  bool adjustPrologueForCrossSplitStack(uint8_t *Loc, uint8_t *End,
+                                        uint8_t StOther) const override;
 };
 } // namespace
 
@@ -213,6 +216,8 @@
 
   TlsGotRel = R_PPC64_TPREL64;
 
+  NeedsMoreStackNonSplit = false;
+
   // We need 64K pages (at least under glibc/Linux, the loader won't
   // set different permissions on a finer granularity than that).
   DefaultMaxPageSize = 65536;
@@ -761,7 +766,115 @@
   }
 }
 
+// The prologue for a split-stack function is expected to look roughly
+// like this:
+//    .Lglobal_entry_point:
+//      # TOC pointer initalization.
+//      ...
+//    .Llocal_entry_point:
+//      # load the __private_ss member of the threads tcbhead.
+//      ld r0,-0x7000-64(r13)
+//      # subtract the functions stack size from the stack pointer.
+//      addis r12, r1, ha(-stack-frame size)
+//      addi  r12, r12, l(-stack-frame size)
+//      # compare needed to actual and branch to allocate_more_stack if more
+//      # space is needed, otherwise fallthrough to 'normal' function body.
+//      cmpld cr7,r12,r0
+//      blt- .Lallocate_more_stack
+//
+// -) The allocate_more_stack block might be placed after the split-stack
+//    prologue and the `blt-` replaced with a `bge+ .Lnormal_func_body`
+//    instead.
+// -) If either the addis or addi is not needed due to the stack size being
+//    smaller then 32K or a multiple of 64K they will be replaced with a nop,
+//    but there will always be 2 instructions the linker can overwrite for the
+//    adjusted stack size.
+//
+// The linkers job here is to increase the stack size used in the addis/addi
+// pair by split-stack-size-adjust.
+// addis r12, r1, ha(-stack-frame size - split-stack-adjust-size)
+// addi  r12, r12, l(-stack-frame size - split-stack-adjust-size)
+bool PPC64::adjustPrologueForCrossSplitStack(uint8_t *Loc, uint8_t *End,
+                                             uint8_t StOther) const {
+  // If the caller has a global entry point adjust the buffer past it. The start
+  // of the split-stack prologue will be at the local entry point.
+  Loc += getPPC64GlobalEntryToLocalEntryOffset(StOther);
+
+  // At the very least we expect to see a load of some split-stack data from the
+  // tcb, and 2 instructions that calculate the ending stack address this
+  // function will require. If there is not enough room for at least 3
+  // instructions it can't be a split-stack prologue.
+  if (Loc + 12 >= End)
+    return false;
+
+  // First instruction must be `ld r0, -0x7000-64(r13)`
+  if (read32(Loc) != 0xe80d8fc0)
+    return false;
+
+  int16_t HiImm = 0;
+  int16_t LoImm = 0;
+  // First instruction can be either an addis if the frame size is larger then
+  // 32K, or an addi if the size is less then 32K.
+  int32_t FirstInstr = read32(Loc + 4);
+  if (getPrimaryOpCode(FirstInstr) == 15) {
+    HiImm = FirstInstr & 0xFFFF;
+  } else if (getPrimaryOpCode(FirstInstr) == 14) {
+    LoImm = FirstInstr & 0xFFFF;
+  } else {
+    return false;
+  }
+
+  // Second instruction is either an addi or a nop. If the first instruction was
+  // an addi then LoImm is set and the second instruction must be a nop.
+  uint32_t SecondInstr = read32(Loc + 8);
+  if (!LoImm && getPrimaryOpCode(SecondInstr) == 14) {
+    LoImm = SecondInstr & 0xFFFF;
+  } else if (SecondInstr != 0x60000000) {
+    return false;
+  }
+
+  // The register operands of the first instruction should be the stack-pointer
+  // (r1) as the input (RA) and r12 as the output (RT). If the second
+  // instruction is not a nop, then it should use r12 as both input and output.
+  auto CheckRegOperands =
+      [](uint32_t Instr, uint8_t ExpectedRT, uint8_t ExpectedRA) {
+        return ((Instr & 0x3E00000) >> 21 == ExpectedRT) &&
+               ((Instr & 0x1F0000) >> 16  == ExpectedRA);
+      };
+  if (!CheckRegOperands(FirstInstr, 12, 1))
+    return false;
+  if (SecondInstr != 0x60000000 && !CheckRegOperands(SecondInstr, 12, 12))
+    return false;
+
+  int32_t StackFrameSize = (HiImm * 65536) + LoImm;
+  // Check that the adjusted size doesn't overflow what we can represent with 2
+  // instructions.
+  if (StackFrameSize < -2147483648 + Config->SplitStackAdjustSize) {
+    error(getErrorLocation(Loc) + "split-stack prologue adjustment overflows");
+    return false;
+  }
+
+  int32_t AdjustedStackFrameSize =
+      StackFrameSize - Config->SplitStackAdjustSize;
+
+  LoImm = AdjustedStackFrameSize & 0xFFFF;
+  HiImm = (AdjustedStackFrameSize + 0x8000) >> 16;
+  if (HiImm) {
+    write32(Loc + 4, 0x3D810000 | (uint16_t)HiImm);
+    // If the low immediate is zero the second instruction will be a nop.
+    SecondInstr =
+        LoImm ? 0x398C0000 | (uint16_t)LoImm : 0x60000000;
+    write32(Loc + 8, SecondInstr);
+  } else {
+    // addi r12, r1, imm
+    write32(Loc + 4, (0x39810000) | (uint16_t)LoImm);
+    write32(Loc + 8, 0x60000000);
+  }
+
+  return true;
+}
+
 TargetInfo *elf::getPPC64TargetInfo() {
   static PPC64 Target;
   return &Target;
-}
+  }
diff --git a/ELF/Arch/X86_64.cpp b/ELF/Arch/X86_64.cpp
index 960bf78..6421ec4 100644
--- a/ELF/Arch/X86_64.cpp
+++ b/ELF/Arch/X86_64.cpp
@@ -43,8 +43,8 @@
   void relaxTlsGdToLe(uint8_t *Loc, RelType Type, uint64_t Val) const override;
   void relaxTlsIeToLe(uint8_t *Loc, RelType Type, uint64_t Val) const override;
   void relaxTlsLdToLe(uint8_t *Loc, RelType Type, uint64_t Val) const override;
-  bool adjustPrologueForCrossSplitStack(uint8_t *Loc,
-                                        uint8_t *End) const override;
+  bool adjustPrologueForCrossSplitStack(uint8_t *Loc, uint8_t *End,
+                                        uint8_t StOther) const override;
 
 private:
   void relaxGotNoPic(uint8_t *Loc, uint64_t Val, uint8_t Op,
@@ -482,7 +482,8 @@
 // B) Or a load of a stack pointer offset with an lea to r10 or r11.
 template <>
 bool X86_64<ELF64LE>::adjustPrologueForCrossSplitStack(uint8_t *Loc,
-                                                       uint8_t *End) const {
+                                                       uint8_t *End,
+                                                       uint8_t StOther) const {
   if (Loc + 8 >= End)
     return false;
 
@@ -509,7 +510,8 @@
 
 template <>
 bool X86_64<ELF32LE>::adjustPrologueForCrossSplitStack(uint8_t *Loc,
-                                                       uint8_t *End) const {
+                                                       uint8_t *End,
+                                                       uint8_t StOther) const {
   llvm_unreachable("Target doesn't support split stacks.");
 }
 
diff --git a/ELF/Config.h b/ELF/Config.h
index f9fc10c..de751af 100644
--- a/ELF/Config.h
+++ b/ELF/Config.h
@@ -217,6 +217,7 @@
   unsigned LTOO;
   unsigned Optimize;
   unsigned ThinLTOJobs;
+  int32_t SplitStackAdjustSize;
 
   // The following config options do not directly correspond to any
   // particualr command line options.
diff --git a/ELF/Driver.cpp b/ELF/Driver.cpp
index 1878d95..147675e 100644
--- a/ELF/Driver.cpp
+++ b/ELF/Driver.cpp
@@ -829,6 +829,7 @@
   Config->SingleRoRx = Args.hasArg(OPT_no_rosegment);
   Config->SoName = Args.getLastArgValue(OPT_soname);
   Config->SortSection = getSortSection(Args);
+  Config->SplitStackAdjustSize = args::getInteger(Args, OPT_split_stack_adjust_size, 16384);
   Config->Strip = getStrip(Args);
   Config->Sysroot = Args.getLastArgValue(OPT_sysroot);
   Config->Target1Rel = Args.hasFlag(OPT_target1_rel, OPT_target1_abs, false);
@@ -901,6 +902,9 @@
   if (Config->ThinLTOJobs == 0)
     error("--thinlto-jobs: number of threads must be > 0");
 
+  if (Config->SplitStackAdjustSize < 0)
+    error("--split-stack-adjust-size: size must be >= 0");
+
   // Parse ELF{32,64}{LE,BE} and CPU type.
   if (auto *Arg = Args.getLastArg(OPT_m)) {
     StringRef S = Arg->getValue();
diff --git a/ELF/InputSection.cpp b/ELF/InputSection.cpp
index 9da4af6..15fa2dc 100644
--- a/ELF/InputSection.cpp
+++ b/ELF/InputSection.cpp
@@ -1009,7 +1009,7 @@
     if (Defined *F = getEnclosingFunction<ELFT>(Rel.Offset)) {
       Prologues.insert(F);
       if (Target->adjustPrologueForCrossSplitStack(Buf + getOffset(F->Value),
-                                                   End))
+                                                   End, F->StOther))
         continue;
       if (!getFile<ELFT>()->SomeNoSplitStack)
         error(lld::toString(this) + ": " + F->getName() +
@@ -1017,7 +1017,9 @@
               " (without -fsplit-stack), but couldn't adjust its prologue");
     }
   }
-  switchMorestackCallsToMorestackNonSplit(Prologues, MorestackCalls);
+
+  if (Target->NeedsMoreStackNonSplit)
+    switchMorestackCallsToMorestackNonSplit(Prologues, MorestackCalls);
 }
 
 template <class ELFT> void InputSection::writeTo(uint8_t *Buf) {
diff --git a/ELF/Options.td b/ELF/Options.td
index 67d3dc6..1ff1abe 100644
--- a/ELF/Options.td
+++ b/ELF/Options.td
@@ -42,6 +42,12 @@
 
 defm defsym: Eq<"defsym", "Define a symbol alias">, MetaVarName<"<symbol>=<value>">;
 
+defm split_stack_adjust_size
+    : Eq<"split-stack-adjust-size",
+         "Specify adjustment to stack size when a split-stack function calls a "
+         "non-split-stack function">,
+      MetaVarName<"<value>">;
+
 defm library_path:
   Eq<"library-path", "Add a directory to the library search path">, MetaVarName<"<dir>">;
 
diff --git a/ELF/Target.cpp b/ELF/Target.cpp
index 0c8c940..4db7939 100644
--- a/ELF/Target.cpp
+++ b/ELF/Target.cpp
@@ -132,12 +132,11 @@
   return false;
 }
 
-bool TargetInfo::adjustPrologueForCrossSplitStack(uint8_t *Loc,
-                                                  uint8_t *End) const {
+bool TargetInfo::adjustPrologueForCrossSplitStack(uint8_t *Loc, uint8_t *End,
+                                                  uint8_t StOther) const {
   llvm_unreachable("Target doesn't support split stacks.");
 }
 
-
 bool TargetInfo::inBranchRange(RelType Type, uint64_t Src, uint64_t Dst) const {
   return true;
 }
diff --git a/ELF/Target.h b/ELF/Target.h
index 1764963..4f310e3 100644
--- a/ELF/Target.h
+++ b/ELF/Target.h
@@ -69,8 +69,10 @@
   // The function with a prologue starting at Loc was compiled with
   // -fsplit-stack and it calls a function compiled without. Adjust the prologue
   // to do the right thing. See https://gcc.gnu.org/wiki/SplitStacks.
-  virtual bool adjustPrologueForCrossSplitStack(uint8_t *Loc,
-                                                uint8_t *End) const;
+  // The symbols st_other flags are needed on PowerPC64 for determining the
+  // offset to the split-stack prologue.
+  virtual bool adjustPrologueForCrossSplitStack(uint8_t *Loc, uint8_t *End,
+                                                uint8_t StOther) const;
 
   // Return true if we can reach Dst from Src with Relocation RelocType
   virtual bool inBranchRange(RelType Type, uint64_t Src,
@@ -130,6 +132,11 @@
   // executable OutputSections.
   uint32_t TrapInstr = 0;
 
+  // If a target needs to rewrite calls to __morestack to instead call
+  // __morestack_non_split when a split-stack enabled caller calls a
+  // non-split-stack callee this will return true. Otherwise returns false.
+  bool NeedsMoreStackNonSplit = true;
+
   virtual RelExpr adjustRelaxExpr(RelType Type, const uint8_t *Data,
                                   RelExpr Expr) const;
   virtual void relaxGot(uint8_t *Loc, uint64_t Val) const;
diff --git a/test/ELF/Inputs/ppc64-no-split-stack.s b/test/ELF/Inputs/ppc64-no-split-stack.s
new file mode 100644
index 0000000..8371767
--- /dev/null
+++ b/test/ELF/Inputs/ppc64-no-split-stack.s
@@ -0,0 +1,8 @@
+	.abiversion 2
+        .p2align    2
+        .global     nss_callee
+        .type nss_callee, @function
+nss_callee:
+    li 3, 1
+    blr
+
diff --git a/test/ELF/ppc64-split-stack-adjust-fail.s b/test/ELF/ppc64-split-stack-adjust-fail.s
new file mode 100644
index 0000000..4ad1a99
--- /dev/null
+++ b/test/ELF/ppc64-split-stack-adjust-fail.s
@@ -0,0 +1,53 @@
+# REQUIRES: ppc
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+
+# RUN: not ld.lld --defsym __morestack=0x10010000 %t1.o %t2.o -o %t 2>&1 | FileCheck %s
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+
+# RUN: not ld.lld --defsym __morestack=0x10010000 %t1.o %t2.o -o %t 2>&1 | FileCheck %s
+
+# CHECK: error: {{.*}}.o:(.text): wrong_regs (with -fsplit-stack) calls nss_callee (without -fsplit-stack), but couldn't adjust its prologue
+
+        .abiversion 2
+        .section    ".text"
+
+        .p2align 2
+        .global wrong_regs
+        .type wrong_regs, @function
+
+wrong_regs:
+.Lwr_gep:
+    addis 2, 12, .TOC.-.Lwr_gep@ha
+    addi 2, 2, .TOC.-.Lwr_gep@l
+    .localentry wrong_regs, .-wrong_regs
+    ld 0, -0x7040(13)
+    addis 5, 2, -1
+    addi  5, 5, -32
+    addi 12, 1, -32
+    nop
+    cmpld 7, 12, 0
+    blt- 7, .Lwr_alloc_more
+.Lwr_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32(1)
+    bl nss_callee
+    addi 1, 1, 32
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lwr_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lwr_body
+        .size wrong_regs, .-wrong_regs
+
+        .section        .note.GNU-split-stack,"",@progbits
diff --git a/test/ELF/ppc64-split-stack-adjust-overflow.s b/test/ELF/ppc64-split-stack-adjust-overflow.s
new file mode 100644
index 0000000..bc958c7
--- /dev/null
+++ b/test/ELF/ppc64-split-stack-adjust-overflow.s
@@ -0,0 +1,64 @@
+# REQUIRES: ppc
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+
+# RUN: not ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 2>&1 | \
+# RUN: FileCheck -check-prefix=OVERFLOW %s
+# RUN: not ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 \
+# RUN: -split-stack-adjust-size 4097 2>&1 | FileCheck -check-prefix=OVERFLOW %s
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 4096
+# RUN: llvm-objdump -d %t | FileCheck %s
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+
+# RUN: not ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 2>&1 | \
+# RUN: FileCheck -check-prefix=OVERFLOW %s
+# RUN: not ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 \
+# RUN: -split-stack-adjust-size 4097 2>&1 | FileCheck -check-prefix=OVERFLOW %s
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 4096
+# RUN: llvm-objdump -d %t | FileCheck %s
+
+# OVERFLOW: error: {{.*}}.o:(function caller): split-stack prologue adjustment overflows
+
+        .p2align    2
+        .global caller
+        .type caller, @function
+caller:
+.Lcaller_gep:
+    addis 2, 12, .TOC.-.Lcaller_gep@ha
+    addi 2, 2, .TOC.-.Lcaller_gep@l
+    .localentry caller, .-caller
+    ld 0, -0x7040(13)
+    addis 12, 1, -32768
+    addi  12, 12, 4096
+    cmpld 7, 12, 0
+    blt- 7, .Lcaller_alloc_more
+.Lcaller_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32(1)
+    bl nss_callee
+    addi 1, 1, 32
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lcaller_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lcaller_body
+        .size caller, .-caller
+
+# CHECK-LABEL: caller
+# CHECK:      ld 0, -28736(13)
+# CHECK-NEXT: addis 12, 1, -32768
+# CHECK-NEXT: nop
+# CHECK-NEXT: cmpld 7, 12, 0
+# CHECK-NEXT: bt- 28, .+36
+
+.section        .note.GNU-split-stack,"",@progbits
diff --git a/test/ELF/ppc64-split-stack-adjust-size-success.s b/test/ELF/ppc64-split-stack-adjust-size-success.s
new file mode 100644
index 0000000..eeaac12
--- /dev/null
+++ b/test/ELF/ppc64-split-stack-adjust-size-success.s
@@ -0,0 +1,106 @@
+# REQUIRES: ppc
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 32768
+# RUN: llvm-objdump -d %t | FileCheck %s
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 4096
+# RUN: llvm-objdump -d %t | FileCheck %s -check-prefix=SMALL
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 0
+# RUN: llvm-objdump -d %t | FileCheck %s -check-prefix=ZERO
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 32768
+# RUN: llvm-objdump -d %t | FileCheck %s
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 4096
+# RUN: llvm-objdump -d %t | FileCheck %s -check-prefix=SMALL
+# RUN: ld.lld %t1.o %t2.o -o %t --defsym __morestack=0x10010000 -split-stack-adjust-size 0
+# RUN: llvm-objdump -d %t | FileCheck %s -check-prefix=ZERO
+        .p2align    2
+        .global caller
+        .type caller, @function
+caller:
+.Lcaller_gep:
+    addis 2, 12, .TOC.-.Lcaller_gep@ha
+    addi 2, 2, .TOC.-.Lcaller_gep@l
+    .localentry caller, .-caller
+    ld 0, -0x7040(13)
+    addi 12, 1, -32
+    nop
+    cmpld 7, 12, 0
+    blt- 7, .Lcaller_alloc_more
+.Lcaller_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32(1)
+    bl nss_callee
+    addi 1, 1, 32
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lcaller_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lcaller_body
+        .size caller, .-caller
+
+# CHECK-LABEL: caller
+# CHECK:      ld 0, -28736(13)
+# CHECK-NEXT: addis 12, 1, -1
+# CHECK-NEXT: addi 12, 12, 32736
+# CHECK-NEXT: cmpld 7, 12, 0
+# CHECK-NEXT: bt- 28, .+36
+
+# SMALL-LABEL: caller
+# SMALL:      ld 0, -28736(13)
+# SMALL-NEXT: addi 12, 1, -4128
+# SMALL-NEXT: nop
+# SMALL-NEXT: cmpld 7, 12, 0
+# SMALL-NEXT: bt- 28, .+36
+
+# ZERO-LABEL: caller
+# ZERO:      ld 0, -28736(13)
+# ZERO-NEXT: addi 12, 1, -32
+# ZERO-NEXT: nop
+# ZERO-NEXT: cmpld 7, 12, 0
+# ZERO-NEXT: bt- 28, .+36
+        .p2align    2
+        .global main
+	.type  main, @function
+main:
+.Lmain_gep:
+    addis 2,12,.TOC.-.Lmain_gep@ha
+    addi 2,2,.TOC.-.Lmain_gep@l
+    .localentry	main,.-main
+    ld 0,-0x7040(13)
+    addi 12,1,-32
+    nop
+    cmpld 7,12,0
+    blt- 7, .Lmain_morestack
+.Lmain_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32(1)
+    bl caller
+    addi 1, 1, 32
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lmain_morestack:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lmain_body
+    .size main,.-main
+
+        .section        .note.GNU-split-stack,"",@progbits
diff --git a/test/ELF/ppc64-split-stack-prologue-adjust-success.s b/test/ELF/ppc64-split-stack-prologue-adjust-success.s
new file mode 100644
index 0000000..197df15
--- /dev/null
+++ b/test/ELF/ppc64-split-stack-prologue-adjust-success.s
@@ -0,0 +1,224 @@
+# REQUIRES: ppc
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+# RUN: ld.lld --defsym __morestack=0x10010000 %t1.o %t2.o -o %t
+# RUN: llvm-objdump -d %t | FileCheck %s
+
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/ppc64-no-split-stack.s -o %t2.o
+# RUN: ld.lld --defsym __morestack=0x10010000 %t1.o %t2.o -o %t
+# RUN: llvm-objdump -d %t | FileCheck %s
+
+        .abiversion 2
+        .section    ".text"
+
+
+# A caller with a stack that is small enough that the addis instruction
+# from the split-stack prologue is unneeded, and after the prologue adjustment
+# the stack size still fits whithin 16 bits.
+        .p2align    2
+        .global caller_small_stack
+        .type caller_small_stack, @function
+caller_small_stack:
+.Lcss_gep:
+    addis 2, 12, .TOC.-.Lcss_gep@ha
+    addi 2, 2, .TOC.-.Lcss_gep@l
+    .localentry caller_small_stack, .-caller_small_stack
+    ld 0, -0x7040(13)
+    addi 12, 1, -32
+    nop
+    cmpld 7, 12, 0
+    blt- 7, .Lcss_alloc_more
+.Lcss_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32(1)
+    bl nss_callee
+    addi 1, 1, 32
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lcss_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lcss_body
+        .size caller_small_stack, .-caller_small_stack
+
+# CHECK-LABEL: caller_small_stack
+# CHECK:       ld 0, -28736(13)
+# CHECK-NEXT:  addi 12, 1, -16416
+# CHECK-NEXT:  nop
+# CHECK-NEXT:  cmpld 7, 12, 0
+# CHECK-NEXT:  bt-  28, .+36
+
+# A caller that has a stack size that fits whithin 16 bits, but the adjusted
+# stack size after prologue adjustment now overflows 16 bits needing both addis
+# and addi instructions.
+        .p2align    2
+        .global caller_med_stack
+        .type caller_med_stack, @function
+caller_med_stack:
+.Lcms_gep:
+    addis 2, 12, .TOC.-.Lcms_gep@ha
+    addi 12, 12, .TOC.-.Lcms_gep@l
+    .localentry caller_med_stack, .-caller_med_stack
+    ld 0, -0x7040(13)
+    addi 12, 1, -32764
+    nop
+    cmpld 7, 12, 0
+    blt- 7, .Lcms_alloc_more
+.Lcms_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32764(1)
+    bl nss_callee
+    addi 1, 1, 32764
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lcms_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lcms_body
+        .size caller_med_stack, .-caller_med_stack
+
+# A caller with a large enough stack frame that both the addis and
+# addi instructions are used in the split-stack prologue.
+        .p2align    2
+        .global caller_large_stack
+        .type caller_large_stack, @function
+caller_large_stack:
+.Lcls_gep:
+    addis 2, 12, .TOC.-.Lcls_gep@ha
+    addi 12, 12, .TOC.-.Lcls_gep@l
+    .localentry caller_large_stack, .-caller_large_stack
+    ld 0, -0x7040(13)
+    addis 12, 1, -1
+    addi  12, 12, -32
+    cmpld 7, 12, 0
+    blt- 7, .Lcls_alloc_more
+.Lcls_body:
+    mflr 0
+    std 0, 16(1)
+    lis 0, -1
+    addi 0, 0, -32
+    stdux 1, 0, 1
+    bl nss_callee
+    ld 1, 0(1)
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lcls_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lcls_body
+        .size caller_large_stack, .-caller_large_stack
+
+# CHECK-LABEL: caller_large_stack
+# CHECK:       ld 0, -28736(13)
+# CHECK-NEXT:  addis 12, 1, -1
+# CHECK-NEXT:  addi 12, 12, -16416
+# CHECK-NEXT:  cmpld 7, 12, 0
+# CHECK-NEXT:  bt-  28, .+44
+
+# A caller with a stack size that is larger then 16 bits, but aligned such that
+# the addi instruction is unneeded.
+        .p2align    2
+        .global caller_large_aligned_stack
+        .type caller_large_aligned_stack, @function
+caller_large_aligned_stack:
+.Lclas_gep:
+    addis 2, 12, .TOC.-.Lclas_gep@ha
+    addi 12, 12, .TOC.-.Lclas_gep@l
+    .localentry caller_large_aligned_stack, .-caller_large_aligned_stack
+    ld 0, -0x7040(13)
+    addis 12, 1, -2
+    nop
+    cmpld 7, 12, 0
+    blt- 7, .Lclas_alloc_more
+.Lclas_body:
+    mflr 0
+    std 0, 16(1)
+    lis 0, -2
+    stdux 1, 0, 1
+    bl nss_callee
+    ld 1, 0(1)
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lclas_alloc_more:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lclas_body
+        .size caller_large_aligned_stack, .-caller_large_aligned_stack
+
+# CHECK-LABEL: caller_large_aligned_stack
+# CHECK:       ld 0, -28736(13)
+# CHECK-NEXT:  addis 12, 1, -2
+# CHECK-NEXT:  addi 12, 12, -16384
+# CHECK-NEXT:  cmpld 7, 12, 0
+# CHECK-NEXT:  bt-  28, .+40
+
+# main only calls split-stack functions or __morestack so
+# there should be no adjustment of its split-stack prologue.
+        .p2align    2
+        .global main
+	.type  main, @function
+main:
+.Lmain_gep:
+    addis 2, 12,.TOC.-.Lmain_gep@ha
+    addi 2, 2,.TOC.-.Lmain_gep@l
+    .localentry	main,.-main
+    ld 0, -0x7040(13)
+    addi 12,1,-32
+    nop
+    cmpld 7, 12,0
+    blt- 7, .Lmain_morestack
+.Lmain_body:
+    mflr 0
+    std 0, 16(1)
+    stdu 1, -32(1)
+    bl caller_small_stack
+    nop
+    bl caller_med_stack
+    nop
+    bl caller_large_stack
+    nop
+    bl caller_large_aligned_stack
+    addi 1, 1, 32
+    ld 0, 16(1)
+    mtlr 0
+    blr
+.Lmain_morestack:
+    mflr 0
+    std 0, 16(1)
+    bl __morestack
+    ld 0, 16(1)
+    mtlr 0
+    blr
+    b .Lmain_body
+    .size main,.-main
+# CHECK-LABEL: main
+# CHECK:       ld 0, -28736(13)
+# CHECK-NEXT:  addi 12, 1, -32
+# CHECK-NEXT:  nop
+# CHECK-NEXT:  cmpld 7, 12, 0
+
+    .section        .note.GNU-split-stack,"",@progbits
