diff --git a/src/pseudotalloc/pseudotalloc.c b/src/pseudotalloc/pseudotalloc.c
new file mode 100644
index 0000000..fe7f1ed
--- /dev/null
+++ b/src/pseudotalloc/pseudotalloc.c
@@ -0,0 +1,63 @@
+/* overly simplistic talloc replacement for deeply embedded
+ * microcontrollers.  Obviously this has none of the properties of real
+ * talloc, it is particualrly not hierarchical at all */
+
+
+#include "talloc.h"
+#include <string.h>
+
+void *_talloc_zero(const void *ctx, size_t size, const char *name)
+{
+	void *p = pseudotalloc_malloc(size);
+	if (!p)
+		return NULL;
+	memset(p, 0, size);
+	return p;
+}
+
+int _talloc_free(void *ptr, const char *location)
+{
+	pseudotalloc_free(ptr);
+	return 0;
+}
+
+void *talloc_named_const(const void *context, size_t size, const char *name)
+{
+	return pseudotalloc_malloc(size);
+}
+
+void talloc_set_name_const(const void *ptr, const char *name)
+{
+}
+
+char *talloc_strdup(const void *context, const char *p)
+{
+	char *ptr;
+	size_t len;
+
+	if (!p)
+		return NULL;
+	len = strlen(p);
+
+	ptr = talloc_size(context, len+1);
+	if (!ptr)
+		return NULL;
+	memcpy(ptr, p, len+1);
+
+	return ptr;
+}
+
+void *talloc_pool(const void *context, size_t size)
+{
+	return (void *) context;
+}
+
+void *_talloc_array(const void *ctx, size_t el_size, unsigned count, const char *name)
+{
+	return talloc_size(ctx, el_size * count);
+}
+
+void *_talloc_zero_array(const void *ctx, size_t el_size, unsigned count, const char *name)
+{
+	return talloc_zero_size(ctx, el_size * count);
+}
