diff --git a/arch/sandbox/cpu/Makefile b/arch/sandbox/cpu/Makefile
index 8dfa828..1a0b260 100644
--- a/arch/sandbox/cpu/Makefile
+++ b/arch/sandbox/cpu/Makefile
@@ -23,11 +23,14 @@
 # MA 02111-1307 USA
 #
 
+# os.c is build in the system environment, so needs standard includes
+CPPFLAGS_arch/sandbox/cpu/os.o += -I/usr/include
+
 include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(CPU).o
 
-COBJS	:= cpu.o
+COBJS	:= cpu.o os.o
 
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
diff --git a/arch/sandbox/cpu/cpu.c b/arch/sandbox/cpu/cpu.c
index 554cae8..c7bf8a9 100644
--- a/arch/sandbox/cpu/cpu.c
+++ b/arch/sandbox/cpu/cpu.c
@@ -20,15 +20,14 @@
  */
 
 #include <common.h>
+#include <os.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-	/*
-	 * This is considered normal termination for now. We wil call os_exit()
-	 * when available.
-	 */
+	/* This is considered normal termination for now */
+	os_exit(0);
 	return 0;
 }
 
diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
new file mode 100644
index 0000000..6c175d4
--- /dev/null
+++ b/arch/sandbox/cpu/os.c
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <os.h>
+
+/* Operating System Interface */
+
+ssize_t os_read(int fd, void *buf, size_t count)
+{
+	return read(fd, buf, count);
+}
+
+ssize_t os_write(int fd, const void *buf, size_t count)
+{
+	return write(fd, buf, count);
+}
+
+int os_open(const char *pathname, int flags)
+{
+	return open(pathname, flags);
+}
+
+int os_close(int fd)
+{
+	return close(fd);
+}
+
+void os_exit(int exit_code)
+{
+	exit(exit_code);
+}
diff --git a/include/os.h b/include/os.h
new file mode 100644
index 0000000..3ea6d2d
--- /dev/null
+++ b/include/os.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/*
+ * Operating System Interface
+ *
+ * This provides access to useful OS routines from the sandbox architecture
+ */
+
+/**
+ * Access to the OS read() system call
+ *
+ * \param fd	File descriptor as returned by os_open()
+ * \param buf	Buffer to place data
+ * \param count	Number of bytes to read
+ * \return number of bytes read, or -1 on error
+ */
+ssize_t os_read(int fd, void *buf, size_t count);
+
+/**
+ * Access to the OS write() system call
+ *
+ * \param fd	File descriptor as returned by os_open()
+ * \param buf	Buffer containing data to write
+ * \param count	Number of bytes to write
+ * \return number of bytes written, or -1 on error
+ */
+ssize_t os_write(int fd, const void *buf, size_t count);
+
+/**
+ * Access to the OS open() system call
+ *
+ * \param pathname	Pathname of file to open
+ * \param flags		Flags, like O_RDONLY, O_RDWR
+ * \return file descriptor, or -1 on error
+ */
+int os_open(const char *pathname, int flags);
+
+/**
+ * Access to the OS close() system call
+ *
+ * \param fd	File descriptor to close
+ * \return 0 on success, -1 on error
+ */
+int os_close(int fd);
+
+/**
+ * Access to the OS exit() system call
+ *
+ * This exits with the supplied return code, which should be 0 to indicate
+ * success.
+ *
+ * @param exit_code	exit code for U-Boot
+ */
+void os_exit(int exit_code);
