diff --git a/src/bsp/lk/include/stdio.h b/src/bsp/lk/include/stdio.h
new file mode 100644
index 0000000..5d0dcf2
--- /dev/null
+++ b/src/bsp/lk/include/stdio.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2008-2013 Travis Geiselbrecht
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __STDIO_H
+#define __STDIO_H
+
+#include <compiler.h>
+#include <printf.h>
+#include <sys/types.h>
+
+__BEGIN_CDECLS
+
+typedef struct FILE {
+	void *ctx;
+	int (*fputc)(void *ctx, int c);
+	int (*fputs)(void *ctx, const char *s);
+	int (*fgetc)(void *ctx);
+	int (*vfprintf)(void *ctx, const char *fmt, va_list ap);
+} FILE;
+
+extern FILE __stdio_FILEs[];
+
+#define stdin  (&__stdio_FILEs[0])
+#define stdout (&__stdio_FILEs[1])
+#define stderr (&__stdio_FILEs[2])
+
+FILE *fopen(const char *filename, const char *mode);
+int fclose(FILE *stream);
+size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
+size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
+int fflush(FILE *stream);
+int feof(FILE *stream);
+
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+int fseek(FILE *stream, long offset, int whence);
+long ftell(FILE *stream);
+
+int fputc(int c, FILE *fp);
+#define putc(c, fp) fputc(c, fp)
+int putchar(int c);
+
+int fputs(const char *s, FILE *fp);
+int puts(const char *str);
+
+int getc(FILE *fp);
+int getchar(void);
+
+int fprintf(FILE *fp, const char *fmt, ...);
+int vfprintf(FILE *fp, const char *fmt, va_list ap);
+
+int sscanf(const char *buf, const char *fmt, ...);
+
+__END_CDECLS
+
+#endif
+
