summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMCallingConv.td
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2016-01-07 09:03:03 +0000
committerTim Northover <tnorthover@apple.com>2016-01-07 09:03:03 +0000
commitbd41cf880c9f3a65c9366565fa4db2ddb6b57e1c (patch)
tree7e3c25583cf5f2c507c14b0728f4c0957aa31e7e /llvm/lib/Target/ARM/ARMCallingConv.td
parentefc1a83a998556f1930c4072027ec83eb63465ce (diff)
downloadbcm5719-llvm-bd41cf880c9f3a65c9366565fa4db2ddb6b57e1c.tar.gz
bcm5719-llvm-bd41cf880c9f3a65c9366565fa4db2ddb6b57e1c.zip
ARM: support TLS accesses on Darwin platforms
Darwin TLS accesses most closely resemble ELF's general-dynamic situation, since they have to be able to handle all possible situations. The descriptors and so on are obviously slightly different though. llvm-svn: 257039
Diffstat (limited to 'llvm/lib/Target/ARM/ARMCallingConv.td')
-rw-r--r--llvm/lib/Target/ARM/ARMCallingConv.td4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMCallingConv.td b/llvm/lib/Target/ARM/ARMCallingConv.td
index 23351641514..22ea166d540 100644
--- a/llvm/lib/Target/ARM/ARMCallingConv.td
+++ b/llvm/lib/Target/ARM/ARMCallingConv.td
@@ -225,6 +225,10 @@ def CSR_iOS : CalleeSavedRegs<(add LR, R7, R6, R5, R4, (sub CSR_AAPCS, R9))>;
def CSR_iOS_ThisReturn : CalleeSavedRegs<(add LR, R7, R6, R5, R4,
(sub CSR_AAPCS_ThisReturn, R9))>;
+def CSR_iOS_TLSCall : CalleeSavedRegs<(add LR, SP,
+ (sequence "R%u", 12, 1),
+ (sequence "D%u", 31, 0))>;
+
// The "interrupt" attribute is used to generate code that is acceptable in
// exception-handlers of various kinds. It makes us use a different return
// instruction (handled elsewhere) and affects which registers we must return to
OpenPOWER on IntegriCloud