diff --git a/lib/System/FreeBSD/Path.cpp b/lib/System/FreeBSD/Path.cpp
new file mode 100644
index 0000000..3722b1e
--- /dev/null
+++ b/lib/System/FreeBSD/Path.cpp
@@ -0,0 +1,50 @@
+//===- FreeBSD/Path.cpp - FreeBSD Path Implementation -----------*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
+//
+// This file provides the FreeBSD specific implementation of the Path class.
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only FreeBSD specific code 
+//===          and must not be generic UNIX code (see ../Unix/Path.cpp)
+//===----------------------------------------------------------------------===//
+
+// Include the generic Unix implementation
+#include "../Unix/Path.cpp"
+
+namespace llvm {
+using namespace sys;
+
+bool 
+Path::is_valid() const {
+  if (path.empty()) 
+    return false;
+  char pathname[MAXPATHLEN];
+  if (0 == realpath(path.c_str(), pathname))
+    if (errno != EACCES && errno != EIO && errno != ENOENT && errno != ENOTDIR)
+      return false;
+  return true;
+}
+
+Path
+Path::GetTemporaryDirectory() {
+  char pathname[MAXPATHLEN];
+  strcpy(pathname,"/tmp/llvm_XXXXXX");
+  if (0 == mkdtemp(pathname))
+    ThrowErrno(std::string(pathname) + ": Can't create temporary directory");
+  Path result;
+  result.set_directory(pathname);
+  assert(result.is_valid() && "mkdtemp didn't create a valid pathname!");
+  return result;
+}
+
+}
+
+// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
diff --git a/lib/System/FreeBSD/Program.cpp b/lib/System/FreeBSD/Program.cpp
new file mode 100644
index 0000000..865e754
--- /dev/null
+++ b/lib/System/FreeBSD/Program.cpp
@@ -0,0 +1,22 @@
+//===- FreeBSD/Program.cpp - FreeBSD Program Implementation --- -*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
+//
+// This file provides the FreeBSD specific implementation of the Program class.
+//
+//===----------------------------------------------------------------------===//
+
+// Include the generic Unix implementation
+#include "../Unix/Program.cpp"
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only FreeBSD specific code 
+//===          and must not be generic UNIX code (see ../Unix/Program.cpp)
+//===----------------------------------------------------------------------===//
+
+// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
diff --git a/lib/System/FreeBSD/Signals.cpp b/lib/System/FreeBSD/Signals.cpp
new file mode 100644
index 0000000..7fd20cc
--- /dev/null
+++ b/lib/System/FreeBSD/Signals.cpp
@@ -0,0 +1,27 @@
+//===- FreeBSD/Signals.cpp - FreeBSD Signals Implementation -----*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
+//
+// This file provides the FreeBSD specific implementation of the Signals class.
+//
+//===----------------------------------------------------------------------===//
+
+// Include the generic unix implementation
+#include "../Unix/Signals.cpp"
+
+namespace llvm {
+using namespace sys;
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only FreeBSD specific code 
+//===          and must not be generic UNIX code (see ../Unix/Signals.cpp)
+//===----------------------------------------------------------------------===//
+
+}
+
+// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
diff --git a/lib/System/FreeBSD/SysConfig.cpp b/lib/System/FreeBSD/SysConfig.cpp
new file mode 100644
index 0000000..13ab107
--- /dev/null
+++ b/lib/System/FreeBSD/SysConfig.cpp
@@ -0,0 +1,27 @@
+//===- FreeBSD/SysConfig.cpp - FreeBSD SysConfig Implementation -*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by Reid Spencer and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
+//
+// This file provides the FreeBSD specific implementation of the Signals class.
+//
+//===----------------------------------------------------------------------===//
+
+// Include the generic unix implementation
+#include "../Unix/SysConfig.cpp"
+
+namespace llvm {
+using namespace sys;
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only FreeBSD specific code 
+//===          and must not be generic UNIX code (see ../Unix/Signals.cpp)
+//===----------------------------------------------------------------------===//
+
+}
+
+// vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
