diff --git a/llvm/lib/Target/MachineFrameInfo.cpp b/llvm/lib/Target/MachineFrameInfo.cpp
new file mode 100644
index 0000000..be7feee5
--- /dev/null
+++ b/llvm/lib/Target/MachineFrameInfo.cpp
@@ -0,0 +1,50 @@
+// $Id$ -*-c++-*-
+//***************************************************************************
+// File:
+//	MachineFrameInfo.cpp
+// 
+// Purpose:
+//	Interface to layout of stack frame on target machine.
+//      Most functions of class MachineFrameInfo have to be machine-specific
+//      so there is little code here.
+// 
+// History:
+//	 4/17/02	 -  Vikram Adve  -  Created
+//**************************************************************************/
+
+
+#include "llvm/Target/MachineFrameInfo.h"
+#include "llvm/CodeGen/MachineCodeForMethod.h"
+
+
+int
+MachineFrameInfo::getIncomingArgOffset(MachineCodeForMethod& mcInfo,
+                                       unsigned argNum) const
+{
+  assert(argsOnStackHaveFixedSize()); 
+  
+  unsigned relativeOffset = argNum * getSizeOfEachArgOnStack();
+  bool growUp;                          // do args grow up or down
+  int firstArg = getFirstIncomingArgOffset(mcInfo, growUp);
+  int offset = growUp? firstArg + relativeOffset 
+                     : firstArg - relativeOffset; 
+  return offset; 
+}
+
+
+int
+MachineFrameInfo::getOutgoingArgOffset(MachineCodeForMethod& mcInfo,
+                                       unsigned argNum) const
+{
+  assert(argsOnStackHaveFixedSize()); 
+  assert(((int) argNum - this->getNumFixedOutgoingArgs())
+         <= (int) mcInfo.getMaxOptionalNumArgs());
+  
+  unsigned relativeOffset = argNum * getSizeOfEachArgOnStack();
+  bool growUp;                          // do args grow up or down
+  int firstArg = getFirstOutgoingArgOffset(mcInfo, growUp);
+  int offset = growUp? firstArg + relativeOffset 
+                     : firstArg - relativeOffset; 
+  
+  return offset; 
+}
