diff --git a/devmem2-0.0/Makefile b/devmem2-0.0/Makefile
new file mode 100644
index 0000000..c6fd9c8
--- /dev/null
+++ b/devmem2-0.0/Makefile
@@ -0,0 +1,92 @@
+#
+#    Copyright (c) 2010-2011 Nest, Inc.
+#    All rights reserved.
+#
+#    This document is the property of Nest. It is considered
+#    confidential and proprietary information.
+#
+#    This document may not be reproduced or transmitted in any form,
+#    in whole or in part, without the express written permission of
+#    Nest.
+#
+#    Description:
+#      This file is the make file for, devmem2, a simple program to
+#      read/write from/to any location in memory.
+#
+
+BuildConfigSpecialized	:= No
+BuildProductSpecialized	:= No
+
+include pre.mak
+
+PackageName		:= devmem2
+
+PackageExtension	:=
+PackageSeparator	:= -
+
+PackagePatchArgs	:= -p1
+
+PackageSourceFile	:= devmem2.c
+PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)
+
+CleanPaths		+= $(PackageLicenseFile)
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(PackageLicenseFile): $(PackageSourceFile)
+	$(Echo) "Extracting \"$(call GenerateBuildRootEllipsedPath,$(@))\""
+	$(Verbose)$(SED) -n -e '14,26p' < $< > $@
+
+# Copy the package source and apply patches, if any.
+
+$(PackageSourceDir): $(PackageSourceFile) $(PackagePatchPaths)
+	$(create-directory)
+	$(Verbose)cp -f $(PackageSourceFile) $@/$(PackageSourceFile)
+	$(Verbose)touch $@
+	$(call patch-directory,$(@),$(PackagePatchArgs),$(PackagePatchPaths))
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
+	$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory))
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source $(PackageBuildMakefile)
+
+# Build the source.
+
+.PHONY: build
+build: configure
+	$(Verbose)$(MAKE) -C $(BuildDirectory) \
+	CC=$(CC) CXX=$(CXX) AR=$(AR) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+	DESTDIR=$(ResultDirectory) \
+	all
+
+# Stage the build to a temporary installation area.
+
+.PHONY: stage
+stage: build | $(ResultDirectory)
+	$(Verbose)$(MAKE) -C $(BuildDirectory) \
+	DESTDIR=$(ResultDirectory) \
+	install
+
+clean:
+	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/devmem2-0.0/devmem2.c b/devmem2-0.0/devmem2.c
new file mode 100644
index 0000000..9bcb79d
--- /dev/null
+++ b/devmem2-0.0/devmem2.c
@@ -0,0 +1,121 @@
+/*
+ * devmem2.c: Simple program to read/write from/to any location in memory.
+ *
+ *  Copyright (C) 2000, Jan-Derk Bakker (jdb@lartmaker.nl)
+ *
+ *
+ * This software has been developed for the LART computing board
+ * (http://www.lart.tudelft.nl/). The development has been sponsored by
+ * the Mobile MultiMedia Communications (http://www.mmc.tudelft.nl/)
+ * and Ubiquitous Communications (http://www.ubicom.tudelft.nl/)
+ * projects.
+ *
+ *
+ * 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 <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <signal.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <termios.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+  
+#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n", \
+  __LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
+ 
+#define MAP_SIZE 4096UL
+#define MAP_MASK (MAP_SIZE - 1)
+
+int main(int argc, char **argv) {
+    int fd;
+    void *map_base, *virt_addr; 
+	unsigned long read_result, writeval;
+	off_t target;
+	int access_type = 'w';
+	
+	if(argc < 2) {
+		fprintf(stderr, "\nUsage:\t%s { address } [ type [ data ] ]\n"
+			"\taddress : memory address to act upon\n"
+			"\ttype    : access operation type : [b]yte, [h]alfword, [w]ord\n"
+			"\tdata    : data to be written\n\n",
+			argv[0]);
+		exit(1);
+	}
+	target = strtoul(argv[1], 0, 0);
+
+	if(argc > 2)
+		access_type = tolower(argv[2][0]);
+
+
+    if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
+    printf("/dev/mem opened.\n"); 
+    fflush(stdout);
+    
+    /* Map one page */
+    map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, target & ~MAP_MASK);
+    if(map_base == (void *) -1) FATAL;
+    printf("Memory mapped at address %p.\n", map_base); 
+    fflush(stdout);
+    
+    virt_addr = map_base + (target & MAP_MASK);
+    switch(access_type) {
+		case 'b':
+			read_result = *((unsigned char *) virt_addr);
+			break;
+		case 'h':
+			read_result = *((unsigned short *) virt_addr);
+			break;
+		case 'w':
+			read_result = *((unsigned long *) virt_addr);
+			break;
+		default:
+			fprintf(stderr, "Illegal data type '%c'.\n", access_type);
+			exit(2);
+	}
+    printf("Value at address 0x%X (%p): 0x%X\n", target, virt_addr, read_result); 
+    fflush(stdout);
+
+	if(argc > 3) {
+		writeval = strtoul(argv[3], 0, 0);
+		switch(access_type) {
+			case 'b':
+				*((unsigned char *) virt_addr) = writeval;
+				read_result = *((unsigned char *) virt_addr);
+				break;
+			case 'h':
+				*((unsigned short *) virt_addr) = writeval;
+				read_result = *((unsigned short *) virt_addr);
+				break;
+			case 'w':
+				*((unsigned long *) virt_addr) = writeval;
+				read_result = *((unsigned long *) virt_addr);
+				break;
+		}
+		printf("Written 0x%X; readback 0x%X\n", writeval, read_result); 
+		fflush(stdout);
+	}
+	
+	if(munmap(map_base, MAP_SIZE) == -1) FATAL;
+    close(fd);
+    return 0;
+}
+
diff --git a/devmem2-0.0/devmem2.patches.tar.gz b/devmem2-0.0/devmem2.patches.tar.gz
new file mode 100644
index 0000000..f00e259
--- /dev/null
+++ b/devmem2-0.0/devmem2.patches.tar.gz
Binary files differ
diff --git a/devmem2-0.0/devmem2.url b/devmem2-0.0/devmem2.url
new file mode 100644
index 0000000..67d3be2
--- /dev/null
+++ b/devmem2-0.0/devmem2.url
@@ -0,0 +1 @@
+http://www.lartmaker.nl/lartware/port/devmem2.c
diff --git a/devmem2-0.0/devmem2.version b/devmem2-0.0/devmem2.version
new file mode 100644
index 0000000..ba66466
--- /dev/null
+++ b/devmem2-0.0/devmem2.version
@@ -0,0 +1 @@
+0.0
