Introduce intermediate build target for std.

This gives a place for common functions to be defined.

Change-Id: Ifac38e647ab1042a00d224a58e28a0e6807fa60c
diff --git a/src/BUILD.gn b/src/BUILD.gn
index 6bdf1af..8ec1f92 100644
--- a/src/BUILD.gn
+++ b/src/BUILD.gn
@@ -59,8 +59,8 @@
   deps = [
     ":fdt",
     ":memiter",
+    ":std",
     "//src/arch/${plat_arch}",
-    "//src/arch/${plat_arch}:std",
   ]
 
   if (is_debug) {
@@ -68,6 +68,13 @@
   }
 }
 
+# Standard library functions.
+source_set("std") {
+  deps = [
+    "//src/arch/${plat_arch}:std",
+  ]
+}
+
 # Debug code that is not specific to a certain image so can be shared.
 source_set("dlog") {
   sources = [
@@ -75,8 +82,8 @@
   ]
 
   deps = [
+    ":std",
     "//src/arch/${plat_arch}:putchar",
-    "//src/arch/${plat_arch}:std",
   ]
 }
 
@@ -87,7 +94,7 @@
   ]
 
   deps = [
-    "//src/arch/${plat_arch}:std",
+    ":std",
   ]
 
   if (is_debug) {
diff --git a/src/api.c b/src/api.c
index ad566e2..cd46073 100644
--- a/src/api.c
+++ b/src/api.c
@@ -17,13 +17,13 @@
 #include "hf/api.h"
 
 #include "hf/arch/cpu.h"
-#include "hf/arch/std.h"
 #include "hf/arch/timer.h"
 
 #include "hf/assert.h"
 #include "hf/dlog.h"
 #include "hf/mm.h"
 #include "hf/spinlock.h"
+#include "hf/std.h"
 #include "hf/vm.h"
 
 #include "vmapi/hf/call.h"
diff --git a/src/arch/aarch64/cpu.c b/src/arch/aarch64/cpu.c
index 56ada32..b1280a6 100644
--- a/src/arch/aarch64/cpu.c
+++ b/src/arch/aarch64/cpu.c
@@ -20,9 +20,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "hf/arch/std.h"
-
 #include "hf/addr.h"
+#include "hf/std.h"
 
 void arch_irq_disable(void)
 {
diff --git a/src/cpio.c b/src/cpio.c
index 6f2442d..61a82d6 100644
--- a/src/cpio.c
+++ b/src/cpio.c
@@ -18,7 +18,7 @@
 
 #include <stdint.h>
 
-#include "hf/arch/std.h"
+#include "hf/std.h"
 
 #pragma pack(push, 1)
 struct cpio_header {
diff --git a/src/cpu.c b/src/cpu.c
index 3cc15be..b2213d1 100644
--- a/src/cpu.c
+++ b/src/cpu.c
@@ -19,10 +19,10 @@
 #include <stdalign.h>
 
 #include "hf/arch/cpu.h"
-#include "hf/arch/std.h"
 
 #include "hf/api.h"
 #include "hf/dlog.h"
+#include "hf/std.h"
 #include "hf/vm.h"
 
 #include "vmapi/hf/call.h"
diff --git a/src/dlog.c b/src/dlog.c
index 7874cab..cd1247b 100644
--- a/src/dlog.c
+++ b/src/dlog.c
@@ -20,9 +20,9 @@
 #include <stddef.h>
 
 #include "hf/arch/console.h"
-#include "hf/arch/std.h"
 
 #include "hf/spinlock.h"
+#include "hf/std.h"
 
 /* Keep macro alignment */
 /* clang-format off */
diff --git a/src/fdt.c b/src/fdt.c
index 3859b46..b781a72 100644
--- a/src/fdt.c
+++ b/src/fdt.c
@@ -18,9 +18,8 @@
 
 #include <stdint.h>
 
-#include "hf/arch/std.h"
-
 #include "hf/dlog.h"
+#include "hf/std.h"
 
 struct fdt_header {
 	uint32_t magic;
diff --git a/src/fdt_handler.c b/src/fdt_handler.c
index 97cdd2b..0a0b294 100644
--- a/src/fdt_handler.c
+++ b/src/fdt_handler.c
@@ -16,14 +16,13 @@
 
 #include "hf/fdt_handler.h"
 
-#include "hf/arch/std.h"
-
 #include "hf/boot_params.h"
 #include "hf/cpu.h"
 #include "hf/dlog.h"
 #include "hf/fdt.h"
 #include "hf/layout.h"
 #include "hf/mm.h"
+#include "hf/std.h"
 
 static uint64_t convert_number(const char *data, uint32_t size)
 {
diff --git a/src/layout.c b/src/layout.c
index f74f7c2..e53361b 100644
--- a/src/layout.c
+++ b/src/layout.c
@@ -16,7 +16,7 @@
 
 #include "hf/layout.h"
 
-#include "hf/arch/std.h"
+#include "hf/std.h"
 
 /**
  * Get the address the .text section begins at.
diff --git a/src/load.c b/src/load.c
index 1208eda..7eea3dc 100644
--- a/src/load.c
+++ b/src/load.c
@@ -18,8 +18,6 @@
 
 #include <stdbool.h>
 
-#include "hf/arch/std.h"
-
 #include "hf/api.h"
 #include "hf/assert.h"
 #include "hf/boot_params.h"
@@ -27,6 +25,7 @@
 #include "hf/layout.h"
 #include "hf/memiter.h"
 #include "hf/mm.h"
+#include "hf/std.h"
 #include "hf/vm.h"
 
 #include "vmapi/hf/call.h"
diff --git a/src/main.c b/src/main.c
index 02fc0a8..1df1802 100644
--- a/src/main.c
+++ b/src/main.c
@@ -18,7 +18,6 @@
 #include <stddef.h>
 
 #include "hf/arch/init.h"
-#include "hf/arch/std.h"
 
 #include "hf/api.h"
 #include "hf/boot_params.h"
@@ -29,6 +28,7 @@
 #include "hf/mm.h"
 #include "hf/mpool.h"
 #include "hf/panic.h"
+#include "hf/std.h"
 #include "hf/vm.h"
 
 #include "vmapi/hf/call.h"
diff --git a/src/memiter.c b/src/memiter.c
index b629ebc..7ec3c94 100644
--- a/src/memiter.c
+++ b/src/memiter.c
@@ -16,7 +16,7 @@
 
 #include "hf/memiter.h"
 
-#include "hf/arch/std.h"
+#include "hf/std.h"
 
 /**
  * Initialises the given memory iterator.
diff --git a/src/vm.c b/src/vm.c
index 8eafd09..a58886e 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -16,10 +16,9 @@
 
 #include "hf/vm.h"
 
-#include "hf/arch/std.h"
-
 #include "hf/api.h"
 #include "hf/cpu.h"
+#include "hf/std.h"
 
 #include "vmapi/hf/call.h"