Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/amd64/src/amd64.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -199,4 +199,10 @@
 void arch_post_smp_init(void)
 {
+	/* Currently the only supported platform for amd64 is 'pc'. */
+	static const char *platform = "pc";
+
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 #ifdef CONFIG_PC_KBD
 	/*
Index: kernel/arch/arm32/include/mach/integratorcp/integratorcp.h
===================================================================
--- kernel/arch/arm32/include/mach/integratorcp/integratorcp.h	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/arm32/include/mach/integratorcp/integratorcp.h	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -106,4 +106,5 @@
 extern void icp_frame_init(void);
 extern size_t icp_get_irq_count(void);
+extern const char *icp_get_platform_name(void);
 
 extern struct arm_machine_ops icp_machine_ops;
Index: kernel/arch/arm32/include/mach/testarm/testarm.h
===================================================================
--- kernel/arch/arm32/include/mach/testarm/testarm.h	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/arm32/include/mach/testarm/testarm.h	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -74,4 +74,5 @@
 extern void gxemul_frame_init(void);
 extern size_t gxemul_get_irq_count(void);
+extern const char *gxemul_get_platform_name(void);
 
 extern struct arm_machine_ops gxemul_machine_ops;
Index: kernel/arch/arm32/include/machine_func.h
===================================================================
--- kernel/arch/arm32/include/machine_func.h	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/arm32/include/machine_func.h	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -56,4 +56,5 @@
 	void (*machine_input_init)(void);
 	size_t (*machine_get_irq_count)(void);
+	const char *(*machine_get_platform_name)(void);
 };
 
Index: kernel/arch/arm32/src/mach/gta02/gta02.c
===================================================================
--- kernel/arch/arm32/src/mach/gta02/gta02.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/arm32/src/mach/gta02/gta02.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -71,4 +71,5 @@
 static void gta02_input_init(void);
 static size_t gta02_get_irq_count(void);
+static const char *gta02_get_platform_name(void);
 
 static void gta02_timer_irq_init(void);
@@ -92,5 +93,6 @@
 	gta02_output_init,
 	gta02_input_init,
-	gta02_get_irq_count
+	gta02_get_irq_count,
+	gta02_get_platform_name
 };
 
@@ -235,4 +237,9 @@
 }
 
+const char *gta02_get_platform_name(void)
+{
+	return "gta02";
+}
+
 static void gta02_timer_irq_init(void)
 {
Index: kernel/arch/arm32/src/mach/integratorcp/integratorcp.c
===================================================================
--- kernel/arch/arm32/src/mach/integratorcp/integratorcp.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/arm32/src/mach/integratorcp/integratorcp.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -65,5 +65,6 @@
 	icp_output_init,
 	icp_input_init,
-	icp_get_irq_count
+	icp_get_irq_count,
+	icp_get_platform_name
 };
 
@@ -342,4 +343,9 @@
 }
 
+const char *icp_get_platform_name(void)
+{
+	return "integratorcp";
+}
+
 /** @}
  */
Index: kernel/arch/arm32/src/mach/testarm/testarm.c
===================================================================
--- kernel/arch/arm32/src/mach/testarm/testarm.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/arm32/src/mach/testarm/testarm.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -65,5 +65,6 @@
 	gxemul_output_init,
 	gxemul_input_init,
-	gxemul_get_irq_count
+	gxemul_get_irq_count,
+	gxemul_get_platform_name
 };
 
@@ -132,4 +133,9 @@
 }
 
+const char *gxemul_get_platform_name(void)
+{
+	return "gxemul";
+}
+
 /** Starts gxemul Real Time Clock device, which asserts regular interrupts.
  *
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/ia32/src/ia32.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -157,4 +157,10 @@
 void arch_post_smp_init(void)
 {
+	/* Currently the only supported platform for ia32 is 'pc'. */
+	static const char *platform = "pc";
+
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 #ifdef CONFIG_PC_KBD
 	/*
Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/ia64/src/ia64.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -147,4 +147,16 @@
 void arch_post_smp_init(void)
 {
+	static const char *platform;
+
+	/* Set platform name. */
+#ifdef MACHINE_ski
+	platform = "pc";
+#endif
+#ifdef MACHINE_i460GX
+	platform = "i460GX";
+#endif
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 #ifdef MACHINE_ski
 	ski_instance_t *ski_instance = skiin_init();
Index: kernel/arch/mips32/src/mips32.c
===================================================================
--- kernel/arch/mips32/src/mips32.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/mips32/src/mips32.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -168,4 +168,19 @@
 void arch_post_smp_init(void)
 {
+	static const char *platform;
+
+	/* Set platform name. */
+#ifdef MACHINE_msim
+	platform = "msim";
+#endif
+#ifdef MACHINE_bgxemul
+	platform = "gxemul";
+#endif
+#ifdef MACHINE_lgxemul
+	platform = "gxemul";
+#endif
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 #ifdef CONFIG_MIPS_KBD
 	/*
Index: kernel/arch/ppc32/src/ppc32.c
===================================================================
--- kernel/arch/ppc32/src/ppc32.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/ppc32/src/ppc32.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -249,4 +249,10 @@
 void arch_post_smp_init(void)
 {
+	/* Currently the only supported platform for ppc32 is 'mac'. */
+	static const char *platform = "mac";
+
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 	ofw_tree_walk_by_device_type("mac-io", macio_register, NULL);
 }
Index: kernel/arch/sparc64/src/sun4u/sparc64.c
===================================================================
--- kernel/arch/sparc64/src/sun4u/sparc64.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/sparc64/src/sun4u/sparc64.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -50,4 +50,5 @@
 #include <ddi/irq.h>
 #include <str.h>
+#include <sysinfo/sysinfo.h>
 
 memmap_t memmap;
@@ -111,4 +112,10 @@
 void arch_post_smp_init(void)
 {
+	/* Currently the only supported platform for sparc64/sun4u is 'sun4u'. */
+	static const char *platform = "sun4u";
+
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 	standalone_sparc64_console_init();
 }
Index: kernel/arch/sparc64/src/sun4v/sparc64.c
===================================================================
--- kernel/arch/sparc64/src/sun4v/sparc64.c	(revision 78ffb70588017cf4018251b150c250f7ac4b52bd)
+++ kernel/arch/sparc64/src/sun4v/sparc64.c	(revision eff1f033c237dd4f18d79cf25fbd33de6fa9278c)
@@ -52,4 +52,5 @@
 #include <str.h>
 #include <arch/drivers/niagara.h>
+#include <sysinfo/sysinfo.h>
 
 memmap_t memmap;
@@ -109,4 +110,10 @@
 void arch_post_smp_init(void)
 {
+	/* Currently the only supported platform for sparc64/sun4v is 'sun4v'. */
+	static const char *platform = "sun4v";
+
+	sysinfo_set_item_data("platform", NULL, (void *) platform,
+	    str_size(platform));
+
 	niagarain_init();
 }
