diff --git a/spm/quark/quark_main.c b/spm/quark/quark_main.c
new file mode 100644
index 0000000..145560b
--- /dev/null
+++ b/spm/quark/quark_main.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <assert.h>
+#include <cdefs.h>
+#include <errno.h>
+#include <quark_def.h>
+#include <sprt_client.h>
+#include <sprt_svc.h>
+#include <utils_def.h>
+
+#include "quark.h"
+#include "quark_def.h"
+
+/* NOTE: This partition doesn't have text output capabilities */
+
+static void quark_message_handler(struct sprt_queue_entry_message *message)
+{
+	u_register_t ret0 = 0U, ret1 = 0U, ret2 = 0U, ret3 = 0U;
+
+	if (message->type == SPRT_MSG_TYPE_SERVICE_REQUEST) {
+		switch (message->args[1]) {
+
+		case QUARK_GET_MAGIC:
+			ret1 = QUARK_MAGIC_NUMBER;
+			ret0 = SPRT_SUCCESS;
+			break;
+
+		default:
+			ret0 = SPRT_NOT_SUPPORTED;
+			break;
+		}
+	} else {
+		ret0 = SPRT_NOT_SUPPORTED;
+	}
+
+	sprt_message_end(message, ret0, ret1, ret2, ret3);
+}
+
+void __dead2 quark_main(void)
+{
+	/*
+	 * Handle secure service requests.
+	 */
+	sprt_initialize_queues((void *)QUARK_SPM_BUF_BASE);
+
+	while (1) {
+		struct sprt_queue_entry_message message;
+
+		/*
+		 * Try to fetch a message from the blocking requests queue. If
+		 * it is empty, try to fetch from the non-blocking requests
+		 * queue. Repeat until both of them are empty.
+		 */
+		while (1) {
+			int err = sprt_get_next_message(&message,
+					SPRT_QUEUE_NUM_BLOCKING);
+			if (err == -ENOENT) {
+				err = sprt_get_next_message(&message,
+						SPRT_QUEUE_NUM_NON_BLOCKING);
+				if (err == -ENOENT) {
+					break;
+				} else {
+					assert(err == 0);
+					quark_message_handler(&message);
+				}
+			} else {
+				assert(err == 0);
+				quark_message_handler(&message);
+			}
+		}
+
+		sprt_wait_for_messages();
+	}
+}
