diff -uNr yaboot/lib/malloc.c yaboot-1.3.16//lib/malloc.c
--- yaboot/lib/malloc.c	2010-07-09 03:18:17.000000000 +0100
+++ yaboot-1.3.16//lib/malloc.c	2011-01-23 16:57:13.000000000 +0000
@@ -42,6 +42,37 @@
 	last_alloc = 0;
 }
 
+static char *align_ptr_to(char *ptr, unsigned long align)
+{
+	return (char *)((((unsigned long)ptr) + (align - 1UL)) &
+			~(align - 1UL));
+}
+
+int posix_memalign(void **memptr, unsigned long alignment, unsigned long size)
+{
+	char *caddr;
+
+	if (alignment & (alignment - 1UL))
+		return -1;
+
+	if (alignment & (sizeof(void *) - 1UL))
+		return -1;
+
+	if (size == 0)
+	{
+		*memptr = (void *)0;
+		return 0;
+	}
+
+	caddr = align_ptr_to(malloc_ptr, alignment);
+	malloc_ptr = (caddr + size);
+	last_alloc = caddr;
+	malloc_ptr = align_ptr_to(malloc_ptr, 8UL);
+
+	*memptr = caddr;
+	return 0;
+}
+
 void *malloc (unsigned int size)
 {
     char *caddr;
