Index: uspace/app/mkexfat/mkexfat.c
===================================================================
--- uspace/app/mkexfat/mkexfat.c	(revision 557e5b13486a9739bd9342a51481d04e8d7448db)
+++ uspace/app/mkexfat/mkexfat.c	(revision 89a0a827d707204d79cea7eba87c1cb5bdbd23b9)
@@ -163,5 +163,5 @@
 	    cfg->cluster_size);
 
-	/* FIXME: set the real rootdir cluster */
+	/* Will be set later */
 	cfg->rootdir_cluster = 0;
 
@@ -470,4 +470,29 @@
 }
 
+/** Write the upcase table to disk. */
+static int
+upcase_table_write(service_id_t service_id, exfat_cfg_t *cfg)
+{
+	int rc;
+	aoff64_t start_sec, nsecs, i;
+	uint8_t *table_ptr;
+
+	start_sec = cfg->data_start_sector;
+	start_sec += (cfg->upcase_table_cluster * cfg->cluster_size) /
+	    cfg->sector_size;
+
+	nsecs = div_round_up(sizeof(upcase_table), cfg->sector_size);
+	table_ptr = (uint8_t *) upcase_table;
+
+	for (i = 0; i < nsecs; ++i, table_ptr += cfg->sector_size) {
+		rc = block_write_direct(service_id,
+		    start_sec + i, 1, table_ptr);
+		if (rc != EOK)
+			return rc;
+	}
+
+	return EOK;
+}
+
 /** Given a number (n), returns the result of log2(n).
  *
@@ -617,4 +642,10 @@
 	}
 
+	rc = upcase_table_write(service_id, &cfg);
+	if (rc != EOK) {
+		printf(NAME ": Error, failed to write the upcase table to disk.\n");
+		return 2;
+	}
+
 	rc = bootsec_write(service_id, &cfg);
 	if (rc != EOK) {
