Make memalign print useful messages on failure

Brevity is the soul of wit, except for error messages;
then it's a sign of witlessness. I can say this because
this error message may be my fault, although it is lost
in the 20th century code base so who knows.

Anyway, when memalign dies, it's not a bad idea to have
a lot of information about what went wrong. So instead
of the terse single bit of "something failed" this patch
changes things to be a bit more useful.

Change-Id: I8851502297e0ae9773912839ebfdf4f9574c8087
Signed-off-by: Ronald G. Minnich <rminnich@chromium.org>
Reviewed-on: http://review.coreboot.org/1270
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
diff --git a/src/lib/malloc.c b/src/lib/malloc.c
index 2e700f7..4115738 100644
--- a/src/lib/malloc.c
+++ b/src/lib/malloc.c
@@ -18,7 +18,7 @@
 {
 	void *p;
 
-	MALLOCDBG("%s Enter, boundary %ld, size %ld, free_mem_ptr %p\n",
+	MALLOCDBG("%s Enter, boundary %zu, size %zu, free_mem_ptr %p\n",
 		__func__, boundary, size, free_mem_ptr);
 
 	/* Overzealous linker check */
@@ -30,8 +30,15 @@
 	p = free_mem_ptr;
 	free_mem_ptr += size;
 
-	if (free_mem_ptr >= free_mem_end_ptr)
+	if (free_mem_ptr >= free_mem_end_ptr) {
+		printk(BIOS_ERR, "memalign(boundary=%zu, size=%zu): failed: ",
+				boundary, size);
+		printk(BIOS_ERR, "Tried to round up free_mem_ptr %p to %p\n",
+				p, free_mem_ptr);
+		printk(BIOS_ERR, "but free_mem_end_ptr is %p\n",
+				free_mem_end_ptr);
 		die("Error! memalign: Out of memory (free_mem_ptr >= free_mem_end_ptr)");
+	}
 
 	MALLOCDBG("memalign %p\n", p);