Allow projects to define their own build.

To create a new project, add a directory under `project` and pass the
project name to `make`:

    mkdir project/my_project
    # Describe the build for the project.
    PROJECT=my_project make

Projects can be maintained separately from the main repository.

Change-Id: I33a9d7ca801e2fb3dd9795ece44577b3b565e913
diff --git a/src/layout.c b/src/layout.c
index 68b645e..003a8ab 100644
--- a/src/layout.c
+++ b/src/layout.c
@@ -71,6 +71,42 @@
 }
 
 /**
+ * Get the address the .initrd section begins at.
+ */
+paddr_t layout_initrd_begin(void)
+{
+	extern uint8_t initrd_begin[];
+	return pa_init((uintpaddr_t)initrd_begin);
+}
+
+/**
+ * Get the address the .initrd section ends at.
+ */
+paddr_t layout_initrd_end(void)
+{
+	extern uint8_t initrd_end[];
+	return pa_init((uintpaddr_t)initrd_end);
+}
+
+/**
+ * Get the address the .fdt section begins at.
+ */
+paddr_t layout_fdt_begin(void)
+{
+	extern uint8_t fdt_begin[];
+	return pa_init((uintpaddr_t)fdt_begin);
+}
+
+/**
+ * Get the address the .fdt section ends at.
+ */
+paddr_t layout_fdt_end(void)
+{
+	extern uint8_t fdt_end[];
+	return pa_init((uintpaddr_t)fdt_end);
+}
+
+/**
  * Get the address the loaded image ends at.
  */
 paddr_t layout_bin_end(void)