Index: boot/arch/riscv64/Makefile.inc
===================================================================
--- boot/arch/riscv64/Makefile.inc	(revision 4646710d9ea7943ec02c77020e7b60258fd30d8b)
+++ boot/arch/riscv64/Makefile.inc	(revision 63e27efdf2fe6d3fa02bbb5ee1da00df5cc07e9d)
@@ -40,5 +40,6 @@
 	arch/$(BARCH)/src/ucb.c \
 	arch/$(BARCH)/src/putchar.c \
-	$(COMPS_C) \
+	$(COMPS).s \
+	$(COMPS)_desc.c \
 	generic/src/memstr.c \
 	generic/src/printf_core.c \
@@ -48,2 +49,4 @@
 	generic/src/version.c \
 	generic/src/inflate.c
+
+PRE_DEPEND = $(COMPS).s $(COMPS).h $(COMPS)_desc.c
Index: boot/arch/riscv64/_link.ld.in
===================================================================
--- boot/arch/riscv64/_link.ld.in	(revision 4646710d9ea7943ec02c77020e7b60258fd30d8b)
+++ boot/arch/riscv64/_link.ld.in	(revision 63e27efdf2fe6d3fa02bbb5ee1da00df5cc07e9d)
@@ -17,4 +17,5 @@
 		*(.bss);        /* uninitialized static variables */
 		*(COMMON);      /* global variables */
+		*(.components);
 	}
 	
Index: boot/arch/riscv64/src/main.c
===================================================================
--- boot/arch/riscv64/src/main.c	(revision 4646710d9ea7943ec02c77020e7b60258fd30d8b)
+++ boot/arch/riscv64/src/main.c	(revision 63e27efdf2fe6d3fa02bbb5ee1da00df5cc07e9d)
@@ -39,5 +39,5 @@
 #include <halt.h>
 #include <inflate.h>
-#include <arch/_components.h>
+#include "../../components.h"
 
 #define KA2PA(x)  (((uintptr_t) (x)) - UINT64_C(0xffff800000000000))
@@ -60,9 +60,9 @@
 	
 	for (size_t i = 0; i < COMPONENTS; i++) {
-		printf(" %p: %s image (%zu/%zu bytes)\n", components[i].start,
+		printf(" %p: %s image (%zu/%zu bytes)\n", components[i].addr,
 		    components[i].name, components[i].inflated,
 		    components[i].size);
 		
-		uintptr_t tail = (uintptr_t) components[i].start +
+		uintptr_t tail = (uintptr_t) components[i].addr +
 		    components[i].size;
 		if (tail > top)
@@ -112,5 +112,5 @@
 		printf("%s ", components[i - 1].name);
 		
-		int err = inflate(components[i - 1].start, components[i - 1].size,
+		int err = inflate(components[i - 1].addr, components[i - 1].size,
 		    dest[i - 1], components[i - 1].inflated);
 		
