summaryrefslogtreecommitdiff
path: root/lib/Target/Mips/MipsRegisterInfo.h
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2008-08-06 06:14:43 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2008-08-06 06:14:43 +0000
commitbbe51362d53a532942997903a49faa7b5b50ad1f (patch)
tree10d71ddb42cb3bec6fd9e911871bf25b9c4763ff /lib/Target/Mips/MipsRegisterInfo.h
parent01924d00c7d5f6398985b90d733e96dc1bcdc635 (diff)
downloadllvm-bbe51362d53a532942997903a49faa7b5b50ad1f.tar.gz
llvm-bbe51362d53a532942997903a49faa7b5b50ad1f.tar.bz2
llvm-bbe51362d53a532942997903a49faa7b5b50ad1f.tar.xz
Added support for fp callee saved registers.
Added fp register clobbering during calls. Added AsmPrinter support for "fmask", a bitmask that indicates where on the stack the fp callee saved registers are. Fixed the stack frame layout for Mips, now the callee saved regs are in the right stack location (a little documentation about how this stack frame must look like is present in MipsRegisterInfo.cpp). This was done using the method MipsRegisterInfo::adjustMipsStackFrame To be more clear, these are examples of what is solves : 1) FP and RA are also callee saved, and despite they aren't in CSI they must be saved before the fp callee saved registers. 2) The ABI requires that local varibles are allocated before the callee saved register area, the opposite behavior from the default allocation. 3) CPU and FPU saved register area must be aligned independent of each other. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54403 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Mips/MipsRegisterInfo.h')
-rw-r--r--lib/Target/Mips/MipsRegisterInfo.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Target/Mips/MipsRegisterInfo.h b/lib/Target/Mips/MipsRegisterInfo.h
index 2d0436b7a6..808e995b4e 100644
--- a/lib/Target/Mips/MipsRegisterInfo.h
+++ b/lib/Target/Mips/MipsRegisterInfo.h
@@ -36,6 +36,9 @@ struct MipsRegisterInfo : public MipsGenRegisterInfo {
/// Get PIC indirect call register
static unsigned getPICCallReg(void);
+ /// Adjust the Mips stack frame.
+ void adjustMipsStackFrame(MachineFunction &MF) const;
+
/// Code Generation virtual methods...
const unsigned *getCalleeSavedRegs(const MachineFunction* MF = 0) const;