summaryrefslogtreecommitdiff
path: root/lib/Target/Sparc/SparcSubtarget.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2013-04-06 21:38:57 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2013-04-06 21:38:57 +0000
commit2b9355f2d9888d6a011353610b9ca24818de59a2 (patch)
treeaf847b3485ed4b093960a3c4fe8101dd46a2875e /lib/Target/Sparc/SparcSubtarget.h
parent839b9096538f790a2bb060547df24703807cb83b (diff)
downloadllvm-2b9355f2d9888d6a011353610b9ca24818de59a2.tar.gz
llvm-2b9355f2d9888d6a011353610b9ca24818de59a2.tar.bz2
llvm-2b9355f2d9888d6a011353610b9ca24818de59a2.tar.xz
SPARC v9 stack pointer bias.
64-bit SPARC v9 processes use biased stack and frame pointers, so the current function's stack frame is located at %sp+BIAS .. %fp+BIAS where BIAS = 2047. This makes more local variables directly accessible via [%fp+simm13] addressing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178965 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc/SparcSubtarget.h')
-rw-r--r--lib/Target/Sparc/SparcSubtarget.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Target/Sparc/SparcSubtarget.h b/lib/Target/Sparc/SparcSubtarget.h
index a81931b34a..b94dd110ea 100644
--- a/lib/Target/Sparc/SparcSubtarget.h
+++ b/lib/Target/Sparc/SparcSubtarget.h
@@ -52,6 +52,12 @@ public:
}
return std::string(p);
}
+
+ /// The 64-bit ABI uses biased stack and frame pointers, so the stack frame
+ /// of the current function is the area from [%sp+BIAS] to [%fp+BIAS].
+ int64_t getStackPointerBias() const {
+ return is64Bit() ? 2047 : 0;
+ }
};
} // end namespace llvm