diff --git a/services/psci/psci_afflvl_off.c b/services/std_svc/psci/psci_afflvl_off.c
similarity index 100%
rename from services/psci/psci_afflvl_off.c
rename to services/std_svc/psci/psci_afflvl_off.c
diff --git a/services/psci/psci_afflvl_on.c b/services/std_svc/psci/psci_afflvl_on.c
similarity index 100%
rename from services/psci/psci_afflvl_on.c
rename to services/std_svc/psci/psci_afflvl_on.c
diff --git a/services/psci/psci_afflvl_suspend.c b/services/std_svc/psci/psci_afflvl_suspend.c
similarity index 100%
rename from services/psci/psci_afflvl_suspend.c
rename to services/std_svc/psci/psci_afflvl_suspend.c
diff --git a/services/psci/psci_common.c b/services/std_svc/psci/psci_common.c
similarity index 100%
rename from services/psci/psci_common.c
rename to services/std_svc/psci/psci_common.c
diff --git a/services/psci/psci_entry.S b/services/std_svc/psci/psci_entry.S
similarity index 100%
rename from services/psci/psci_entry.S
rename to services/std_svc/psci/psci_entry.S
diff --git a/services/psci/psci_main.c b/services/std_svc/psci/psci_main.c
similarity index 95%
rename from services/psci/psci_main.c
rename to services/std_svc/psci/psci_main.c
index ca3a5a0..6bf0583 100644
--- a/services/psci/psci_main.c
+++ b/services/std_svc/psci/psci_main.c
@@ -190,18 +190,6 @@
 	return PSCI_E_SUCCESS;
 }
 
-/* Unimplemented */
-void psci_system_off(void)
-{
-	assert(0);
-}
-
-/* Unimplemented */
-void psci_system_reset(void)
-{
-	assert(0);
-}
-
 /*******************************************************************************
  * PSCI top level handler for servicing SMCs.
  ******************************************************************************/
@@ -254,17 +242,9 @@
 		rc = psci_migrate_info_up_cpu();
 		break;
 
-	case PSCI_SYSTEM_OFF:
-		psci_system_off();
-		assert(0);
-
-	case PSCI_SYSTEM_RESET:
-		psci_system_reset();
-		assert(0);
-
 	default:
 		rc = SMC_UNK;
-		WARN("Unimplemented psci call -> 0x%x \n", smc_fid);
+		WARN("Unimplemented PSCI Call: 0x%x \n", smc_fid);
 	}
 
 	SMC_RET1(handle, rc);
diff --git a/services/psci/psci_private.h b/services/std_svc/psci/psci_private.h
similarity index 98%
rename from services/psci/psci_private.h
rename to services/std_svc/psci/psci_private.h
index 4f47ca5..2d9d12b 100644
--- a/services/psci/psci_private.h
+++ b/services/std_svc/psci/psci_private.h
@@ -166,6 +166,10 @@
 				 void *cookie,
 				 void *handle,
 				 uint64_t flags);
+
+/* PSCI setup function */
+extern int32_t psci_setup(void);
+
 #endif /*__ASSEMBLY__*/
 
 #endif /* __PSCI_PRIVATE_H__ */
diff --git a/services/psci/psci_setup.c b/services/std_svc/psci/psci_setup.c
similarity index 98%
rename from services/psci/psci_setup.c
rename to services/std_svc/psci/psci_setup.c
index 8d7903c..e3a5d5d 100644
--- a/services/psci/psci_setup.c
+++ b/services/std_svc/psci/psci_setup.c
@@ -342,14 +342,3 @@
 
 	return 0;
 }
-
-/* Register PSCI as a run time service */
-DECLARE_RT_SVC(
-		psci,
-
-		OEN_STD_START,
-		OEN_STD_END,
-		SMC_TYPE_FAST,
-		psci_setup,
-		psci_smc_handler
-);
diff --git a/services/std_svc/std_svc_setup.c b/services/std_svc/std_svc_setup.c
new file mode 100644
index 0000000..080836a
--- /dev/null
+++ b/services/std_svc/std_svc_setup.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of ARM nor the names of its contributors may be used
+ * to endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdint.h>
+#include <uuid.h>
+#include <context_mgmt.h>
+#include <runtime_svc.h>
+#include <std_svc.h>
+#include <psci.h>
+#include <psci_private.h>
+#include <debug.h>
+
+/* Standard Service UUID */
+DEFINE_SVC_UUID(arm_svc_uid,
+		0x108d905b, 0xf863, 0x47e8, 0xae, 0x2d,
+		0xc0, 0xfb, 0x56, 0x41, 0xf6, 0xe2);
+
+/* Setup Standard Services */
+static int32_t std_svc_setup(void)
+{
+	/*
+	 * PSCI is the only specification implemented as a Standard Service.
+	 * Invoke PSCI setup from here
+	 */
+	return psci_setup();
+}
+
+/*
+ * Top-level Standard Service SMC handler. This handler will in turn dispatch
+ * calls to PSCI SMC handler
+ */
+uint64_t std_svc_smc_handler(uint32_t smc_fid,
+			     uint64_t x1,
+			     uint64_t x2,
+			     uint64_t x3,
+			     uint64_t x4,
+			     void *cookie,
+			     void *handle,
+			     uint64_t flags)
+{
+	/*
+	 * Dispatch PSCI calls to PSCI SMC handler and return its return
+	 * value
+	 */
+	if (is_psci_fid(smc_fid)) {
+		return psci_smc_handler(smc_fid, x1, x2, x3, x4, cookie,
+				handle, flags);
+	}
+
+	switch (smc_fid) {
+	case ARM_STD_SVC_CALL_COUNT:
+		/*
+		 * Return the number of Standard Service Calls. PSCI is the only
+		 * standard service implemented; so return number of PSCI calls
+		 */
+		SMC_RET1(handle, PSCI_NUM_CALLS);
+
+	case ARM_STD_SVC_UID:
+		/* Return UID to the caller */
+		SMC_UUID_RET(handle, arm_svc_uid);
+
+	case ARM_STD_SVC_VERSION:
+		/* Return the version of current implementation */
+		SMC_RET2(handle, STD_SVC_VERSION_MAJOR, STD_SVC_VERSION_MINOR);
+
+	default:
+		WARN("Unimplemented Standard Service Call: 0x%x \n", smc_fid);
+		SMC_RET1(handle, SMC_UNK);
+	}
+}
+
+/* Register Standard Service Calls as runtime service */
+DECLARE_RT_SVC(
+		std_svc,
+
+		OEN_STD_START,
+		OEN_STD_END,
+		SMC_TYPE_FAST,
+		std_svc_setup,
+		std_svc_smc_handler
+);
